{"service":"duara-geo","version":"2.0.0-dev","services":{"address_validation":{"available":true,"provider":"nominatim+photon+overpass"},"air_quality":{"available":true,"provider":"Open-Meteo (CAMS)","notes":["Open-Meteo's keyless tier is for non-commercial use; set GEO_OPENMETEO_KEY for commercial"]},"autocomplete":{"available":true,"provider":"nominatim+photon+overpass"},"elevation":{"available":true,"provider":"valhalla","notes":["requires the routing engine to have been built with elevation data (build_elevation=True); without it this endpoint answers 501 rather than returning zeroes"]},"embed":{"available":true,"provider":"built-in"},"fare":{"available":true,"provider":"built-in","degraded":true,"notes":["NO OPERATOR TARIFF FILE IS LOADED. Fares come from the built-in reference table, which is indicative, dated, and moves with the fuel price. Set GEO_TARIFFS_FILE before charging anybody","time-of-day pricing needs a local zone; without one it is skipped and the quote says so"]},"flights":{"available":true,"provider":"great-circle distance and aircraft performance","notes":["6338 aerodromes embedded; Aerodrome data from OurAirports (ourairports.com), public domain","block times are ESTIMATED from distance and aircraft performance. There is no schedule behind this and no airline: it says how long the flying takes, not whether a ticket exists","there is no wind in the estimate, so a long east-west sector is the same number in both directions and a real one is not","door_to_door routes the road legs with THIS deployment's map extract. The leg at the far end of an international flight will usually not route, and is reported as absent rather than guessed"]},"geocoding":{"available":true,"provider":"nominatim+photon+overpass"},"geofencing":{"available":true,"provider":"built-in","notes":["0 zone(s) loaded","no zones are defined, so every point is served and nothing is restricted. POST a zone to /v1/geofences (admin token) or load a GeoJSON file with GEO_GEOFENCES_FILE"]},"geolocation":{"available":false,"reason":"wifi and cell-tower positioning needs a radio map, which is a dataset this deployment does not have; the endpoint answers 501 rather than guessing"},"incidents":{"available":true,"provider":"reports from this deployment's riders and dispatchers","notes":["0 live incident(s); closures and floods are routed around"]},"isochrone":{"available":true,"provider":"valhalla"},"live_tracking":{"available":false,"reason":"set GEO_TRACKING=true. It is off by default, unlike every other capability here, because switching it on creates a place where positions of named people accumulate"},"map_matching":{"available":true,"provider":"valhalla"},"map_styles":{"available":true,"provider":"Duara cartography over OpenFreeMap vector tiles"},"matrix":{"available":true,"provider":"valhalla"},"place_details":{"available":true,"provider":"nominatim+photon+overpass"},"places_nearby":{"available":true,"provider":"nominatim+photon+overpass"},"places_search":{"available":true,"provider":"nominatim+photon+overpass"},"plus_codes":{"available":true,"provider":"open-location-code","notes":["encode and decode are exact; recovering a short code needs a reference point, and resolving one from a place name needs geocoding"]},"reverse_geocoding":{"available":true,"provider":"nominatim+photon+overpass"},"roads":{"available":true,"provider":"valhalla"},"routing":{"available":true,"provider":"valhalla"},"static_maps":{"available":true,"provider":"built-in renderer"},"street_imagery":{"available":true,"provider":"Panoramax (CC-BY-SA)","notes":["crowd-sourced; coverage in most African cities is sparse"]},"structured_geocoding":{"available":true,"provider":"nominatim+photon+overpass"},"terrain":{"available":true,"provider":"Mapzen terrain tiles (AWS Open Data)"},"tiles":{"available":true,"provider":"upstream","notes":["8 layers; pick one with /v1/tiles/{layer}/{z}/{x}/{y} or /v1/style/{layer}.json"]},"timezone":{"available":true,"provider":"built-in country table","degraded":true,"notes":["no boundary dataset is loaded, so zones are resolved from country bounding boxes. Every answer carries method=country and a certainty; a coordinate in a border overlap whose candidates disagree about the offset is refused rather than guessed","set GEO_TIMEZONE_DATA for exact boundaries (`make timezone-data` downloads them)"]},"tour":{"available":true,"provider":"valhalla"},"traffic":{"available":true,"provider":"observations from this deployment's own vehicles","degraded":true,"notes":["0 road segment(s) observed, 0 with a live reading","NOTHING HAS BEEN REPORTED YET, so every duration is free-flow. There is no third-party traffic feed behind this and none is invented: it fills from YOUR vehicles' traces, POSTed to /v1/traffic/report","observations live in this process's memory, so several replicas hold several partial pictures -- the same trade this service makes for rate limits"]},"weather":{"available":true,"provider":"Open-Meteo"},"wildfires":{"available":true,"provider":"NASA FIRMS (VIIRS, last 24 h)"}},"costing_models":["auto","motor_scooter","motorcycle","bicycle","pedestrian","truck","bus","taxi"],"default_costing":"motor_scooter","service_area":{"min_latitude":-1.8,"min_longitude":29.3,"max_latitude":4.5,"max_longitude":35.2},"limits":{"max_matrix_cells":256,"max_tour_stops":25,"max_isochrone_minutes":60,"max_isochrone_contours":4,"max_elevation_points":2000,"max_static_map_width":2048,"max_static_map_height":2048,"max_request_bytes":1048576},"basemap":{"available":true,"default":"streets","layers":[{"id":"streets","label":"Streets","format":"png","raster":true,"min_zoom":0,"max_zoom":19,"attribution":"© OpenStreetMap contributors, tiles by OpenStreetMap France","tile_url":"https://maps.duara.shop/v1/tiles/streets/{z}/{x}/{y}.png","style_url":"https://maps.duara.shop/v1/style/streets.json","policy":"The full OpenStreetMap street grid, rendered by OpenStreetMap France; fair use. This layer used to be Esri's World Street Map, which over Kampala at street zoom is an empty beige square -- Esri's street data is thin across most of Africa. The Esri sheet is still available as `esri-streets` for deployments elsewhere.","category":"roads"},{"id":"light","label":"Light","format":"png","raster":true,"min_zoom":0,"max_zoom":19,"attribution":"© OpenStreetMap contributors, tiles by OpenStreetMap France","tile_url":"https://maps.duara.shop/v1/tiles/light/{z}/{x}/{y}.png","style_url":"https://maps.duara.shop/v1/style/light.json","policy":"A muted canvas made HERE from the OpenStreetMap street map -- most of the colour drained out, everything lifted towards white -- which is what coloured route, traffic and isochrone overlays read best against. It carries every street and label the full map does. Replaces Esri's light canvas, which is empty above zoom 16 and nearly empty below it over East Africa (`esri-light`).","category":"roads"},{"id":"dark","label":"Dark","format":"png","raster":true,"min_zoom":0,"max_zoom":19,"attribution":"© OpenStreetMap contributors, tiles by OpenStreetMap France","tile_url":"https://maps.duara.shop/v1/tiles/dark/{z}/{x}/{y}.png","style_url":"https://maps.duara.shop/v1/style/dark.json","policy":"The night map, made HERE from the OpenStreetMap street map: ground and buildings inverted, roads lifted above them, labels light. The dark canvas a data overlay glows on top of. Replaces Esri's dark canvas (`esri-dark`), which has no streets over most of Africa at the zooms a rider uses.","category":"roads"},{"id":"satellite","label":"Satellite","format":"jpg","raster":true,"min_zoom":0,"max_zoom":19,"attribution":"Imagery © Esri, Maxar, Earthstar Geographics, and the GIS User Community","tile_url":"https://maps.duara.shop/v1/tiles/satellite/{z}/{x}/{y}.jpg","style_url":"https://maps.duara.shop/v1/style/satellite.json","policy":"Esri legacy tile service. The layer that answers a question no street map can: whether a delivery address is a compound, a market or an empty field. Esri's legacy ArcGIS Online tile service: no key today, attribution required. Esri considers these endpoints mature and directs new applications at a keyed service with a monthly free allowance, so read their terms before building a commercial product on them. For unambiguous unlimited terms use a `vector-*` or `versatiles-*` layer instead.","category":"imagery"},{"id":"terrain","label":"Terrain","format":"png","raster":true,"min_zoom":0,"max_zoom":17,"attribution":"© OpenTopoMap (CC-BY-SA), data © OpenStreetMap contributors, SRTM","tile_url":"https://maps.duara.shop/v1/tiles/terrain/{z}/{x}/{y}.png","style_url":"https://maps.duara.shop/v1/style/terrain.json","policy":"OpenTopoMap is community-run on donated hardware with a fair-use expectation. Behind this service's tile cache an application is fine; a bulk crawl is not.","category":"terrain"},{"id":"humanitarian","label":"Humanitarian","format":"png","raster":true,"min_zoom":0,"max_zoom":19,"attribution":"© OpenStreetMap contributors, tiles by the Humanitarian OSM Team","tile_url":"https://maps.duara.shop/v1/tiles/humanitarian/{z}/{x}/{y}.png","style_url":"https://maps.duara.shop/v1/style/humanitarian.json","policy":"Humanitarian OSM Team cartography, hosted by OpenStreetMap France on donated hardware; fair use. Worth knowing about rather than skipping past: this style was designed for places commercial cartography is thin, and it renders much of sub-Saharan Africa and South Asia better than the global styles do.","category":"specialist"},{"id":"cycling","label":"Cycling","format":"png","raster":true,"min_zoom":0,"max_zoom":18,"attribution":"CyclOSM, hosted by OpenStreetMap France, data © OpenStreetMap contributors","tile_url":"https://maps.duara.shop/v1/tiles/cycling/{z}/{x}/{y}.png","style_url":"https://maps.duara.shop/v1/style/cycling.json","policy":"OpenStreetMap France infrastructure, fair use. Shows surface and track quality, which matters for a two-wheeler and is invisible on a car-oriented map.","category":"specialist"},{"id":"vector","label":"Vector streets","format":"mvt","raster":false,"min_zoom":0,"max_zoom":14,"attribution":"OpenFreeMap © OpenMapTiles Data from OpenStreetMap","tile_url":"https://maps.duara.shop/v1/tiles/vector/{z}/{x}/{y}.mvt","style_url":"https://maps.duara.shop/v1/style/vector.json","policy":"OpenFreeMap: no key, no registration, NO REQUEST LIMIT, commercial use explicitly allowed. The only kind of basemap here whose terms do not need reading twice. The right default for production -- point MapLibre GL at /v1/style/vector.json.","category":"roads"}],"source":"upstream","format":"png","min_zoom":0,"max_zoom":19,"raster":true,"attribution":"© OpenStreetMap contributors, tiles by OpenStreetMap France","tile_url":"https://maps.duara.shop/v1/tiles/{z}/{x}/{y}.png","style_url":"https://maps.duara.shop/v1/style.json","styles":[{"id":"duara","label":"Default","description":"Roads by class, places as coloured pins, everything else quiet. The everyday map.","dark":false,"satellite":false,"style_url":"https://maps.duara.shop/v1/style/duara.json","toggles":{"3d":["building-3d"],"biking":["bike-network-casing","bike-network"],"terrain":["terrain-hillshade"],"transit":["transit-rail-casing","transit-rail","transit-stops"]},"overlay_anchor":"duara-overlays"},{"id":"duara-night","label":"Night","description":"The same map for after dark: dark ground, lit roads, light labels. What navigation switches to at sunset.","dark":true,"satellite":false,"style_url":"https://maps.duara.shop/v1/style/duara-night.json","toggles":{"3d":["building-3d"],"biking":["bike-network-casing","bike-network"],"terrain":["terrain-hillshade"],"transit":["transit-rail-casing","transit-rail","transit-stops"]},"overlay_anchor":"duara-overlays"},{"id":"duara-satellite","label":"Satellite","description":"Imagery with the roads, names and places drawn over it -- what other products call hybrid.","dark":false,"satellite":true,"style_url":"https://maps.duara.shop/v1/style/duara-satellite.json","toggles":{"3d":["building-3d"],"biking":["bike-network-casing","bike-network"],"terrain":["terrain-hillshade"],"transit":["transit-rail-casing","transit-rail","transit-stops"]},"overlay_anchor":"duara-overlays"}],"terrain":{"tile_url":"https://maps.duara.shop/v1/terrain/{z}/{x}/{y}.png","encoding":"terrarium","max_zoom":15,"attribution":"Terrain: Mapzen terrain tiles (SRTM, GMTED, ETOPO1, NRCAN and others) via AWS Open Data"}},"auth":{"key_required":true,"methods":["Authorization: Bearer \u003ckey\u003e","X-API-Key: \u003ckey\u003e","?key=\u003ckey\u003e"],"scopes":["routing","geocoding","isochrone","tiles","static","elevation","timezone","tracking"]},"place_categories":["airport","atm","bakery","bank","bar","book_store","bureau_de_change","bus_station","cafe","car_repair","charging_station","cinema","clinic","clothing_store","courthouse","dentist","drinking_water","electronics_store","embassy","fast_food","fire_station","florist","fuel","furniture_store","gas_station","grocery_store","gym","hair_care","hardware_store","hospital","hotel","laundry","library","lodging","market","mobile_money","museum","park","parking","pharmacy","place_of_worship","police","post_office","restaurant","school","shopping_mall","stadium","store","supermarket","taxi_stand","toilet","tourist_attraction","townhall","train_station","university","veterinary_care"],"links":{"documentation":"https://maps.duara.shop/docs","javascript_sdk":"https://maps.duara.shop/sdk/duara-geo.js","openapi":"https://maps.duara.shop/openapi.json","playground":"https://maps.duara.shop/playground"}}
