API-пайплайн: поиск по графу

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

Цель: находить карточки по ключевым словам или по смыслу с уточнением по типу карточки, рубрике, стране, месту и расстоянию; или сразу переходить к карточке по её ссылке, @handle или nonce.

Для публичных результатов токен не нужен; с токеном вы получаете также то, что видно вошедшим пользователям, и то, чем поделились с вами.

Шаги

  1. Поиск.
POST /v0/search/graph
{"query": "bike repair", "card_type": "project", "page": 1, "limit": 20,
 "filters": {"exclude_terms": ["casino"]}}
→ {"hits": [{"card_type": "project", "nonce": "470000000000000001", "title": "…", "snippet": "…",
             "rubrics": […], "location": {"nonce": "…", "title": "Lisbon", "geo": {"lat": 38.72, "lon": -9.14}}, …}],
   "total_hits": 101, "page": 1, "total_pages": 6}
  1. Сузьте поиск через filters.
Ключ Значение Действие
rubrics [["<a>", "<b>"], ["<c>"]] любая внутри группы, каждая группа должна совпасть
rubrics_not ["<rubric>"] убрать карточки с этими рубриками
locations ["<place nonce>"] только карточки в этом месте или где-либо внутри него
preference_countries ["<country place nonce>"] ставит эти страны первыми, ничего не скрывает
preference_city + radius_km {"nonce": "<place>", "lat": 41.26, "lon": 69.22}, 50 ставит ближайшие первыми (радиус по умолчанию 50 км), ничего не скрывает
exclude_terms ["casino", "crypto"] скрыть карточки, содержащие любое из этих слов
kind "tag" или "place" вместе с card_type: "rubric": только темы или только места

Nonce рубрик и мест: поиск {"query": "dentist", "card_type": "rubric", "filters": {"kind": "tag"}}; места по названию города или страны: API-пайплайн: добавить свои Telegram-группы, найти группы по ключевому слову, месту или рубрике, проверить их и подключить к кампании (часть B).

  1. Поиск внутри рабочего пространства: добавьте "workspace": "<workspace nonce>".

  2. Переход к карточке по ссылке.

GET /v0/graph/resolve/@example-handle
→ {"card_type": "project", "nonce": "470000000000000001", "handle": "example-handle", "title": "…", "kind": null}

Принимает nonce, @handle или handle без @; переименованный handle тоже находится. Затем откройте карточку через GET /v0/graph/{type}s/{nonce}.

  1. Выбор среди своих карточек (нужен токен):
GET /v0/accessible/cards?type=project&type=workspace&q=trip&limit=30
→ {"items": [{"nonce": "…", "card_type": "workspace", "title": "Trip ideas", "source": "owned",
              "permissions": {"read": true, "write": true, "execute": true}, "snippet": "…", …}],
   "next_cursor": "…"}

Карточки, которыми вы владеете, плюс карточки, которыми поделились с вами, с вашими правами на каждую. q ищет по заголовкам на всех языках и по handle; nonce, @handle или ссылка https://cabi.chat/… в q ставят эту карточку первой. type обязателен (повторите его или перечислите через запятую, до 20); limit до 100; листайте с cursor=<next_cursor>, пока он не станет null.

Правила

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

Эндпоинт Назначение FE ИИ / оракул
POST /v0/search/graph Ключевые слова и смысл вместе да (по умолчанию) да
POST /v0/search/graph/keyword Только ключевые слова да да
POST /v0/search/graph/vector Только смысл да да
GET /v0/graph/resolve/{ident} Карточка по nonce или handle да (вставленные ссылки) да
GET /v0/accessible/cards Свои и доступные вам карточки по заголовку да (выбор карточек) да

Упомянуто