addedInput schema / properties / alternates
Added value: +{
+ "description": "Number of genuine motorized alternate routes to request (0, 1, or 2). Positive values require no via waypoints.",
+ "maximum": 2,
+ "minimum": 0,
+ "type": "integer"
+}
addedInput schema / properties / axle_count / maximum
Added value: +20
addedInput schema / properties / axle_count / minimum
Added value: +1
addedInput schema / properties / axle_load / maximum
Added value: +100
addedInput schema / properties / axle_load / minimum
Added value: +0
addedInput schema / properties / from / maxLength
Added value: +2000
addedInput schema / properties / include_elevation
Added value: +{
+ "description": "When true, include available route elevation fields. Point elevation may be returned for the origin and destination. Cumulative gain/loss is returned only when route-profile elevation is available.",
+ "type": "boolean"
+}
changedInput schema / properties / include_geometry / description
Previous value: -"Route geometry shape control. \"none\" returns origin/destination Points only. \"encoded\" returns the Valhalla polyline6 string in a top-level `geometry` field plus origin/destination Points (≈95% smaller than raw GeoJSON; decode with @mapbox/polyline at precision 6). \"full\" emits decoded coordinates as a LineString in `geojson.features[0]`. When omitted (default), small routes use \"full\" and long routes auto-downgrade to \"encoded\" with a `geometry_truncated` warning."New value: +"Route geometry shape control. \"none\" returns origin/destination Points only. \"encoded\" returns an encoded polyline6 string in a top-level `geometry` field plus origin/destination Points (≈95% smaller than raw GeoJSON; decode with @mapbox/polyline at precision 6). \"full\" emits decoded coordinates as a LineString in `geojson.features[0]`. When omitted (default), small routes use \"full\" and long routes auto-downgrade to \"encoded\" with a `geometry_truncated` warning."
addedInput schema / properties / top_speed / maximum
Added value: +300
addedInput schema / properties / top_speed / minimum
Added value: +0
addedInput schema / properties / truck_height / maximum
Added value: +30
addedInput schema / properties / truck_height / minimum
Added value: +0
addedInput schema / properties / truck_length / maximum
Added value: +60
addedInput schema / properties / truck_length / minimum
Added value: +0
addedInput schema / properties / truck_weight / maximum
Added value: +200
addedInput schema / properties / truck_weight / minimum
Added value: +0
addedInput schema / properties / truck_width / maximum
Added value: +10
addedInput schema / properties / truck_width / minimum
Added value: +0
addedInput schema / properties / use_ferry / maximum
Added value: +1
addedInput schema / properties / use_ferry / minimum
Added value: +0
addedInput schema / properties / use_highways / maximum
Added value: +1
addedInput schema / properties / use_highways / minimum
Added value: +0
changedInput schema / properties / vehicle_profile / description
Previous value: -"Preset vehicle (10 total, see lib/truck-costing.ts:VEHICLE_PROFILE_IDS): DRY_VAN_53, FLATBED_48, FLATBED_40, STEP_DECK, TANKER, BOX_TRUCK_26, AUTO_CARRIER, SPRINTER_VAN, DOUBLE_TRAILER, OVERSIZE. Sets height/weight/length automatically. Individual params override."New value: +"Preset vehicle profile (10): DRY_VAN_53, FLATBED_48, FLATBED_40, STEP_DECK, TANKER, BOX_TRUCK_26, AUTO_CARRIER, SPRINTER_VAN, DOUBLE_TRAILER, OVERSIZE. Each sets height/weight/length/axle_count for that vehicle class in one parameter (e.g. DRY_VAN_53 = 4.11m tall, 36.3t, 22.25m long, 5 axles; OVERSIZE = 4.88m tall, 3.66m wide, 45.36t). The response echoes the applied dims in costing_options.truck. Any individual truck_height/truck_weight/etc. overrides a single field."
addedInput schema / properties / vehicle_profile / maxLength
Added value: +64
changedInput schema / properties / via / description
Previous value: -"Intermediate stops in order; same shape as from/to"New value: +"Intermediate stops in order; same shape as from/to. Up to 48 waypoints (max 50 total locations)."
addedInput schema / properties / via / maxItems
Added value: +48
changedOutput schema / additionalProperties
Previous value: -falseNew value: +true
addedOutput schema / properties / alternates
Added value: +{
+ "items": {
+ "additionalProperties": true,
+ "properties": {
+ "distance": {
+ "type": "number"
+ },
+ "distance_units": {
+ "enum": [
+ "miles",
+ "kilometers"
+ ],
+ "type": "string"
+ },
+ "duration_seconds": {
+ "type": "number"
+ },
+ "geojson": {
+ "$ref": "#/properties/geojson"
+ },
+ "geometry": {
+ "additionalProperties": {},
+ "type": "object"
+ },
+ "legs": {
+ "items": {
+ "additionalProperties": true,
+ "properties": {
+ "distance": {
+ "type": "number"
+ },
+ "duration_seconds": {
+ "type": "number"
+ },
+ "leg": {
+ "type": "number"
+ },
+ "maneuvers": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "leg",
+ "distance",
+ "duration_seconds",
+ "maneuvers"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "maneuvers": {
+ "items": {
+ "$ref": "#/properties/items/items"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "distance",
+ "distance_units",
+ "duration_seconds",
+ "legs",
+ "maneuvers"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedOutput schema / properties / base_arrival_local
Added value: +{
+ "description": "Arrival time derived from the base duration in the destination's local time, or null when the local timezone is unavailable.",
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / properties / base_arrival_utc
Added value: +{
+ "description": "Arrival time derived from the base duration, expressed as an ISO 8601 UTC timestamp.",
+ "type": "string"
+}
addedOutput schema / properties / base_duration_seconds
Added value: +{
+ "description": "Route duration before any traffic-based adjustment, in seconds.",
+ "type": "number"
+}
addedOutput schema / properties / effective_arrival_local
Added value: +{
+ "description": "Authoritative arrival time in the destination's local time, or null when the local timezone is unavailable.",
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / properties / effective_arrival_utc
Added value: +{
+ "description": "Authoritative arrival time for this response, expressed as an ISO 8601 UTC timestamp.",
+ "type": "string"
+}
addedOutput schema / properties / effective_duration_seconds
Added value: +{
+ "description": "Authoritative duration for this response, in seconds, after any applicable traffic-based adjustment.",
+ "type": "number"
+}
addedOutput schema / properties / elevation_end_ft
Added value: +{
+ "type": [
+ "number",
+ "null"
+ ]
+}
addedOutput schema / properties / elevation_end_m
Added value: +{
+ "type": [
+ "number",
+ "null"
+ ]
+}
addedOutput schema / properties / elevation_gain_ft
Added value: +{
+ "type": [
+ "number",
+ "null"
+ ]
+}
addedOutput schema / properties / elevation_gain_m
Added value: +{
+ "type": [
+ "number",
+ "null"
+ ]
+}
addedOutput schema / properties / elevation_loss_ft
Added value: +{
+ "type": [
+ "number",
+ "null"
+ ]
+}
addedOutput schema / properties / elevation_loss_m
Added value: +{
+ "type": [
+ "number",
+ "null"
+ ]
+}
addedOutput schema / properties / elevation_start_ft
Added value: +{
+ "type": [
+ "number",
+ "null"
+ ]
+}
addedOutput schema / properties / elevation_start_m
Added value: +{
+ "type": [
+ "number",
+ "null"
+ ]
+}
addedOutput schema / properties / timezone_end
Added value: +{
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / properties / timezone_start
Added value: +{
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / properties / traffic_delay_seconds
Added value: +{
+ "description": "Difference between effective and base duration, in seconds; zero when traffic did not change the duration.",
+ "type": "number"
+}
addedOutput schema / properties / traffic_provenance
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "duration_influenced": {
+ "description": "Whether traffic actually changed the duration returned by THIS request. False when no traffic adjustment was applied, even if traffic was requested and fetched successfully.",
+ "type": "boolean"
+ },
+ "freshness_seconds": {
+ "description": "Age, in seconds, of the oldest traffic observation behind this response. Null when the traffic provider did not report an observation age.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "mode": {
+ "description": "Which traffic-processing rung this request attempted. `none`: no traffic data was consulted. `eta_enrichment`: after the route was chosen, traffic evidence was sought only to adjust its estimated duration; the roads returned are unchanged. The attempt may fail or produce no adjustment, so inspect `outcome` and `duration_influenced` for what reached this answer. `candidate_ranking`: traffic re-ranked several candidate routes against each other. `native_live_routing`: live speeds were used to choose which roads to take. `native_predicted_routing`: as above, plus time-of-day predicted speeds for a future departure.",
+ "enum": [
+ "none",
+ "eta_enrichment",
+ "candidate_ranking",
+ "native_live_routing",
+ "native_predicted_routing"
+ ],
+ "type": "string"
+ },
+ "outcome": {
+ "description": "Neutral, stable reason code for what happened to traffic evidence on this request. `TRAFFIC_DISABLED`: no traffic evidence was sought. `PROVIDER_DISABLED`: evidence was sought but the traffic backend was unreachable or unconfigured. `QUOTA_EXHAUSTED`: the traffic backend's spend allotment was exhausted. `NO_SEGMENT_MATCH`: the backend answered but no sample matched a live road segment. `INSUFFICIENT_COVERAGE`: the backend reported no sensor coverage for the sampled area. `STALE_EVIDENCE`: an adjustment was computed, but the oldest observation behind it is older than this response is willing to call current. `UPSTREAM_ERROR`: a generic or network failure prevented reading traffic evidence. `APPLIED`: an adjustment was computed and reached this response; inspect the nullable freshness and source-time fields to determine whether its observation age is known. ",
+ "enum": [
+ "TRAFFIC_DISABLED",
+ "PROVIDER_DISABLED",
+ "QUOTA_EXHAUSTED",
+ "NO_SEGMENT_MATCH",
+ "INSUFFICIENT_COVERAGE",
+ "STALE_EVIDENCE",
+ "UPSTREAM_ERROR",
+ "APPLIED"
+ ],
+ "type": "string"
+ },
+ "overlay_epoch": {
+ "description": "Identifier of the live-speed overlay applied to the road network. Null today: no live-speed overlay is in use.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "path_influenced": {
+ "description": "Whether traffic could have changed WHICH roads were returned. False today: the route is selected from the road network's own speeds, so traffic never changes the path — only the estimated duration.",
+ "type": "boolean"
+ },
+ "route_coverage_pct": {
+ "description": "Percentage of the route's distance backed by a live traffic observation. Null today: traffic is sampled at a few points along the route and each answer covers a point rather than a measured length of road, so no honest percentage can be derived.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "routing_release_id": {
+ "description": "Identifier of the road-network build that produced this route. Null today: the routing engine does not report one.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "source_as_of": {
+ "description": "ISO 8601 time at which the traffic observations behind this response were made. Null when the traffic provider did not report an observation time.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "mode",
+ "outcome",
+ "path_influenced",
+ "duration_influenced",
+ "source_as_of",
+ "route_coverage_pct",
+ "freshness_seconds",
+ "routing_release_id",
+ "overlay_epoch"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / traffic_route
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "current_speed_admitted": {
+ "const": true,
+ "type": "boolean"
+ },
+ "max_age_seconds": {
+ "exclusiveMinimum": 0,
+ "type": "integer"
+ },
+ "observed_at": {
+ "type": "string"
+ },
+ "release_id": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "current_speed_admitted"
+ ],
+ "type": "object"
+}
addedOutput schema / required
Added value: +[
+ "base_duration_seconds",
+ "effective_duration_seconds",
+ "traffic_delay_seconds",
+ "base_arrival_utc",
+ "base_arrival_local",
+ "effective_arrival_utc",
+ "effective_arrival_local",
+ "traffic_provenance"
+]