{
  "name": "gmap captured API — suggest + directions (anonymous, no API key)",
  "endpoints": {
    "GET /demo": {
      "description": "tile-map viewer integrating /suggest + /directions (tilemap-demo.html)"
    },
    "GET /tilemap.js": {
      "description": "browser lib: TileMap + MapsApiClient + attachSearchBox — see /docs"
    },
    "GET /vectorTile.js": {
      "description": "browser lib: anonymous Google vector-tile decoder (XOR+protobuf → roads/labels)"
    },
    "GET /vt/:z/:x/:y": {
      "description": "raw XOR-protobuf vector tile (roads+labels), anonymous — decoded client-side"
    },
    "GET /mvt/:z/:x/:y.pbf": {
      "description": "standard Mapbox Vector Tile (road/road_label/poi) for MapLibre — keyless"
    },
    "GET /tiles.json": {
      "description": "TileJSON for the /mvt source"
    },
    "GET /style.json": {
      "description": "ready-made MapLibre style (keyless glyphs) — point MapLibre straight at this"
    },
    "GET /maplibre": {
      "description": "MapLibre GL demo: vector tiles (roads + road names + POI) + click→detail, keyless"
    },
    "GET /place": {
      "params": {
        "fid": "0x…:0x… (from a vector-tile POI label)"
      },
      "description": "POI detail via GetEntityDetails (anonymous, no key): name/category/phone/website/hours/… + raw"
    },
    "GET /buildings": {
      "params": {
        "minLat": "",
        "minLng": "",
        "maxLat": "",
        "maxLng": ""
      },
      "description": "building footprints (OSM/Overpass, keyless) → rings [[lat,lng],…] — Google tile has none"
    },
    "GET /incidents": {
      "params": {
        "minLat": "",
        "minLng": "",
        "maxLat": "",
        "maxLng": ""
      },
      "description": "field[17] \"temporarily closed\" markers, geocoded via /maps/preview/place (keyless)"
    },
    "GET /docs": {
      "description": "TILEMAP.md — integration guide + API reference"
    },
    "GET /swagger": {
      "description": "Swagger UI (OpenAPI) — thử trực tiếp mọi endpoint"
    },
    "GET /console": {
      "description": "API console tự viết (Postman-like, không cần internet)"
    },
    "GET /openapi.json": {
      "description": "OpenAPI 3.0 spec"
    },
    "GET /suggest": {
      "params": {
        "q": "search text (required)",
        "lat": "viewport bias latitude (default 10.7605107)",
        "lng": "viewport bias longitude (default 106.6661053)",
        "zoom": "viewport zoom for bias radius (default 15)",
        "limit": "max suggestions (default 5)",
        "lang": "hl language code (default en)"
      },
      "example": "/suggest?q=197+tran+phu"
    },
    "GET /directions": {
      "params": {
        "from": "origin — free text or \"lat,lng\" (required)",
        "to": "destination — free text or \"lat,lng\" (required)",
        "mode": "driving|cycling|transit|walking|motorbike (default driving; anonymous requests always get driving routes back)",
        "lang": "hl language code (default en)",
        "compact": "1 = omit per-route path[] and steps[]"
      },
      "example": "/directions?from=197+tran+phu&to=cho+ben+thanh"
    }
  }
}
