Status da API e frescor dos dados
curl -X GET "https://api.databolsa.com/v1/health"{
"status": "ok",
"version": "string",
"build": "string",
"instance": "string",
"data_freshness": {
"property1": "string",
"property2": "string"
}
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"details": {
"property1": null,
"property2": null
}
}Atualizar tese
Atualiza o conteúdo, a visibilidade, o arquivamento e/ou as tags. `md` substitui o markdown INTEIRO (não é patch): leia a tese com getThesis, edite o texto e devolva completo. `archived` esconde a tese do público sem apagar; `tags` são rótulos PRIVADOS de organização (só o dono vê, nunca aparecem na página pública).
Saúde da ingestão (pipeline, fontes, pollers, histórico)
`latest` é o último run do pipeline completo, não o último run a terminar: reparos e recargas pontuais têm trigger próprio e aparecem em `latest_by_trigger`, com as mensagens de erro em `errors`. Uma fonte pode estar fresca e oca ao mesmo tempo — `missing_ratio` mede a fração de partições sem dado e `status: incomplete` sinaliza quando ela deixa de ser sazonal. O frescor é julgado contra a cadência da própria fonte: `expected_max_age_days` é o intervalo de atualização que ela declara e `stale_after_days`, o silêncio tolerado antes de `status: stale`. **`latest.ok` fala do RUN, não da sua fonte.** Um run vermelho por causa de uma série do Banco Central não diz nada sobre as ofertas da CVM, que no mesmo run vieram inteiras — e quem lê só o booleano recusa uma pergunta que a base responde. `latest.error_sources` nomeia quais fontes falharam; `sources[]` traz a saúde de cada uma por si. **São 57 fontes.** Use `source` para recortar — casa por substring, então `oferta` acha `cvm_ofertas`. O recorte vale só para `sources[]`: o run e os pollers continuam inteiros, porque é cruzando os dois que se separa 'o pipeline falhou' de 'esta fonte falhou'.