Pipeline de API: escribir artículos y publicaciones
Índice: Pipelines de API — índice
Objetivo: escribir un artículo (formato largo) o una publicación (corta; lo que las campañas de anuncios envían a los grupos de Telegram) en uno o varios idiomas, con imágenes; elegir quién la ve; editarla, archivarla o eliminarla.
Artículos y publicaciones usan las mismas llamadas. Las rutas de abajo dicen articles; usa posts para una publicación.
Pasos
1. Sube imágenes (opcional).
POST /v0/my/media/upload multipart/form-data: up to 10 image files, 10 MB each
→ {"files": [{"hash": "9f2c…e41a", "format": "webp", "width": 1280, "height": 720, "size": 81234, …}]}
Las imágenes se guardan en webp. Inserta cada una en el texto como .
2. Crear.
POST /v0/my/articles
Idempotency-Key: art-7d1e…
{"title": "Spring menu",
"content": "Fresh pasta every day.\n\n",
"language": "en",
"project": "470000000000000001",
"rubrics": ["<rubric nonce>"], "location": "<place nonce>",
"translate_mode": "auto", "translate_langs": ["ru", "es"]}
→ {"nonce": "470000000000000042", "card_type": "article", "visibility": "Private",
"canonical_lang": "en", "i18n": [{"lang": "en", "source": "authored", "title": "Spring menu", "content": "…"}], …}
- Solo
titlees obligatorio.language(por defectoen) pasa a ser el idioma canónico. - Las tarjetas nuevas son Private.
project: uno de tus proyectos; la tarjeta le pertenece (necesario para Unlisted y Public). workspaces: espacios de trabajo tuyos donde colocar la tarjeta.handle: opcional, se guarda comoa.<handle>para artículos yp.<handle>para publicaciones.rubrics,location: Pipeline de API: etiquetar tarjetas con rúbricastranslate_mode: "auto"traduce automáticamente atranslate_langs(entreen,ru,es; por defecto: todos menos el de origen).
3. Elige quién la ve.
PATCH /v0/my/articles/470000000000000042
{"visibility": "Public", "publicity": "Everyone",
"permissions": {"read": true, "write": false, "execute": false}}
visibility:Private,Unlisted(accesible por enlace y al compartir, nunca listada) oPublic.- Unlisted y Public necesitan el anclaje al proyecto y
permissionsexplícitos; Public además necesitapublicity:Everyone(también visitantes anónimos y buscadores) oEcosystem(solo usuarios con sesión iniciada). Public no puede conceder escritura. - Una tarjeta nunca es más visible que su proyecto. Reglas: Grafo de Cabi.Chat — Políticas de tarjetas
4. Editar. PATCH /v0/my/articles/{nonce} con cualquiera de title, content, handle, project, rubrics, location; los artículos también aceptan teaser (la línea corta que se muestra en las fichas).
languageelige el idioma que editas (por defecto, el canónico); un idioma nuevo se añade.canonical_langcambia el canónico (debe tener texto).i18n_source: {"ru": "machine"}marca un idioma como traducido automáticamente oauthored.translate_mode/translate_langsfuncionan como al crear.- Las lecturas devuelven las imágenes como enlaces firmados; reenvía el texto tal cual o con referencias
media:: ambas guardan lo mismo.
5. Archivar o restaurar. POST /v0/my/archive {"nonce": "470000000000000042", "archived": true} → sale de tus listas; GET /v0/my/articles?archived=true muestra las archivadas; "archived": false la recupera.
6. Eliminar. DELETE /v0/my/articles/{nonce} → {"success": true}. Un artículo, solo su propietario; una publicación, cualquiera con escritura sobre ella.
Leer.
- Las tuyas:
GET /v0/my/articles?limit=20&offset=0(scope:owned(por defecto),granted,all;archived=true). Una:GET /v0/my/articles/{nonce|@handle}→ todos los idiomas, tarjetasmentioned,rubrics,writable. - Públicas:
GET /v0/graph/articles,GET /v0/graph/articles/{nonce|@handle}. Sin token, solo las tarjetas Public para Everyone.
Detrás
- Las traducciones se hacen después de guardar: vuelve a leer la tarjeta hasta que el idioma aparezca en
i18nconsource: "machine". - Los enlaces a tarjetas en el texto (
[](https://cabi.chat/article/<nonce>)) se convierten en menciones: vuelven enmentionedde la tarjeta. - Una publicación llega a Telegram solo mediante una campaña de anuncios que la lleve (pipeline de anuncios).
Reglas (400)
title is required;handle may contain only a-z, 0-9, _ . -;handle is too long (max 64).project not found;project is not readable;card visibility Public exceeds project visibility Unlisted;unlisted and public cards must anchor to a project.Public/Unlisted visibility requires explicit permissions;Public visibility requires explicit publicity;Public cards cannot grant write;Private cards carry no permissions.- Subida:
no image files in upload;at most 10 files per upload; se rechazan los archivos que no son imágenes y los de más de 10 MB. - Una tarjeta en la que no puedes escribir: 404.
Superficie de la API
| Endpoint | Para qué | FE | IA / oráculo |
|---|---|---|---|
POST /v0/my/media/upload |
Subir imágenes | sí | sí |
POST /v0/my/articles, POST /v0/my/posts |
Crear | sí | sí |
PATCH /v0/my/articles/{nonce}, PATCH /v0/my/posts/{nonce} |
Editar, publicar, traducir | sí | sí |
POST /v0/my/archive |
Archivar, restaurar | sí | sí |
DELETE /v0/my/articles/{nonce}, DELETE /v0/my/posts/{nonce} |
Eliminar | sí | sí |
GET /v0/my/articles, GET /v0/my/posts (+ /{nonce}) |
Las tuyas | sí | sí |
GET /v0/graph/articles, GET /v0/graph/posts (+ /{nonce}) |
Públicas | sí | sí |