API-пайплайн: просмотр Cabi.Chat и открытие любой карточки
Индекс: API-пайплайны — индекс
Цель: просматривать Cabi.Chat без аккаунта, открывать любую доступную вам карточку (проект, статью, пост, рабочее пространство…) вместе с карточками вокруг неё и получать её публичную ссылку.
Токен не нужен: анонимные вызовы возвращают то, что публично для всех. С токеном те же вызовы возвращают также то, что видно вошедшим пользователям, и то, чем поделились с вами.
Шаги
- Лента главной страницы.
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> начинает с другой рубрики.
- Список одного типа.
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.
Разбор ссылки.
GET /v0/graph/resolve/{nonce | @handle | handle}→{"card_type": "article", "nonce": "…", "handle": "…", "title": "…", "kind": null}. Переименованный handle тоже находится.Откройте карточку.
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": "…"}
- Карточки вокруг неё:
mentioned(карточки, на которые она ссылается),tagged(связанные по тегу),rubrics,location,project(проект, к которому она относится); у рабочих пространств и рубрик есть такжеcontained. - Дополнительно по типу: у проекта есть
contactsиmembership; у поста — его группа-источник. media(аватары, галерея) содержит подписанные ссылки с ограниченным сроком: перечитайте карточку, чтобы получить свежие.- Рабочее пространство или рубрика с большим числом карточек:
?contained_limit=1..200&contained_offset=0, затем идите поcontained_next_offset, пока оно не пропадёт.
- Публичная ссылка.
https://cabi.chat/@<handle>, если у карточки есть handle, иначеhttps://cabi.chat/<card_type>/<nonce>, напримерhttps://cabi.chat/article/470000000000000002.
Что происходит за кадром
- Что вы получите, зависит от видимости каждой карточки: Public + Everyone = кто угодно; Public + Ecosystem = вошедшие пользователи; Unlisted = только по гранту или ссылке доступа; Private = только владелец. Карточка, которую вам видеть нельзя, отвечает 404, как будто её нет; списки её просто пропускают. Граф Cabi.Chat — политики карточек
- Скрытые контакты проекта приходят без
value: API-пайплайн: открыть контакт проекта - Поиск вместо просмотра: API-пайплайн: поиск по графу
Правила
- Главная: 400
root must be a rubric nonce; 404 для страницы за концом ленты. - 404
not foundдля неизвестной карточки или той, которую вам видеть нельзя.
Поверхность 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} |
Страницы оракулов и агенд | да | да |