QueryProtocolJson
The JSON codec of the query protocol (:query-api), the wire 9.x writes: the model is plain data, so this module gives it its names, discriminators and inclusions.
A filter is an object whose
opnames its operator; one withoutop(a 9.xCondition) is rejected, and EQ and NE read only a scalar value. Filter values read as plain JSON values: a scalar, aListor aMap, numbers as WowJson reads them.The aggregation hierarchies are discriminated by
type; an expression without one is a FIELD.Defaults are written by omission where 9.x omitted them: empty
sort, projection lists,elements,groupByand windowwithin; nullhaving,cursor, group inputs and scopes,orderBy,frameandperiod; a falsedense; a metric filter that matches everything.PagedList writes
total(nullwhen uncounted),exact, thenlist.
It is the one copy of the protocol's format: the query engine, the HTTP edge and wow-client read and write it; the query engine adds the capability descriptor's JSON to it (me.ahoo.wow.query.json.QueryJson).