QueryApi
The typed read API: the snapshots, the events and the datasets of the read side, queried as someone. There is no entry that names nobody: of a caller reads within that caller's scope, under the same admission, visibility, bulkhead and budget as the public port's queries. A client's reads another service's over HTTP this way alone; the node's own, a NodeQueryApi, also reads as trusted code.
Every query takes the query protocol's types (me.ahoo.wow.api.query, built with its DSL) and fails with the query errors of the read side: a query the read side refuses is wow.query.invalid, one that runs out of time wow.query.timeout, one its store has no room for wow.query.busy.
Inheritors
Functions
The queries caller may run: restricted to its tenant (or the fixed tenant of an aggregate type that has one), its owner and space, and to the rows its attributes see (the application's query policies), under the in-process budget (wow.query.budgets.in-process.*, the HTTP defaults).