API-пайплайн: просмотр Cabi.Chat и открытие любой карточки

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

Цель: просматривать Cabi.Chat без аккаунта, открывать любую доступную вам карточку (проект, статью, пост, рабочее пространство…) вместе с карточками вокруг неё и получать её публичную ссылку.

Токен не нужен: анонимные вызовы возвращают то, что публично для всех. С токеном те же вызовы возвращают также то, что видно вошедшим пользователям, и то, чем поделились с вами.

Шаги

  1. Лента главной страницы.
GET /v0/graph/public/landing?page=1
→ {"root": {"nonce": "…", "title": "IAB Taxonomies"},
   "rows": [{"rubric": {"nonce": "…", "title": "Education"},
             "items": [{"card_type": "project", "nonce": "470000000000000001", "title": "…", "snippet": "…", …}],
             "total": 4}, …],
   "page": 1, "total_pages": 2}

Строки — это отрасли с их проектами: до 8 строк на страницу, 12 плиток в строке; total = число проектов в строке. root=<rubric nonce> начинает с другой рубрики.

  1. Список одного типа. GET /v0/graph/{projects|articles|posts|workspaces|docs|sheets|boards|rubrics}?limit=20&offset=0 → {"projects": [tiles], "total": 42} (ключ — тип во множественном числе).

Плитка: card_type, nonce, handle, title, snippet, visibility, publicity, project, rubrics, location, media, created_at, updated_at.

  1. Разбор ссылки. GET /v0/graph/resolve/{nonce | @handle | handle} → {"card_type": "article", "nonce": "…", "handle": "…", "title": "…", "kind": null}. Переименованный handle тоже находится.

  2. Откройте карточку. GET /v0/graph/{type}s/{nonce | @handle} для projects, articles, posts, workspaces, docs, sheets, boards, rubrics и telegram_groups; GET /v0/graph/oracles/{nonce}; GET /v0/graph/agendas/{nonce | @handle}.

GET /v0/graph/articles/470000000000000002
→ {"nonce": "470000000000000002", "card_type": "article", "canonical_lang": "en",
   "i18n": [{"lang": "en", "title": "…", "content": "…"}, {"lang": "ru", …}],
   "visibility": "Public", "publicity": "Everyone", "project": "470000000000000001",
   "rubrics": [{"nonce": "…", "title": "…"}], "location": {…},
   "mentioned": [{tile}, …], "tagged": [{tile}, …],
   "like_count": 0, "fav_count": 1, "writable": false, "created_at": "…", "updated_at": "…"}
  1. Публичная ссылка. https://cabi.chat/@<handle>, если у карточки есть handle, иначе https://cabi.chat/<card_type>/<nonce>, например https://cabi.chat/article/470000000000000002.

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

Правила

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

Эндпоинт Назначение FE ИИ / оракул
GET /v0/graph/public/landing Строки главной по отраслям да да, чтобы взять выборку графа
GET /v0/graph/{type}s Видимые карточки одного типа да да
GET /v0/graph/resolve/{ident} Тип карточки и nonce по handle или nonce да да
GET /v0/graph/{type}s/{ident} Страница карточки с карточками вокруг да да
GET /v0/graph/oracles/{nonce}, /v0/graph/agendas/{ident} Страницы оракулов и агенд да да

Упомянуто