One entry in the response from GET /graphs. Cluster operators
consume this list to discover which graphs the server is currently
serving. The shape is intentionally minimal — graph_id and uri
are the only fields a routing client needs.
Response from GET /graphs. Lists every graph registered with the
server in alphabetical order by graph_id (sorted server-side so
clients get deterministic output across requests).
Body for POST /queries/{name} — invokes the server-side stored query
named in the path. The query source and name come from the registry,
never the body; only the runtime inputs are supplied here.
Structured details for a publisher-level OCC failure. Surfaces alongside
HTTP 409 when a write was rejected because the caller’s pre-write view of
one table’s manifest version was stale relative to the current head. The
expected/actual fields tell the client which table to refresh.
Response for POST /queries/{name}: the read envelope for a stored
read, or the mutation envelope for a stored mutation. Serialized
untagged, so the wire shape is exactly ReadOutput or
ChangeOutput — classification follows the stored query, not a
wrapper field.
The kind of a stored-query parameter, decomposed so a client (e.g. an
MCP server) can build a typed input schema with a closed match and
never re-parse omnigraph’s type spelling. bigint/date/datetime/
blob are carried as JSON strings on the wire: a 64-bit integer past
2^53 loses precision as a JSON number, and Date/DateTime are ISO
strings, Blob a blob-URI string.