v2 profile catalog
Fetch configured profiles, weights, resolved policies, and deprecation metadata.
GraphHopper 11.0 service and local tools for LiveMap pedestrian
routing. The service imports canonical
livemap:* tags into lm_*
encoded values and exposes a small application-facing
routing facade.
Six active profiles, plus two deprecated composites that still route for shipped clients. A weight of 0 ignores an attribute; a higher weight pulls the walk toward (green, trees, water, lights, presence) or away from (noise, crashes, crime) matching streets. Fast is shortest time. The one-page explainer is How it works; the lab on /demo uses the live catalog.
| /demo |
Interactive route testing and profile lab: multi-profile comparison, live weight tuning, overlays, and edge inspection. /profiles redirects here.
|
|---|---|
| /routing-guide | How weights change a walk, plus the current catalog (active profiles, weights, and legacy composites). |
| /docs | Browsable API reference (Redoc), rendered from the live engine contracts below, not the frontend proxy API. Defaults to v2; supported legacy v1 remains available in the version switcher. |
| /api/v1/routing/openapi.json | Generated OpenAPI 3.1 contract for the deprecated, still-supported v1 facade. |
| /api/v2/routing/openapi.json | Generated OpenAPI 3.1 contract for the v2 navigation API. |
| http://localhost:8989 | GraphHopper application connector. |
| http://localhost:8990 | Dropwizard admin connector. |
Start new integrations with v2 navigation, planning, and the weights-and-policies catalog. v1 is deprecated but remains supported for existing clients.
POST /api/v1/routing/route
|
Legacy, deprecated multi-profile facade with a LiveMap response envelope. |
|---|---|
GET /api/v1/routing/profiles
|
Deprecated weights-only catalog; use v2 for policies. |
GET /api/v1/routing/openapi.json
|
Returns the deprecated v1 facade OpenAPI contract. |
POST /api/v2/routing/route
|
Turn-by-turn navigation (OSRM-compatible JSON) for a single profile; consumed by Ferrostar. |
POST /api/v2/routing/plan
|
Pre-trip plan with a profile-keyed OSRM-compatible
wrapper. Omit profiles for the baseline
plus successful non-deprecated alternatives strictly
less than 50% longer by distance. No overlap filtering
or deduplication; an unreachable or zero-distance
baseline is returned alone.
Provide profiles to retain every
requested key, including deprecated profiles and
NoRoute documents, without filtering
(compatibility mode). Null and empty lists are invalid.
|
GET /api/v2/routing/profiles
|
Configured profiles with weights, all resolved policy blocks, and deprecation metadata. |
GET /api/v2/routing/openapi.json
|
Returns the v2 navigation OpenAPI contract. |
POST /route |
Native GraphHopper route endpoint, proxied for the map UI. |
v2 navigation — single profile, OSRM-compatible response:
{
"profile": "foot_lowcrash",
"points": [[8.5400, 47.3700], [8.5420, 47.3700]],
"bucket": "auto",
"locale": "en",
"voice_units": "metric"
}
v2 automatic plan — omit profiles so the engine
selects reasonable alternatives. Returns a
{"profiles": {"profile_id": {...}}} wrapper of
OSRM-compatible documents:
{
"points": [[8.5400, 47.3700], [8.5420, 47.3700]],
"bucket": "auto",
"locale": "en",
"voice_units": "metric"
}
For v2 explicit-profile compatibility planning, add
"profiles": ["foot_fast", "foot_lowcrash"]
to that request. Every requested key is preserved without
filtering. Pass one selected Ok document with
nonempty routes to the navigation client, not
the plan wrapper.
Legacy v1 facade (deprecated) — multi-profile comparison, LiveMap response envelope:
{
"points": [[8.5400, 47.3700], [8.5420, 47.3700]],
"profiles": ["foot_fast", "foot_green", "foot_water", "foot_lit", "foot_quiet", "foot_lowcrash"],
"bucket": "auto",
"debug": true
}
These requests run against the local Caddy proxy at
/api/v1/routing/* and
/api/v2/routing/*.
Fetch configured profiles, weights, resolved policies, and deprecation metadata.
Route with one product profile, automatic Zurich time bucket, and no debug payload.
Route the same points through the six active product profiles with debug enabled.
Single-profile turn-by-turn route in OSRM-compatible shape, as Ferrostar consumes it.
Omit profiles for the baseline plus successful active alternatives strictly less than 50% longer by distance.
Request all six active profiles. Preserves every requested key, even identical, long, or unavailable routes, without automatic filtering.
Requests only bike_fast. Requires a bicycle-enabled service; unavailable endpoints return NoRoute. No walking fallback.
foot_safe still routes. This example
keeps it on purpose to show the temporal accident,
crime, and presence signals on the legacy composite.
Request an unknown profile to inspect facade error handling.
Fetch the v1 facade contract for client generation or inspection.
Fetch the per-version v2 navigation contract, generated at runtime from the live resource.
Click an example above to run it.
Response will appear here.
| Active dimensions |
accident, crime,
presence, noise,
tree_coverage, lights,
water, green,
incline
|
|---|---|
| Encoded values |
Canonical LiveMap values are stored as
lm_* GraphHopper encoded values.
|
| Temporal buckets |
wd_am, wd_pm,
wd_nt, we_am,
we_pm, we_nt
|
| Score range |
Ordinal scores use 0 for no modeled
signal and 1 to 5 for
signal strength. Policies may instead read raw
fractions, noise measurements, crash counts, or
incline; these are not ordinal scores. UI weights
are 0.0 to
1.0.
|
just up
LIVEMAP_PUBLIC_PORT=8081 just up
The top-level justfile builds the service JAR, copies it
into
runtime/, builds the app image, and starts the
container. The public web port defaults to
8080.