Skip to content

List Knowledge Bases

GET /knowledge-bases

Every base the caller can see, newest first.

The filters are the four annex 05 §6 names — q, kind, agent_id, scope — plus three an operator actually reaches for:

  • is_frozen answers “why is nothing landing in this base”, which is otherwise unanswerable without opening every base one at a time. It is a state every write path reads (D-646’s argument for making freezing a field), so it is the one boolean on the row that changes what the system does.
  • subject_kind + subject_id are the compliance path. Annex 10 §12 erases a person across every base; before POST /knowledge/subject-purge runs irreversibly, somebody has to be able to see what it is about to touch. ix_knowledge_base_subject exists for exactly this pair.
  • owner_persona_id is the same question one tenancy level up. An agent serving N tenants as N personas keeps one base per tenant, and “which bases are this tenant’s” is the only way to audit that separation from outside a run.

is_private is not a filter, deliberately: it is not a property a caller chooses to see by, it is the reason a base is absent. A private base belongs to one agent, and a human caller — nobody’s owner — never sees one at all. Asking with agent_id is what reveals that agent’s own private bases, which is the same rule its runs get.

NameInTypeNotes
qquerystring | nulloptionalsubstring of slug or name; not a search
kindquerystring | nulloptionalrouting label for dynamic grants
scopequeryworkspace | organization | platform | nulloptionalthe base’s ceiling
agent_idquerystring (uuid) | nulloptionalbases this agent can reach: owner plus explicit and dynamic grants
is_frozenqueryboolean | nulloptionalfrozen bases refuse every write path
subject_kindqueryuser | guest | nulloptional—
subject_idquerystring | nulloptionalthe subject a base belongs to; the erasure entry point
owner_persona_idquerystring (uuid) | nulloptionalthe overlay a base belongs to
includequerystring | nulloptionalcomma-separated; only ‘curation_counts’
limitqueryintegeroptionalDefault 50. min 1 max 200
cursorquerystring | nulloptional—
offsetqueryinteger | nulloptionalmin 0
StatusDescriptionBody
200Successful ResponsePage_KnowledgeBaseView_
422Validation ErrorHTTPValidationError
Terminal window
curl -X GET https://your-deployment.example.com/knowledge-bases \
-H "Authorization: Bearer $COBRE_TOKEN"
FieldTypeNotes
itemsKnowledgeBaseView[]required—
next_cursorstring | nulloptional—
totalinteger | nulloptional—