Wiki#
Rotas
/v1/cloudwiki/*· owner/admin · gated porCLOUDWIKI_ENABLED(off → 404)
O que é#
Uma base de conhecimento gerenciada: espaços de páginas em Markdown
(frontmatter + corpo), organizados em pastas, com busca híbrida
(semântica + lexical), perguntas com resposta fundamentada (ask, RAG com
fontes citadas), ingestão de arquivos e o Knowledge Refinery — um
destilador assíncrono que transforma o espaço em FAQ cards. Cada página é
indexada na escrita (sem passo de rebuild).
O que dá pra fazer#
- Criar espaços por projeto (opcionalmente por tenant) e organizá-los em pastas numa árvore.
- Upsert de páginas por path (
PUT …/pages/<path>) com Markdown — a página fica pesquisável na hora. - Buscar (
search) com fusão híbrida RRF e perguntar (ask) com resposta fundamentada + páginas-fonte. - Ingerir arquivos (PDF, DOCX, MD…) como fontes do espaço, com re-chunk, habilitar/desabilitar e reindexar.
- Rodar o Refinery (FAQ cards destilados) e listar os cards.
- Auditar: graph de wikilinks (resolvidos/quebrados) e audit (páginas sem fonte, links quebrados, órfãs).
Fluxo em 5 minutos#
KEY="X-API-Key: ctc_…" ; B=https://data-api.catcher.one ; JS='Content-Type: application/json'
# 1. Criar um espaço no projeto
SID=$(curl -sX POST $B/v1/cloudwiki/projects/$PID/spaces -H "$KEY" -H "$JS" \
-d '{ "name": "Base de conhecimento" }' | jq -r .id)
# 2. Escrever uma página (indexada na hora)
curl -sX PUT "$B/v1/cloudwiki/spaces/$SID/pages/politicas/reembolso" -H "$KEY" -H "$JS" \
-d '{ "markdown": "---\ntitle: Política de reembolso\n---\n\n# Política de reembolso\n\nPlano anual: 30 dias…" }'
# 3. Buscar (híbrido)
curl -sX POST $B/v1/cloudwiki/spaces/$SID/search -H "$KEY" -H "$JS" \
-d '{ "q": "reembolso plano anual", "hybrid": true, "limit": 5 }'
# 4. Perguntar (RAG com fontes)
curl -sX POST $B/v1/cloudwiki/spaces/$SID/ask -H "$KEY" -H "$JS" \
-d '{ "question": "qual o prazo de reembolso do plano anual?" }'
# → { "answer": "…", "sources": [{ "path": "politicas/reembolso", … }] }
# 5. Ingerir um arquivo como fonte (multipart)
curl -sX POST $B/v1/cloudwiki/spaces/$SID/sources -H "$KEY" \
-F "file=@contrato-padrao.pdf"
Busca e ask — parâmetros#
POST /v1/cloudwiki/spaces/{sid}/search:
| Campo | Tipo | O que faz |
|---|---|---|
q |
string | A consulta. |
hybrid |
bool | Funde o braço semântico (cosine/pgvector) com o lexical (FTS) por RRF antes do corte — recomendado; resolve termo exato (ID, SKU, código) que o cosine enterra. |
qa_first |
bool | Prefere FAQ cards destilados (Refinery) antes de chunks crus. |
limit |
int | Máximo de hits. |
lexical_weight |
float 0..1 | Inclina a fusão para o braço lexical (default 0.5). |
rerank |
bool | Re-rank listwise com LLM dos candidatos over-fetched (opt-in — custa uma chamada de modelo). |
k_overfetch |
int | Quantos candidatos buscar antes do re-rank (default 20). |
path_prefixes |
[]string | Escopa a busca a paths que começam com os prefixos (ex.: ["politicas/"]). |
Cada hit informa como foi encontrado: match: "semantic" | "lexical" | "both" — debug de retrieval é parte do contrato.
POST /v1/cloudwiki/spaces/{sid}/ask aceita question + os mesmos ajustes
(qa_first, lexical_weight, rerank, k_overfetch, path_prefixes); a
recuperação do RAG é sempre híbrida. A resposta traz answer + sources.
Fontes (arquivos ingeridos)#
| Rota | O que faz |
|---|---|
POST /spaces/{sid}/sources (multipart file=) |
Ingere: converte para Markdown, chunka e indexa. |
GET /spaces/{sid}/sources |
Lista (filename, status, chunks, enabled). |
GET /spaces/{sid}/sources/{srcid} |
Detalhe: Markdown convertido + chunks. |
PATCH /spaces/{sid}/sources/{srcid} {enabled} |
Liga/desliga a fonte no retrieval (desabilitada = guardada mas fora da busca). |
POST /spaces/{sid}/sources/{srcid}/reindex |
Re-chunk + re-embed mantendo o id. |
DELETE /spaces/{sid}/sources/{srcid} |
Remove a fonte e seus chunks. |
Knowledge Refinery (FAQ cards)#
O Refinery destila o espaço em cards de pergunta-resposta com fontes — um processo assíncrono com status acompanhável:
curl -sX POST $B/v1/cloudwiki/spaces/$SID/refinery/runs -H "$KEY" # dispara
curl -s $B/v1/cloudwiki/spaces/$SID/refinery/runs -H "$KEY" # status dos runs
curl -s $B/v1/cloudwiki/spaces/$SID/faq -H "$KEY" # cards prontos
Com qa_first: true na busca/ask, perguntas recorrentes acertam o card direto
em vez de costurar chunks. Config por espaço em
GET/PATCH /spaces/{sid}/refinery/config.
Organização e governança#
- Árvore:
GET /projects/{pid}/tree(pastas + espaços);POST/GET/DELETE /projects/{pid}/folders;PATCH /spaces/{sid}renomeia/move. - Graph:
GET /spaces/{sid}/graph— arestas de wikilinks ([[caminho/da-pagina]]), resolvidos e quebrados. - Audit:
GET /spaces/{sid}/audit— páginas sem fonte, links quebrados, órfãs. Meta saudável: tudo zero.
Boas práticas#
- Páginas são síntese, não transcript: uma página por conceito, com wikilinks entre vizinhas — o graph/audit é seu detector de deriva.
- Escreva na mesma operação em que aprendeu: a página já sai indexada; não existe "rebuild depois".
- Para agentes de IA, exponha o espaço via MCP (
wiki_ask,wiki_search,wiki_upsert_page) com escoposwiki:read/wiki:write.