Pipeline de API: encontrar proyectos por lugar y en el mapa

Índice: Pipelines de API — índice

Objetivo: encontrar proyectos (y otras tarjetas) en una ciudad o país y situarlos en un mapa.

No hace falta token para las tarjetas públicas.

Pasos

  1. Encuentra el lugar.
GET /v0/search/geo/cities?q=tashkent&limit=10
→ {"hits": [{"geonameid": 1512569, "name": "Tashkent", "country_iso": "UZ", "country_name": "Uzbekistan",
             "lat": 41.26465, "lon": 69.21627, "label": "Tashkent, UZ"}]}

GET /v0/search/geo/countries?q=uzbek
→ {"hits": [{"iso": "UZ", "name": "Uzbekistan"}]}

country=UZ limita las ciudades a un país. Un lugar por id: GET /v0/geo/cities/{geonameid}, GET /v0/geo/countries/{iso}.

  1. Conviértelo en una tarjeta de lugar. Los filtros aceptan nonces de lugares, no geonameids ni códigos ISO.
GET /v0/graph/resolve/@rub.geo-1512569   → {"card_type": "rubric", "nonce": "<city place>", "kind": "place", …}
GET /v0/graph/resolve/@rub.geo-uz        → {"card_type": "rubric", "nonce": "<country place>", "kind": "place", …}

Una ciudad es @rub.geo-<geonameid>, un país @rub.geo-<iso, lowercase>.

  1. Busca dentro.
POST /v0/search/graph
{"query": "", "card_type": "project", "filters": {"locations": ["<country place>"]}, "limit": 50}
→ {"hits": [{"title": "…", "location": {"nonce": "…", "title": "Tashkent", "geo": {"lat": 41.27, "lon": 69.25}}, …}], …}
  1. Ponlo en el mapa. El location.geo (lat, lon) de cada resultado es el marcador; los resultados sin location no tienen marcador. La página de una tarjeta trae el mismo location.

  2. Explorar un lugar: GET /v0/graph/rubrics/{place nonce}?contained_limit=50 → la tarjeta del lugar con geo y contained (los lugares que contiene).

Detrás

Reglas

Superficie de la API

Endpoint Para qué FE IA / oráculo
GET /v0/search/geo/cities Ciudades por nombre sí (selectores de ciudad) sí
GET /v0/search/geo/countries Países por nombre sí sí
GET /v0/geo/cities/{geonameid}, /v0/geo/countries/{iso} Un lugar sí sí
GET /v0/graph/resolve/@rub.geo-… Nonce de la tarjeta del lugar sí sí
POST /v0/search/graph Tarjetas en un lugar o cerca sí sí
GET /v0/graph/rubrics/{nonce} Un lugar y lo que contiene sí sí

Mentioned