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
- 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}.
- 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>.
- 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}}, …}], …}
locationsdeja solo las tarjetas de ese lugar o de cualquier punto dentro de él (un país contiene sus regiones y ciudades).- Para ordenar por distancia sin ocultar nada, envía en su lugar
preference_city{"nonce", "lat", "lon"}yradius_km. - Más filtros: Pipeline de API: buscar en el grafo. Grupos de Telegram por lugar: Pipeline de API: enviar tus grupos de Telegram, buscar grupos por palabra clave, lugar o rúbrica, evaluarlos y conectarlos a una campaña.
Ponlo en el mapa. El
location.geo(lat,lon) de cada resultado es el marcador; los resultados sinlocationno tienen marcador. La página de una tarjeta trae el mismolocation.Explorar un lugar:
GET /v0/graph/rubrics/{place nonce}?contained_limit=50→ la tarjeta del lugar congeoycontained(los lugares que contiene).
Detrás
- Un proyecto está ubicado en un solo lugar; puede ser una ciudad o una región. Un filtro por ciudad no incluye los proyectos ubicados en la región que la rodea: filtra por el país u ordena con
preference_city.
Reglas
GET /v0/geo/cities/{geonameid}: 400geonameid must be an integer; id o ISO desconocido: 404.- La búsqueda de lugares responde con una lista
hitsvacía cuando nada coincide; uncountryno válido no da resultados.
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í |