Topics
A FactTopic is the stable public question you're asking — e.g. "what is this vendor's maximum
input/output retention duration." It's the identity you pass as factTopicSlug. It
never changes even if the underlying predicate definition is later revised.
List topics
GET /v1/topics [
{
"topic": "input-output-retention-maximum-duration",
"displayName": "Input/output retention — maximum duration",
"description": "...",
"availability": "ACTIVE"
}
] availability is "ACTIVE" when the topic currently resolves to a real, bound definition, or "UNAVAILABLE" otherwise — resolving Reality against an unavailable topic returns REALITY_NOT_RESOLVED, not FACT_TOPIC_NOT_FOUND: the topic identity is real, there's just nothing currently bound to answer it.
Retrieve one topic
GET /v1/topics/{topic} Adds scopeSchema — the real, governed JSON Schema your scope object must satisfy for this topic.
What you'll never see here
No internal predicate or predicate-version id appears anywhere in this response. The topic slug is the only identity you need — the Gateway resolves which underlying predicate definition currently answers it.