addedInput schema / $defs / AvoidFeature
Added value: +{
+ "description": "A road feature to avoid as a PREFERENCE, not a ban. \"tolls\" and \"highways\" apply to motorised costings only (auto, truck, bus, motor_scooter, motorcycle); \"ferries\" applies to every costing. Asking for one on a costing whose engine table has no field for it is refused rather than silently ignored.",
+ "enum": [
+ "tolls",
+ "highways",
+ "ferries"
+ ],
+ "type": "string"
+}
addedInput schema / $defs / EmissionsFuel
Added value: +{
+ "description": "What a vehicle burns, in clean-air-zone scheme terms.",
+ "oneOf": [
+ {
+ "const": "petrol",
+ "description": "Petrol, including petrol hybrids (schemes rate a hybrid by its\ncombustion engine's approval).",
+ "type": "string"
+ },
+ {
+ "const": "diesel",
+ "description": "Diesel, including diesel hybrids.",
+ "type": "string"
+ },
+ {
+ "const": "electric",
+ "description": "Battery-electric.",
+ "type": "string"
+ },
+ {
+ "const": "hydrogen",
+ "description": "Hydrogen fuel cell.",
+ "type": "string"
+ },
+ {
+ "const": "gas",
+ "description": "LPG or CNG; rated as petrol by every scheme in the dataset.",
+ "type": "string"
+ }
+ ]
+}
addedInput schema / $defs / EmissionsSpec
Added value: +{
+ "description": "A vehicle's emission declaration, for clean-air / low-emission zone\nassessment.",
+ "properties": {
+ "euro_standard": {
+ "description": "Its Euro emission standard, 1–6. Heavy-duty approvals are written\nin Roman numerals (Euro VI); declare Euro VI as `6`. Required for\nany combustion fuel — without it no zone can be resolved, and a\nhalf-declared vehicle is indistinguishable from an undeclared one.\nOptional only for `electric` or `hydrogen`.",
+ "format": "uint8",
+ "maximum": 255,
+ "minimum": 0,
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "fuel": {
+ "$ref": "#/$defs/EmissionsFuel",
+ "description": "What it burns."
+ },
+ "vehicle_category": {
+ "$ref": "#/$defs/EmissionsVehicleCategory",
+ "description": "What kind of vehicle this is, in scheme terms."
+ }
+ },
+ "required": [
+ "vehicle_category",
+ "fuel"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / EmissionsVehicleCategory
Added value: +{
+ "description": "What a vehicle is, in clean-air-zone scheme terms.\n\nDeclaring this turns \"charge depends on vehicle emissions\" into an\nanswer. Without it a zone can only be named, never priced.",
+ "oneOf": [
+ {
+ "const": "car",
+ "description": "A private car.",
+ "type": "string"
+ },
+ {
+ "const": "van",
+ "description": "A van or light goods vehicle up to 3.5 tonnes.",
+ "type": "string"
+ },
+ {
+ "const": "minibus",
+ "description": "A minibus (typically 8+ passenger seats, up to 5 tonnes).",
+ "type": "string"
+ },
+ {
+ "const": "hgv",
+ "description": "A heavy goods vehicle over 3.5 tonnes.",
+ "type": "string"
+ },
+ {
+ "const": "bus",
+ "description": "A bus over 5 tonnes.",
+ "type": "string"
+ },
+ {
+ "const": "coach",
+ "description": "A coach over 5 tonnes.",
+ "type": "string"
+ },
+ {
+ "const": "taxi",
+ "description": "A licensed hackney carriage.",
+ "type": "string"
+ },
+ {
+ "const": "phv",
+ "description": "A private hire vehicle.",
+ "type": "string"
+ },
+ {
+ "const": "motorcycle",
+ "description": "A motorcycle, moped or tricycle.",
+ "type": "string"
+ },
+ {
+ "const": "motorhome",
+ "description": "A motor caravan or campervan.",
+ "type": "string"
+ }
+ ]
+}
addedInput schema / $defs / ExcludeFeature
Added value: +{
+ "description": "A road feature to exclude outright. A hard exclusion can leave a request with no path at all — that is the honest answer, not a failure — and it depends on the routing engine's own hard-exclusion setting, which nothing here can read.",
+ "enum": [
+ "tolls",
+ "highways",
+ "ferries",
+ "bridges",
+ "tunnels"
+ ],
+ "type": "string"
+}
removedInput schema / $defs / LatLon
Removed value: -{
- "description": "A WGS84 coordinate pair in decimal degrees.",
- "properties": {
- "lat": {
- "description": "Latitude in decimal degrees (−90 to 90).",
- "format": "double",
- "type": "number"
- },
- "lon": {
- "description": "Longitude in decimal degrees (−180 to 180).",
- "format": "double",
- "type": "number"
- }
- },
- "required": [
- "lat",
- "lon"
- ],
- "type": "object"
-}
addedInput schema / $defs / PreferredSideKind
Added value: +{
+ "description": "Side-of-street preference for arriving at or departing from a location.\n\nCarries both vocabularies: MapMap's own `same`/`opposite`/`either` and\nthe OSRM/Mapbox `approaches` words `curb`/`unrestricted`, which are\naliases for `same` and `either`. Both spell the same request, on this\nsurface and on the HTTP API.",
+ "oneOf": [
+ {
+ "const": "same",
+ "description": "The side the location itself projects to — the kerb, resolved\nagainst the locale's driving side (the left kerb in the UK, the\nright in Germany).",
+ "type": "string"
+ },
+ {
+ "const": "opposite",
+ "description": "The far side of the road from the location.",
+ "type": "string"
+ },
+ {
+ "const": "either",
+ "description": "No side preference.",
+ "type": "string"
+ },
+ {
+ "const": "curb",
+ "description": "Alias for `same`, from the OSRM/Mapbox `approaches` vocabulary.",
+ "type": "string"
+ },
+ {
+ "const": "unrestricted",
+ "description": "Alias for `either`, from the OSRM/Mapbox `approaches` vocabulary.",
+ "type": "string"
+ }
+ ]
+}
addedInput schema / $defs / RouteLocation
Added value: +{
+ "description": "One location of a `route` request: a coordinate, plus the optional\nkerbside approach for arriving at it.\n\nA bare `{lat, lon}` is still a complete location — every kerbside field\nis optional and omitting all of them is exactly the request that was\nmade before they existed.",
+ "properties": {
+ "lat": {
+ "description": "Latitude in decimal degrees (−90 to 90).",
+ "format": "double",
+ "type": "number"
+ },
+ "lon": {
+ "description": "Longitude in decimal degrees (−180 to 180).",
+ "format": "double",
+ "type": "number"
+ },
+ "preferred_side": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/PreferredSideKind"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Which side of the street to arrive on (or depart from). `same` (or\n`curb`) puts the vehicle on the door's side of the road, resolved\nagainst the locale's driving side. Two honest limits: this is a\n**snapping preference**, not a manoeuvre guarantee — the engine\nprefers an edge on that side, it does not promise the driver never\ncrosses — and it needs a coordinate genuinely offset from the road\ncentreline, because a point on the centreline has no side."
+ },
+ "street_side_max_distance_m": {
+ "description": "Metres: further than this from the road centreline, the side of\nstreet is treated as `none` and `preferred_side` does nothing.\nEngine default 1000 m. Together with `street_side_tolerance_m` this\nis a WINDOW: a pair that leaves no window (tolerance at or above\nmax distance) is refused here rather than answered with a route on\nwhich the kerbside preference was silently inert.",
+ "format": "uint32",
+ "minimum": 0,
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "street_side_tolerance_m": {
+ "description": "Metres: nearer than this to the road centreline, the side of street\nis treated as `none` and `preferred_side` does nothing. Engine\ndefault 5 m.",
+ "format": "uint32",
+ "minimum": 0,
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "lat",
+ "lon"
+ ],
+ "type": "object"
+}
addedInput schema / properties / avoid
Added value: +{
+ "description": "Road features to avoid as a PREFERENCE. Rendered as the costing's\nwillingness factor set to zero — a thumb on the scale, not a ban.\nThe engine's own reference is explicit that a value of zero is not\nguaranteed to avoid the feature entirely, and it does not: asking\nto avoid tolls across the Dartford Crossing returns the same tolled\nroute, because the untolled alternative is fifty kilometres\nfurther. Use `exclude` when you mean a ban.",
+ "items": {
+ "$ref": "#/$defs/AvoidFeature"
+ },
+ "type": [
+ "array",
+ "null"
+ ]
+}
changedInput schema / properties / destination / $ref
Previous value: -"#/$defs/LatLon"New value: +"#/$defs/RouteLocation"
addedInput schema / properties / emissions
Added value: +{
+ "anyOf": [
+ {
+ "$ref": "#/$defs/EmissionsSpec"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The vehicle's emission declaration, for UK clean-air / low-emission\nzone assessment. Given, the response's `zones` block names every\nzone the route enters and what THIS vehicle pays there, with the\npublishing authority cited. Without it a zone can only be named,\nnever priced. Needs the MapMap gateway, which holds the curated\nzone dataset; the full dataset is readable at `GET /v1/zones`."
+}
addedInput schema / properties / exclude
Added value: +{
+ "description": "Road features to exclude outright, rendered as the costing's hard\nexclusion flag. Two things follow from that and both matter: a hard\nexclusion can return NO ROUTE rather than a detour (excluding\ntunnels on a Rotherhithe crossing has no answer), and the flags\ndepend on the routing engine's `allow_hard_exclusions` setting,\nwhich the engine does not expose and nothing here can read — so\nthis is never promised, only requested.",
+ "items": {
+ "$ref": "#/$defs/ExcludeFeature"
+ },
+ "type": [
+ "array",
+ "null"
+ ]
+}
changedInput schema / properties / origin / $ref
Previous value: -"#/$defs/LatLon"New value: +"#/$defs/RouteLocation"
changedInput schema / properties / waypoints / items / $ref
Previous value: -"#/$defs/LatLon"New value: +"#/$defs/RouteLocation"
addedOutput schema / $defs / AppliedAvoidance
Added value: +{
+ "description": "What the avoidance lists actually did, reported back so a 200 is never\nreadable as a certificate.",
+ "properties": {
+ "avoid": {
+ "description": "The `avoid` values that were applied, echoed back.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "caveats": {
+ "description": "The caveats that apply to this request, in words fit to repeat to a\nuser. Always present when anything was applied.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "costing_option_fields": {
+ "description": "The engine costing-option fields these words became, e.g.\n`{\"use_tolls\": 0.0, \"exclude_ferries\": true}`. This is the whole of\nwhat was sent — there is no hidden second mechanism."
+ },
+ "exclude": {
+ "description": "The `exclude` values that were applied, echoed back.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "costing_option_fields",
+ "caveats"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / avoidance
Added value: +{
+ "anyOf": [
+ {
+ "$ref": "#/$defs/AppliedAvoidance"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "What `avoid`/`exclude` became, and the caveats that go with it\n(only when either list carried something)."
+}
addedOutput schema / properties / zones
Added value: +{
+ "description": "Clean-air / low-emission zones this route enters and what the\ndeclared vehicle pays in each, with the publishing authority cited\n(only when `emissions` was declared). Passed through verbatim from\nthe gateway's curated dataset — the same figures `GET /v1/zones`\npublishes, so a charge can always be audited back to its source."
+}