API-пайплайн: поиск проектов по месту и на карте

Индекс: API-пайплайны — индекс

Цель: найти проекты (и другие карточки) в городе или стране и показать их на карте.

Для публичных карточек токен не нужен.

Шаги

  1. Найдите место.
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 ограничивает города одной страной. Одно место по id: GET /v0/geo/cities/{geonameid}, GET /v0/geo/countries/{iso}.

  1. Превратите его в карточку места. Фильтры принимают nonce мест, а не geonameid или коды 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", …}

Город — это @rub.geo-<geonameid>, страна — @rub.geo-<iso, lowercase>.

  1. Ищите в нём.
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. Покажите на карте. location.geo (lat, lon) каждого результата — это метка; у результатов без location метки нет. Страница отдельной карточки содержит тот же location.

  2. Просмотр места: GET /v0/graph/rubrics/{place nonce}?contained_limit=50 → карточка места с geo и contained (места внутри него).

Что происходит за кадром

Правила

Поверхность API

Эндпоинт Назначение FE ИИ / оракул
GET /v0/search/geo/cities Города по названию да (выбор города) да
GET /v0/search/geo/countries Страны по названию да да
GET /v0/geo/cities/{geonameid}, /v0/geo/countries/{iso} Одно место да да
GET /v0/graph/resolve/@rub.geo-… Nonce карточки места да да
POST /v0/search/graph Карточки в месте или рядом да да
GET /v0/graph/rubrics/{nonce} Место и то, что в нём да да

Упомянуто