{"components":{"responses":{"Valhalla400":{"content":{"application/json":{"schema":{"description":"Error reported by the routing engine.","properties":{"error":{"description":"Human-readable error message","type":"string"},"error_code":{"description":"Valhalla error code","type":"integer"},"status":{"description":"HTTP status text","type":"string"},"status_code":{"description":"HTTP status code","type":"integer"}},"type":"object"}}},"description":"Invalid request. The body is the routing engine's own error object."},"Valhalla401":{"content":{"application/json":{"schema":{"description":"Error reported by this API before the request reaches the routing engine.","properties":{"error":{"description":"Human-readable error message","type":"string"}},"type":"object"}}},"description":"Missing or invalid API key."},"Valhalla429":{"content":{"application/json":{"schema":{"description":"Error reported by the edge proxy, which answers before the request reaches this API.","properties":{"message":{"description":"Human-readable error message","type":"string"}},"type":"object"}},"text/plain":{"schema":{"type":"string"}}},"description":"Rate limit exceeded. The edge proxy answers with a JSON message when its own limit trips; this API answers with a plain-text body when the per-account limit trips."},"Valhalla503":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"The routing engine is unreachable. The body is plain text, not JSON."}},"schemas":{"Error":{"description":"Error reported by this API.","properties":{"error":{"description":"Human-readable error message.","type":"string"}},"type":"object"},"GatewayError":{"description":"Error reported by the edge proxy, which answers before the request reaches this API.","properties":{"message":{"description":"Human-readable error message.","type":"string"}},"type":"object"},"Itinerary":{"properties":{"distance":{"description":"Total distance of the itinerary (in meters).","type":"number"},"duration":{"description":"Total duration of the itinerary in seconds.","format":"int64","type":"integer"},"endTime":{"description":"Epoch timestamp (in milliseconds) for the end time of the itinerary.","format":"int64","type":"integer"},"legs":{"description":"Segments of the trip in order, each either a walk or a single transit ride.","items":{"$ref":"#/components/schemas/Leg"},"type":"array"},"startTime":{"description":"Epoch timestamp (in milliseconds) for the start time of the itinerary.","format":"int64","type":"integer"},"transfers":{"description":"Number of transfers in the itinerary.","type":"integer"},"transitDistance":{"description":"Total transit distance (in meters) for the itinerary.","type":"number"},"transitTime":{"description":"Total transit time (in seconds) for the itinerary.","format":"int64","type":"integer"},"waitingTime":{"description":"Total waiting time (in seconds) for the itinerary.","format":"int64","type":"integer"},"walkDistance":{"description":"Total walking distance (in meters) for the itinerary.","type":"number"},"walkTime":{"description":"Total walking time (in seconds) for the itinerary.","format":"int64","type":"integer"}},"type":"object"},"Leg":{"properties":{"agencyId":{"description":"Transit agency identifier.","type":"string"},"agencyName":{"description":"Transit agency name.","type":"string"},"block_id":{"description":"GTFS `block_id` of the trip, when the feed sets one. Named in snake_case unlike the rest of this object, which is how the API emits it.","type":"string"},"distance":{"description":"Distance of the leg in meters.","type":"number"},"duration":{"description":"Duration of the leg in seconds.","format":"int64","type":"integer"},"endTime":{"description":"Epoch timestamp (in milliseconds) for the leg's end time.","format":"int64","type":"integer"},"feedId":{"description":"GTFS feed identifier.","type":"string"},"feedVersionSha1":{"description":"SHA-1 hash representing the GTFS feed version.","pattern":"^[0-9a-f]{40}$","type":"string"},"from":{"$ref":"#/components/schemas/Stop"},"headsign":{"description":"Destination or headsign for the transit leg.","type":"string"},"intermediateStops":{"description":"Optional list of intermediate stops (only present on some transit legs).","items":{"$ref":"#/components/schemas/Stop"},"type":"array"},"legGeometry":{"$ref":"#/components/schemas/LegGeometry"},"mode":{"description":"Mode of travel for the leg (e.g., WALK, RAIL).","type":"string"},"routeColor":{"description":"Hex color code for the route.","type":"string"},"routeId":{"description":"Identifier for the route.","type":"string"},"routeLongName":{"description":"Long name/description of the route.","type":"string"},"routeOnestopId":{"description":"One-stop identifier for the route.","type":"string"},"routeShortName":{"description":"Short name of the route.","type":"string"},"routeTextColor":{"description":"Hex text color for the route.","type":"string"},"routeType":{"description":"Type of the transit route (e.g., 1 for rail).","type":"integer"},"startTime":{"description":"Epoch timestamp (in milliseconds) for the leg's start time.","format":"int64","type":"integer"},"steps":{"description":"List of navigation steps (structure undefined; may be empty).","items":{"type":"object"},"type":"array"},"to":{"$ref":"#/components/schemas/Stop"},"transitLeg":{"description":"Indicates if the leg is a transit leg.","type":"boolean"},"tripId":{"description":"Identifier for the transit trip.","type":"string"}},"type":"object"},"LegGeometry":{"properties":{"length":{"description":"Number of points in `points`.","type":"integer"},"points":{"description":"The leg's shape as an encoded polyline, precision 5.","type":"string"}},"type":"object"},"Location":{"properties":{"lat":{"description":"Latitude coordinate.","format":"double","maximum":90,"minimum":-90,"type":"number"},"lon":{"description":"Longitude coordinate.","format":"double","maximum":180,"minimum":-180,"type":"number"},"name":{"description":"Name of the location (may be empty).","type":"string"}},"type":"object"},"Plan":{"properties":{"date":{"description":"Epoch timestamp (in milliseconds) representing the date of the plan.","format":"int64","type":"integer"},"from":{"$ref":"#/components/schemas/Location"},"itineraries":{"description":"Candidate trips, best first. Empty when no trip was found.","items":{"$ref":"#/components/schemas/Itinerary"},"type":"array"},"to":{"$ref":"#/components/schemas/Location"}},"type":"object"},"PlanResponse":{"properties":{"earliestArrivals":{"description":"Earliest arrival time at each reachable stop. Present only when `includeEarliestArrivals` is true.","items":{"$ref":"#/components/schemas/StopArrival"},"type":"array"},"plan":{"$ref":"#/components/schemas/Plan"}},"type":"object"},"Stop":{"properties":{"departure":{"description":"Epoch timestamp (in milliseconds) for the departure time from this stop.","format":"int64","type":"integer"},"lat":{"description":"Latitude coordinate of the stop.","format":"double","maximum":90,"minimum":-90,"type":"number"},"lon":{"description":"Longitude coordinate of the stop.","format":"double","maximum":180,"minimum":-180,"type":"number"},"name":{"description":"Stop name (may be empty).","type":"string"},"stopCode":{"description":"Stop code.","type":"string"},"stopId":{"description":"Stop identifier.","type":"string"},"stopIndex":{"description":"Index of the stop in the sequence (if available).","type":"integer"},"stopOnestopId":{"description":"One-stop identifier for the stop.","type":"string"},"stopSequence":{"description":"Stop sequence number (if available).","type":"integer"}},"type":"object"},"StopArrival":{"properties":{"earliestArrival":{"description":"Earliest arrival time at the stop, as Unix time in seconds.","format":"int64","type":"integer"},"lat":{"description":"Latitude of the stop.","format":"double","maximum":90,"minimum":-90,"type":"number"},"lon":{"description":"Longitude of the stop.","format":"double","maximum":180,"minimum":-180,"type":"number"},"stopId":{"description":"GTFS stop identifier from the source feed.","type":"string"},"stopName":{"description":"Name of the stop.","type":"string"},"stop_code":{"description":"GTFS stop code, when the feed provides one.","type":"string"}},"type":"object"},"ValhallaAccess":{"description":"Which travelers may pass. Node access omits `moped` and `motorcycle`.","properties":{"HOV":{"description":"High-occupancy vehicles.","type":"boolean"},"bicycle":{"description":"Bicycles.","type":"boolean"},"bus":{"description":"Buses.","type":"boolean"},"car":{"description":"Cars.","type":"boolean"},"emergency":{"description":"Emergency vehicles.","type":"boolean"},"moped":{"description":"Mopeds.","type":"boolean"},"motorcycle":{"description":"Motorcycles.","type":"boolean"},"pedestrian":{"description":"Pedestrians.","type":"boolean"},"taxi":{"description":"Taxis.","type":"boolean"},"truck":{"description":"Trucks.","type":"boolean"},"wheelchair":{"description":"Wheelchairs.","type":"boolean"}},"type":"object","x-requested-by":"verbose"},"ValhallaAccessRestriction":{"description":"One restriction on travel along an edge, and the travelers it applies to.","properties":{"HOV":{"description":"Applies to high-occupancy vehicles.","type":"boolean"},"bus":{"description":"Applies to buses.","type":"boolean"},"car":{"description":"Applies to cars.","type":"boolean"},"edge_index":{"description":"Index of the edge within its tile.","type":"integer"},"emergency":{"description":"Applies to emergency vehicles.","type":"boolean"},"except_destination":{"description":"Whether vehicles with a destination on the edge are exempt.","type":"boolean"},"moped":{"description":"Applies to mopeds.","type":"boolean"},"motorcycle":{"description":"Applies to motorcycles.","type":"boolean"},"pedestrian":{"description":"Applies to pedestrians.","type":"boolean"},"taxi":{"description":"Applies to taxis.","type":"boolean"},"truck":{"description":"Applies to trucks.","type":"boolean"},"type":{"description":"What is restricted.","enum":["hazmat","max_height","max_width","max_length","max_weight","max_axle_load","timed_allowed","timed_denied","destination_allowed","max_axles","unsupported"],"type":"string"},"value":{"description":"The limit. A number for the size and weight limits, in meters and metric tons; an integer for `max_axles`; a boolean for `hazmat`; and for the timed and destination types, an object holding the encoded `time_domain`."},"wheelchair":{"description":"Applies to wheelchairs.","type":"boolean"}},"type":"object"},"ValhallaAdmin":{"description":"A country and, where known, the state or province within it.","properties":{"country_code":{"description":"ISO 3166-1 alpha-2 country code.","example":"US","type":"string"},"country_text":{"description":"Country name.","example":"United States","type":"string"},"state_code":{"description":"ISO 3166-2 subdivision code, without the country prefix.","example":"CA","type":"string"},"state_text":{"description":"State or province name.","example":"California","type":"string"}},"type":"object"},"ValhallaAdminCrossing":{"description":"One border crossing along a leg.","properties":{"begin_shape_index":{"description":"Index into the leg's shape where the crossing edge starts.","type":"integer"},"end_shape_index":{"description":"Index into the leg's shape where the crossing edge ends.","type":"integer"},"from_admin_index":{"description":"Index into `admins` of the area being left.","type":"integer"},"to_admin_index":{"description":"Index into `admins` of the area being entered.","type":"integer"}},"type":"object"},"ValhallaAutoCostingOptions":{"allOf":[{"$ref":"#/components/schemas/ValhallaBaseCostingOptions"},{"description":"Options for auto, bus, and taxi costings. Parsed in src/sif/autocost.cc.","properties":{"alley_factor":{"default":1,"description":"A factor that modifies (multiplies) the cost when [alleys](https://wiki.openstreetmap.org/wiki/Tag:service%3Dalley) are encountered.  Auto routes generally want to avoid alleys or narrow service roads between buildings.","maximum":100000,"minimum":0.1,"type":"number"},"height":{"default":1.6,"description":"Vehicle height in meters for access restriction matching.","type":"number"},"include_hot":{"default":false,"description":"A boolean value which indicates the desire to include tolled HOV roads which require the driver to pay a toll if the occupant requirement isn't met.","type":"boolean"},"include_hov2":{"default":false,"description":"A boolean value which indicates the desire to include HOV roads with a 2-occupant requirement in the route when advantageous.","type":"boolean"},"include_hov3":{"default":false,"description":"A boolean value which indicates the desire to include HOV roads with a 3-occupant requirement in the route when advantageous.","type":"boolean"},"length":{"default":2.7,"description":"Vehicle length in meters for access restriction matching.","type":"number"},"restriction_probability":{"default":100,"description":"Percentage chance to honour probabilistic access restrictions.","maximum":100,"minimum":0,"type":"integer"},"top_speed":{"default":140,"description":"Top speed the vehicle can go in km/h. Also used to avoid roads with higher speeds than this value (see speed_penalty_factor for more details). `top_speed` must be between 10 and 252 km/h. The default value is 140 km/h for auto, taxi and bus.","maximum":252,"minimum":10,"type":"integer"},"use_distance":{"default":0,"description":"A factor that allows controlling the contribution of distance and time to the route costs. The value is in range between 0 and 1, where 0 only takes time into account  and 1 only distance. A factor of 0.5 will weigh them roughly equally.","maximum":1,"minimum":0,"type":"number"},"use_highways":{"default":0.5,"description":"This value indicates the willingness to take highways. This is a range of values between 0 and 1. Values near 0 attempt to avoid highways and values near 1 will  favor highways. Note that sometimes highways are required to complete a route so values of 0 are not guaranteed to avoid highways entirely.","maximum":1,"minimum":0,"type":"number"},"use_tolls":{"default":0.5,"description":"This value indicates the willingness to take roads with tolls. This is a range of values between 0 and 1. Values smaller than 0.5 attempt to  avoid tolls and values greater than 0.5 will slightly favor them. A value of 0.5 indicates no preference. Note that sometimes roads with tolls are required to complete a  route so values of 0 are not guaranteed to avoid them entirely.","maximum":1,"minimum":0,"type":"number"},"weight":{"default":0.8,"description":"Vehicle weight in metric tons for access restriction matching.","type":"number"},"width":{"default":1.9,"description":"Vehicle width in meters for access restriction matching.","type":"number"}},"type":"object"}]},"ValhallaBaseCostingOptions":{"allOf":[{"$ref":"#/components/schemas/ValhallaHardExclusions"},{"properties":{"alley_penalty":{"description":"A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.","maximum":43200,"minimum":0,"type":"number"},"closure_factor":{"default":9,"description":"A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty  to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck \u0026 taxi.","maximum":10,"minimum":1,"type":"number"},"country_crossing_cost":{"default":600,"description":"A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.","maximum":43200,"minimum":0,"type":"number"},"country_crossing_penalty":{"default":0,"description":"A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning  country boundaries.","maximum":43200,"minimum":0,"type":"number"},"destination_only_penalty":{"default":600,"description":"A penalty applied when entering an road which is only allowed to enter if necessary to reach  the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).","maximum":43200,"minimum":0,"type":"number"},"disable_hierarchy_pruning":{"default":false,"description":"Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds  the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored","type":"boolean"},"ferry_cost":{"default":300,"description":"A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.","maximum":43200,"minimum":0,"type":"number"},"fixed_speed":{"default":0,"description":"Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.","maximum":252,"minimum":0,"type":"integer"},"gate_cost":{"default":30,"description":"A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered.  This cost is added to estimated and elapsed times.","maximum":43200,"minimum":0,"type":"number"},"gate_penalty":{"description":"A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.","maximum":43200,"minimum":0,"type":"number"},"ignore_access":{"default":false,"description":"Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road  network regardless of restrictions","type":"boolean"},"ignore_closures":{"default":false,"description":"If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:**  This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request  and will return an error if it is.","type":"boolean"},"ignore_oneways":{"default":false,"description":"If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the  road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.","type":"boolean"},"ignore_restrictions":{"description":"If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions).  Especially useful for matching GPS traces to the road network regardless of restrictions.","type":"boolean"},"maneuver_penalty":{"default":5,"description":"A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common.  This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.","maximum":43200,"minimum":0,"type":"number"},"name":{"description":"Required for recostings entries; must be unique.","type":"string"},"private_access_penalty":{"description":"A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or  [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered.  Default is 600 for pedestrian, 450 otherwise.","maximum":43200,"minimum":0,"type":"number"},"rail_ferry_cost":{"default":300,"description":"A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.","maximum":43200,"minimum":0,"type":"number"},"service_factor":{"default":1,"description":"A factor that modifies (multiplies) the cost when generic service roads are encountered.","maximum":100000,"minimum":0.1,"type":"number"},"service_penalty":{"description":"A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.","maximum":43200,"minimum":0,"type":"number"},"shortest":{"default":false,"description":"Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings \u0026 penalties. Also note, `shortest` will not  disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.","type":"boolean"},"speed_penalty_factor":{"default":0.05,"description":"Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without  penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.","maximum":1,"minimum":0,"type":"number"},"speed_types":{"description":"Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set.  If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.","items":{"$ref":"#/components/schemas/ValhallaSpeedType"},"maxItems":4,"type":"array","uniqueItems":true},"toll_booth_cost":{"default":15,"description":"A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered.  This cost is added to the estimated and elapsed times.","maximum":43200,"minimum":0,"type":"number"},"toll_booth_penalty":{"default":0,"description":"A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered.  This penalty can be used to create paths that avoid toll roads.","maximum":43200,"minimum":0,"type":"number"},"use_ferry":{"default":0.5,"description":"This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near  0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes  ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.","maximum":1,"minimum":0,"type":"number"},"use_living_streets":{"description":"This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets  and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.","maximum":1,"minimum":0,"type":"number"},"use_rail_ferry":{"default":0.4,"description":"This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near  0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes  rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.","maximum":1,"minimum":0,"type":"number"},"use_tracks":{"description":"This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and  values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks  are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.","maximum":1,"minimum":0,"type":"number"}},"type":"object"}],"description":"Options shared by all costing models. Parsed in src/sif/dynamiccost.cc.","type":"object"},"ValhallaBaseRequest":{"properties":{"costing":{"$ref":"#/components/schemas/ValhallaCostingType"},"costing_options":{"$ref":"#/components/schemas/ValhallaCostingOptions"},"date_time":{"$ref":"#/components/schemas/ValhallaDateTimeOptions"},"exclude_locations":{"description":"A set of locations to exclude or avoid within a route.","items":{"$ref":"#/components/schemas/ValhallaLocation"},"type":"array"},"exclude_polygons":{"description":"Array of coordinate rings `[[lon,lat],…]` or a GeoJSON FeatureCollection. Roads intersecting these rings will be avoided during path finding.","oneOf":[{"description":"Array of closed coordinate rings. All edges intersecting any ring are excluded.","items":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"type":"array"},{"description":"GeoJSON FeatureCollection. Each Feature may carry a `properties.levels` array to restrict exclusion to specific building/indoor levels in pedestrian routing.","properties":{"features":{"items":{"properties":{"geometry":{"description":"GeoJSON Polygon geometry (single-ring only)","type":"object"},"properties":{"properties":{"levels":{"description":"Building/indoor levels to exclude within this polygon. When omitted, all edges intersecting the polygon are excluded.","items":{"type":"integer"},"type":"array"}},"type":"object"},"type":{"enum":["Feature"],"type":"string"}},"type":"object"},"type":"array"},"type":{"enum":["FeatureCollection"],"type":"string"}},"type":"object"}]},"format":{"$ref":"#/components/schemas/ValhallaOutputFormat"},"id":{"description":"Arbitrary request identifier echoed in the response.","type":"string"},"language":{"default":"en-US","description":"BCP47 locale for narrative output. See locales/ for supported values.","type":"string"},"linear_cost_factors":{"description":"Customized cost factors that influence path finding, specified as an array of JSON objects. Objects can be either a GeoJSON linestring feature and a  `\"factor\"` property or a plain object with a \"shape\" key, whose value needs to be an encoded polyline (with 6 digit precision), and a \"factor\" key whose value  needs to be float. Valhalla will perform an edge walk (see the map matching documentation for more info) to match the geometry onto edges and use those  factors in costing. Edges with factors larger than 1 will be increasingly avoided, while edges with factors smaller than 1 increasingly favored.","items":{"$ref":"#/components/schemas/ValhallaLinearCostFactor"},"type":"array"},"units":{"default":"km","enum":["km","miles","mi"],"type":"string"}},"type":"object"},"ValhallaBicycleCostingOptions":{"allOf":[{"$ref":"#/components/schemas/ValhallaBaseCostingOptions"},{"description":"Options for bicycle costing. Parsed in src/sif/bicyclecost.cc.","properties":{"avoid_bad_surfaces":{"default":0.25,"description":"This value is meant to represent how much a cyclist wants to avoid roads with poor surfaces relative to the bicycle type being used. This is a range of values  between 0 and 1. When the value is 0, there is no penalization of roads with different surface types; only bicycle speed on each surface is taken into account.  As the value approaches 1, roads with poor surfaces for the bike are penalized heavier so that they are only taken if they significantly improve travel time.  When the value is equal to 1, all bad surfaces are completely disallowed from routing, including start and end points.","maximum":1,"minimum":0,"type":"number"},"bicycle_type":{"default":"hybrid","description":"The type of bicycle. Affects the cycling speed and surface factors.","enum":["road","hybrid","city","cross","mountain"],"type":"string","x-enumDescriptions":{"city":"A bicycle made mostly for city riding or casual riding on roads and paths with good surfaces. Sets cycling_speed to 18 km/h.","cross":"A cyclo-cross bicycle, which is similar to a road bicycle but with wider tires suitable to rougher surfaces. Sets cycling_speed to 20 km/h.","hybrid":"A bicycle made mostly for city riding or casual riding on roads and paths with good surfaces. Sets cycling_speed to 18 km/h.","mountain":"A mountain bicycle suitable for most surfaces but generally heavier and slower on paved surfaces. Sets cycling_speed to 16 km/h.","road":"A road-style bicycle with narrow tires that is generally lightweight and designed for speed on paved surfaces. Sets cycling_speed to 25 km/h."}},"bss_rent_penalty":{"default":0,"description":"This value is useful when `bikeshare` is chosen as travel mode. It is meant to describe the potential effort to return a rental bike.  This value won't be displayed and used only inside of the algorithm.","maximum":43200,"minimum":0,"type":"number"},"bss_return_cost":{"default":120,"description":"This value is useful when `bikeshare` is chosen as travel mode. It is meant to give the time will be used to return a rental bike. This value will be  displayed in the final directions and used to calculate the whole duration.","maximum":43200,"minimum":0,"type":"number"},"cycling_speed":{"description":"Cycling speed in km/h. Defaults depend on transport_type.","minimum":5,"type":"number"},"use_hills":{"default":0.25,"description":"A cyclist's desire to tackle hills in their routes. This is a range of values from 0 to 1, where 0 attempts to avoid hills and steep grades even if it means a  longer (time and distance) path, while 1 indicates the rider does not fear hills and steeper grades. Based on the `use_hills` factor, penalties are applied to roads  based on elevation change and grade. These penalties help the path avoid hilly roads in favor of flatter roads or less steep grades where available. Note that it is  not always possible to find alternate paths to avoid hills (for example when route locations are in mountainous areas).","maximum":1,"minimum":0,"type":"number"},"use_roads":{"default":0.25,"description":"A cyclist's propensity to use roads alongside other vehicles. This is a range of values from 0 to 1, where 0 attempts to avoid roads and stay on cycleways and paths,  and 1 indicates the rider is more comfortable riding on roads. Based on the `use_roads` factor, roads with certain classifications and higher speeds are penalized in an attempt to avoid them when finding the best path.","maximum":1,"minimum":0,"type":"number"}},"type":"object"}]},"ValhallaCentroidResponse":{"description":"Routes from every requested location to the one convergence point: `trip` from the first location, and `alternates` from the others.","properties":{"alternates":{"description":"Routes from the second and later requested locations to the same convergence point as `trip`, in request order.","items":{"$ref":"#/components/schemas/ValhallaTripAlternate"},"type":"array"},"id":{"description":"The request's `id`, echoed back. Absent when the request has none.","type":"string","x-requested-by":"id"},"trip":{"$ref":"#/components/schemas/ValhallaTrip"}},"type":"object"},"ValhallaContour":{"description":"At least one of time or distance must be specified. You can only specify one metric per contour, i.e. time or distance.","properties":{"color":{"description":"Hex color without '#' (e.g. \"ff0000\").","type":"string"},"distance":{"description":"Contour limit in kilometers.","type":"number","x-rad-max":100,"x-rad-min":1},"time":{"description":"Contour limit in minutes.","type":"number","x-rad-max":100,"x-rad-min":1}},"type":"object"},"ValhallaCostingOptions":{"description":"Costing options keyed by costing model name.","properties":{"auto":{"$ref":"#/components/schemas/ValhallaAutoCostingOptions"},"bicycle":{"$ref":"#/components/schemas/ValhallaBicycleCostingOptions"},"bikeshare":{"$ref":"#/components/schemas/ValhallaPedestrianCostingOptions"},"bus":{"$ref":"#/components/schemas/ValhallaAutoCostingOptions"},"motor_scooter":{"$ref":"#/components/schemas/ValhallaMotorScooterCostingOptions"},"motorcycle":{"$ref":"#/components/schemas/ValhallaMotorcycleCostingOptions"},"pedestrian":{"$ref":"#/components/schemas/ValhallaPedestrianCostingOptions"},"taxi":{"$ref":"#/components/schemas/ValhallaAutoCostingOptions"},"truck":{"$ref":"#/components/schemas/ValhallaTruckCostingOptions"}},"type":"object"},"ValhallaCostingType":{"description":"`multimodal` is not available. The street graph has no transit; use transit routing at `/api/v2/routing/otp/plan`.","enum":["auto","bicycle","pedestrian","truck","bus","taxi","motor_scooter","motorcycle","bikeshare","auto_pedestrian"],"example":"auto","type":"string"},"ValhallaDateTimeOptions":{"properties":{"type":{"description":"0=current, 1=depart_at, 2=arrive_by, 3=invariant","enum":[0,1,2,3],"type":"integer"},"value":{"description":"ISO 8601 local datetime string in the format `YYYY-MM-DDTHH:MM`, e.g. `2016-07-03T08:06`. Required for types 1, 2, 3.","type":"string"}},"type":"object"},"ValhallaDirectionsType":{"default":"instructions","enum":["none","maneuvers","instructions"],"type":"string","x-enumDescriptions":{"instructions":"Maneuvers with narrative instructions (default).","maneuvers":"Maneuvers only, no narrative text.","none":"No maneuvers or instructions."}},"ValhallaEdgeSurface":{"description":"Road surface, from smoothest to roughest.","enum":["paved_smooth","paved","paved_rough","compacted","dirt","gravel","path","impassable"],"type":"string"},"ValhallaEdgeUse":{"description":"What the edge is used for.","enum":["road","ramp","turn_channel","track","driveway","alley","parking_aisle","emergency_access","drive_through","culdesac","living_street","service_road","cycleway","mountain_bike","sidewalk","footway","elevator","steps","escalator","path","pedestrian","platform","bridleway","pedestrian_crossing","rest_area","service_area","other","rail-ferry","ferry","rail","bus","egress_connection","platform_connection","transit_connection","construction"],"type":"string"},"ValhallaExpansionFeature":{"properties":{"geometry":{"$ref":"#/components/schemas/ValhallaGeoJsonGeometry"},"properties":{"description":"One key per requested expansion property.","properties":{"cost":{"description":"Cumulative cost to reach the end of the edge.","type":"integer"},"distance":{"description":"Cumulative distance to reach the end of the edge, in meters.","type":"integer"},"duration":{"description":"Cumulative travel time to reach the edge, in seconds.","type":"integer"},"edge_id":{"description":"Graph edge identifier.","format":"int64","type":"integer"},"edge_status":{"description":"Where the edge got to in the search.","enum":["c","s","r"],"type":"string"},"expansion_index":{"description":"Index of the location whose search tree reached the edge. 0 for a single-location isochrone.","type":"integer"},"expansion_type":{"description":"Whether the edge belongs to the forward or reverse expansion.","type":"integer"},"flow_mask_constrained":{"description":"Whether the edge's speed came from constrained-flow speeds. Returned for `flow_sources`.","type":"boolean"},"flow_mask_current":{"description":"Whether the edge's speed came from live traffic. One of four flags returned for the `flow_sources` expansion property.","type":"boolean"},"flow_mask_free_flow":{"description":"Whether the edge's speed came from free-flow speeds. Returned for `flow_sources`.","type":"boolean"},"flow_mask_predicted":{"description":"Whether the edge's speed came from predicted (historical) traffic. Returned for `flow_sources`.","type":"boolean"},"pred_edge_id":{"description":"Identifier of the predecessor edge.","format":"int64","type":"integer"},"travel_mode":{"description":"Name of the travel mode used on the edge. This deployment returns `unknown` for auto costing.","type":"string"}},"type":"object"},"type":{"description":"GeoJSON feature type.","enum":["Feature"],"type":"string"}},"type":"object"},"ValhallaExpansionProperty":{"description":"GeoJSON property key to include in the expansion response. Each additional property increases output size by roughly 10%. By default an empty properties object is returned.","enum":["duration","cost","distance","edge_status","edge_id","pred_edge_id","expansion_type","flow_sources","travel_mode","expansion_index"],"example":"duration","type":"string","x-enumDescriptions":{"cost":"Cumulative cost to reach the end of the edge.","distance":"Cumulative distance (meters) to reach the end of the edge.","duration":"Cumulative travel time (seconds) to reach the edge.","edge_id":"Graph edge ID as a 64-bit value.","edge_status":"Edge status — c (connected), s (settled), or r (reached).","expansion_index":"Index of the source or target whose tree the edge belongs to, only set by CostMatrix.","expansion_type":"Whether this edge belongs to a forward or reverse expansion.","flow_sources":"Speed sources used (free_flow, constrained, predicted, current).","pred_edge_id":"Predecessor edge ID as a 64-bit value.","travel_mode":"Travel mode (drive, pedestrian, bicycle, transit)."}},"ValhallaExpansionRequest":{"allOf":[{"$ref":"#/components/schemas/ValhallaBaseRequest"},{"properties":{"action":{"description":"Algorithm to expand.","enum":["route","isochrone","sources_to_targets"],"type":"string"},"dedupe":{"default":false,"description":"Emit each edge only once.","type":"boolean"},"expansion_properties":{"items":{"$ref":"#/components/schemas/ValhallaExpansionProperty"},"type":"array"},"locations":{"items":{"$ref":"#/components/schemas/ValhallaLocation"},"minItems":1,"type":"array","x-rad-max-items":3},"skip_opposites":{"default":false,"description":"Skip reverse-direction edges in the output.","type":"boolean"}},"required":["locations","costing","action"],"type":"object"}]},"ValhallaExpansionResponse":{"description":"The edges the router explored, as GeoJSON LineStrings. Each requested entry in `expansion_properties` appears as a property on every feature; with none requested the properties object is empty.","properties":{"features":{"description":"One feature per explored edge.","items":{"$ref":"#/components/schemas/ValhallaExpansionFeature"},"type":"array"},"properties":{"description":"Collection-level metadata about the expansion.","properties":{"algorithm":{"description":"Which search algorithm explored the graph.","example":"dijkstras","type":"string"}},"type":"object"},"type":{"description":"GeoJSON collection type.","enum":["FeatureCollection"],"type":"string"}},"type":"object"},"ValhallaFactor":{"description":"Cost multiplier applied to matched edges (min dependent on service configuration, default 1).","type":"number","x-rad-max":20,"x-rad-min":0.1},"ValhallaFilterAction":{"enum":["include","exclude"],"example":"exclude","type":"string","x-enumDescriptions":{"exclude":"Exclude all listed Onestop IDs; everything else is included.","include":"Include only the listed Onestop IDs; everything else is excluded."}},"ValhallaGeoJsonFactorVariant":{"properties":{"geometry":{"properties":{"coordinates":{"description":"Array of [lon, lat] positions.","items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"type":{"enum":["LineString"],"type":"string"}},"required":["type","coordinates"],"type":"object"},"properties":{"properties":{"factor":{"$ref":"#/components/schemas/ValhallaFactor"}},"required":["factor"],"type":"object"},"type":{"enum":["Feature"],"type":"string"}},"required":["type","geometry","properties"],"type":"object"},"ValhallaGeoJsonGeometry":{"description":"A GeoJSON geometry, per RFC 7946.","properties":{"coordinates":{"description":"Position array, nested to a depth set by `type`.","items":{},"type":"array"},"type":{"description":"Geometry type, which sets how deeply `coordinates` is nested.","enum":["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"],"type":"string"}},"type":"object"},"ValhallaGraphId":{"description":"A graph identifier: the hierarchy level, the tile within it, and the object's index in that tile, plus `value`, all three packed into one integer.","properties":{"id":{"description":"Index within the tile.","type":"integer"},"level":{"description":"Hierarchy level. 0 for highways, 1 for arterials, 2 for local roads, 3 for transit.","type":"integer"},"tile_id":{"description":"Tile within the level.","type":"integer"},"value":{"description":"The packed identifier.","format":"int64","type":"integer"}},"type":"object","x-requested-by":"verbose"},"ValhallaHardExclusions":{"description":"**EXPERIMENTAL** — Hard exclusion options available for all costing methods. These options are not available by default; the server config must have `service_limits.allow_hard_exclusions` set to true in order to allow them. If not allowed and any of the hard excludes is set to true, the server will return a warning and ignore the hard excludes.","properties":{"exclude_bridges":{"default":false,"description":"This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.","type":"boolean"},"exclude_ferries":{"default":false,"description":"This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.","type":"boolean"},"exclude_highways":{"default":false,"description":"This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.","type":"boolean"},"exclude_tolls":{"default":false,"description":"This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.","type":"boolean"},"exclude_tunnels":{"default":false,"description":"This value indicates whether or not the path may include tunnels. If `exclude_tunnels` is set to true it is allowed to start and end with tunnels, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.","type":"boolean"}},"type":"object"},"ValhallaHeightRequest":{"properties":{"encoded_polyline":{"description":"Polyline6 (default) or polyline5 (with shape_format=polyline5) encoded shape.","type":"string"},"height_precision":{"default":0,"description":"Decimal places in elevation values.","enum":[0,1,2],"type":"integer"},"id":{"type":"string"},"range":{"default":false,"description":"Return cumulative distance alongside elevation values.","type":"boolean"},"resample_distance":{"description":"Resample the shape at this interval in meters before querying elevation.","minimum":0,"type":"number","x-rad-max":100},"shape":{"description":"Points at which to query elevation. Mutually exclusive with encoded_polyline.","items":{"$ref":"#/components/schemas/ValhallaLocation"},"minItems":1,"type":"array","x-rad-max-items":50},"shape_format":{"$ref":"#/components/schemas/ValhallaShapeFormat"}},"type":"object"},"ValhallaIncident":{"description":"A traffic incident, as supplied by the incident feed.","properties":{"alertc_codes":{"description":"ALERT-C event codes. Absent when there are none.","items":{"type":"integer"},"type":"array"},"clear_lanes":{"description":"Which lanes remain open.","type":"string"},"congestion":{"description":"Congestion caused by the incident. Absent when unknown.","properties":{"value":{"description":"Congestion level.","type":"integer"}},"type":"object"},"creation_time":{"description":"When the incident was reported, in Unix seconds.","format":"int64","type":"integer"},"description":{"description":"Short description.","type":"string"},"end_time":{"description":"When the incident is expected to end, in Unix seconds.","format":"int64","type":"integer"},"id":{"description":"Incident identifier.","format":"int64","type":"integer"},"impact":{"description":"Severity.","type":"string"},"iso_3166_1_alpha2":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"iso_3166_1_alpha3":{"description":"ISO 3166-1 alpha-3 country code.","type":"string"},"lanes_blocked":{"description":"Names of the blocked lanes. Absent when there are none.","items":{"type":"string"},"type":"array"},"length":{"description":"Length affected, in meters.","type":"integer"},"long_description":{"description":"Full description.","type":"string"},"num_lanes_blocked":{"description":"Number of lanes blocked.","type":"integer"},"road_closed":{"description":"Whether the road is closed.","type":"boolean"},"start_time":{"description":"When the incident starts, in Unix seconds.","format":"int64","type":"integer"},"sub_type":{"description":"Feed-specific subtype.","type":"string"},"sub_type_description":{"description":"Description of `sub_type`.","type":"string"},"type":{"description":"Kind of incident, such as an accident or road works.","type":"string"}},"type":"object"},"ValhallaIsochroneFeature":{"description":"One contour, or one located point when `show_locations` is set.","properties":{"geometry":{"$ref":"#/components/schemas/ValhallaGeoJsonGeometry"},"properties":{"description":"Contour metadata, and styling keys that render directly in most GeoJSON viewers.","properties":{"color":{"description":"Stroke color as a hex string with a leading `#`, e.g. `#bf4040`.","type":"string"},"contour":{"description":"The contour's value: minutes for a time contour, distance units for a distance contour.","type":"number"},"fill":{"description":"Fill color, with a leading `#`.","type":"string"},"fill-opacity":{"description":"Fill opacity, hyphenated for simplestyle-spec renderers.","type":"number"},"fillColor":{"description":"Fill color as a hex string with a leading `#`; the same value as `fill`.","type":"string"},"fillOpacity":{"description":"Fill opacity, camel-cased for Leaflet.","type":"number"},"location_index":{"description":"Index of the request location this feature belongs to.","type":"integer","x-requested-by":"show_locations"},"metric":{"description":"Which kind of contour this is.","enum":["time","distance"],"type":"string"},"opacity":{"description":"Stroke opacity.","type":"number"},"type":{"description":"For located points, whether this is the input or the snapped location.","enum":["input","snapped"],"type":"string","x-requested-by":"show_locations"}},"type":"object"},"type":{"description":"GeoJSON feature type.","enum":["Feature"],"type":"string"}},"type":"object"},"ValhallaIsochroneRequest":{"allOf":[{"$ref":"#/components/schemas/ValhallaBaseRequest"},{"properties":{"contours":{"items":{"$ref":"#/components/schemas/ValhallaContour"},"minItems":1,"type":"array","x-rad-max-items":5},"denoise":{"default":1,"description":"Factor to remove smaller contours, e.g. a value of 0.5 drops any contours that are less than half the area of the largest contour.","maximum":1,"minimum":0,"type":"number"},"generalize":{"description":"Douglas-Peucker polyline generalization tolerance in meters.","minimum":0,"type":"number","x-rad-max":200},"locations":{"items":{"$ref":"#/components/schemas/ValhallaLocation"},"minItems":1,"type":"array","x-rad-max-items":3},"polygons":{"default":false,"description":"Return polygons instead of linestrings.","type":"boolean"},"reverse":{"default":false,"description":"Compute inbound (reverse) isochrone.","type":"boolean"},"show_locations":{"default":false,"description":"A boolean indicating whether the input locations should be returned as MultiPoint features: one feature for the exact input coordinates and one feature for the coordinates of the network node it snapped to.","type":"boolean"}},"required":["locations","costing","contours"],"type":"object"}]},"ValhallaIsochroneResponse":{"description":"Reachable areas as GeoJSON. Contours come back as LineStrings by default, or Polygons when `polygons` is true; `show_locations` adds Point and MultiPoint features for the input and snapped locations.","properties":{"features":{"description":"One feature per contour, plus located points when `show_locations` is set.","items":{"$ref":"#/components/schemas/ValhallaIsochroneFeature"},"type":"array"},"type":{"description":"GeoJSON collection type.","enum":["FeatureCollection"],"type":"string"}},"type":"object"},"ValhallaLinearCostFactor":{"description":"Either an encoded-polyline form or a GeoJSON LineString feature. In case of passing GeoJSON, the factor must be passed as a feature property. Note that the geometry must align with shapes present in Valhalla's graph.","oneOf":[{"$ref":"#/components/schemas/ValhallaShapeFactorVariant"},{"$ref":"#/components/schemas/ValhallaGeoJsonFactorVariant"}]},"ValhallaLiveSpeed":{"description":"Live traffic on the edge, in km/h. Empty when the edge has no live traffic. The edge is split into up to three segments at the breakpoints, each with its own speed and congestion.","properties":{"breakpoint_0":{"description":"Where the first segment ends, as a fraction of the edge's length.","type":"number"},"breakpoint_1":{"description":"Where the second segment ends, as a fraction of the edge's length.","type":"number"},"congestion_0":{"description":"Congestion on the first segment, from 0 for free-flowing to 1 for stopped, or null when unknown.","nullable":true,"type":"number"},"congestion_1":{"description":"Congestion on the second segment, or null when unknown.","nullable":true,"type":"number"},"congestion_2":{"description":"Congestion on the third segment, or null when unknown.","nullable":true,"type":"number"},"overall_speed":{"description":"Speed across the whole edge.","type":"integer"},"speed_0":{"description":"Speed on the first segment, or null when unknown.","nullable":true,"type":"integer"},"speed_1":{"description":"Speed on the second segment, or null when unknown.","nullable":true,"type":"integer"},"speed_2":{"description":"Speed on the third segment, or null when unknown.","nullable":true,"type":"integer"}},"type":"object","x-requested-by":"verbose"},"ValhallaLocateEdge":{"description":"One candidate edge. Without `verbose`, only `way_id`, the correlated point, `side_of_street`, and `percent_along`; with it, every field but `way_id`, which moves into `edge_info`.","properties":{"access_restrictions":{"description":"Restrictions that apply to travel on the edge.","items":{"$ref":"#/components/schemas/ValhallaAccessRestriction"},"type":"array","x-requested-by":"verbose"},"bounding_circle":{"description":"The search radius that found this edge.","properties":{"lat":{"description":"Latitude of the circle's center.","format":"double","maximum":90,"minimum":-90,"type":"number"},"lon":{"description":"Longitude of the circle's center.","format":"double","maximum":180,"minimum":-180,"type":"number"},"radius":{"description":"Radius in meters.","type":"integer"}},"type":"object","x-requested-by":"verbose","x-secondary":true},"correlated_lat":{"description":"Latitude of the point on the edge the location snapped to.","format":"double","maximum":90,"minimum":-90,"type":"number"},"correlated_lon":{"description":"Longitude of the point on the edge the location snapped to.","format":"double","maximum":180,"minimum":-180,"type":"number"},"distance":{"description":"Distance in meters from the requested point to the snapped point.","type":"number","x-requested-by":"verbose"},"edge":{"$ref":"#/components/schemas/ValhallaLocateEdgeAttributes"},"edge_id":{"$ref":"#/components/schemas/ValhallaGraphId"},"edge_info":{"$ref":"#/components/schemas/ValhallaLocateEdgeInfo"},"heading":{"description":"Compass bearing of the edge at the snapped point, in degrees.","type":"number","x-requested-by":"verbose"},"inbound_reach":{"description":"How many nodes can reach this edge, up to the search's limit. Low values mark disconnected islands.","type":"integer","x-requested-by":"verbose","x-secondary":true},"incidents":{"description":"Traffic incidents on the edge, when incident data is loaded.","items":{"$ref":"#/components/schemas/ValhallaIncident"},"type":"array","x-requested-by":"verbose","x-secondary":true},"linear_reference":{"description":"OpenLR location reference for the edge, as a base64 string.","type":"string","x-requested-by":"verbose","x-secondary":true},"live_speed":{"$ref":"#/components/schemas/ValhallaLiveSpeed"},"outbound_reach":{"description":"How many nodes this edge can reach, up to the search's limit.","type":"integer","x-requested-by":"verbose","x-secondary":true},"percent_along":{"description":"How far along the edge the snapped point falls, from 0 to 1.","type":"number"},"predicted_speeds":{"description":"Historical speed profile in km/h, one value per 5 minutes of the week starting Sunday 00:00 local time, so 2016 values. Empty when the edge has no profile.","items":{"type":"integer"},"type":"array","x-requested-by":"verbose","x-secondary":true},"shoulder":{"description":"Whether the edge has a shoulder.","type":"boolean","x-requested-by":"verbose"},"side_of_street":{"description":"Which side of the edge the requested point lies on.","enum":["left","right","neither"],"type":"string"},"timed_predicted_speed":{"description":"Historical speed in km/h at the location's `date_time`. Present when the location sets `date_time` and the edge has a speed profile.","type":"integer","x-requested-by":"verbose"},"way_id":{"description":"OpenStreetMap way the edge was built from. Without `verbose` only.","format":"int64","type":"integer"}},"type":"object"},"ValhallaLocateEdgeAttributes":{"description":"The directed edge as stored in the routing graph.","properties":{"access":{"$ref":"#/components/schemas/ValhallaAccess"},"access_restriction":{"description":"Whether entries in `access_restrictions` apply.","type":"boolean"},"bike_network":{"description":"Whether the edge is part of a signed bicycle network.","type":"boolean","x-secondary":true},"bridge":{"description":"Whether the edge is a bridge.","type":"boolean"},"classification":{"description":"Road class and use.","properties":{"classification":{"description":"Road class.","enum":["motorway","trunk","primary","secondary","tertiary","unclassified","residential","service_other"],"type":"string"},"internal":{"description":"Whether the edge is internal to an intersection.","type":"boolean"},"link":{"description":"Whether the edge is a ramp or slip road.","type":"boolean"},"surface":{"$ref":"#/components/schemas/ValhallaEdgeSurface"},"use":{"$ref":"#/components/schemas/ValhallaEdgeUse"}},"type":"object"},"country_crossing":{"description":"Whether the edge crosses a country border.","type":"boolean","x-secondary":true},"cycle_lane":{"description":"Cycle lane on the edge.","enum":["none","shared","dedicated","separated"],"type":"string"},"deadend":{"description":"Whether the edge ends in a dead end.","type":"boolean","x-secondary":true},"destination_only":{"description":"Whether through traffic is barred, as on private or delivery-only roads.","type":"boolean"},"destination_only_hgv":{"description":"Whether through traffic is barred for heavy goods vehicles.","type":"boolean","x-secondary":true},"end_node":{"$ref":"#/components/schemas/ValhallaGraphId"},"end_restriction":{"$ref":"#/components/schemas/ValhallaAccess"},"forward":{"description":"Whether the edge runs in the direction of its shape.","type":"boolean"},"geo_attributes":{"description":"Length, grade, and curvature.","properties":{"curvature":{"description":"Curvature, from 0 for straight to 15.","type":"integer"},"length":{"description":"Length in meters.","type":"integer"},"max_down_slope":{"description":"Steepest downward slope, in degrees.","type":"number"},"max_up_slope":{"description":"Steepest upward slope, in degrees.","type":"number"},"weighted_grade":{"description":"Grade in percent, weighted toward steeper sections.","type":"number"}},"type":"object"},"has_sign":{"description":"Whether the edge has guide signs.","type":"boolean","x-secondary":true},"hov_type":{"description":"Occupancy requirement. Present only on HOV-only edges.","enum":["HOV-2","HOV-3"],"type":"string"},"lane_count":{"description":"Number of lanes in this direction.","type":"integer"},"not_thru":{"description":"Whether the edge leads only into a region with no other exit.","type":"boolean","x-secondary":true},"part_of_complex_restriction":{"description":"Whether the edge is part of a restriction spanning several edges.","type":"boolean","x-secondary":true},"round_about":{"description":"Whether the edge is part of a roundabout.","type":"boolean"},"sac_scale":{"description":"Hiking difficulty, per the OpenStreetMap `sac_scale` tag.","enum":["none","hiking","mountain hiking","demanding mountain hiking","alpine hiking","demanding alpine hiking","difficult alpine hiking"],"type":"string","x-secondary":true},"sidewalk_left":{"description":"Whether there is a sidewalk on the left.","type":"boolean","x-secondary":true},"sidewalk_right":{"description":"Whether there is a sidewalk on the right.","type":"boolean","x-secondary":true},"speeds":{"description":"Speeds the router uses for the edge, in km/h.","properties":{"constrained_flow":{"description":"Typical daytime speed. 0 when unknown.","type":"integer"},"default":{"description":"Speed used when no traffic speed applies.","type":"integer"},"free_flow":{"description":"Typical speed at night. 0 when unknown.","type":"integer"},"predicted":{"description":"Whether the edge has a historical speed profile.","type":"boolean"},"type":{"description":"Whether `default` came from a tagged maxspeed or was assigned by road class.","enum":["tagged","classified"],"type":"string"}},"type":"object"},"start_restriction":{"$ref":"#/components/schemas/ValhallaAccess"},"stop_sign":{"description":"Whether there is a stop sign at the end of the edge.","type":"boolean","x-secondary":true},"toll":{"description":"Whether the edge is a toll road.","type":"boolean"},"traffic_signal":{"description":"Whether there is a traffic signal at the end of the edge.","type":"boolean"},"truck_route":{"description":"Whether the edge is a designated truck route.","type":"boolean","x-secondary":true},"tunnel":{"description":"Whether the edge is a tunnel.","type":"boolean"},"yield_sign":{"description":"Whether there is a yield sign at the end of the edge.","type":"boolean","x-secondary":true}},"type":"object","x-requested-by":"verbose"},"ValhallaLocateEdgeInfo":{"description":"Attributes shared by both directions of the edge.","properties":{"bike_network":{"description":"Signed bicycle networks the edge belongs to.","properties":{"local":{"description":"Local network.","type":"boolean"},"mountain":{"description":"Mountain bike network.","type":"boolean"},"national":{"description":"National network.","type":"boolean"},"regional":{"description":"Regional network.","type":"boolean"}},"type":"object"},"conditional_speed_limits":{"additionalProperties":{"type":"integer"},"description":"Speed limits that apply at some times, keyed by the condition in OpenStreetMap opening-hours syntax, in km/h. Present only when the edge has them.","type":"object"},"levels":{"description":"Building levels the edge spans, each a level number or a `[from, to]` range. Present only where the data has levels.","items":{},"type":"array"},"mean_elevation":{"description":"Mean elevation in meters, or null when the tiles have no elevation data.","nullable":true,"type":"integer"},"names":{"description":"Street names and route numbers.","items":{"type":"string"},"type":"array"},"osm_node_ids":{"description":"OpenStreetMap nodes along the edge. Present only when the tiles were built with them.","items":{"format":"int64","type":"integer"},"type":"array"},"shape":{"description":"The edge's geometry, as a polyline at six digits of precision.","type":"string"},"speed_limit":{"description":"Posted speed limit in km/h, 0 when unknown, or `unlimited`.","oneOf":[{"type":"integer"},{"enum":["unlimited"],"type":"string"}]},"way_id":{"description":"OpenStreetMap way the edge was built from.","format":"int64","type":"integer"}},"type":"object","x-requested-by":"verbose"},"ValhallaLocateNode":{"description":"A node at the end of a candidate edge. Without `verbose`, only `lat` and `lon`.","properties":{"access":{"$ref":"#/components/schemas/ValhallaAccess"},"administrative":{"description":"Country, state, and time zone at the node.","properties":{"country":{"description":"Country name.","type":"string"},"iso_3166-1":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"iso_3166-2":{"description":"ISO 3166-2 subdivision code, without the country prefix.","type":"string"},"state":{"description":"State or province name.","type":"string"},"time_zone_name":{"description":"IANA time zone. Absent when unknown.","type":"string"}},"type":"object","x-requested-by":"verbose"},"density":{"description":"Road density around the node, from 0 to 15.","type":"integer","x-requested-by":"verbose"},"drive_on_right":{"description":"Whether traffic drives on the right.","type":"boolean","x-requested-by":"verbose"},"edge_count":{"description":"Number of edges leaving the node.","type":"integer","x-requested-by":"verbose"},"elevation":{"description":"Elevation in meters.","type":"number","x-requested-by":"verbose"},"intersection_type":{"description":"`regular`, `false` for a node joining edges of one road, `dead-end`, or `fork`.","enum":["regular","false","dead-end","fork"],"type":"string","x-requested-by":"verbose"},"lat":{"description":"Latitude.","format":"double","maximum":90,"minimum":-90,"type":"number"},"local_edge_count":{"description":"Number of edges leaving the node on the local road level.","type":"integer","x-requested-by":"verbose"},"lon":{"description":"Longitude.","format":"double","maximum":180,"minimum":-180,"type":"number"},"mode_change":{"description":"Whether travelers can change mode here, as at a parking or bike-share node.","type":"boolean","x-requested-by":"verbose"},"named_intersection":{"description":"Whether the intersection has a name.","type":"boolean","x-requested-by":"verbose"},"node_id":{"$ref":"#/components/schemas/ValhallaGraphId"},"private_access":{"description":"Whether the node is on private land.","type":"boolean","x-requested-by":"verbose"},"stop_index":{"description":"Index of the transit stop. Transit nodes only.","type":"integer","x-requested-by":"verbose"},"tagged_access":{"description":"Whether `access` comes from tags on the node rather than defaults.","type":"boolean","x-requested-by":"verbose"},"traffic_signal":{"description":"Whether the node has a traffic signal.","type":"boolean","x-requested-by":"verbose"},"transition_count":{"description":"Number of links to the same node on other road levels.","type":"integer","x-requested-by":"verbose"},"type":{"description":"What the node is.","enum":["street_intersection","gate","bollard","toll_booth","transit_egress","transit_station","multi_use_transit_platform","bike_share","parking","motor_way_junction","border_control","toll_gantry","sump_buster","building_entrance","elevator"],"type":"string","x-requested-by":"verbose"}},"type":"object"},"ValhallaLocateRequest":{"allOf":[{"$ref":"#/components/schemas/ValhallaBaseRequest"},{"properties":{"locations":{"items":{"$ref":"#/components/schemas/ValhallaLocation"},"minItems":1,"type":"array","x-rad-max-items":50},"verbose":{"default":false,"description":"Return dense edge and node attribution. When false, only the closest point, way ID, and side of street are returned.","type":"boolean"}},"required":["locations"],"type":"object"}]},"ValhallaLocateResponse":{"description":"One entry per requested location, in the order requested.","items":{"$ref":"#/components/schemas/ValhallaLocateResult"},"type":"array"},"ValhallaLocateResult":{"description":"What the router found near one requested coordinate. The request's `verbose` flag sets how much each edge and node carries.","properties":{"edges":{"description":"Candidate edges the location could snap to, nearest first. Null when no data was found near the location.","items":{"$ref":"#/components/schemas/ValhallaLocateEdge"},"nullable":true,"type":"array"},"filtered_edges":{"description":"Candidate edges the request's search filters excluded. Absent when none were.","items":{"$ref":"#/components/schemas/ValhallaLocateEdge"},"type":"array"},"input_lat":{"description":"Latitude as requested.","format":"double","maximum":90,"minimum":-90,"type":"number"},"input_lon":{"description":"Longitude as requested.","format":"double","maximum":180,"minimum":-180,"type":"number"},"nodes":{"description":"Nodes the location snaps to, when it falls at the end of an edge. Null when no data was found near the location.","items":{"$ref":"#/components/schemas/ValhallaLocateNode"},"nullable":true,"type":"array"},"reason":{"description":"Why nothing was found. Verbose only, and present only when `edges` is null.","example":"No data found for location","type":"string","x-requested-by":"verbose"}},"type":"object"},"ValhallaLocation":{"properties":{"date_time":{"description":"Per-location ISO 8601 datetime override, in the format `YYYY-MM-DDTHH:MM`, e.g. `2016-07-03T08:06`.","type":"string"},"display_lat":{"description":"Latitude of the map location in degrees. If provided the `lat` and `lon` parameters will be treated as the routing location and the  `display_lat` and `display_lon` will be used to determine the side of street. Both `display_lat` and `display_lon` must be provided and valid to achieve the desired effect.","maximum":90,"minimum":-90,"type":"number"},"display_lon":{"description":"Latitude of the map location in degrees. If provided the `lat` and `lon` parameters will be treated as the routing location and the  `display_lat` and `display_lon` will be used to determine the side of street. Both `display_lat` and `display_lon` must be provided and valid to achieve the desired effect.","maximum":180,"minimum":-180,"type":"number"},"heading":{"description":"Preferred approach heading in degrees.","maximum":360,"minimum":0,"type":"integer"},"heading_tolerance":{"description":"How close in degrees a given street's angle must be in order for it to be considered as in the same direction of the `heading` parameter.  The default value is service configuration dependent (60 by default).","type":"integer","x-rad-default":60,"x-rad-max":180,"x-rad-min":0},"lat":{"maximum":90,"minimum":-90,"type":"number"},"lon":{"maximum":180,"minimum":-180,"type":"number"},"minimum_reachability":{"default":50,"description":"Minimum number of reachable edges for a snap candidate. The default and max values are service configuration dependent (50 and 100 by default, respectively).","minimum":0,"type":"integer","x-rad-max":250},"name":{"description":"Label echoed in the response.","type":"string"},"node_snap_tolerance":{"description":"Snap-to-node distance tolerance in meters. The default value is service dependent (5 by default).","minimum":0,"type":"number","x-rad-default":5,"x-rad-max":100},"preferred_layer":{"description":"If set, edges whose layer does not match this value are discarded from candidate search. Note that this is a \"soft\" filter, meaning if no other candidates are found, Valhalla will fall back to including edges that did not match this filter.","type":"integer","x-rad-max":5,"x-rad-min":-1},"preferred_side":{"default":"either","description":"Preferred side of road to snap to.","enum":["same","opposite","either"],"example":"opposite","type":"string"},"radius":{"description":"Candidate search radius in meters: all viable edge candidates within the radius are correlated. If none are found, the best  one outside the radius is correlated. The default is service dependent, and defaults to 0 (only the closest edge is considered as candidate). The max value is service configuration dependent (200 by default).","minimum":0,"type":"integer","x-rad-default":0,"x-rad-max":200},"rank_candidates":{"default":true,"description":"Rank snap candidates by distance to input.","type":"boolean"},"search_cutoff":{"description":"Hard cutoff for candidate search in meters. Default is service configuration dependent (35000 by default).","minimum":0,"type":"integer","x-rad-default":35000,"x-rad-max":100000,"x-rad-min":10000},"search_filter":{"$ref":"#/components/schemas/ValhallaSearchFilter"},"street":{"description":"Street address hint for snapping.","type":"string"},"street_side_cutoff":{"$ref":"#/components/schemas/ValhallaRoadClass"},"street_side_max_distance":{"description":"The max distance in meters that the input coordinates or display ll can be from the edge centerline for them to be used for determining the side of  street. Beyond this distance the side of street is set to none. The default value is service configuration dependent (1000 by default).","minimum":0,"type":"integer","x-rad-default":1000,"x-rad-max":10000},"street_side_tolerance":{"description":"If your input coordinate is less than this tolerance away from the edge centerline then we set your side of  street to none otherwise your side of street will be left or right depending on direction of travel. The default value is service configuration dependent (5 by default).","minimum":0,"type":"integer","x-rad-default":5,"x-rad-max":50},"type":{"default":"break","description":"First and last location are always forced to `break`.","enum":["break","through","via","break_through"],"example":"break","type":"string","x-enumDescriptions":{"break":"Stop here; starts or ends a route leg. Allows U-turns.","break_through":"Like `break` but does not allow U-turns at the location.","through":"Pass through without stopping. No U-turn; keeps direction of travel.","via":"Waypoint with a maneuver instruction but no leg-break. Allows U-turns."}},"waiting":{"description":"Waiting time in seconds at this stop (break/break_through only, not origin/destination).","minimum":0,"type":"number","x-rad-max":10000}},"required":["lat","lon"],"type":"object"},"ValhallaManeuver":{"description":"One turn-by-turn step. When the request sets `recostings`, it also holds `time_\u003cname\u003e` for each named recosting, as on the summary.","properties":{"bearing_after":{"description":"Compass bearing on departure, in degrees. Absent on the last maneuver of a leg.","type":"integer"},"bearing_before":{"description":"Compass bearing on approach, in degrees. Absent on the first maneuver of a leg.","type":"integer"},"begin_shape_index":{"description":"Index into the leg's shape where this step starts.","type":"integer"},"begin_street_names":{"description":"Streets at the start of the maneuver, when they differ from `street_names`.","items":{"type":"string"},"type":"array","x-secondary":true},"cost":{"description":"Internal cost of this step.","type":"number","x-secondary":true},"end_shape_index":{"description":"Index into the leg's shape where this step ends.","type":"integer"},"ferry":{"description":"Whether this step uses a ferry. Present only when true.","type":"boolean"},"has_time_restrictions":{"description":"Whether any edge in this step carries a time-based restriction. Present only when true.","type":"boolean"},"highway":{"description":"Whether this step uses a highway. Present only when true.","type":"boolean"},"instruction":{"description":"Written instruction for this step.","example":"Turn left onto Market Street.","type":"string"},"lanes":{"description":"The lanes on approach to the maneuver, from left to right. Present when the request sets `turn_lanes` and the road has lane data.","items":{"$ref":"#/components/schemas/ValhallaTurnLane"},"type":"array","x-requested-by":"turn_lanes"},"length":{"description":"Distance for this step, in the trip's units.","type":"number"},"rough":{"description":"Whether this step travels on unpaved or otherwise rough surface. Present only when true, and set mainly on pedestrian and bicycle routes.","type":"boolean"},"roundabout_exit_count":{"description":"Which exit to take, on roundabout maneuvers.","type":"integer"},"sign":{"$ref":"#/components/schemas/ValhallaManeuverSign"},"street_names":{"description":"Streets this maneuver travels along.","items":{"type":"string"},"type":"array"},"time":{"description":"Time for this step in seconds.","type":"number"},"toll":{"description":"Whether this step uses a toll road. Present only when true.","type":"boolean"},"travel_mode":{"description":"Mode of travel for this step.","enum":["drive","pedestrian","bicycle"],"type":"string"},"travel_type":{"description":"Vehicle or traveler type within the mode: `car`, `motorcycle`, `bus`, `truck`, or `motor_scooter` for drive; `foot` or `wheelchair` for pedestrian; `road`, `cross`, `hybrid`, or `mountain` for bicycle.","example":"car","type":"string"},"type":{"description":"Maneuver kind, such as a left turn or a roundabout exit, as a Valhalla maneuver code.","type":"integer"},"verbal_multi_cue":{"description":"Whether this instruction should be spoken together with the next one. Present only when true.","type":"boolean","x-secondary":true},"verbal_post_transition_instruction":{"description":"Spoken instruction to play after the maneuver.","type":"string","x-secondary":true},"verbal_pre_transition_instruction":{"description":"Spoken instruction to play before the maneuver.","type":"string","x-secondary":true},"verbal_succinct_transition_instruction":{"description":"Shorter spoken form, for displays with little room.","type":"string","x-secondary":true},"verbal_transition_alert_instruction":{"description":"Earlier spoken alert that the maneuver is approaching.","type":"string","x-secondary":true}},"type":"object"},"ValhallaManeuverSign":{"description":"Guide-sign text for the maneuver: exit numbers, branch names, toward names, and exit names. Present only at junctions with signage, and each list only when the sign carries it.","properties":{"exit_branch_elements":{"description":"Route numbers or street names the exit leads onto.","items":{"$ref":"#/components/schemas/ValhallaSignElement"},"type":"array"},"exit_name_elements":{"description":"Names of the exit.","items":{"$ref":"#/components/schemas/ValhallaSignElement"},"type":"array"},"exit_number_elements":{"description":"Exit numbers.","items":{"$ref":"#/components/schemas/ValhallaSignElement"},"type":"array"},"exit_toward_elements":{"description":"Destinations the exit leads toward.","items":{"$ref":"#/components/schemas/ValhallaSignElement"},"type":"array"}},"type":"object"},"ValhallaMatchedPoint":{"description":"How one input point was matched to the network.","properties":{"begin_route_discontinuity":{"description":"Whether the path breaks before this point, as when the trace jumps. Present only when true.","type":"boolean"},"distance_along_edge":{"description":"How far along that edge the point falls, from 0 to 1. Absent for unmatched points.","type":"number"},"distance_from_trace_point":{"description":"Distance in meters from the input point to the matched point. Absent for unmatched points.","type":"number"},"edge_index":{"description":"Index into `edges` of the edge this point matched. Absent for unmatched points.","type":"integer"},"end_route_discontinuity":{"description":"Whether the path breaks after this point. Present only when true.","type":"boolean"},"lat":{"description":"Latitude of the matched point.","format":"double","maximum":90,"minimum":-90,"type":"number"},"lon":{"description":"Longitude of the matched point.","format":"double","maximum":180,"minimum":-180,"type":"number"},"type":{"description":"Whether the point was matched, interpolated between matches, or left unmatched.","enum":["matched","interpolated","unmatched"],"type":"string"}},"type":"object"},"ValhallaMatrixCell":{"description":"One source-target pair.","properties":{"begin_heading":{"description":"Compass bearing on departure, in degrees.","type":"number","x-secondary":true},"begin_lat":{"description":"Latitude where the route leaves the source.","format":"double","maximum":90,"minimum":-90,"type":"number","x-secondary":true},"begin_lon":{"description":"Longitude where the route leaves the source.","format":"double","maximum":180,"minimum":-180,"type":"number","x-secondary":true},"cost":{"description":"Cost of the route under the request's costing model, the value the search minimizes.","nullable":true,"type":"number","x-secondary":true},"date_time":{"description":"The request's `date_time` plus the travel time, as local `YYYY-MM-DDTHH:MM`. Present only when the search starts from the locations that carry the request's `date_time`: for a `depart_at` request searched forward from the sources, it is the arrival time at the target. Absent for pairs beyond the time-dependent distance limit, and for `depart_at` requests with more sources than targets, which are searched from the targets.","type":"string","x-requested-by":"date_time"},"distance":{"description":"Distance in the response's units, or null when no route exists between the pair.","nullable":true,"type":"number"},"end_heading":{"description":"Compass bearing on arrival, in degrees.","type":"number","x-secondary":true},"end_lat":{"description":"Latitude where the route reaches the target.","format":"double","maximum":90,"minimum":-90,"type":"number","x-secondary":true},"end_lon":{"description":"Longitude where the route reaches the target.","format":"double","maximum":180,"minimum":-180,"type":"number","x-secondary":true},"from_index":{"description":"Index into `sources`.","type":"integer"},"shape":{"description":"The route between the pair: an encoded polyline at precision 6, or 5 with `shape_format: polyline5`, or a GeoJSON geometry with `shape_format: geojson`. Present only when the request sets `shape_format`, the engine uses its CostMatrix algorithm, and a route exists.","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/ValhallaGeoJsonGeometry"}],"x-requested-by":"shape_format"},"time":{"description":"Travel time in seconds, or null when no route exists between the pair.","nullable":true,"type":"integer"},"time_zone_name":{"description":"IANA time zone of `date_time`, e.g. `America/Los_Angeles`. Present with `date_time`.","type":"string","x-requested-by":"date_time"},"time_zone_offset":{"description":"UTC offset of `date_time`, as `+HH:MM` or `-HH:MM`. Present with `date_time`.","type":"string","x-requested-by":"date_time"},"to_index":{"description":"Index into `targets`.","type":"integer"}},"type":"object"},"ValhallaMatrixLocation":{"description":"A matrix endpoint snapped to the network.","properties":{"lat":{"description":"Latitude of the snapped location.","format":"double","maximum":90,"minimum":-90,"type":"number"},"lon":{"description":"Longitude of the snapped location.","format":"double","maximum":180,"minimum":-180,"type":"number"}},"type":"object"},"ValhallaMatrixRequest":{"allOf":[{"$ref":"#/components/schemas/ValhallaBaseRequest"},{"properties":{"expansion_max_distance":{"default":0,"description":"Maximum path distance in meters for an expansion. Currently this is implemented for the timedistancematrix algorithm. Source-target pairs whose cheapest path distance exceeds this limit will be returned as unreachable (with null time and distance).","maximum":100000,"minimum":0,"type":"integer"},"matrix_locations":{"description":"Early-exit after finding this many targets. Only valid for TDMatrix algorithm.","minimum":1,"type":"integer"},"shape_format":{"$ref":"#/components/schemas/ValhallaShapeFormat"},"sources":{"items":{"$ref":"#/components/schemas/ValhallaLocation"},"minItems":1,"type":"array","x-rad-max-items":20},"targets":{"items":{"$ref":"#/components/schemas/ValhallaLocation"},"minItems":1,"type":"array","x-rad-max-items":20},"verbose":{"default":true,"description":"Include detailed per-cell metadata in the response.","type":"boolean"}},"required":["sources","targets","costing"],"type":"object"}]},"ValhallaMatrixResponse":{"description":"Times and distances between every source and every target.","properties":{"algorithm":{"description":"Which matrix algorithm answered the request.","example":"costmatrix","type":"string"},"sources":{"description":"The requested sources, snapped to the network. Verbose form only.","items":{"$ref":"#/components/schemas/ValhallaMatrixLocation"},"type":"array"},"sources_to_targets":{"description":"The matrix itself. Its shape follows the request's `verbose` flag, which defaults to true: verbose gives one row per source holding a cell per target, while `verbose: false` gives two parallel arrays-of-arrays instead.","oneOf":[{"description":"Verbose form. One row per source, each holding one cell per target.","items":{"items":{"$ref":"#/components/schemas/ValhallaMatrixCell"},"type":"array"},"type":"array"},{"description":"Compact form, returned when `verbose` is false.","properties":{"distances":{"description":"Distance in the response's units, indexed by source then target.","items":{"items":{"nullable":true,"type":"number"},"type":"array"},"type":"array"},"durations":{"description":"Travel time in seconds, indexed by source then target.","items":{"items":{"nullable":true,"type":"integer"},"type":"array"},"type":"array"},"shapes":{"description":"The route for each pair, indexed by source then target: an encoded polyline at precision 6, or 5 with `shape_format: polyline5`, empty when no route exists; or with `shape_format: geojson`, a GeoJSON geometry, or null when no route exists. Present only when the request sets `shape_format` and the engine uses its CostMatrix algorithm.","items":{"items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/ValhallaGeoJsonGeometry"}]},"type":"array"},"type":"array","x-requested-by":"shape_format"}},"type":"object"}]},"targets":{"description":"The requested targets, snapped to the network. Verbose form only.","items":{"$ref":"#/components/schemas/ValhallaMatrixLocation"},"type":"array"},"units":{"description":"Units the distances are expressed in.","enum":["kilometers","miles"],"type":"string"}},"type":"object"},"ValhallaMotorScooterCostingOptions":{"allOf":[{"$ref":"#/components/schemas/ValhallaBaseCostingOptions"},{"description":"Options for motor_scooter costing. Parsed in src/sif/motorscootercost.cc.","properties":{"top_speed":{"default":45,"description":"Top speed the vehicle can go in km/h. Also used to avoid roads with higher speeds than this value. `top_speed` must be between 10 and 252 km/h. The default value is 45 km/h  for motor_scooter.","maximum":252,"minimum":20,"type":"integer"},"use_distance":{"default":0,"description":"A factor that allows controlling the contribution of distance and time to the route costs. The value is in range between 0 and 1, where 0 only takes time into account  and 1 only distance. A factor of 0.5 will weigh them roughly equally.","maximum":1,"minimum":0,"type":"number"},"use_hills":{"default":0.5,"description":"A rider's desire to use hills in their routes. This is a range of values from 0 to 1, where 0 attempts to avoid hills and steep grades even if it means a  longer (time and distance) path, while 1 indicates the rider does not fear hills and steeper grades. Based on the `use_hills` factor, penalties are applied to roads  based on elevation change and grade. These penalties help the path avoid hilly roads in favor of flatter roads or less steep grades where available. Note that it is  not always possible to find alternate paths to avoid hills (for example when route locations are in mountainous areas).","maximum":1,"minimum":0,"type":"number"},"use_primary":{"default":0.5,"description":"A rider's propensity to use primary roads. This is a range of values from 0 to 1, where 0 attempts to avoid primary roads, and 1 indicates the rider is more comfortable riding on primary roads. Based on the `use_primary` factor, roads with certain classifications and higher speeds are penalized in an attempt to avoid them when finding  the best path.","maximum":1,"minimum":0,"type":"number"}},"type":"object"}]},"ValhallaMotorcycleCostingOptions":{"allOf":[{"$ref":"#/components/schemas/ValhallaBaseCostingOptions"},{"description":"Options for motorcycle costing. Parsed in src/sif/motorcyclecost.cc.","properties":{"top_speed":{"default":140,"description":"Top speed the vehicle can go in km/h. Also used to avoid roads with higher speeds than this value. `top_speed` must be between 10 and 252 km/h. The default value is 140 km/h  for motorcycle.","maximum":252,"minimum":10,"type":"integer"},"use_distance":{"default":0,"description":"A factor that allows controlling the contribution of distance and time to the route costs. The value is in range between 0 and 1, where 0 only takes time into account  and 1 only distance. A factor of 0.5 will weigh them roughly equally.","maximum":1,"minimum":0,"type":"number"},"use_highways":{"default":0.5,"description":"This value indicates the willingness to take highways. This is a range of values between 0 and 1. Values near 0 attempt to avoid highways and values near 1 will favor highways. Note that sometimes highways are required to complete a route so values of 0 are not guaranteed to avoid highways entirely.","maximum":1,"minimum":0,"type":"number"},"use_tolls":{"default":0.5,"description":"This value indicates the willingness to take roads with tolls. This is a range of values between 0 and 1. Values smaller than 0.5 attempt to avoid tolls and values greater than 0.5 will slightly favor them. The default value is 0.5, indicating no preference. Note that sometimes roads with tolls are required to complete a route so values of 0 are not guaranteed to avoid them entirely.","maximum":1,"minimum":0,"type":"number"},"use_trails":{"default":0,"description":"A riders's desire for adventure in their routes.  This is a range of values from 0 to 1, where 0 will avoid trails, tracks, unclassified or bad surfaces and values towards 1 will  tend to avoid major roads and route on secondary roads.","maximum":1,"minimum":0,"type":"number"}},"type":"object"}]},"ValhallaNodeType":{"description":"What the node is.","enum":["street_intersection","gate","bollard","toll_booth","transit_egress","transit_station","multi_use_transit_platform","bike_share","parking","motor_way_junction","border_control","toll_gantry","sump_buster","building_entrance","elevator"],"type":"string"},"ValhallaOutputFormat":{"default":"json","description":"Not all formats are supported by all endpoints, e.g. `geotiff` is isochrone-only.","enum":["json","gpx","osrm","pbf","geotiff","mvt"],"example":"json","type":"string"},"ValhallaPedestrianCostingOptions":{"allOf":[{"$ref":"#/components/schemas/ValhallaBaseCostingOptions"},{"description":"Options for pedestrian and bikeshare costing. Parsed in src/sif/pedestriancost.cc.","properties":{"alley_factor":{"default":2,"description":"A factor that modifies (multiplies) the cost when [alleys](https://wiki.openstreetmap.org/wiki/Tag:service%3Dalley) are encountered. Pedestrian routes generally want to avoid alleys or narrow service roads between buildings.","maximum":100000,"minimum":0.1,"type":"number"},"bss_rent_cost":{"default":120,"description":"This value is useful when `bikeshare` is chosen as travel mode. It is meant to give the time will be used to rent a bike from a bike share station. This value will be displayed in the final directions and used to calculate the whole duration.","maximum":43200,"minimum":0,"type":"number"},"bss_rent_penalty":{"default":0,"description":"This value is useful when `bikeshare` is chosen as travel mode. It is meant to describe the potential effort to rent a bike from a bike share station. This value won't be displayed and used only inside of the algorithm.","maximum":43200,"minimum":0,"type":"number"},"driveway_factor":{"default":5,"description":"A factor that modifies (multiplies) the cost when encountering a [driveway](https://wiki.openstreetmap.org/wiki/Tag:service%3Ddriveway), which is often a private, service road. Pedestrian routes generally want to avoid driveways (private).","maximum":100000,"minimum":0.1,"type":"number"},"elevator_penalty":{"default":5,"description":"A penalty in seconds added to each transition via an elevator node or onto an elevator edge. Higher values apply larger cost penalties to avoid elevators.","maximum":43200,"minimum":0,"type":"number"},"max_distance":{"description":"Sets the maximum total walking distance of a route in meters. Default 100000 (foot), 10000 (wheelchair).","minimum":0,"type":"integer"},"max_hiking_difficulty":{"default":1,"description":"This value indicates the maximum difficulty of hiking trails that is allowed. Values between 0 and 6 are allowed. The values correspond to *sac_scale* values within OpenStreetMap, see reference [here](https://wiki.openstreetmap.org/wiki/Key:sac_scale). The default value is 1 which means that well cleared trails that are mostly flat or slightly sloped are allowed. Higher difficulty trails can be allowed by specifying a higher value for max_hiking_difficulty.","maximum":6,"minimum":0,"type":"integer"},"mode_factor":{"default":1.5,"description":"A factor which the cost of a pedestrian edge will be multiplied with on multimodal request, e.g. `bss` or `multimodal/transit`. Default is a factor of 1.5, i.e. avoiding walking.","maximum":100000,"minimum":0.1,"type":"number"},"multimodal_start_end_max_distance":{"default":2415,"description":"(**Note**: renamed from `transit_start_end_max_distance`) A pedestrian option that can be added to the request to extend the defaults (2145 meters or approximately 1.5 miles). This is the maximum walking distance at the beginning or end of a route.","minimum":0,"type":"integer"},"sidewalk_factor":{"default":1,"description":"A factor that modifies the cost when encountering roads with dedicated sidewalks. Pedestrian routes generally attempt to favor using [sidewalks](https://wiki.openstreetmap.org/wiki/Key:sidewalk).","maximum":100000,"minimum":0.1,"type":"number"},"step_penalty":{"description":"A penalty in seconds added to each transition onto a path with [steps or stairs](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dsteps). Higher values apply larger cost penalties to avoid paths that contain flights of steps. The default depends on the `type` parameter (600 for wheelchair, 30 otherwise).","maximum":43200,"minimum":0,"type":"number"},"transit_transfer_max_distance":{"default":805,"description":"A pedestrian option that can be added to the request to extend the defaults (800 meters or 0.5 miles). This is the maximum walking distance between transfers.","minimum":0,"type":"integer"},"type":{"default":"foot","description":"These options are mutually exclusive. To combine them, use `blind` and pass the options adjusted for `wheelchair` users manually.","enum":["foot","blind","wheelchair"],"type":"string","x-enumDescriptions":{"blind":"Enables additional route instructions, especially useful for blind users: announcing crossed streets, stairs, bridges, tunnels, gates and bollards that need to be passed on route; information about traffic signals on crosswalks; route numbers are not announced for named routes.\n","foot":"Default routing for pedestrians.","wheelchair":"Changes the defaults for `max_distance`, `walking_speed`, and `step_penalty` to be better aligned to the needs of wheelchair users.\n"}},"use_hills":{"default":0.5,"description":"This is a range of values from 0 to 1, where 0 attempts to avoid hills and steep grades even if it means a longer (time and distance) path, while 1 indicates the pedestrian does not fear hills and steeper grades. Based on the `use_hills` factor, penalties are applied to roads based on elevation change and grade. These penalties help the path avoid hilly roads in favor of flatter roads or less steep grades where available. Note that it is not always possible to find alternate paths to avoid hills (for example when route locations are in mountainous areas).","maximum":1,"minimum":0,"type":"number"},"use_lit":{"default":0,"description":"This value is a range of values from 0 to 1, where 0 indicates indifference towards lit streets, and 1 indicates that unlit streets should be avoided. Note that even with values near 1, there is no guarantee the returned route will include lit segments.","maximum":1,"minimum":0,"type":"number"},"walking_speed":{"default":5.1,"description":"Walking speed in km/h. Note that for transport type wheelchair, the default is set to 4.","maximum":25,"minimum":0.5,"type":"number"},"walkway_factor":{"default":1,"description":"A factor that modifies the cost when encountering roads classified as `footway` (no motorized vehicles allowed), which may be designated footpaths or designated sidewalks along residential roads. Pedestrian routes generally attempt to favor using these [walkways and sidewalks](https://wiki.openstreetmap.org/wiki/Sidewalks).","maximum":100000,"minimum":0.1,"type":"number"}},"type":"object"}]},"ValhallaRoadClass":{"enum":["motorway","trunk","primary","secondary","tertiary","unclassified","residential","service_other"],"example":"primary","type":"string"},"ValhallaRouteRequest":{"allOf":[{"$ref":"#/components/schemas/ValhallaBaseRequest"},{"properties":{"admin_crossings":{"default":false,"description":"When true, the route summary includes `admins` (array of administrative regions the route passes through) and `admin_crossings` (array of objects with `from_admin_index`, `to_admin_index`, `from_shape_index`, and `to_shape_index` indicating where and along which edge an administrative boundary is crossed).","type":"boolean"},"alternates":{"default":0,"description":"Number of alternative routes to return. Forced to 0 for more than 2 waypoints.","minimum":0,"type":"integer","x-rad-max":3},"banner_instructions":{"default":false,"description":"Include OSRM-format banner instructions, if format = osrm.","type":"boolean"},"directions_type":{"$ref":"#/components/schemas/ValhallaDirectionsType"},"elevation_interval":{"default":0,"description":"Elevation sample interval in meters along the path. 0 = no elevation.","minimum":0,"type":"number","x-rad-max":100},"linear_references":{"default":false,"description":"Include base64-encoded OpenLR references per edge in the response..","type":"boolean"},"locations":{"items":{"$ref":"#/components/schemas/ValhallaLocation"},"minItems":2,"type":"array"},"prioritize_bidirectional":{"default":false,"description":"Prefer bidirectional A* even when date_time.type={depart_at,arrive_by,current} in /route, or prefer CostMatrix over TDMatrix when calling /sources_to_targets","type":"boolean"},"recostings":{"description":"Re-score the found path under additional named costings.","items":{"$ref":"#/components/schemas/ValhallaBaseCostingOptions"},"type":"array"},"roundabout_exits":{"default":true,"description":"When true, exit instructions at roundabouts are added to the output.","type":"boolean"},"shape_format":{"$ref":"#/components/schemas/ValhallaShapeFormat"},"turn_lanes":{"default":false,"description":"When true, each maneuver may include a `lanes` array describing lane-level guidance: possible directions and which lanes are valid or active for following the maneuver.","type":"boolean"},"voice_instructions":{"default":false,"description":"Include OSRM-format voice instructions, if format = osrm.","type":"boolean"}},"required":["locations","costing"],"type":"object"}]},"ValhallaSearchFilter":{"description":"Optional filters to exclude candidate edges based on their attribution.","properties":{"exclude_bridge":{"default":false,"description":"Whether to exclude roads marked as bridges.","type":"boolean"},"exclude_closures":{"default":true,"description":"When false, closed roads are allowed for this location.","type":"boolean"},"exclude_ferry":{"default":false,"description":"Whether to exclude ferry routes.","type":"boolean"},"exclude_ramp":{"default":false,"description":"Whether to exclude roads marked as ramps.","type":"boolean"},"exclude_toll":{"default":false,"description":"Whether to exclude roads marked as toll roads.","type":"boolean"},"exclude_tunnel":{"default":false,"description":"Whether to exclude roads marked as tunnels.","type":"boolean"},"level":{"description":"If specified, will only consider edges that are on or traverse the passed floor level. Useful for indoor routing. It will set `search_cutoff` to a default value of 300 meters if no cutoff value is passed. Additionally, if a `search_cutoff` is passed, it will be clamped to 1000 meters.","type":"number"},"max_road_class":{"$ref":"#/components/schemas/ValhallaRoadClass"},"min_road_class":{"$ref":"#/components/schemas/ValhallaRoadClass"}},"type":"object"},"ValhallaShapeAttributes":{"description":"Values for each segment between consecutive points of `shape`. Off by default: each list appears only when its `shape_attributes.*` filter is requested.","properties":{"closure":{"description":"Stretches of `shape` closed to traffic.","items":{"properties":{"begin_shape_index":{"description":"Index into `shape` where the closure starts.","type":"integer"},"end_shape_index":{"description":"Index into `shape` where the closure ends.","type":"integer"}},"type":"object"},"type":"array"},"congestion":{"description":"Congestion on each segment, from live traffic.","items":{"type":"number"},"type":"array"},"length":{"description":"Length of each segment, in kilometers.","items":{"type":"number"},"type":"array"},"speed":{"description":"Speed on each segment, in km/h.","items":{"type":"number"},"type":"array"},"speed_limit":{"description":"Posted speed limit on each segment, in km/h.","items":{"type":"number"},"type":"array"},"time":{"description":"Time to travel each segment, in seconds.","items":{"type":"number"},"type":"array"}},"type":"object","x-requested-by":"filters"},"ValhallaShapeFactorVariant":{"properties":{"factor":{"$ref":"#/components/schemas/ValhallaFactor"},"shape":{"description":"Polyline6-encoded shape. Shape may only cover edges subject to `service_limits.max_linear_cost_edges` (set in service config; 50000 by default).","type":"string"}},"required":["shape","factor"],"type":"object"},"ValhallaShapeFormat":{"default":"polyline6","description":"Not all formats are supported by all endpoints, e.g. `no_shape` is not valid for isochrone.","enum":["polyline6","polyline5","geojson","no_shape"],"example":"polyline6","type":"string"},"ValhallaShapeMatch":{"default":"walk_or_snap","enum":["map_snap","edge_walk","walk_or_snap"],"example":"walk_or_snap","type":"string","x-enumDescriptions":{"edge_walk":"Exact edge-walking algorithm. Only use when the shape comes from a prior Valhalla route.","map_snap":"Map-matching algorithm for shapes that may not closely follow Valhalla edges, e.g. GPS traces. More expensive.","walk_or_snap":"Try edge walking first; fall back to map snapping if it fails (default)."}},"ValhallaSignElement":{"description":"One piece of sign text.","properties":{"consecutive_count":{"description":"How many consecutive maneuvers have carried this text, for deciding which to read aloud. Absent when zero.","type":"integer"},"text":{"description":"The text on the sign.","type":"string"}},"type":"object"},"ValhallaSpeedType":{"description":"A speed source that may be used when costing edges.","enum":["current","freeflow","constrained","predicted"],"type":"string","x-enumDescriptions":{"constrained":"Daytime (7am–7pm) average speed stored on the edge","current":"The current live traffic speed","freeflow":"Nighttime (7pm–7am) average speed stored on the edge","predicted":"Historical per-edge speed profiles (5-min buckets over a week)"}},"ValhallaTraceAttributesPath":{"description":"One alternate match of the trace.","properties":{"admins":{"description":"Countries and states the path passes through.","items":{"$ref":"#/components/schemas/ValhallaAdmin"},"type":"array"},"confidence_score":{"description":"How confident the matcher is, from 0 to 1.","type":"number"},"edges":{"description":"Edges of this match, in order.","items":{"$ref":"#/components/schemas/ValhallaTraceEdge"},"type":"array"},"elevation":{"description":"Elevation along the path.","items":{"type":"number"},"type":"array","x-requested-by":"elevation_interval"},"elevation_interval":{"description":"Spacing of the `elevation` samples.","type":"number","x-requested-by":"elevation_interval"},"matched_points":{"description":"One entry per input point.","items":{"$ref":"#/components/schemas/ValhallaMatchedPoint"},"type":"array"},"osm_changeset":{"description":"OpenStreetMap changeset the tiles were built from.","format":"int64","type":"integer"},"raw_score":{"description":"Unnormalized matching score. Lower is a closer match.","type":"number"},"shape":{"description":"The matched path, as an encoded polyline.","type":"string"},"shape_attributes":{"$ref":"#/components/schemas/ValhallaShapeAttributes"}},"type":"object"},"ValhallaTraceAttributesRequest":{"allOf":[{"$ref":"#/components/schemas/ValhallaTraceRequest"},{"properties":{"filters":{"description":"Include or exclude specific attribute keys from the response. If omitted, all attributes are returned.","properties":{"action":{"$ref":"#/components/schemas/ValhallaFilterAction"},"attributes":{"description":"Attribute keys to include or exclude. Supports edge.*, node.*, matched.*, shape_attributes.*, and top-level keys such as shape, osm_changeset, and admin.*.","items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"}]},"ValhallaTraceAttributesResponse":{"description":"Attributes of the road network along a matched trace.","properties":{"admins":{"description":"Countries and states the matched path passes through. Each field is absent when unknown.","items":{"$ref":"#/components/schemas/ValhallaAdmin"},"type":"array"},"alternate_paths":{"description":"Other plausible matches. Always present, and empty when the trace matched one way only. Each holds the same path fields as the response itself: `osm_changeset`, `shape`, `confidence_score`, `raw_score`, `admins`, `edges`, `elevation_interval`, `elevation`, `matched_points`, and `shape_attributes`.","items":{"$ref":"#/components/schemas/ValhallaTraceAttributesPath"},"type":"array"},"confidence_score":{"description":"How confident the matcher is, from 0 to 1.","type":"number"},"edges":{"description":"Edges the trace was matched onto, in order.","items":{"$ref":"#/components/schemas/ValhallaTraceEdge"},"type":"array"},"elevation":{"description":"Elevation along the path, sampled every `elevation_interval`. Present with `elevation_interval`.","items":{"type":"number"},"type":"array","x-requested-by":"elevation_interval"},"elevation_interval":{"description":"Spacing of the `elevation` samples, in meters, or feet when `units` is `miles`. Present when the request sets `elevation_interval`.","type":"number","x-requested-by":"elevation_interval"},"id":{"description":"The request's `id`, echoed back. Absent when the request has none.","type":"string","x-requested-by":"id"},"matched_points":{"description":"One entry per input point, describing how it was matched.","items":{"$ref":"#/components/schemas/ValhallaMatchedPoint"},"type":"array"},"osm_changeset":{"description":"OpenStreetMap changeset the tiles were built from.","format":"int64","type":"integer"},"raw_score":{"description":"Unnormalized matching score. Lower is a closer match.","type":"number"},"shape":{"description":"The matched path, as an encoded polyline.","type":"string"},"shape_attributes":{"$ref":"#/components/schemas/ValhallaShapeAttributes"},"units":{"description":"Units the lengths, speeds, and elevations are expressed in.","enum":["kilometers","miles"],"type":"string"},"warnings":{"description":"Non-fatal notes about the request. Absent when there are none.","items":{"$ref":"#/components/schemas/ValhallaTripWarning"},"type":"array"}},"type":"object"},"ValhallaTraceEdge":{"description":"One edge of the matched path. Speeds are in km/h, or mph when `units` is `miles`.","properties":{"begin_heading":{"description":"Compass bearing at the start of the edge, in degrees.","type":"integer","x-secondary":true},"begin_shape_index":{"description":"Index into `shape` where the edge starts.","type":"integer"},"bicycle_network":{"description":"Signed bicycle networks, as a bit mask. 1 national, 2 regional, 4 local, 8 mountain.","type":"integer","x-secondary":true},"bicycle_type":{"description":"Bicycle type, for bicycle edges.","enum":["road","cross","hybrid","mountain"],"type":"string","x-secondary":true},"bridge":{"description":"Whether the edge is a bridge.","type":"boolean"},"country_crossing":{"description":"Whether the edge crosses a country border.","type":"boolean","x-secondary":true},"curvature":{"description":"Curvature, from 0 for straight to 15. Off by default.","type":"integer","x-requested-by":"filters","x-secondary":true},"cycle_lane":{"description":"Cycle lane on the edge.","enum":["none","shared","dedicated","separated"],"type":"string","x-secondary":true},"density":{"description":"Road density around the edge, from 0 to 15.","type":"integer","x-secondary":true},"drive_on_right":{"description":"Whether traffic drives on the right.","type":"boolean","x-secondary":true},"end_heading":{"description":"Compass bearing at the end of the edge, in degrees.","type":"integer","x-secondary":true},"end_node":{"$ref":"#/components/schemas/ValhallaTraceNode"},"end_shape_index":{"description":"Index into `shape` where the edge ends.","type":"integer"},"forward":{"description":"Whether the path runs in the direction of the edge's shape.","type":"boolean"},"hov_type":{"description":"Occupancy requirement, meaningful only on HOV-only edges. Off by default; once requested it is on every edge, and ordinary roads read `HOV-2`.","enum":["HOV-2","HOV-3"],"type":"string","x-requested-by":"filters","x-secondary":true},"id":{"description":"Graph edge identifier.","format":"int64","type":"integer"},"internal_intersection":{"description":"Whether the edge is internal to an intersection.","type":"boolean","x-secondary":true},"lane_connectivity":{"description":"Which lanes on the incoming way lead to which lanes on this edge. Present only when the data has lane connectivity.","items":{"properties":{"from":{"description":"OpenStreetMap way the lanes come from.","format":"int64","type":"integer"},"from_lanes":{"description":"Lanes on that way, as a `|`-separated list of lane numbers.","type":"string"},"to_lanes":{"description":"Lanes on this edge they lead to, in the same form.","type":"string"}},"type":"object"},"type":"array","x-secondary":true},"lane_count":{"description":"Number of lanes in the direction of travel.","type":"integer","x-secondary":true},"length":{"description":"Length of the traversed part of the edge, in the response's units.","type":"number"},"levels":{"description":"Building levels the edge spans, as `[from, to]` pairs. Present only where the data has levels.","items":{"items":{"type":"number"},"type":"array"},"type":"array","x-secondary":true},"max_downward_grade":{"description":"Steepest downward slope, in degrees. -500 when the tiles have no elevation data.","type":"integer","x-secondary":true},"max_upward_grade":{"description":"Steepest upward slope, in degrees. -500 when the tiles have no elevation data.","type":"integer","x-secondary":true},"mean_elevation":{"description":"Mean elevation in meters, or feet when `units` is `miles`. Absent when the tiles have no elevation data.","type":"integer","x-secondary":true},"names":{"description":"Street names and route numbers. Absent when the edge has none.","items":{"type":"string"},"type":"array"},"node_id":{"description":"OpenStreetMap node the edge starts at. Present only when the tiles were built with node identifiers.","format":"int64","type":"integer","x-secondary":true},"pedestrian_type":{"description":"Traveler type, for pedestrian edges.","enum":["foot","wheelchair"],"type":"string","x-secondary":true},"road_class":{"description":"Road class.","enum":["motorway","trunk","primary","secondary","tertiary","unclassified","residential","service_other"],"type":"string"},"roundabout":{"description":"Whether the edge is part of a roundabout.","type":"boolean"},"sac_scale":{"description":"Hiking difficulty, from 0 for none to 6 for difficult alpine hiking.","type":"integer","x-secondary":true},"shoulder":{"description":"Whether the edge has a shoulder.","type":"boolean","x-secondary":true},"sidewalk":{"description":"Which sides of the edge have a sidewalk.","enum":["none","left","right","both"],"type":"string","x-secondary":true},"sign":{"description":"Guide-sign text on the edge. Present only where the edge has signs, and each list only when the sign carries it.","properties":{"exit_branch":{"description":"Route numbers or street names the exit leads onto.","items":{"type":"string"},"type":"array"},"exit_name":{"description":"Names of the exit.","items":{"type":"string"},"type":"array"},"exit_number":{"description":"Exit numbers.","items":{"type":"string"},"type":"array"},"exit_toward":{"description":"Destinations the exit leads toward.","items":{"type":"string"},"type":"array"}},"type":"object","x-secondary":true},"source_percent_along":{"description":"Where the path enters the edge, from 0 to 1. Present only when not 0.","type":"number","x-secondary":true},"speed":{"description":"Speed the router used for the edge.","type":"integer"},"speed_limit":{"description":"Posted speed limit, or `unlimited`. Absent when unknown.","oneOf":[{"type":"integer"},{"enum":["unlimited"],"type":"string"}]},"speed_type":{"description":"Whether the speed came from a tagged maxspeed or was assigned by road class.","enum":["tagged","classified"],"type":"string","x-secondary":true},"speeds_faded":{"allOf":[{"$ref":"#/components/schemas/ValhallaTraceEdgeSpeeds"}],"x-requested-by":"date_time"},"speeds_non_faded":{"$ref":"#/components/schemas/ValhallaTraceEdgeSpeeds"},"surface":{"$ref":"#/components/schemas/ValhallaEdgeSurface"},"target_percent_along":{"description":"Where the path leaves the edge, from 0 to 1. Present only when not 1.","type":"number","x-secondary":true},"toll":{"description":"Whether the edge is a toll road.","type":"boolean"},"traffic_segments":{"description":"Traffic segments the edge belongs to. Present only when traffic segment data is loaded.","items":{"properties":{"begin_percent":{"description":"Where the edge starts along the segment, from 0 to 1.","type":"number"},"end_percent":{"description":"Where the edge ends along the segment, from 0 to 1.","type":"number"},"ends_segment":{"description":"Whether the segment ends on this edge.","type":"boolean"},"segment_id":{"description":"Segment identifier.","format":"int64","type":"integer"},"starts_segment":{"description":"Whether the segment starts on this edge.","type":"boolean"}},"type":"object"},"type":"array","x-secondary":true},"traffic_signal":{"description":"Whether there is a traffic signal on the edge.","type":"boolean"},"travel_mode":{"description":"Mode of travel on the edge.","enum":["drive","pedestrian","bicycle"],"type":"string"},"traversability":{"description":"Which directions the edge can be traveled in by the request's mode.","enum":["none","forward","backward","both"],"type":"string","x-secondary":true},"truck_route":{"description":"Whether the edge is a designated truck route.","type":"boolean","x-secondary":true},"truck_speed":{"description":"Truck speed. Absent when the edge has none.","type":"integer","x-secondary":true},"tunnel":{"description":"Whether the edge is a tunnel.","type":"boolean"},"unpaved":{"description":"Whether the edge is unpaved.","type":"boolean"},"use":{"$ref":"#/components/schemas/ValhallaEdgeUse"},"vehicle_type":{"description":"Vehicle type, for drive edges: `car`, `motorcycle`, `bus`, or `truck`. Motor scooter costing returns the string `null`.","type":"string","x-secondary":true},"way_id":{"description":"OpenStreetMap way the edge was built from.","format":"int64","type":"integer"},"weighted_grade":{"description":"Grade in percent, weighted toward steeper sections.","type":"number","x-secondary":true}},"type":"object"},"ValhallaTraceEdgeSpeeds":{"description":"The speed from each traffic source. `speeds_non_faded` is the source's own value; `speeds_faded` blends live traffic into the historical speed with distance from the start of the route, and appears only when the request's `date_time` is the current time. Each source is absent when the edge has none, except `no_flow`.","properties":{"constrained_flow":{"description":"Typical daytime speed.","type":"integer"},"current_flow":{"description":"Live traffic speed.","type":"integer"},"free_flow":{"description":"Typical speed at night.","type":"integer"},"no_flow":{"description":"Speed with no traffic data, from tags or road class.","type":"integer"},"predicted_flow":{"description":"Historical speed at the time of travel.","type":"integer"}},"type":"object"},"ValhallaTraceNode":{"description":"The node at the end of an edge.","properties":{"admin_index":{"description":"Index into `admins` of the area the node is in.","type":"integer","x-secondary":true},"elapsed_cost":{"description":"Cost from the start of the path to the node.","type":"number","x-secondary":true},"elapsed_time":{"description":"Time from the start of the path to the node, in seconds.","type":"number"},"fork":{"description":"Whether the node is a fork in the road.","type":"boolean"},"intersecting_edges":{"description":"Other edges meeting at the node. Absent when there are none.","items":{"properties":{"begin_heading":{"description":"Compass bearing leaving the node, in degrees.","type":"integer"},"cyclability":{"description":"Directions a bicycle can travel the edge in. Absent when none.","enum":["forward","backward","both"],"type":"string"},"driveability":{"description":"Directions a car can travel the edge in. Absent when none.","enum":["forward","backward","both"],"type":"string"},"from_edge_name_consistency":{"description":"Whether the edge shares a name with the edge entering the node.","type":"boolean"},"road_class":{"description":"Road class.","enum":["motorway","trunk","primary","secondary","tertiary","unclassified","residential","service_other"],"type":"string"},"to_edge_name_consistency":{"description":"Whether the edge shares a name with the edge leaving the node.","type":"boolean"},"use":{"$ref":"#/components/schemas/ValhallaEdgeUse"},"walkability":{"description":"Directions a pedestrian can travel the edge in. Absent when none.","enum":["forward","backward","both"],"type":"string"}},"type":"object"},"type":"array"},"node_id":{"description":"OpenStreetMap node. Present only when the tiles were built with node identifiers.","format":"int64","type":"integer","x-secondary":true},"time_zone":{"description":"IANA time zone at the node. Absent when unknown.","type":"string"},"traffic_signal":{"description":"Whether the node has a traffic signal.","type":"boolean"},"transition_time":{"description":"Time spent passing through the node, as for a turn, in seconds.","type":"number","x-secondary":true},"type":{"$ref":"#/components/schemas/ValhallaNodeType"}},"type":"object"},"ValhallaTraceRequest":{"allOf":[{"$ref":"#/components/schemas/ValhallaBaseRequest"},{"properties":{"elevation_interval":{"default":0,"description":"Elevation sample interval in meters along the matched path. 0 = disabled.","minimum":0,"type":"number","x-rad-max":100},"encoded_polyline":{"description":"Polyline6-encoded trace shape. Mutually exclusive with shape.","type":"string"},"shape":{"description":"GPS trace points. Mutually exclusive with encoded_polyline.","items":{"$ref":"#/components/schemas/ValhallaLocation"},"minItems":2,"type":"array","x-rad-max-items":100},"shape_format":{"$ref":"#/components/schemas/ValhallaShapeFormat"},"shape_match":{"$ref":"#/components/schemas/ValhallaShapeMatch"}},"required":["costing"],"type":"object"}]},"ValhallaTraceRouteRequest":{"allOf":[{"$ref":"#/components/schemas/ValhallaTraceRequest"},{"properties":{"alternates":{"default":0,"description":"Number of alternative matched routes to return.","minimum":0,"type":"integer","x-rad-max":3},"begin_time":{"description":"Epoch start timestamp (seconds) for the trace. Used with durations to assign timestamps to encoded_polyline input.","minimum":0,"type":"integer"},"directions_type":{"$ref":"#/components/schemas/ValhallaDirectionsType"},"durations":{"description":"Elapsed seconds between each successive pair of trace points. Used with begin_time to derive per-point timestamps from an encoded_polyline input.","items":{"minimum":0,"type":"number"},"type":"array"},"linear_references":{"default":false,"description":"Include base64-encoded OpenLR location references for each matched graph edge.","type":"boolean"},"trace_options":{"description":"Fine-tuning parameters for the map-matching algorithm.","properties":{"breakage_distance":{"description":"Maximum gap in meters between trace points before starting a new segment.","minimum":0,"type":"number","x-rad-max":10000},"gps_accuracy":{"description":"GPS accuracy in meters associated with trace points.","minimum":0,"type":"number","x-rad-max":100},"interpolation_distance":{"description":"Distance in meters beyond which trace points are merged together.","minimum":0,"type":"number","x-rad-max":100},"search_radius":{"description":"Search radius in meters for road candidates per trace point.","minimum":0,"type":"number","x-rad-max":100},"turn_penalty_factor":{"description":"Penalty for sharp turns. Increase (e.g. 500) to smooth pedestrian traces.","minimum":0,"type":"number","x-rad-max":1000}},"type":"object"},"use_timestamps":{"default":false,"description":"When true, use per-point time values (or derived timestamps) for elapsed time calculation instead of internal costing.","type":"boolean"}},"type":"object"}]},"ValhallaTransitFilterOptions":{"properties":{"action":{"allOf":[{"$ref":"#/components/schemas/ValhallaFilterAction"},{"description":"Whether to include only the listed Onestop IDs or exclude them."}]},"ids":{"description":"List of Onestop IDs to filter. The OneStop ID is simply the feeds's directory name and the object's GTFS ID separated by an underscore, i.e. a route with `route_id: AUR`  in `routes.txt` from the feed `NYC` would have the OneStop ID `NYC_AUR`, similar with operators/agencies.","items":{"example":"NYC_AUR","type":"string"},"type":"array"}},"type":"object"},"ValhallaTrip":{"description":"A route through the network, split into legs between the requested locations.","properties":{"language":{"description":"Language tag the narrative instructions are written in.","example":"en-US","type":"string"},"legs":{"description":"One leg per consecutive pair of break locations.","items":{"$ref":"#/components/schemas/ValhallaTripLeg"},"type":"array"},"linear_references":{"description":"OpenLR location references for the edges along the route, as base64 strings. /route and /trace_route only, when the request sets `linear_references`.","items":{"type":"string"},"type":"array","x-requested-by":"linear_references"},"locations":{"description":"The requested locations, snapped to the network and in the order visited.","items":{"$ref":"#/components/schemas/ValhallaTripLocation"},"type":"array"},"status":{"description":"Zero on success.","example":0,"type":"integer"},"status_message":{"description":"Human-readable form of `status`.","example":"Found route between points","type":"string"},"summary":{"$ref":"#/components/schemas/ValhallaTripSummary"},"units":{"description":"Units the lengths in this trip are expressed in.","enum":["kilometers","miles"],"type":"string"},"warnings":{"description":"Non-fatal notes about the request, such as a parameter that was ignored. Absent when there are none.","items":{"$ref":"#/components/schemas/ValhallaTripWarning"},"type":"array"}},"type":"object"},"ValhallaTripAlternate":{"description":"One more route, beside the response's main trip. Valhalla writes only the trip here; the request's `id` is on the response itself.","properties":{"trip":{"$ref":"#/components/schemas/ValhallaTrip"}},"type":"object"},"ValhallaTripLeg":{"description":"One segment of a trip, between two break locations.","properties":{"elevation":{"description":"Elevation along the leg, sampled every `elevation_interval`, in meters, or feet when `units` is `miles`. Present with `elevation_interval`.","items":{"type":"number"},"type":"array","x-requested-by":"elevation_interval"},"elevation_interval":{"description":"Spacing of the `elevation` samples, in meters, or feet when `units` is `miles`. Present when the request sets `elevation_interval`.","type":"number","x-requested-by":"elevation_interval"},"maneuvers":{"description":"Turn-by-turn steps. Absent when `directions_type` is `none`.","items":{"$ref":"#/components/schemas/ValhallaManeuver"},"type":"array"},"shape":{"description":"The leg's geometry, encoded per the request's `shape_format`, which defaults to a polyline at six digits of precision.","type":"string"},"summary":{"$ref":"#/components/schemas/ValhallaTripSummary"}},"type":"object"},"ValhallaTripLocation":{"description":"A requested location after snapping to the network.","properties":{"date_time":{"description":"Local date and time at this location, as `YYYY-MM-DDTHH:MM`. Present when the request sets `date_time`.","type":"string","x-requested-by":"date_time"},"heading":{"description":"The location's `heading` from the request, in degrees. Absent when it has none.","type":"integer"},"lat":{"description":"Latitude of the snapped location.","format":"double","maximum":90,"minimum":-90,"type":"number"},"lon":{"description":"Longitude of the snapped location.","format":"double","maximum":180,"minimum":-180,"type":"number"},"name":{"description":"The location's `name` from the request. Absent when it has none.","type":"string"},"original_index":{"description":"Index of this location in the request. Meaningful for /optimized_route, where the visiting order differs from the order supplied.","type":"integer"},"side_of_street":{"description":"Which side of the road the location falls on. Absent when the location is on the road itself or the side could not be determined.","enum":["left","right"],"type":"string"},"street":{"description":"The location's `street` from the request. Absent when it has none.","type":"string"},"time_zone_name":{"description":"IANA time zone of `date_time`, e.g. `America/Los_Angeles`. Present with `date_time`.","type":"string","x-requested-by":"date_time"},"time_zone_offset":{"description":"UTC offset of `date_time`, as `+HH:MM` or `-HH:MM`. Present with `date_time`.","type":"string","x-requested-by":"date_time"},"type":{"description":"How the router treated this location.","enum":["break","through","via","break_through"],"type":"string"},"waiting":{"description":"The location's `waiting` time from the request, in seconds. Absent when zero.","type":"integer"}},"type":"object"},"ValhallaTripResponse":{"description":"A single routed trip.","properties":{"alternates":{"description":"Alternative routes, when the request sets `alternates` and the router finds any.","items":{"$ref":"#/components/schemas/ValhallaTripAlternate"},"type":"array","x-requested-by":"alternates"},"id":{"description":"The request's `id`, echoed back. Absent when the request has none.","type":"string","x-requested-by":"id"},"trip":{"$ref":"#/components/schemas/ValhallaTrip"}},"type":"object"},"ValhallaTripSummary":{"description":"Totals for a trip or a single leg. When the request sets `recostings`, it also holds `time_\u003cname\u003e` for each named recosting: the travel time in seconds under that costing, or null when the route is not passable under it.","properties":{"admin_crossings":{"description":"Where the leg crosses from one entry of `admins` to another. Present with `admins` when the leg passes through more than one.","items":{"$ref":"#/components/schemas/ValhallaAdminCrossing"},"type":"array","x-requested-by":"admin_crossings"},"admins":{"description":"Countries and states the leg passes through. Present on legs when the request sets `admin_crossings`.","items":{"$ref":"#/components/schemas/ValhallaAdmin"},"type":"array","x-requested-by":"admin_crossings"},"cost":{"description":"Internal cost the router minimized. Comparable between routes of the same costing model, and not otherwise meaningful.","type":"number","x-secondary":true},"has_ferry":{"description":"Whether any ferry is used.","type":"boolean"},"has_highway":{"description":"Whether any highway is used.","type":"boolean"},"has_time_restrictions":{"description":"Whether any edge carries a time-based restriction.","type":"boolean"},"has_toll":{"description":"Whether any toll road is used.","type":"boolean"},"length":{"description":"Distance, in the units named by the trip's `units`.","type":"number"},"level_changes":{"description":"Points where the route changes building level, as `[shape index, level]` pairs. Present on legs, and only where the data has levels.","items":{"items":{"type":"number"},"type":"array"},"type":"array"},"max_lat":{"description":"North edge of the bounding box.","format":"double","maximum":90,"minimum":-90,"type":"number"},"max_lon":{"description":"East edge of the bounding box.","format":"double","maximum":180,"minimum":-180,"type":"number"},"min_lat":{"description":"South edge of the bounding box.","format":"double","maximum":90,"minimum":-90,"type":"number"},"min_lon":{"description":"West edge of the bounding box.","format":"double","maximum":180,"minimum":-180,"type":"number"},"time":{"description":"Estimated travel time in seconds.","type":"number"}},"type":"object"},"ValhallaTripWarning":{"description":"A non-fatal note about the request.","properties":{"code":{"description":"Valhalla warning code.","type":"integer"},"text":{"description":"Human-readable warning.","type":"string"}},"type":"object"},"ValhallaTruckCostingOptions":{"allOf":[{"$ref":"#/components/schemas/ValhallaBaseCostingOptions"},{"description":"Options for truck costing. Parsed in src/sif/truckcost.cc. Dimension defaults differ from base.","properties":{"axle_count":{"default":5,"description":"The axle count of the truck.","maximum":20,"minimum":2,"type":"integer"},"axle_load":{"default":9.07,"description":"Per-axle load in metric tons (default 20,000 lbs / ~9.07 t).","maximum":40,"minimum":0,"type":"number"},"hazmat":{"default":false,"description":"A value indicating if the truck is carrying hazardous materials.","type":"boolean"},"height":{"default":4.11,"description":"Vehicle height in meters for access restriction matching.","type":"number"},"hgv_no_access_penalty":{"default":43200,"description":"A penalty applied to roads with no HGV/truck access. If set to a value less than 43200 seconds, HGV will be allowed on these roads and the penalty applies. Default  43200, i.e. trucks are not allowed.","maximum":43200,"minimum":0,"type":"number"},"length":{"default":21.64,"description":"Vehicle length in meters for access restriction matching.","type":"number"},"low_class_factor":{"default":1.5,"description":"A factor which is applied to residential or service roads.","maximum":100000,"minimum":0.1,"type":"number"},"low_class_penalty":{"default":30,"description":"A penalty in seconds which is applied when transitioning down onto residential or service roads.","maximum":43200,"minimum":0,"type":"number"},"top_speed":{"default":120,"description":"Top speed the vehicle can go in km/h. Also used to avoid roads with higher speeds than this value. `top_speed` must be between 10 and 252 km/h. The default value is 120 km/h  for truck.","maximum":252,"minimum":10,"type":"number"},"use_distance":{"default":0,"description":"A factor that allows controlling the contribution of distance and time to the route costs. The value is in range between 0 and 1, where 0 only takes time into account  and 1 only distance. A factor of 0.5 will weigh them roughly equally.","maximum":1,"minimum":0,"type":"number"},"use_highways":{"default":0.5,"description":"This value indicates the willingness to take highways. This is a range of values between 0 and 1. Values near 0 attempt to avoid highways and values near 1 will favor highways. Note that sometimes highways are required to complete a route so values of 0 are not guaranteed to avoid highways entirely.","maximum":1,"minimum":0,"type":"number"},"use_tolls":{"default":0.5,"description":"This value indicates the willingness to take roads with tolls. This is a range of values between 0 and 1. Values smaller than 0.5 attempt to avoid tolls and values greater than 0.5 will slightly favor them. The default value is 0.5, indicating no preference. Note that sometimes roads with tolls are required to complete a route so values of 0 are not guaranteed to avoid them entirely.","maximum":1,"minimum":0,"type":"number"},"use_truck_route":{"default":0,"description":"This value is a range of values from 0 to 1, where 0 indicates a light preference for streets marked as truck routes,  and 1 indicates that streets not marked as truck routes should be avoided. This information is derived from  the `hgv=designated` tag. Note that even with values near 1, there is no guarantee the returned route will include  streets marked as truck routes.","maximum":1,"minimum":0,"type":"number"},"weight":{"default":21.77,"description":"Vehicle weight in metric tons for access restriction matching.","type":"number"},"width":{"default":2.6,"description":"Vehicle width in meters for access restriction matching.","type":"number"}},"type":"object"}]},"ValhallaTurnLane":{"description":"One lane. Directions are bit masks: 1 none, 2 through, 4 sharp left, 8 left, 16 slight left, 32 slight right, 64 right, 128 sharp right, 256 reverse, 512 merge to left, 1024 merge to right.","properties":{"active":{"description":"The direction to take, when this lane is the one to be in.","type":"integer"},"directions":{"description":"Every direction the lane's markings allow.","type":"integer"},"valid":{"description":"The direction to take, when this lane also works for the maneuver but is not preferred.","type":"integer"}},"type":"object"}},"securitySchemes":{"apikeyHeader":{"description":"API key sent as a request header. Preferred, since query strings are logged by intermediaries. `apikey`, `api_key`, `api_token`, and `access_token` are accepted equivalently, and headers may be spelled with a dash or an underscore.","in":"header","name":"apikey","type":"apiKey"},"apikeyQuery":{"description":"API key sent as a query parameter, for callers that cannot set headers. `apikey`, `api_key`, `api_token`, and `access_token` are accepted equivalently, and headers may be spelled with a dash or an underscore.","in":"query","name":"apikey","type":"apiKey"}}},"info":{"contact":{"email":"info@interline.io"},"description":"Trip planning across transit, walking, driving, and cycling. Transit itineraries come from the Transitland Routing API, built on the same archive of GTFS feeds as the other Transitland v2 APIs and compatible with the OpenTripPlanner (OTP) API. Street routing, matrices, isochrones, and map matching come from a Valhalla engine running against OpenStreetMap data updated daily.","title":"Interline Routing Platform","version":"1.0.0"},"openapi":"3.0.0","paths":{"/otp/plan":{"get":{"description":"Returns transit and walking route itineraries between the specified origin and destination. The endpoint accepts parameters to control departure/arrival times, walking distances, transit leg limits, transfer penalties, and more.","operationId":"otpPlan","parameters":[{"description":"Origin in `lat,lon` format.","in":"query","name":"fromPlace","required":true,"schema":{"example":"37.7757,-122.4198","type":"string"}},{"description":"Destination in `lat,lon` format.","in":"query","name":"toPlace","required":true,"schema":{"example":"37.7857,-122.4064","type":"string"}},{"description":"Time of departure (or arrival if `arriveBy` is true) in local time. Format: `HH:MM` or `HH:MM:SS`, on a 24-hour clock. A 12-hour time such as `8:30am` is rejected.","in":"query","name":"time","required":true,"schema":{"example":"08:30","pattern":"^\\d{1,2}:\\d{2}(:\\d{2})?$","type":"string"}},{"description":"Date of travel in `YYYY-MM-DD` format. `MM-DD-YYYY` is also accepted, with the month first.","in":"query","name":"date","required":true,"schema":{"example":"2026-08-17","pattern":"^(\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])|(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])-\\d{4})$","type":"string"}},{"description":"If true, the specified `time` and `date` are treated as the target arrival time at the destination rather than the departure time.","in":"query","name":"arriveBy","schema":{"default":false,"example":false,"type":"boolean"}},{"description":"Maximum number of itineraries to return. Also available as `numItineraries`.","in":"query","name":"maxItineraries","schema":{"default":10,"example":3,"type":"integer"}},{"description":"Maximum walking distance (in meters) allowed from the origin to the first transit stop or from the last transit stop to the destination. Also available as `maxWalkDistance`.","in":"query","name":"maxWalkingDistance","schema":{"default":800,"example":800,"type":"number"}},{"description":"Maximum straight-line distance (in meters) allowed for transfers between stops.","in":"query","name":"maxTransferWalkingDistance","schema":{"default":400,"example":400,"type":"number"}},{"description":"Walking speed in meters per second. (Fixed at 1.0 in the beta release.)","in":"query","name":"walkingSpeed","schema":{"default":1,"example":1,"type":"number"}},{"description":"Minimum duration (in seconds) of a transit leg.","in":"query","name":"minRideLength","schema":{"default":120,"example":120,"type":"integer"}},{"description":"Maximum number of transit legs allowed in an itinerary.","in":"query","name":"maxK","schema":{"default":8,"example":8,"type":"integer"}},{"description":"Maximum total itinerary time (in seconds).","in":"query","name":"maxTripTime","schema":{"default":14400,"example":14400,"type":"integer"}},{"description":"Amount of padding to add (in seconds) when considering a transfer. For example, when alighting from the end of the first transit leg and walking to the departure stop for the next leg, only transfers to new trips departing at least 120s from that moment will be considered","in":"query","name":"transferTimePenalty","schema":{"default":120,"example":120,"type":"integer"}},{"description":"Use \"fallback\" service dates if the requested date is outside the service period of a given feed. For instance, if a feed only contains service from 2023-01-01 through 2023-01-31, and a date of 2023-05-01 is specified, an equivalent weekday (in this case, Monday) will be selected within the valid service range, such as 2023-01-09.","in":"query","name":"useFallbackDates","schema":{"default":false,"example":false,"type":"boolean"}},{"description":"Always include a walking-only itinerary alongside transit results.","in":"query","name":"includeWalkingItinerary","schema":{"default":false,"example":false,"type":"boolean"}},{"description":"Return a walking-only itinerary if no transit trips are found.","in":"query","name":"fallbackWalkingItinerary","schema":{"default":false,"example":false,"type":"boolean"}},{"description":"Automatically include a walking-only itinerary if the origin and destination are within the maximum walking distance.","in":"query","name":"allowWalkingItinerary","schema":{"default":false,"example":false,"type":"boolean"}},{"description":"Include a table of the earliest arrival times at stops during trip planning.","in":"query","name":"includeEarliestArrivals","schema":{"default":false,"example":false,"type":"boolean"}},{"description":"If true, stops that cannot improve the final arrival time are ignored. Set to false to include all stops, useful for generating isochrones.","in":"query","name":"useTargetStopPruning","schema":{"default":true,"example":true,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"examples":{"default":{"summary":"A trip with one rail leg","value":{"plan":{"date":1786980600000,"from":{"lat":37.7757,"lon":-122.4198,"name":"Origin"},"itineraries":[{"distance":1840.6016926765926,"duration":491,"endTime":1786981112000,"legs":[{"distance":159.23557715082868,"duration":159,"endTime":1786980780000,"from":{"departure":1786980621000,"lat":37.7757,"lon":-122.4198,"name":""},"legGeometry":{"length":15,"points":"caqeFvbejV??_@BCg@CS??|ASZETCPALCOOACC@??"},"mode":"WALK","startTime":1786980621000,"steps":[],"to":{"departure":1786980780000,"lat":37.77513,"lon":-122.41925,"name":"Metro Van Ness Station","stopCode":"15419","stopId":"15419","stopOnestopId":"s-9q8yykc00d-metrovannessstation"},"transitLeg":false},{"agencyId":"SF","agencyName":"San Francisco Municipal Transportation Agency","block_id":"SF:9504_M21","distance":1504.2311526571011,"duration":155,"endTime":1786980935000,"feedId":"f-sf~bay~area~rg","feedVersionSha1":"3aea27cbde2ce8cb05696e3a19b22db08a145e63","from":{"departure":1786980780000,"lat":37.77513,"lon":-122.41925,"name":"Metro Van Ness Station","stopCode":"15419","stopId":"15419","stopIndex":19,"stopOnestopId":"s-9q8yykc00d-metrovannessstation","stopSequence":19},"headsign":"Embarcadero Station","intermediateStops":[{"departure":1786980855000,"lat":37.77971,"lon":-122.41335,"name":"Metro Civic Center Station/Downtn","stopCode":"15727","stopId":"15727","stopIndex":20,"stopOnestopId":"s-9q8yymt6f0-metrociviccenterstation~downtn","stopSequence":20}],"legGeometry":{"length":15,"points":"u}peFl_ejVwAqB_EmF}DqF{@gAwDmFoEeGoCuDuAkBw@eAqEkGqEkGmCoDkCsDCE"},"mode":"RAIL","routeColor":"942D83","routeId":"SF:L","routeLongName":"TARAVAL","routeOnestopId":"r-9q8yv-l","routeShortName":"L","routeTextColor":"FFFFFF","routeType":0,"startTime":1786980780000,"steps":[],"to":{"departure":1786980935000,"lat":37.78465,"lon":-122.40709,"name":"Metro Powell Station/Downtown","stopCode":"15417","stopId":"15417","stopIndex":21,"stopOnestopId":"s-9q8yyw3zs1-metropowellstation~downtown","stopSequence":21},"transitLeg":true,"tripId":"SF:12083617_M21"},{"distance":177.13496286866288,"duration":177,"endTime":1786981112000,"from":{"departure":1786980935000,"lat":37.78465,"lon":-122.40709,"name":"Metro Powell Station/Downtown","stopCode":"15417","stopId":"15417","stopOnestopId":"s-9q8yyw3zs1-metropowellstation~downtown"},"legGeometry":{"length":17,"points":"ayreFhsbjV??FEa@i@cB}BSYILCDEDSVCEO@??AL?@A???"},"mode":"WALK","startTime":1786980935000,"steps":[],"to":{"departure":1786981112000,"lat":37.7857,"lon":-122.4064,"name":""},"transitLeg":false}],"startTime":1786980621000,"transfers":0,"transitDistance":1504.2311526571011,"transitTime":155,"waitingTime":0,"walkDistance":336.37054001949156,"walkTime":336}],"to":{"lat":37.7857,"lon":-122.4064,"name":"Destination"}}}}},"schema":{"$ref":"#/components/schemas/PlanResponse"}}},"description":"Successful routing plan response."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}},"text/plain":{"schema":{"type":"string"}}},"description":"Rate limit exceeded. The edge proxy answers with a JSON `message` when its own limit trips; this API answers with a plain-text body when the per-account limit trips."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Server error. Also returned for malformed parameters, such as a `date` or `time` that does not parse or a `fromPlace` that is not a coordinate pair. This endpoint does not return 400."}},"summary":"OTP-compatible transit routing plan (GET)","tags":["Transit routing"]}},"/valhalla/centroid":{"get":{"description":"Find the point where routes from several locations converge with least total cost. Takes the same request as /route. `trip` is the route from the first location to that point, and `alternates` holds the routes from each of the other locations to the same point, in request order.","operationId":"valhallaCentroidGet","parameters":[{"content":{"application/json":{"examples":{"default":{"summary":"A working /centroid request","value":{"costing":"auto","locations":[{"lat":37.7793,"lon":-122.4193},{"lat":37.7801,"lon":-122.4175},{"lat":37.7785,"lon":-122.4172}]}}},"schema":{"$ref":"#/components/schemas/ValhallaRouteRequest"}}},"description":"The request object, url-encoded. Identical to the POST body. Encode spaces as %20, or send the JSON without spaces. The API does not decode + as a space and rejects the request as unparseable.","in":"query","name":"json","required":true}],"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"alternates":[{"trip":{"language":"en-US","legs":[{"maneuvers":[{"bearing_after":261,"begin_shape_index":0,"cost":11.958,"end_shape_index":8,"instruction":"Drive west.","length":0.054,"time":9.761,"travel_mode":"drive","travel_type":"car","type":3,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 50 meters.","verbal_pre_transition_instruction":"Drive west. Then Turn left onto McAllister Street.","verbal_succinct_transition_instruction":"Drive west. Then Turn left onto McAllister Street."},{"bearing_after":261,"bearing_before":320,"begin_shape_index":8,"cost":17.259,"end_shape_index":10,"instruction":"Turn left onto McAllister Street.","length":0.041,"street_names":["McAllister Street"],"time":-1.526,"travel_mode":"drive","travel_type":"car","type":15,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 40 meters.","verbal_pre_transition_instruction":"Turn left onto McAllister Street. Then You will arrive at your destination.","verbal_succinct_transition_instruction":"Turn left. Then You will arrive at your destination.","verbal_transition_alert_instruction":"Turn left onto McAllister Street."},{"bearing_before":262,"begin_shape_index":10,"cost":0,"end_shape_index":10,"instruction":"You have arrived at your destination.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":4,"verbal_pre_transition_instruction":"You have arrived at your destination.","verbal_transition_alert_instruction":"You will arrive at your destination."}],"shape":"{q|`gA~vwnhFrA`S@bAEnAQtA_@fAi@t@u@j@iAl@`BrWNhC","summary":{"cost":29.217,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.095,"max_lat":37.780339,"max_lon":-122.417535,"min_lat":37.780226,"min_lon":-122.418545,"time":8.235}}],"locations":[{"lat":37.7801,"lon":-122.4175,"original_index":1,"side_of_street":"left","type":"break"},{"lat":37.780283,"lon":-122.418545,"original_index":0,"type":"break"}],"status":0,"status_message":"Found route between points","summary":{"cost":29.217,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.095,"max_lat":37.780339,"max_lon":-122.417535,"min_lat":37.780226,"min_lon":-122.418545,"time":8.235},"units":"kilometers"}},{"trip":{"language":"en-US","legs":[{"maneuvers":[{"bearing_after":261,"begin_shape_index":0,"cost":10.088,"end_shape_index":2,"instruction":"Drive west on Grove Street.","length":0.091,"street_names":["Grove Street"],"time":8.256,"travel_mode":"drive","travel_type":"car","type":3,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 90 meters.","verbal_pre_transition_instruction":"Drive west on Grove Street. Then Turn right onto Dr. Carlton B. Goodlett Place.","verbal_succinct_transition_instruction":"Drive west. Then Turn right onto Dr. Carlton B. Goodlett Place."},{"bearing_after":352,"bearing_before":261,"begin_shape_index":2,"cost":43.2,"end_shape_index":11,"instruction":"Turn right onto Dr. Carlton B. Goodlett Place.","length":0.201,"street_names":["Dr. Carlton B. Goodlett Place"],"time":26.776,"travel_mode":"drive","travel_type":"car","type":10,"verbal_post_transition_instruction":"Continue for 200 meters.","verbal_pre_transition_instruction":"Turn right onto Dr. Carlton B. Goodlett Place.","verbal_succinct_transition_instruction":"Turn right.","verbal_transition_alert_instruction":"Turn right onto Dr. Carlton B. Goodlett Place."},{"bearing_after":82,"bearing_before":348,"begin_shape_index":11,"cost":-10.317,"end_shape_index":12,"instruction":"Turn right onto McAllister Street.","length":0.006,"street_names":["McAllister Street"],"time":-12.306,"travel_mode":"drive","travel_type":"car","type":10,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for less than 10 meters.","verbal_pre_transition_instruction":"Turn right onto McAllister Street. Then You will arrive at your destination.","verbal_succinct_transition_instruction":"Turn right. Then You will arrive at your destination.","verbal_transition_alert_instruction":"Turn right onto McAllister Street."},{"bearing_before":82,"begin_shape_index":12,"cost":0,"end_shape_index":12,"instruction":"You have arrived at your destination.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":4,"verbal_pre_transition_instruction":"You have arrived at your destination.","verbal_transition_alert_instruction":"You will arrive at your destination."}],"shape":"yjy`gApcwnhFdFlw@^zF_Gn@sf@tFoGp@kFn@kOhBoQvBwC\\aCb@kCd@OkC","summary":{"cost":42.971,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.298,"max_lat":37.780283,"max_lon":-122.417224,"min_lat":37.77849,"min_lon":-122.418614,"time":22.726}}],"locations":[{"lat":37.7785,"lon":-122.4172,"original_index":2,"side_of_street":"left","type":"break"},{"lat":37.780283,"lon":-122.418545,"original_index":0,"type":"break"}],"status":0,"status_message":"Found route between points","summary":{"cost":42.971,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.298,"max_lat":37.780283,"max_lon":-122.417224,"min_lat":37.77849,"min_lon":-122.418614,"time":22.726},"units":"kilometers"}}],"trip":{"language":"en-US","legs":[{"maneuvers":[{"bearing_after":352,"begin_shape_index":0,"cost":10.88,"end_shape_index":4,"instruction":"Drive north on US 101 North/Van Ness Avenue.","length":0.098,"street_names":["US 101 North","Van Ness Avenue"],"time":8.907,"travel_mode":"drive","travel_type":"car","type":2,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 100 meters.","verbal_pre_transition_instruction":"Drive north on U.S. 1 o1 North, Van Ness Avenue. Then Turn right onto McAllister Street.","verbal_succinct_transition_instruction":"Drive north. Then Turn right onto McAllister Street."},{"bearing_after":86,"bearing_before":347,"begin_shape_index":4,"cost":35.326,"end_shape_index":14,"instruction":"Turn right onto McAllister Street.","length":0.142,"street_names":["McAllister Street"],"time":8.456,"travel_mode":"drive","travel_type":"car","type":10,"verbal_post_transition_instruction":"Continue for 100 meters.","verbal_pre_transition_instruction":"Turn right onto McAllister Street.","verbal_succinct_transition_instruction":"Turn right.","verbal_transition_alert_instruction":"Turn right onto McAllister Street."},{"bearing_before":82,"begin_shape_index":14,"cost":0,"end_shape_index":14,"instruction":"You have arrived at your destination.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":4,"verbal_pre_transition_instruction":"You have arrived at your destination.","verbal_transition_alert_instruction":"You will arrive at your destination."}],"shape":"{oz`gA|o|nhFwJjAuI\\}V~CiGjAGkCw@_NCa@]oFm@yIeCs_@K{As@sL]iGOkC","summary":{"cost":46.207,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.241,"max_lat":37.780283,"max_lon":-122.418545,"min_lat":37.779214,"min_lon":-122.420154,"time":17.363}}],"locations":[{"lat":37.7793,"lon":-122.4193,"original_index":0,"side_of_street":"right","type":"break"},{"lat":37.780283,"lon":-122.418545,"original_index":0,"type":"break"}],"status":0,"status_message":"Found route between points","summary":{"cost":46.207,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.241,"max_lat":37.780283,"max_lon":-122.418545,"min_lat":37.779214,"min_lon":-122.420154,"time":17.363},"units":"kilometers"}}}},"schema":{"$ref":"#/components/schemas/ValhallaCentroidResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Calculate a convergence point","tags":["Street routing"]},"post":{"description":"Find the point where routes from several locations converge with least total cost. Takes the same request as /route. `trip` is the route from the first location to that point, and `alternates` holds the routes from each of the other locations to the same point, in request order.","operationId":"valhallaCentroidPost","requestBody":{"content":{"application/json":{"examples":{"default":{"summary":"A working /centroid request","value":{"costing":"auto","locations":[{"lat":37.7793,"lon":-122.4193},{"lat":37.7801,"lon":-122.4175},{"lat":37.7785,"lon":-122.4172}]}}},"schema":{"$ref":"#/components/schemas/ValhallaRouteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"alternates":[{"trip":{"language":"en-US","legs":[{"maneuvers":[{"bearing_after":261,"begin_shape_index":0,"cost":11.958,"end_shape_index":8,"instruction":"Drive west.","length":0.054,"time":9.761,"travel_mode":"drive","travel_type":"car","type":3,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 50 meters.","verbal_pre_transition_instruction":"Drive west. Then Turn left onto McAllister Street.","verbal_succinct_transition_instruction":"Drive west. Then Turn left onto McAllister Street."},{"bearing_after":261,"bearing_before":320,"begin_shape_index":8,"cost":17.259,"end_shape_index":10,"instruction":"Turn left onto McAllister Street.","length":0.041,"street_names":["McAllister Street"],"time":-1.526,"travel_mode":"drive","travel_type":"car","type":15,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 40 meters.","verbal_pre_transition_instruction":"Turn left onto McAllister Street. Then You will arrive at your destination.","verbal_succinct_transition_instruction":"Turn left. Then You will arrive at your destination.","verbal_transition_alert_instruction":"Turn left onto McAllister Street."},{"bearing_before":262,"begin_shape_index":10,"cost":0,"end_shape_index":10,"instruction":"You have arrived at your destination.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":4,"verbal_pre_transition_instruction":"You have arrived at your destination.","verbal_transition_alert_instruction":"You will arrive at your destination."}],"shape":"{q|`gA~vwnhFrA`S@bAEnAQtA_@fAi@t@u@j@iAl@`BrWNhC","summary":{"cost":29.217,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.095,"max_lat":37.780339,"max_lon":-122.417535,"min_lat":37.780226,"min_lon":-122.418545,"time":8.235}}],"locations":[{"lat":37.7801,"lon":-122.4175,"original_index":1,"side_of_street":"left","type":"break"},{"lat":37.780283,"lon":-122.418545,"original_index":0,"type":"break"}],"status":0,"status_message":"Found route between points","summary":{"cost":29.217,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.095,"max_lat":37.780339,"max_lon":-122.417535,"min_lat":37.780226,"min_lon":-122.418545,"time":8.235},"units":"kilometers"}},{"trip":{"language":"en-US","legs":[{"maneuvers":[{"bearing_after":261,"begin_shape_index":0,"cost":10.088,"end_shape_index":2,"instruction":"Drive west on Grove Street.","length":0.091,"street_names":["Grove Street"],"time":8.256,"travel_mode":"drive","travel_type":"car","type":3,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 90 meters.","verbal_pre_transition_instruction":"Drive west on Grove Street. Then Turn right onto Dr. Carlton B. Goodlett Place.","verbal_succinct_transition_instruction":"Drive west. Then Turn right onto Dr. Carlton B. Goodlett Place."},{"bearing_after":352,"bearing_before":261,"begin_shape_index":2,"cost":43.2,"end_shape_index":11,"instruction":"Turn right onto Dr. Carlton B. Goodlett Place.","length":0.201,"street_names":["Dr. Carlton B. Goodlett Place"],"time":26.776,"travel_mode":"drive","travel_type":"car","type":10,"verbal_post_transition_instruction":"Continue for 200 meters.","verbal_pre_transition_instruction":"Turn right onto Dr. Carlton B. Goodlett Place.","verbal_succinct_transition_instruction":"Turn right.","verbal_transition_alert_instruction":"Turn right onto Dr. Carlton B. Goodlett Place."},{"bearing_after":82,"bearing_before":348,"begin_shape_index":11,"cost":-10.317,"end_shape_index":12,"instruction":"Turn right onto McAllister Street.","length":0.006,"street_names":["McAllister Street"],"time":-12.306,"travel_mode":"drive","travel_type":"car","type":10,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for less than 10 meters.","verbal_pre_transition_instruction":"Turn right onto McAllister Street. Then You will arrive at your destination.","verbal_succinct_transition_instruction":"Turn right. Then You will arrive at your destination.","verbal_transition_alert_instruction":"Turn right onto McAllister Street."},{"bearing_before":82,"begin_shape_index":12,"cost":0,"end_shape_index":12,"instruction":"You have arrived at your destination.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":4,"verbal_pre_transition_instruction":"You have arrived at your destination.","verbal_transition_alert_instruction":"You will arrive at your destination."}],"shape":"yjy`gApcwnhFdFlw@^zF_Gn@sf@tFoGp@kFn@kOhBoQvBwC\\aCb@kCd@OkC","summary":{"cost":42.971,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.298,"max_lat":37.780283,"max_lon":-122.417224,"min_lat":37.77849,"min_lon":-122.418614,"time":22.726}}],"locations":[{"lat":37.7785,"lon":-122.4172,"original_index":2,"side_of_street":"left","type":"break"},{"lat":37.780283,"lon":-122.418545,"original_index":0,"type":"break"}],"status":0,"status_message":"Found route between points","summary":{"cost":42.971,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.298,"max_lat":37.780283,"max_lon":-122.417224,"min_lat":37.77849,"min_lon":-122.418614,"time":22.726},"units":"kilometers"}}],"trip":{"language":"en-US","legs":[{"maneuvers":[{"bearing_after":352,"begin_shape_index":0,"cost":10.88,"end_shape_index":4,"instruction":"Drive north on US 101 North/Van Ness Avenue.","length":0.098,"street_names":["US 101 North","Van Ness Avenue"],"time":8.907,"travel_mode":"drive","travel_type":"car","type":2,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 100 meters.","verbal_pre_transition_instruction":"Drive north on U.S. 1 o1 North, Van Ness Avenue. Then Turn right onto McAllister Street.","verbal_succinct_transition_instruction":"Drive north. Then Turn right onto McAllister Street."},{"bearing_after":86,"bearing_before":347,"begin_shape_index":4,"cost":35.326,"end_shape_index":14,"instruction":"Turn right onto McAllister Street.","length":0.142,"street_names":["McAllister Street"],"time":8.456,"travel_mode":"drive","travel_type":"car","type":10,"verbal_post_transition_instruction":"Continue for 100 meters.","verbal_pre_transition_instruction":"Turn right onto McAllister Street.","verbal_succinct_transition_instruction":"Turn right.","verbal_transition_alert_instruction":"Turn right onto McAllister Street."},{"bearing_before":82,"begin_shape_index":14,"cost":0,"end_shape_index":14,"instruction":"You have arrived at your destination.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":4,"verbal_pre_transition_instruction":"You have arrived at your destination.","verbal_transition_alert_instruction":"You will arrive at your destination."}],"shape":"{oz`gA|o|nhFwJjAuI\\}V~CiGjAGkCw@_NCa@]oFm@yIeCs_@K{As@sL]iGOkC","summary":{"cost":46.207,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.241,"max_lat":37.780283,"max_lon":-122.418545,"min_lat":37.779214,"min_lon":-122.420154,"time":17.363}}],"locations":[{"lat":37.7793,"lon":-122.4193,"original_index":0,"side_of_street":"right","type":"break"},{"lat":37.780283,"lon":-122.418545,"original_index":0,"type":"break"}],"status":0,"status_message":"Found route between points","summary":{"cost":46.207,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.241,"max_lat":37.780283,"max_lon":-122.418545,"min_lat":37.779214,"min_lon":-122.420154,"time":17.363},"units":"kilometers"}}}},"schema":{"$ref":"#/components/schemas/ValhallaCentroidResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Calculate a convergence point","tags":["Street routing"]}},"/valhalla/expansion":{"get":{"description":"Return the edges explored while answering a routing request, as GeoJSON. Useful for visualizing and debugging searches.","operationId":"valhallaExpansionGet","parameters":[{"content":{"application/json":{"examples":{"default":{"summary":"A working /expansion request","value":{"action":"isochrone","contours":[{"time":0.3}],"costing":"auto","expansion_properties":["duration","distance","cost","edge_id","pred_edge_id","edge_status","expansion_type","flow_sources","travel_mode","expansion_index"],"locations":[{"lat":37.7793,"lon":-122.4193}]}}},"schema":{"$ref":"#/components/schemas/ValhallaExpansionRequest"}}},"description":"The request object, url-encoded. Identical to the POST body. Encode spaces as %20, or send the JSON without spaces. The API does not decode + as a space and rejects the request as unparseable.","in":"query","name":"json","required":true}],"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"features":[{"geometry":{"coordinates":[[-122.419824,37.778422],[-122.420116,37.779956]],"type":"LineString"},"properties":{"cost":9,"distance":83,"duration":7,"edge_id":390405838752,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":70368744177663,"travel_mode":"unknown"},"type":"Feature"},{"geometry":{"coordinates":[[-122.420116,37.779956],[-122.420154,37.780089]],"type":"LineString"},"properties":{"cost":10,"distance":98,"duration":8,"edge_id":390204512160,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":390405838752,"travel_mode":"unknown"},"type":"Feature"},{"geometry":{"coordinates":[[-122.420154,37.780089],[-122.420183,37.780196]],"type":"LineString"},"properties":{"cost":12,"distance":110,"duration":11,"edge_id":389231433632,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":390204512160,"travel_mode":"unknown"},"type":"Feature"},{"geometry":{"coordinates":[[-122.420154,37.780089],[-122.420084,37.780093]],"type":"LineString"},"properties":{"cost":16,"distance":104,"duration":14,"edge_id":314539611785,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":390204512160,"travel_mode":"unknown"},"type":"Feature"},{"geometry":{"coordinates":[[-122.420183,37.780196],[-122.420261,37.780582]],"type":"LineString"},"properties":{"cost":17,"distance":154,"duration":15,"edge_id":390338729888,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":389231433632,"travel_mode":"unknown"},"type":"Feature"},{"geometry":{"coordinates":[[-122.420261,37.780582],[-122.42034,37.780969]],"type":"LineString"},"properties":{"cost":21,"distance":198,"duration":19,"edge_id":389164324768,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":390338729888,"travel_mode":"unknown"},"type":"Feature"},{"geometry":{"coordinates":[[-122.420084,37.780093],[-122.419707,37.780138]],"type":"LineString"},"properties":{"cost":21,"distance":138,"duration":18,"edge_id":316787758729,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":314539611785,"travel_mode":"unknown"},"type":"Feature"}],"properties":{"algorithm":"dijkstras"},"type":"FeatureCollection"}}},"schema":{"$ref":"#/components/schemas/ValhallaExpansionResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Trace the routing graph expansion","tags":["Street routing"]},"post":{"description":"Return the edges explored while answering a routing request, as GeoJSON. Useful for visualizing and debugging searches.","operationId":"valhallaExpansionPost","requestBody":{"content":{"application/json":{"examples":{"default":{"summary":"A working /expansion request","value":{"action":"isochrone","contours":[{"time":0.3}],"costing":"auto","expansion_properties":["duration","distance","cost","edge_id","pred_edge_id","edge_status","expansion_type","flow_sources","travel_mode","expansion_index"],"locations":[{"lat":37.7793,"lon":-122.4193}]}}},"schema":{"$ref":"#/components/schemas/ValhallaExpansionRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"features":[{"geometry":{"coordinates":[[-122.419824,37.778422],[-122.420116,37.779956]],"type":"LineString"},"properties":{"cost":9,"distance":83,"duration":7,"edge_id":390405838752,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":70368744177663,"travel_mode":"unknown"},"type":"Feature"},{"geometry":{"coordinates":[[-122.420116,37.779956],[-122.420154,37.780089]],"type":"LineString"},"properties":{"cost":10,"distance":98,"duration":8,"edge_id":390204512160,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":390405838752,"travel_mode":"unknown"},"type":"Feature"},{"geometry":{"coordinates":[[-122.420154,37.780089],[-122.420183,37.780196]],"type":"LineString"},"properties":{"cost":12,"distance":110,"duration":11,"edge_id":389231433632,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":390204512160,"travel_mode":"unknown"},"type":"Feature"},{"geometry":{"coordinates":[[-122.420154,37.780089],[-122.420084,37.780093]],"type":"LineString"},"properties":{"cost":16,"distance":104,"duration":14,"edge_id":314539611785,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":390204512160,"travel_mode":"unknown"},"type":"Feature"},{"geometry":{"coordinates":[[-122.420183,37.780196],[-122.420261,37.780582]],"type":"LineString"},"properties":{"cost":17,"distance":154,"duration":15,"edge_id":390338729888,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":389231433632,"travel_mode":"unknown"},"type":"Feature"},{"geometry":{"coordinates":[[-122.420261,37.780582],[-122.42034,37.780969]],"type":"LineString"},"properties":{"cost":21,"distance":198,"duration":19,"edge_id":389164324768,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":390338729888,"travel_mode":"unknown"},"type":"Feature"},{"geometry":{"coordinates":[[-122.420084,37.780093],[-122.419707,37.780138]],"type":"LineString"},"properties":{"cost":21,"distance":138,"duration":18,"edge_id":316787758729,"edge_status":"s","expansion_index":0,"expansion_type":0,"flow_mask_constrained":false,"flow_mask_current":false,"flow_mask_free_flow":false,"flow_mask_predicted":false,"pred_edge_id":314539611785,"travel_mode":"unknown"},"type":"Feature"}],"properties":{"algorithm":"dijkstras"},"type":"FeatureCollection"}}},"schema":{"$ref":"#/components/schemas/ValhallaExpansionResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Trace the routing graph expansion","tags":["Street routing"]}},"/valhalla/isochrone":{"get":{"description":"Calculate areas reachable within given time or distance limits from a location, as GeoJSON linestrings or polygons.","operationId":"valhallaIsochroneGet","parameters":[{"content":{"application/json":{"examples":{"default":{"summary":"A working /isochrone request","value":{"contours":[{"time":5}],"costing":"pedestrian","locations":[{"lat":37.7793,"lon":-122.4193}],"polygons":true,"show_locations":true}}},"schema":{"$ref":"#/components/schemas/ValhallaIsochroneRequest"}}},"description":"The request object, url-encoded. Identical to the POST body. Encode spaces as %20, or send the JSON without spaces. The API does not decode + as a space and rejects the request as unparseable.","in":"query","name":"json","required":true}],"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"features":[{"geometry":{"coordinates":[[[-122.419299,37.782365],[-122.420299,37.78285],[-122.421299,37.782717],[-122.423353,37.780353],[-122.423658,37.7793],[-122.422944,37.7773],[-122.419299,37.775145],[-122.415877,37.7783],[-122.416318,37.7803],[-122.417238,37.7813],[-122.419299,37.782365]]],"type":"Polygon"},"properties":{"color":"#bf4040","contour":5,"fill":"#bf4040","fill-opacity":0.33,"fillColor":"#bf4040","fillOpacity":0.33,"metric":"time","opacity":0.33},"type":"Feature"},{"geometry":{"coordinates":[[-122.419314,37.779264],[-122.419804,37.779203]],"type":"MultiPoint"},"properties":{"location_index":0,"type":"snapped"},"type":"Feature"},{"geometry":{"coordinates":[-122.4193,37.7793],"type":"Point"},"properties":{"location_index":0,"type":"input"},"type":"Feature"}],"type":"FeatureCollection"}}},"schema":{"$ref":"#/components/schemas/ValhallaIsochroneResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Calculate an isochrone","tags":["Street routing"]},"post":{"description":"Calculate areas reachable within given time or distance limits from a location, as GeoJSON linestrings or polygons.","operationId":"valhallaIsochronePost","requestBody":{"content":{"application/json":{"examples":{"default":{"summary":"A working /isochrone request","value":{"contours":[{"time":5}],"costing":"pedestrian","locations":[{"lat":37.7793,"lon":-122.4193}],"polygons":true,"show_locations":true}}},"schema":{"$ref":"#/components/schemas/ValhallaIsochroneRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"features":[{"geometry":{"coordinates":[[[-122.419299,37.782365],[-122.420299,37.78285],[-122.421299,37.782717],[-122.423353,37.780353],[-122.423658,37.7793],[-122.422944,37.7773],[-122.419299,37.775145],[-122.415877,37.7783],[-122.416318,37.7803],[-122.417238,37.7813],[-122.419299,37.782365]]],"type":"Polygon"},"properties":{"color":"#bf4040","contour":5,"fill":"#bf4040","fill-opacity":0.33,"fillColor":"#bf4040","fillOpacity":0.33,"metric":"time","opacity":0.33},"type":"Feature"},{"geometry":{"coordinates":[[-122.419314,37.779264],[-122.419804,37.779203]],"type":"MultiPoint"},"properties":{"location_index":0,"type":"snapped"},"type":"Feature"},{"geometry":{"coordinates":[-122.4193,37.7793],"type":"Point"},"properties":{"location_index":0,"type":"input"},"type":"Feature"}],"type":"FeatureCollection"}}},"schema":{"$ref":"#/components/schemas/ValhallaIsochroneResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Calculate an isochrone","tags":["Street routing"]}},"/valhalla/locate":{"get":{"description":"Find the nearest road or path network locations for given coordinates. Useful for debugging routes.","operationId":"valhallaLocateGet","parameters":[{"content":{"application/json":{"examples":{"default":{"summary":"A working /locate request","value":{"costing":"auto","locations":[{"lat":37.7793,"lon":-122.4193}],"verbose":true}}},"schema":{"$ref":"#/components/schemas/ValhallaLocateRequest"}}},"description":"The request object, url-encoded. Identical to the POST body. Encode spaces as %20, or send the JSON without spaces. The API does not decode + as a space and rejects the request as unparseable.","in":"query","name":"json","required":true}],"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":[{"edges":[{"access_restrictions":[],"bounding_circle":{"lat":37.77919,"lon":-122.419962,"radius":90},"correlated_lat":37.779214,"correlated_lon":-122.419983,"distance":60.8,"edge":{"access":{"HOV":true,"bicycle":true,"bus":true,"car":true,"emergency":false,"moped":true,"motorcycle":true,"pedestrian":true,"taxi":true,"truck":true,"wheelchair":true},"access_restriction":false,"bike_network":false,"bridge":false,"classification":{"classification":"trunk","internal":false,"link":false,"surface":"paved_smooth","use":"road"},"country_crossing":false,"cycle_lane":"none","deadend":false,"destination_only":false,"destination_only_hgv":false,"end_node":{"id":4974,"level":0,"tile_id":2804,"value":166899767200},"end_restriction":{"HOV":false,"bicycle":false,"bus":false,"car":false,"emergency":false,"moped":false,"motorcycle":false,"pedestrian":false,"taxi":false,"truck":false,"wheelchair":false},"forward":true,"geo_attributes":{"curvature":3,"length":173,"max_down_slope":0,"max_up_slope":2,"weighted_grade":1.66},"has_sign":false,"lane_count":3,"not_thru":false,"part_of_complex_restriction":true,"round_about":false,"sac_scale":"none","sidewalk_left":false,"sidewalk_right":false,"speeds":{"constrained_flow":0,"default":40,"free_flow":0,"predicted":false,"type":"tagged"},"start_restriction":{"HOV":false,"bicycle":false,"bus":false,"car":false,"emergency":false,"moped":false,"motorcycle":false,"pedestrian":false,"taxi":false,"truck":false,"wheelchair":false},"stop_sign":false,"toll":false,"traffic_signal":false,"truck_route":true,"tunnel":false,"yield_sign":false},"edge_id":{"id":11635,"level":0,"tile_id":2804,"value":390405838752},"edge_info":{"bike_network":{"local":false,"mountain":false,"national":false,"regional":false},"mean_elevation":20,"names":["US 101 North","Van Ness Avenue"],"shape":"k~x`gA~e|nhFg|@hKuI\\}V~C","speed_limit":40,"way_id":502795544},"heading":350.9,"inbound_reach":50,"linear_reference":"K6jyJxrdWks/Av/hAJsLT4Q=","live_speed":{},"outbound_reach":50,"percent_along":0.51614,"predicted_speeds":[],"shoulder":false,"side_of_street":"right"}],"input_lat":37.7793,"input_lon":-122.4193,"nodes":[]}]}},"schema":{"$ref":"#/components/schemas/ValhallaLocateResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Snap coordinates to the network","tags":["Street routing"]},"post":{"description":"Find the nearest road or path network locations for given coordinates. Useful for debugging routes.","operationId":"valhallaLocatePost","requestBody":{"content":{"application/json":{"examples":{"default":{"summary":"A working /locate request","value":{"costing":"auto","locations":[{"lat":37.7793,"lon":-122.4193}],"verbose":true}}},"schema":{"$ref":"#/components/schemas/ValhallaLocateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":[{"edges":[{"access_restrictions":[],"bounding_circle":{"lat":37.77919,"lon":-122.419962,"radius":90},"correlated_lat":37.779214,"correlated_lon":-122.419983,"distance":60.8,"edge":{"access":{"HOV":true,"bicycle":true,"bus":true,"car":true,"emergency":false,"moped":true,"motorcycle":true,"pedestrian":true,"taxi":true,"truck":true,"wheelchair":true},"access_restriction":false,"bike_network":false,"bridge":false,"classification":{"classification":"trunk","internal":false,"link":false,"surface":"paved_smooth","use":"road"},"country_crossing":false,"cycle_lane":"none","deadend":false,"destination_only":false,"destination_only_hgv":false,"end_node":{"id":4974,"level":0,"tile_id":2804,"value":166899767200},"end_restriction":{"HOV":false,"bicycle":false,"bus":false,"car":false,"emergency":false,"moped":false,"motorcycle":false,"pedestrian":false,"taxi":false,"truck":false,"wheelchair":false},"forward":true,"geo_attributes":{"curvature":3,"length":173,"max_down_slope":0,"max_up_slope":2,"weighted_grade":1.66},"has_sign":false,"lane_count":3,"not_thru":false,"part_of_complex_restriction":true,"round_about":false,"sac_scale":"none","sidewalk_left":false,"sidewalk_right":false,"speeds":{"constrained_flow":0,"default":40,"free_flow":0,"predicted":false,"type":"tagged"},"start_restriction":{"HOV":false,"bicycle":false,"bus":false,"car":false,"emergency":false,"moped":false,"motorcycle":false,"pedestrian":false,"taxi":false,"truck":false,"wheelchair":false},"stop_sign":false,"toll":false,"traffic_signal":false,"truck_route":true,"tunnel":false,"yield_sign":false},"edge_id":{"id":11635,"level":0,"tile_id":2804,"value":390405838752},"edge_info":{"bike_network":{"local":false,"mountain":false,"national":false,"regional":false},"mean_elevation":20,"names":["US 101 North","Van Ness Avenue"],"shape":"k~x`gA~e|nhFg|@hKuI\\}V~C","speed_limit":40,"way_id":502795544},"heading":350.9,"inbound_reach":50,"linear_reference":"K6jyJxrdWks/Av/hAJsLT4Q=","live_speed":{},"outbound_reach":50,"percent_along":0.51614,"predicted_speeds":[],"shoulder":false,"side_of_street":"right"}],"input_lat":37.7793,"input_lon":-122.4193,"nodes":[]}]}},"schema":{"$ref":"#/components/schemas/ValhallaLocateResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Snap coordinates to the network","tags":["Street routing"]}},"/valhalla/optimized_route":{"get":{"description":"Calculate a route visiting multiple locations in the most efficient order, solving the traveling salesman problem.","operationId":"valhallaOptimizedRouteGet","parameters":[{"content":{"application/json":{"examples":{"default":{"summary":"A working /optimized_route request","value":{"costing":"auto","locations":[{"lat":37.7793,"lon":-122.4193},{"lat":37.7817,"lon":-122.4108},{"lat":37.7844,"lon":-122.4079}]}}},"schema":{"$ref":"#/components/schemas/ValhallaRouteRequest"}}},"description":"The request object, url-encoded. Identical to the POST body. Encode spaces as %20, or send the JSON without spaces. The API does not decode + as a space and rejects the request as unparseable.","in":"query","name":"json","required":true}],"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"trip":{"language":"en-US","legs":[{"maneuvers":[{"bearing_after":352,"begin_shape_index":0,"cost":22.899,"end_shape_index":8,"instruction":"Drive north on US 101 North/Van Ness Avenue.","length":0.207,"street_names":["US 101 North","Van Ness Avenue"],"time":20.747,"travel_mode":"drive","travel_type":"car","type":2,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 200 meters.","verbal_pre_transition_instruction":"Drive north on U.S. 1 o1 North, Van Ness Avenue. Then, in 200 meters, Turn right onto Golden Gate Avenue.","verbal_succinct_transition_instruction":"Drive north. Then, in 200 meters, Turn right onto Golden Gate Avenue."},{"bearing_after":81,"bearing_before":351,"begin_shape_index":8,"cost":224.574,"end_shape_index":36,"has_time_restrictions":true,"instruction":"Turn right onto Golden Gate Avenue.","length":0.845,"street_names":["Golden Gate Avenue"],"time":109.411,"travel_mode":"drive","travel_type":"car","type":10,"verbal_post_transition_instruction":"Continue for 800 meters.","verbal_pre_transition_instruction":"Turn right onto Golden Gate Avenue.","verbal_succinct_transition_instruction":"Turn right.","verbal_transition_alert_instruction":"Turn right onto Golden Gate Avenue."},{"bearing_before":83,"begin_shape_index":36,"cost":0,"end_shape_index":36,"instruction":"Your destination is on the right.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":5,"verbal_pre_transition_instruction":"Your destination is on the right.","verbal_transition_alert_instruction":"Your destination will be on the right."}],"shape":"{oz`gA|o|nhFwJjAuI\\}V~CiGjAuEx@cWzCeW|CyC\\SwCyIusAYaFYeEsAkS{GceAWuD_@sFkFiy@_Co^UmD_@{EsDuk@yDsl@UsD]_Fo@{IwEst@eBmXWyD]yEYoEi@sIEe@m@eJWaEsBo[i@wL","summary":{"cost":247.473,"has_ferry":false,"has_highway":false,"has_time_restrictions":true,"has_toll":false,"length":1.053,"max_lat":37.782246,"max_lon":-122.410884,"min_lat":37.779214,"min_lon":-122.420355,"time":130.158}},{"maneuvers":[{"bearing_after":83,"begin_shape_index":0,"cost":26.928,"end_shape_index":11,"instruction":"Drive east on Golden Gate Avenue.","length":0.123,"sign":{},"street_names":["Golden Gate Avenue"],"time":14.284,"travel_mode":"drive","travel_type":"car","type":2,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 100 meters.","verbal_pre_transition_instruction":"Drive east on Golden Gate Avenue. Then, in 100 meters, Turn left onto Stevenson Street.","verbal_succinct_transition_instruction":"Drive east. Then, in 100 meters, Turn left onto Stevenson Street."},{"bearing_after":44,"bearing_before":134,"begin_shape_index":11,"cost":94.719,"end_shape_index":16,"instruction":"Turn left onto Stevenson Street.","length":0.277,"street_names":["Stevenson Street"],"time":40.655,"travel_mode":"drive","travel_type":"car","type":15,"verbal_post_transition_instruction":"Continue for 300 meters.","verbal_pre_transition_instruction":"Turn left onto Stevenson Street.","verbal_succinct_transition_instruction":"Turn left.","verbal_transition_alert_instruction":"Turn left onto Stevenson Street."},{"bearing_after":316,"bearing_before":45,"begin_shape_index":16,"cost":55.415,"end_shape_index":24,"instruction":"Turn left onto 5th Street.","length":0.094,"street_names":["5th Street"],"time":15.95,"travel_mode":"drive","travel_type":"car","type":15,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 90 meters.","verbal_pre_transition_instruction":"Turn left onto 5th Street. Then Your destination will be on the right.","verbal_succinct_transition_instruction":"Turn left. Then Your destination will be on the right.","verbal_transition_alert_instruction":"Turn left onto 5th Street."},{"bearing_before":315,"begin_shape_index":24,"cost":0,"end_shape_index":24,"instruction":"Your destination is on the right.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":5,"verbal_pre_transition_instruction":"Your destination is on the right.","verbal_transition_alert_instruction":"Your destination will be on the right."}],"shape":"km`agAfwjnhFe@eKB_CXeCx@wFRiBFq@Pe@hB_HvOoTdCkDzAwBsBkC}LwPomAsaB}HmKoCuDaGxH}K|NwAjBqDzEWZW^wCjEeAvA","summary":{"cost":177.063,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.495,"level_changes":[[18,0]],"max_lat":37.784135,"max_lon":-122.40748,"min_lat":37.781763,"min_lon":-122.410884,"time":70.891}}],"locations":[{"lat":37.7793,"lon":-122.4193,"original_index":0,"side_of_street":"right","type":"break"},{"lat":37.7817,"lon":-122.4108,"original_index":1,"side_of_street":"right","type":"break"},{"lat":37.7844,"lon":-122.4079,"original_index":2,"side_of_street":"right","type":"break"}],"status":0,"status_message":"Found route between points","summary":{"cost":424.537,"has_ferry":false,"has_highway":false,"has_time_restrictions":true,"has_toll":false,"length":1.548,"max_lat":37.784135,"max_lon":-122.40748,"min_lat":37.779214,"min_lon":-122.420355,"time":201.05},"units":"kilometers"}}}},"schema":{"$ref":"#/components/schemas/ValhallaTripResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Calculate an optimized route","tags":["Street routing"]},"post":{"description":"Calculate a route visiting multiple locations in the most efficient order, solving the traveling salesman problem.","operationId":"valhallaOptimizedRoutePost","requestBody":{"content":{"application/json":{"examples":{"default":{"summary":"A working /optimized_route request","value":{"costing":"auto","locations":[{"lat":37.7793,"lon":-122.4193},{"lat":37.7817,"lon":-122.4108},{"lat":37.7844,"lon":-122.4079}]}}},"schema":{"$ref":"#/components/schemas/ValhallaRouteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"trip":{"language":"en-US","legs":[{"maneuvers":[{"bearing_after":352,"begin_shape_index":0,"cost":22.899,"end_shape_index":8,"instruction":"Drive north on US 101 North/Van Ness Avenue.","length":0.207,"street_names":["US 101 North","Van Ness Avenue"],"time":20.747,"travel_mode":"drive","travel_type":"car","type":2,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 200 meters.","verbal_pre_transition_instruction":"Drive north on U.S. 1 o1 North, Van Ness Avenue. Then, in 200 meters, Turn right onto Golden Gate Avenue.","verbal_succinct_transition_instruction":"Drive north. Then, in 200 meters, Turn right onto Golden Gate Avenue."},{"bearing_after":81,"bearing_before":351,"begin_shape_index":8,"cost":224.574,"end_shape_index":36,"has_time_restrictions":true,"instruction":"Turn right onto Golden Gate Avenue.","length":0.845,"street_names":["Golden Gate Avenue"],"time":109.411,"travel_mode":"drive","travel_type":"car","type":10,"verbal_post_transition_instruction":"Continue for 800 meters.","verbal_pre_transition_instruction":"Turn right onto Golden Gate Avenue.","verbal_succinct_transition_instruction":"Turn right.","verbal_transition_alert_instruction":"Turn right onto Golden Gate Avenue."},{"bearing_before":83,"begin_shape_index":36,"cost":0,"end_shape_index":36,"instruction":"Your destination is on the right.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":5,"verbal_pre_transition_instruction":"Your destination is on the right.","verbal_transition_alert_instruction":"Your destination will be on the right."}],"shape":"{oz`gA|o|nhFwJjAuI\\}V~CiGjAuEx@cWzCeW|CyC\\SwCyIusAYaFYeEsAkS{GceAWuD_@sFkFiy@_Co^UmD_@{EsDuk@yDsl@UsD]_Fo@{IwEst@eBmXWyD]yEYoEi@sIEe@m@eJWaEsBo[i@wL","summary":{"cost":247.473,"has_ferry":false,"has_highway":false,"has_time_restrictions":true,"has_toll":false,"length":1.053,"max_lat":37.782246,"max_lon":-122.410884,"min_lat":37.779214,"min_lon":-122.420355,"time":130.158}},{"maneuvers":[{"bearing_after":83,"begin_shape_index":0,"cost":26.928,"end_shape_index":11,"instruction":"Drive east on Golden Gate Avenue.","length":0.123,"sign":{},"street_names":["Golden Gate Avenue"],"time":14.284,"travel_mode":"drive","travel_type":"car","type":2,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 100 meters.","verbal_pre_transition_instruction":"Drive east on Golden Gate Avenue. Then, in 100 meters, Turn left onto Stevenson Street.","verbal_succinct_transition_instruction":"Drive east. Then, in 100 meters, Turn left onto Stevenson Street."},{"bearing_after":44,"bearing_before":134,"begin_shape_index":11,"cost":94.719,"end_shape_index":16,"instruction":"Turn left onto Stevenson Street.","length":0.277,"street_names":["Stevenson Street"],"time":40.655,"travel_mode":"drive","travel_type":"car","type":15,"verbal_post_transition_instruction":"Continue for 300 meters.","verbal_pre_transition_instruction":"Turn left onto Stevenson Street.","verbal_succinct_transition_instruction":"Turn left.","verbal_transition_alert_instruction":"Turn left onto Stevenson Street."},{"bearing_after":316,"bearing_before":45,"begin_shape_index":16,"cost":55.415,"end_shape_index":24,"instruction":"Turn left onto 5th Street.","length":0.094,"street_names":["5th Street"],"time":15.95,"travel_mode":"drive","travel_type":"car","type":15,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 90 meters.","verbal_pre_transition_instruction":"Turn left onto 5th Street. Then Your destination will be on the right.","verbal_succinct_transition_instruction":"Turn left. Then Your destination will be on the right.","verbal_transition_alert_instruction":"Turn left onto 5th Street."},{"bearing_before":315,"begin_shape_index":24,"cost":0,"end_shape_index":24,"instruction":"Your destination is on the right.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":5,"verbal_pre_transition_instruction":"Your destination is on the right.","verbal_transition_alert_instruction":"Your destination will be on the right."}],"shape":"km`agAfwjnhFe@eKB_CXeCx@wFRiBFq@Pe@hB_HvOoTdCkDzAwBsBkC}LwPomAsaB}HmKoCuDaGxH}K|NwAjBqDzEWZW^wCjEeAvA","summary":{"cost":177.063,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.495,"level_changes":[[18,0]],"max_lat":37.784135,"max_lon":-122.40748,"min_lat":37.781763,"min_lon":-122.410884,"time":70.891}}],"locations":[{"lat":37.7793,"lon":-122.4193,"original_index":0,"side_of_street":"right","type":"break"},{"lat":37.7817,"lon":-122.4108,"original_index":1,"side_of_street":"right","type":"break"},{"lat":37.7844,"lon":-122.4079,"original_index":2,"side_of_street":"right","type":"break"}],"status":0,"status_message":"Found route between points","summary":{"cost":424.537,"has_ferry":false,"has_highway":false,"has_time_restrictions":true,"has_toll":false,"length":1.548,"max_lat":37.784135,"max_lon":-122.40748,"min_lat":37.779214,"min_lon":-122.420355,"time":201.05},"units":"kilometers"}}}},"schema":{"$ref":"#/components/schemas/ValhallaTripResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Calculate an optimized route","tags":["Street routing"]}},"/valhalla/route":{"get":{"description":"Calculate a route between locations with turn-by-turn directions, across auto, pedestrian, bicycle, and related travel modes. For transit, use transit routing at `/api/v2/routing/otp/plan`.","operationId":"valhallaRouteGet","parameters":[{"content":{"application/json":{"examples":{"default":{"summary":"A working /route request","value":{"costing":"auto","directions_type":"instructions","locations":[{"lat":37.7793,"lon":-122.4193},{"lat":37.7844,"lon":-122.4079}]}}},"schema":{"$ref":"#/components/schemas/ValhallaRouteRequest"}}},"description":"The request object, url-encoded. Identical to the POST body. Encode spaces as %20, or send the JSON without spaces. The API does not decode + as a space and rejects the request as unparseable.","in":"query","name":"json","required":true}],"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"trip":{"language":"en-US","legs":[{"maneuvers":[{"bearing_after":352,"begin_shape_index":0,"cost":22.899,"end_shape_index":8,"instruction":"Drive north on US 101 North/Van Ness Avenue.","length":0.207,"street_names":["US 101 North","Van Ness Avenue"],"time":20.747,"travel_mode":"drive","travel_type":"car","type":2,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 200 meters.","verbal_pre_transition_instruction":"Drive north on U.S. 1 o1 North, Van Ness Avenue. Then, in 200 meters, Turn right onto Golden Gate Avenue.","verbal_succinct_transition_instruction":"Drive north. Then, in 200 meters, Turn right onto Golden Gate Avenue."},{"bearing_after":81,"bearing_before":351,"begin_shape_index":8,"cost":220.14,"end_shape_index":35,"has_time_restrictions":true,"instruction":"Turn right onto Golden Gate Avenue.","length":0.826,"street_names":["Golden Gate Avenue"],"time":107.211,"travel_mode":"drive","travel_type":"car","type":10,"verbal_post_transition_instruction":"Continue for 800 meters.","verbal_pre_transition_instruction":"Turn right onto Golden Gate Avenue.","verbal_succinct_transition_instruction":"Turn right.","verbal_transition_alert_instruction":"Turn right onto Golden Gate Avenue."},{"bearing_after":351,"bearing_before":81,"begin_shape_index":35,"cost":70.994,"end_shape_index":51,"instruction":"Turn left toward Taylor Street/Turk Street.","length":0.247,"sign":{},"street_names":["Taylor Street"],"time":30.317,"travel_mode":"drive","travel_type":"car","type":15,"verbal_post_transition_instruction":"Continue for 200 meters.","verbal_pre_transition_instruction":"Turn left toward Taylor Street, Turk Street.","verbal_succinct_transition_instruction":"Turn left toward Taylor Street, Turk Street.","verbal_transition_alert_instruction":"Turn left toward Taylor Street."},{"bearing_after":81,"bearing_before":351,"begin_shape_index":51,"cost":70.695,"end_shape_index":61,"instruction":"Turn right onto Eddy Street.","length":0.218,"street_names":["Eddy Street"],"time":31.418,"travel_mode":"drive","travel_type":"car","type":10,"verbal_post_transition_instruction":"Continue for 200 meters.","verbal_pre_transition_instruction":"Turn right onto Eddy Street.","verbal_succinct_transition_instruction":"Turn right.","verbal_transition_alert_instruction":"Turn right onto Eddy Street."},{"bearing_after":155,"bearing_before":81,"begin_shape_index":61,"cost":20.629,"end_shape_index":69,"instruction":"Turn right onto Cyril Magnin Street.","length":0.046,"street_names":["Cyril Magnin Street"],"time":7.122,"travel_mode":"drive","travel_type":"car","type":10,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 50 meters.","verbal_pre_transition_instruction":"Turn right onto Cyril Magnin Street. Then Your destination will be on the left.","verbal_succinct_transition_instruction":"Turn right. Then Your destination will be on the left.","verbal_transition_alert_instruction":"Turn right onto Cyril Magnin Street."},{"bearing_before":135,"begin_shape_index":69,"cost":0,"end_shape_index":69,"instruction":"Your destination is on the left.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":6,"verbal_pre_transition_instruction":"Your destination is on the left.","verbal_transition_alert_instruction":"Your destination will be on the left."}],"shape":"{oz`gA|o|nhFwJjAuI\\}V~CiGjAuEx@cWzCeW|CyC\\SwCyIusAYaFYeEsAkS{GceAWuD_@sFkFiy@_Co^UmD_@{EsDuk@yDsl@UsD]_Fo@{IwEst@eBmXWyD]yEYoEi@sIEe@m@eJWaEsBo[iBiGgA_PWy@_@w@u@o@w`@nEq@HaD^uFp@SBoCZuC\\uS|BaCZiW`DmC\\W{Du@yKsBe[oDyj@W_EYcEUmDuAaTm@kJo@yJnAE~@Kr@[p@m@zAoBpAgBxC}DlAcB","summary":{"cost":405.358,"has_ferry":false,"has_highway":false,"has_time_restrictions":true,"has_toll":false,"length":1.545,"level_changes":[[57,0]],"max_lat":37.784462,"max_lon":-122.408233,"min_lat":37.779214,"min_lon":-122.420355,"time":196.817}}],"locations":[{"lat":37.7793,"lon":-122.4193,"original_index":0,"side_of_street":"right","type":"break"},{"lat":37.7844,"lon":-122.4079,"original_index":1,"side_of_street":"left","type":"break"}],"status":0,"status_message":"Found route between points","summary":{"cost":405.358,"has_ferry":false,"has_highway":false,"has_time_restrictions":true,"has_toll":false,"length":1.545,"max_lat":37.784462,"max_lon":-122.408233,"min_lat":37.779214,"min_lon":-122.420355,"time":196.817},"units":"kilometers"}}}},"schema":{"$ref":"#/components/schemas/ValhallaTripResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Calculate a route","tags":["Street routing"]},"post":{"description":"Calculate a route between locations with turn-by-turn directions, across auto, pedestrian, bicycle, and related travel modes. For transit, use transit routing at `/api/v2/routing/otp/plan`.","operationId":"valhallaRoutePost","requestBody":{"content":{"application/json":{"examples":{"default":{"summary":"A working /route request","value":{"costing":"auto","directions_type":"instructions","locations":[{"lat":37.7793,"lon":-122.4193},{"lat":37.7844,"lon":-122.4079}]}}},"schema":{"$ref":"#/components/schemas/ValhallaRouteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"trip":{"language":"en-US","legs":[{"maneuvers":[{"bearing_after":352,"begin_shape_index":0,"cost":22.899,"end_shape_index":8,"instruction":"Drive north on US 101 North/Van Ness Avenue.","length":0.207,"street_names":["US 101 North","Van Ness Avenue"],"time":20.747,"travel_mode":"drive","travel_type":"car","type":2,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 200 meters.","verbal_pre_transition_instruction":"Drive north on U.S. 1 o1 North, Van Ness Avenue. Then, in 200 meters, Turn right onto Golden Gate Avenue.","verbal_succinct_transition_instruction":"Drive north. Then, in 200 meters, Turn right onto Golden Gate Avenue."},{"bearing_after":81,"bearing_before":351,"begin_shape_index":8,"cost":220.14,"end_shape_index":35,"has_time_restrictions":true,"instruction":"Turn right onto Golden Gate Avenue.","length":0.826,"street_names":["Golden Gate Avenue"],"time":107.211,"travel_mode":"drive","travel_type":"car","type":10,"verbal_post_transition_instruction":"Continue for 800 meters.","verbal_pre_transition_instruction":"Turn right onto Golden Gate Avenue.","verbal_succinct_transition_instruction":"Turn right.","verbal_transition_alert_instruction":"Turn right onto Golden Gate Avenue."},{"bearing_after":351,"bearing_before":81,"begin_shape_index":35,"cost":70.994,"end_shape_index":51,"instruction":"Turn left toward Taylor Street/Turk Street.","length":0.247,"sign":{},"street_names":["Taylor Street"],"time":30.317,"travel_mode":"drive","travel_type":"car","type":15,"verbal_post_transition_instruction":"Continue for 200 meters.","verbal_pre_transition_instruction":"Turn left toward Taylor Street, Turk Street.","verbal_succinct_transition_instruction":"Turn left toward Taylor Street, Turk Street.","verbal_transition_alert_instruction":"Turn left toward Taylor Street."},{"bearing_after":81,"bearing_before":351,"begin_shape_index":51,"cost":70.695,"end_shape_index":61,"instruction":"Turn right onto Eddy Street.","length":0.218,"street_names":["Eddy Street"],"time":31.418,"travel_mode":"drive","travel_type":"car","type":10,"verbal_post_transition_instruction":"Continue for 200 meters.","verbal_pre_transition_instruction":"Turn right onto Eddy Street.","verbal_succinct_transition_instruction":"Turn right.","verbal_transition_alert_instruction":"Turn right onto Eddy Street."},{"bearing_after":155,"bearing_before":81,"begin_shape_index":61,"cost":20.629,"end_shape_index":69,"instruction":"Turn right onto Cyril Magnin Street.","length":0.046,"street_names":["Cyril Magnin Street"],"time":7.122,"travel_mode":"drive","travel_type":"car","type":10,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 50 meters.","verbal_pre_transition_instruction":"Turn right onto Cyril Magnin Street. Then Your destination will be on the left.","verbal_succinct_transition_instruction":"Turn right. Then Your destination will be on the left.","verbal_transition_alert_instruction":"Turn right onto Cyril Magnin Street."},{"bearing_before":135,"begin_shape_index":69,"cost":0,"end_shape_index":69,"instruction":"Your destination is on the left.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":6,"verbal_pre_transition_instruction":"Your destination is on the left.","verbal_transition_alert_instruction":"Your destination will be on the left."}],"shape":"{oz`gA|o|nhFwJjAuI\\}V~CiGjAuEx@cWzCeW|CyC\\SwCyIusAYaFYeEsAkS{GceAWuD_@sFkFiy@_Co^UmD_@{EsDuk@yDsl@UsD]_Fo@{IwEst@eBmXWyD]yEYoEi@sIEe@m@eJWaEsBo[iBiGgA_PWy@_@w@u@o@w`@nEq@HaD^uFp@SBoCZuC\\uS|BaCZiW`DmC\\W{Du@yKsBe[oDyj@W_EYcEUmDuAaTm@kJo@yJnAE~@Kr@[p@m@zAoBpAgBxC}DlAcB","summary":{"cost":405.358,"has_ferry":false,"has_highway":false,"has_time_restrictions":true,"has_toll":false,"length":1.545,"level_changes":[[57,0]],"max_lat":37.784462,"max_lon":-122.408233,"min_lat":37.779214,"min_lon":-122.420355,"time":196.817}}],"locations":[{"lat":37.7793,"lon":-122.4193,"original_index":0,"side_of_street":"right","type":"break"},{"lat":37.7844,"lon":-122.4079,"original_index":1,"side_of_street":"left","type":"break"}],"status":0,"status_message":"Found route between points","summary":{"cost":405.358,"has_ferry":false,"has_highway":false,"has_time_restrictions":true,"has_toll":false,"length":1.545,"max_lat":37.784462,"max_lon":-122.408233,"min_lat":37.779214,"min_lon":-122.420355,"time":196.817},"units":"kilometers"}}}},"schema":{"$ref":"#/components/schemas/ValhallaTripResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Calculate a route","tags":["Street routing"]}},"/valhalla/sources_to_targets":{"get":{"description":"Calculate a time-distance matrix from multiple source locations to multiple target locations. Useful for solving optimization problems.","operationId":"valhallaSourcesToTargetsGet","parameters":[{"content":{"application/json":{"examples":{"default":{"summary":"A working /sources_to_targets request","value":{"costing":"auto","sources":[{"lat":37.7793,"lon":-122.4193},{"lat":37.7817,"lon":-122.4108}],"targets":[{"lat":37.7817,"lon":-122.4108},{"lat":37.7844,"lon":-122.4079}]}}},"schema":{"$ref":"#/components/schemas/ValhallaMatrixRequest"}}},"description":"The request object, url-encoded. Identical to the POST body. Encode spaces as %20, or send the JSON without spaces. The API does not decode + as a space and rejects the request as unparseable.","in":"query","name":"json","required":true}],"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"algorithm":"costmatrix","sources":[{"lat":37.779214,"lon":-122.419983},{"lat":37.782246,"lon":-122.410884}],"sources_to_targets":[[{"begin_heading":350.9,"begin_lat":37.779214,"begin_lon":-122.419983,"cost":247.47,"distance":1.053,"end_heading":83,"end_lat":37.782246,"end_lon":-122.410884,"from_index":0,"time":130,"to_index":0},{"begin_heading":350.9,"begin_lat":37.779214,"begin_lon":-122.419983,"cost":405.357,"distance":1.546,"end_heading":134.8,"end_lat":37.784135,"end_lon":-122.408233,"from_index":0,"time":196,"to_index":1}],[{"begin_heading":83,"begin_lat":37.782246,"begin_lon":-122.410884,"cost":300,"distance":1.221,"end_heading":83,"end_lat":37.782246,"end_lon":-122.410884,"from_index":1,"time":160,"to_index":0},{"begin_heading":83,"begin_lat":37.782246,"begin_lon":-122.410884,"cost":177.063,"distance":0.495,"end_heading":314.8,"end_lat":37.784135,"end_lon":-122.408233,"from_index":1,"time":70,"to_index":1}]],"targets":[{"lat":37.782246,"lon":-122.410884},{"lat":37.784135,"lon":-122.408233}],"units":"kilometers"}}},"schema":{"$ref":"#/components/schemas/ValhallaMatrixResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Calculate a time-distance matrix","tags":["Street routing"]},"post":{"description":"Calculate a time-distance matrix from multiple source locations to multiple target locations. Useful for solving optimization problems.","operationId":"valhallaSourcesToTargetsPost","requestBody":{"content":{"application/json":{"examples":{"default":{"summary":"A working /sources_to_targets request","value":{"costing":"auto","sources":[{"lat":37.7793,"lon":-122.4193},{"lat":37.7817,"lon":-122.4108}],"targets":[{"lat":37.7817,"lon":-122.4108},{"lat":37.7844,"lon":-122.4079}]}}},"schema":{"$ref":"#/components/schemas/ValhallaMatrixRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"algorithm":"costmatrix","sources":[{"lat":37.779214,"lon":-122.419983},{"lat":37.782246,"lon":-122.410884}],"sources_to_targets":[[{"begin_heading":350.9,"begin_lat":37.779214,"begin_lon":-122.419983,"cost":247.47,"distance":1.053,"end_heading":83,"end_lat":37.782246,"end_lon":-122.410884,"from_index":0,"time":130,"to_index":0},{"begin_heading":350.9,"begin_lat":37.779214,"begin_lon":-122.419983,"cost":405.357,"distance":1.546,"end_heading":134.8,"end_lat":37.784135,"end_lon":-122.408233,"from_index":0,"time":196,"to_index":1}],[{"begin_heading":83,"begin_lat":37.782246,"begin_lon":-122.410884,"cost":300,"distance":1.221,"end_heading":83,"end_lat":37.782246,"end_lon":-122.410884,"from_index":1,"time":160,"to_index":0},{"begin_heading":83,"begin_lat":37.782246,"begin_lon":-122.410884,"cost":177.063,"distance":0.495,"end_heading":314.8,"end_lat":37.784135,"end_lon":-122.408233,"from_index":1,"time":70,"to_index":1}]],"targets":[{"lat":37.782246,"lon":-122.410884},{"lat":37.784135,"lon":-122.408233}],"units":"kilometers"}}},"schema":{"$ref":"#/components/schemas/ValhallaMatrixResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Calculate a time-distance matrix","tags":["Street routing"]}},"/valhalla/trace_attributes":{"post":{"description":"Match a sequence of coordinates to the road network and return attributes along the matched path, such as speed limits, road class, and surface type.","operationId":"valhallaTraceAttributes","requestBody":{"content":{"application/json":{"examples":{"default":{"summary":"A working /trace_attributes request","value":{"costing":"auto","shape":[{"lat":37.7891,"lon":-122.4011},{"lat":37.7887,"lon":-122.4016},{"lat":37.7883,"lon":-122.4022},{"lat":37.7879,"lon":-122.4028}],"shape_match":"map_snap"}}},"schema":{"$ref":"#/components/schemas/ValhallaTraceAttributesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"admins":[{"country_code":"US","country_text":"United States","state_code":"CA","state_text":"California"}],"alternate_paths":[],"confidence_score":1,"edges":[{"begin_heading":224,"begin_shape_index":0,"bicycle_network":0,"bridge":false,"country_crossing":false,"cycle_lane":"none","density":13,"drive_on_right":true,"end_heading":224,"end_node":{"admin_index":0,"elapsed_cost":0.846,"elapsed_time":0.72,"fork":false,"intersecting_edges":[{"begin_heading":315,"cyclability":"backward","from_edge_name_consistency":false,"road_class":"service_other","to_edge_name_consistency":false,"use":"cycleway"},{"begin_heading":137,"cyclability":"forward","from_edge_name_consistency":false,"road_class":"service_other","to_edge_name_consistency":false,"use":"cycleway"}],"traffic_signal":false,"transition_time":0.008,"type":"street_intersection"},"end_shape_index":1,"forward":true,"id":3854638373426,"internal_intersection":false,"lane_count":1,"length":0.006,"max_downward_grade":0,"max_upward_grade":0,"mean_elevation":8,"names":["Stevenson Street"],"road_class":"residential","roundabout":false,"sac_scale":0,"shoulder":false,"sidewalk":"none","speed":30,"speed_type":"classified","speeds_non_faded":{"no_flow":30},"surface":"paved_smooth","toll":false,"traffic_signal":false,"travel_mode":"drive","traversability":"both","truck_route":false,"tunnel":false,"unpaved":false,"use":"road","vehicle_type":"car","way_id":47172320,"weighted_grade":0},{"begin_heading":226,"begin_shape_index":1,"bicycle_network":0,"bridge":false,"country_crossing":false,"cycle_lane":"none","density":13,"drive_on_right":true,"end_heading":226,"end_node":{"admin_index":0,"elapsed_cost":1.551,"elapsed_time":1.328,"fork":false,"intersecting_edges":[{"begin_heading":315,"from_edge_name_consistency":false,"road_class":"service_other","to_edge_name_consistency":false,"use":"pedestrian_crossing","walkability":"both"},{"begin_heading":125,"from_edge_name_consistency":false,"road_class":"service_other","to_edge_name_consistency":false,"use":"pedestrian_crossing","walkability":"both"}],"traffic_signal":false,"transition_time":0.019,"type":"street_intersection"},"end_shape_index":2,"forward":true,"id":3928021916210,"internal_intersection":false,"lane_count":1,"length":0.005,"max_downward_grade":0,"max_upward_grade":0,"mean_elevation":8,"names":["Stevenson Street"],"road_class":"residential","roundabout":false,"sac_scale":0,"shoulder":false,"sidewalk":"none","speed":30,"speed_type":"classified","speeds_non_faded":{"no_flow":30},"surface":"paved_smooth","toll":false,"traffic_signal":false,"travel_mode":"drive","traversability":"both","truck_route":false,"tunnel":false,"unpaved":false,"use":"road","vehicle_type":"car","way_id":47172320,"weighted_grade":0},{"begin_heading":225,"begin_shape_index":2,"bicycle_network":0,"bridge":false,"country_crossing":false,"cycle_lane":"none","density":13,"drive_on_right":true,"end_heading":225,"end_node":{"admin_index":0,"elapsed_cost":8.08,"elapsed_time":6.904,"fork":false,"traffic_signal":false,"transition_time":0,"type":"street_intersection"},"end_shape_index":3,"forward":true,"id":3889434319410,"internal_intersection":false,"lane_count":1,"length":0.046,"max_downward_grade":0,"max_upward_grade":1,"mean_elevation":8,"names":["Stevenson Street"],"road_class":"residential","roundabout":false,"sac_scale":0,"shoulder":false,"sidewalk":"none","speed":30,"speed_type":"classified","speeds_non_faded":{"no_flow":30},"surface":"paved_smooth","target_percent_along":0.701,"toll":false,"traffic_signal":false,"travel_mode":"drive","traversability":"both","truck_route":false,"tunnel":false,"unpaved":false,"use":"road","vehicle_type":"car","way_id":47172320,"weighted_grade":0}],"matched_points":[{"distance_along_edge":0,"distance_from_trace_point":38.559444,"edge_index":0,"lat":37.788826,"lon":-122.400826,"type":"matched"},{"distance_along_edge":0.701669,"distance_from_trace_point":37.635989,"edge_index":2,"lat":37.788458,"lon":-122.401297,"type":"matched"},{"lat":37.7883,"lon":-122.4022,"type":"unmatched"},{"lat":37.7879,"lon":-122.4028,"type":"unmatched"}],"osm_changeset":189672781,"raw_score":200000096,"shape":"shmagAtbwmhFnA`BbAxAjQnV","units":"kilometers"}}},"schema":{"$ref":"#/components/schemas/ValhallaTraceAttributesResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Get attributes along a GPS trace","tags":["Street routing"]}},"/valhalla/trace_route":{"post":{"description":"Match a sequence of coordinates to the road network and return the matched route with turn-by-turn directions.","operationId":"valhallaTraceRoute","requestBody":{"content":{"application/json":{"examples":{"default":{"summary":"A working /trace_route request","value":{"costing":"auto","shape":[{"lat":37.7891,"lon":-122.4011},{"lat":37.7887,"lon":-122.4016},{"lat":37.7883,"lon":-122.4022},{"lat":37.7879,"lon":-122.4028}],"shape_match":"map_snap"}}},"schema":{"$ref":"#/components/schemas/ValhallaTraceRouteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"examples":{"default":{"value":{"trip":{"language":"en-US","legs":[{"maneuvers":[{"bearing_after":224,"begin_shape_index":0,"cost":8.08,"end_shape_index":3,"instruction":"Drive southwest on Stevenson Street.","length":0.057,"street_names":["Stevenson Street"],"time":6.904,"travel_mode":"drive","travel_type":"car","type":1,"verbal_multi_cue":true,"verbal_post_transition_instruction":"Continue for 60 meters.","verbal_pre_transition_instruction":"Drive southwest on Stevenson Street. Then You will arrive at your destination.","verbal_succinct_transition_instruction":"Drive southwest. Then You will arrive at your destination."},{"bearing_before":225,"begin_shape_index":3,"cost":0,"end_shape_index":3,"instruction":"You have arrived at your destination.","length":0,"time":0,"travel_mode":"drive","travel_type":"car","type":4,"verbal_pre_transition_instruction":"You have arrived at your destination.","verbal_transition_alert_instruction":"You will arrive at your destination."}],"shape":"shmagAtbwmhFnA`BbAxAjQnV","summary":{"cost":8.08,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.057,"max_lat":37.788826,"max_lon":-122.400826,"min_lat":37.788458,"min_lon":-122.401297,"time":6.904}}],"locations":[{"lat":37.7891,"lon":-122.4011,"original_index":0,"type":"break"},{"lat":37.7887,"lon":-122.4016,"original_index":1,"type":"via"}],"status":0,"status_message":"Found route between points","summary":{"cost":8.08,"has_ferry":false,"has_highway":false,"has_time_restrictions":false,"has_toll":false,"length":0.057,"max_lat":37.788826,"max_lon":-122.400826,"min_lat":37.788458,"min_lon":-122.401297,"time":6.904},"units":"kilometers"}}}},"schema":{"$ref":"#/components/schemas/ValhallaTripResponse"}}},"description":"Successful response"},"400":{"$ref":"#/components/responses/Valhalla400"},"401":{"$ref":"#/components/responses/Valhalla401"},"429":{"$ref":"#/components/responses/Valhalla429"},"503":{"$ref":"#/components/responses/Valhalla503"}},"summary":"Match a GPS trace to a route","tags":["Street routing"]}}},"security":[{"apikeyHeader":[]},{"apikeyQuery":[]}],"servers":[{"description":"Interline Routing Platform","url":"https://transit.land/api/v2/routing"}],"tags":[{"description":"Transit and walking itineraries from the Transitland Routing API.","name":"Transit routing"},{"description":"Auto, pedestrian, and bicycle routing from Valhalla over OpenStreetMap.","name":"Street routing"}]}