Saltar al contenido principal
La ruta canónica es /topics. /watchers sigue funcionando como alias obsoleto para CLIs antiguas y se elimina en una versión posterior.

CRUD principal

MétodoRutaPropósito
GET/workspaces/:slug/topicsLista los topics (visibles para quien llama), ordenados por relevancia (los drifted primero). ?limit=&offset= acota la página; los topics archivados quedan ocultos salvo ?status=archived
POST/workspaces/:slug/topicsCrea un topic (una Nota, o status: proposed para ponerlo en revisión)
GET/workspaces/:slug/topics/:topicObtiene el detalle del topic
PATCH/workspaces/:slug/topics/:topicActualiza un topic
DELETE/workspaces/:slug/topics/:topicElimina un topic
La respuesta de lectura es el contexto canónico. Incluye un veredicto plano trust (reviewed | proposed | draft) más classification.status y un bloque governance: la señal de confianza que consume un agente. Usa trust directamente como clave:
{
  "trust": "reviewed",
  "classification": { "status": "reviewed" },
  "governance": { "authoritative": true, "approved_by": "u_cto", "approved_at": "..." }
}

Búsqueda y emparejamiento

MétodoRutaPropósito
GET/workspaces/:slug/topics/searchBúsqueda de texto completo, ordenada por relevancia. ?tags=a,b limita a los topics que llevan CUALQUIERA de esos tags; ?limit= limita el conjunto de resultados (por defecto 50); ?stale=true|false filtra por frescura; los topics archivados nunca se devuelven
POST/workspaces/:slug/topics/match-filesEmpareja archivos con topics
GET /workspaces/:slug/topics también acepta ?tags=a,b (separados por comas, semántica OR). Los nombres de tags se normalizan del lado del servidor (minúsculas, espacios→guiones).

Tags

El registro de tags del workspace: los tags como objetos de primera clase para poder crearlos por adelantado con una descripción antes de que algún topic los use. Adjuntar un tag no registrado mediante una escritura de topic lo registra automáticamente.
MétodoRutaPropósito
GET/workspaces/:slug/tagsLista con conteos de topics por tag, paginado (?limit=&offset=, por defecto 50, los más usados primero), devuelve { tags, total, has_more }
POST/workspaces/:slug/tagsCrea { name, description? }, idempotente (un tag existente fusiona la descripción)
PATCH/workspaces/:slug/tags/:nameRenombra ({ name }, reescribe cada topic que lleva el tag; owner/admin) y/o describe ({ description })
DELETE/workspaces/:slug/tags/:nameElimina + desasocia de cada topic (owner/admin)

Salud y grafo

MétodoRutaPropósito
GET/workspaces/:slug/topics/auditAuditoría de salud del contexto
GET/workspaces/:slug/topics/eventsLínea de tiempo de eventos del topic
GET/workspaces/:slug/topics/graphGrafo de topics

Gobernanza

Un topic se convierte en Knowledge solo cuando un owner/admin lo fusiona. Consulta Gobernanza. approve / reject y el merge / reject de Edición sugerida requieren autoridad de owner/admin. Tienen éxito para un principal owner/admin en cualquier superficie (dashboard, key de CLI con dueño, o un token OAuth/MCP que el owner/admin autorizó), y la fusión se sella con approved_via (human o agent). Un principal sin rostro o que no es owner es rechazado.
MétodoRutaPropósito
POST/workspaces/:slug/topics/:topic/proposedraft → proposed
POST/workspaces/:slug/topics/:topic/approve→ reviewed (reviewed)
POST/workspaces/:slug/topics/:topic/rejectproposed → draft
POST/workspaces/:slug/topics/:topic/archive→ archived
GET/workspaces/:slug/topics/:topic/proposalsLista las Ediciones sugeridas
POST/workspaces/:slug/topics/:topic/proposalsAbre una Edición sugerida ({ summary, patch })
POST/workspaces/:slug/topics/:topic/proposals/:id/mergeFusiona una Edición sugerida
POST/workspaces/:slug/topics/:topic/proposals/:id/rejectCierra una Edición sugerida

Relaciones

MétodoRutaPropósito
POST/workspaces/:slug/topics/:topic/relationsAñade una relación tipada
GET/workspaces/:slug/topics/:topic/relationsLista las relaciones
DELETE/workspaces/:slug/topics/:topic/relations/:relationIdElimina una relación
Las respuestas de POST /topics y PATCH /topics/:topic pueden incluir anchor_validation: conteos de coincidencias por patrón contra la rama por defecto del repo (ok / overbroad / zero, con muestras y advertencias). Solo informativo: nunca bloquea la escritura, y se omite cuando no hay un repo vinculado. POST …/relations es accesible para principales OAuth (MCP) con topics:write; eliminar relaciones sigue siendo solo para humanos.

Compartir

MétodoRutaPropósito
POST/workspaces/:slug/topics/:topic/shareCrea un enlace público de solo lectura
DELETE/workspaces/:slug/topics/:topic/shareRevoca el enlace
GET/s/:tokenPágina pública (sin autenticación)
GET/s/:token/rawMarkdown público (sin autenticación)