Pipeline de API: explorar Cabi.Chat y abrir cualquier tarjeta
Índice: Pipelines de API — índice
Objetivo: explorar Cabi.Chat sin cuenta, abrir cualquier tarjeta que puedas ver (proyecto, artículo, publicación, espacio de trabajo…) junto con las tarjetas que la rodean, y obtener su enlace público.
No hace falta token: las llamadas anónimas devuelven lo que es público para todos. Con un token, las mismas llamadas devuelven además lo visible para quienes han iniciado sesión y lo que se ha compartido contigo.
Pasos
- Feed de la portada.
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}
Las filas son sectores con sus proyectos: hasta 8 filas por página, 12 fichas por fila; total = proyectos de la fila. root=<rubric nonce> empieza desde otra rúbrica.
- Listar un tipo.
GET /v0/graph/{projects|articles|posts|workspaces|docs|sheets|boards|rubrics}?limit=20&offset=0→{"projects": [tiles], "total": 42}(la clave es el tipo, en plural).
Una ficha: card_type, nonce, handle, title, snippet, visibility, publicity, project, rubrics, location, media, created_at, updated_at.
Resolver una referencia.
GET /v0/graph/resolve/{nonce | @handle | handle}→{"card_type": "article", "nonce": "…", "handle": "…", "title": "…", "kind": null}. Un handle renombrado se sigue resolviendo.Abrir la tarjeta.
GET /v0/graph/{type}s/{nonce | @handle}para projects, articles, posts, workspaces, docs, sheets, boards, rubrics y 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": "…"}
- Las tarjetas que la rodean:
mentioned(tarjetas a las que enlaza),tagged(relacionadas por etiqueta),rubrics,location,project(el proyecto al que pertenece); los espacios de trabajo y las rúbricas también traencontained. - Extras por tipo: un proyecto tiene
contactsymembership; una publicación, su grupo de origen. media(avatares, galería) contiene enlaces firmados que caducan: vuelve a leer la tarjeta para obtener otros nuevos.- Un espacio de trabajo o rúbrica con muchas tarjetas:
?contained_limit=1..200&contained_offset=0, y luego siguecontained_next_offsethasta que desaparezca.
- Enlace público.
https://cabi.chat/@<handle>si la tarjeta tiene handle; si no,https://cabi.chat/<card_type>/<nonce>, p. ej.https://cabi.chat/article/470000000000000002.
Detrás
- Lo que recibes depende de la visibilidad de cada tarjeta: Public + Everyone = cualquiera; Public + Ecosystem = quienes han iniciado sesión; Unlisted = solo con un permiso concedido o un enlace de acceso; Private = solo el propietario. Una tarjeta que no puedes ver responde 404, como si no existiera; las listas simplemente la omiten. Grafo de Cabi.Chat — Políticas de tarjetas
- Los contactos ocultos de un proyecto llegan sin
value: Pipeline de API: ver el contacto de un proyecto - Buscar en lugar de explorar: Pipeline de API: buscar en el grafo
Reglas
- Portada: 400
root must be a rubric nonce; 404 para una página más allá del final. - 404
not foundpara una tarjeta desconocida o que no puedes ver.
Superficie de la API
| Endpoint | Para qué | FE | IA / oráculo |
|---|---|---|---|
GET /v0/graph/public/landing |
Filas de la portada por sector | sí | sí, para muestrear el grafo |
GET /v0/graph/{type}s |
Tarjetas visibles de un tipo | sí | sí |
GET /v0/graph/resolve/{ident} |
Tipo y nonce de una tarjeta a partir de un handle o nonce | sí | sí |
GET /v0/graph/{type}s/{ident} |
Página de la tarjeta con las tarjetas que la rodean | sí | sí |
GET /v0/graph/oracles/{nonce}, /v0/graph/agendas/{ident} |
Páginas de oráculos y agendas | sí | sí |