changedInput schema / properties / action / description
Previous value: -"kind=analyst only. Exact rating-action filter."New value: +"Analyst-only structured filter — requires `kind=analyst` alone. Same `action` vocabulary as Analyst actions."
changedInput schema / properties / cursor / description
Previous value: -"Opaque cursor from a prior response — carries the original filters, pass it alone (long q values must be resent alongside it)."New value: +"Opaque cursor from the previous response — carries the original filters (and `q` when short), so pass it alone. Not valid with `group_by`."
addedInput schema / properties / dir / default
Added value: +"desc"
changedInput schema / properties / firm / description
Previous value: -"kind=analyst only. Case-insensitive analyst-firm filter (e.g. \"Goldman Sachs\" matches \"goldman sachs\") — prefer this over a q payload match, which is case-sensitive."New value: +"Analyst-only structured filter — requires `kind=analyst` alone (`400` otherwise). Exact firm-name match on the ratings feed."
changedInput schema / properties / from / description
Previous value: -"Events at or after this ISO date/datetime (inclusive; a bare YYYY-MM-DD means from the start of that day). `since` accepted as alias."New value: +"Events at/after this instant — strict ISO: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM[:SS]Z`. A bare `YYYY-MM-DD` means from the start of that day. (`since` accepted as an alias.)"
changedInput schema / properties / group_by / description
Previous value: -"Comma list of rollup keys — switches to aggregate rows, e.g. payload->>'firm' AS firm, or kind. `AS` names the JSON key; an un-named payload read is keyed by its payload key (payload->>'firm' -> firm)."New value: +"Comma list of rollup keys — switches the response to aggregate rows. Columns (`kind`, `ticker`), payload fields (`firm`, or the explicit `payload->>'firm'`), and expressions over them all roll up. Name a key with `AS` to choose its JSON key: `payload->>'firm' AS firm`. Un-named keys are named for you — a payload read takes its key (`payload->>'firm'` → `firm`), a function keeps the function's name (`lower(ticker)` → `lower`), and anything else falls back to `group_1`, `group_2`."
changedInput schema / properties / having / description
Previous value: -"Post-aggregation filter (requires group_by), e.g. COUNT(*) > 5."New value: +"Post-aggregation filter. Requires `group_by`."
addedInput schema / properties / interval / default
Added value: +"auto"
changedInput schema / properties / interval / description
Previous value: -"Grain for join=state replay (finest covering tier by default)."New value: +"Grain the per-event state is reconstructed at, when `join=state`: `1m`, `1h`, `1d`, or `auto` (default). `auto` resolves to `1d` — the event set's tickers are not known before the query runs, and `1d` is the only tier covering the whole universe, so it is the only grain guaranteed to satisfy every event. An explicit `1m`/`1h` trades coverage for precision: events on tickers absent from that tier join to `null`. A referenced column the grain does not store is a `400`. Reported back as `_meta.state_interval`."
changedInput schema / properties / interval / enum
Previous value: -[
- "1m",
- "1h",
- "1d"
-]New value: +[
+ "1m",
+ "1h",
+ "1d",
+ "auto"
+]
changedInput schema / properties / join / description
Previous value: -"join=state attaches each event's ticker STATE as of that event's moment (the replay join) under a `state` key — \"downgrades where rsi_14 was already under 40\" composes with q. Free on every plan."New value: +"Set to `state` to allow ticker-state signals in `q`/`select`/`group_by`/`having`, evaluated as of each event's timestamp (daily resolution)."
changedInput schema / properties / kind / description
Previous value: -"Comma list of kinds to include. Default is the four corporate kinds: dividend, split, insider, analyst. Two more are opt-in and join only when named: `signal` (boolean firings) and `news`."New value: +"Comma list of kinds. Omitted → the five corporate kinds; `signal` and `news` join only when named here."
addedInput schema / properties / kind / enum
Added value: +[
+ "earnings",
+ "dividend",
+ "split",
+ "insider",
+ "analyst",
+ "news",
+ "signal"
+]
addedInput schema / properties / limit / default
Added value: +50
changedInput schema / properties / limit / description
Previous value: -"Page size. Max 1000."New value: +"Page size (row modes) / max rollup rows (aggregate mode). Max 1000."
removedInput schema / properties / merge_gap_seconds
Removed value: -{
- "description": "kind=signal only, with `signal` AND `tickers` set (filter mode — no q/join/group_by). Interval-union before unpivoting: runs of the boolean separated by ≤ N seconds collapse into one, so a boolean with thousands of per-tick fragments yields one enter and one exit per real run (3600 for hourly booleans, 86400 for daily). Default 0 = raw fragments. A cursor pins this; resend it unchanged when paging.",
- "type": "integer"
-}
changedInput schema / properties / order / description
Previous value: -"Aggregate-mode sort column/alias. Default: events."New value: +"Aggregate-mode sort — a bare column name or an output name only (put expressions in `select` and sort by their alias). A group key's name works too, whether you aliased it or it was named for you: `group_by=payload->>'firm' AS firm&order=firm`. Default: `events`. (Row mode is always newest-first.)"
changedInput schema / properties / q / description
Previous value: -"SQL WHERE over (ticker, ts, kind, payload jsonb) — ONLY those four identifiers. Payload fields via jsonb operators: payload->>'firm' = 'Goldman Sachs', (payload->>'shares')::numeric > 1e6. On kind=signal this requires `signal` (the firing log is ~175M rows); kind=signal takes no group_by."New value: +"SQL WHERE over the projection — `ticker`, `ts`, `kind`, `payload` (plus ticker-state signals when `join=state`). When exactly ONE `kind` is named, that kind's payload fields are additionally first-class typed columns (`amount > 1`, `firm = 'Goldman Sachs'` — see each kind page for its list); multi-kind requests use `payload->>'…'`. Max 4000 chars. ANDs with the filter params."
changedInput schema / properties / select / description
Previous value: -"Aggregate-mode output columns (requires group_by). Default: group keys + COUNT(*) AS events."New value: +"Aggregate-mode output columns (requires `group_by`). Default: group keys + `COUNT(*) AS events`. Same naming rule as `group_by` — alias with `AS`, or take the name derived for you."
changedInput schema / properties / signal / description
Previous value: -"kind=signal only. One built-in boolean signal (e.g. golden_cross). REQUIRED to use `q` or `join` on kind=signal — naming the signal is what keeps the query on an index; optional otherwise."New value: +"Signal-only filter — requires `kind=signal` alone (`400` otherwise). One built-in boolean signal; REQUIRED with `q` or `join=state` on that kind. See Signal firings."
changedInput schema / properties / ticker / description
Previous value: -"Single-ticker filter, e.g. AAPL."New value: +"Single-ticker filter. When both `ticker` and `tickers` are passed, `ticker` wins."
changedInput schema / properties / tickers / description
Previous value: -"Comma-separated tickers, max 50. Mutually exclusive with `universe`."New value: +"Comma list of tickers (max 50). Mutually exclusive with `universe`."
changedInput schema / properties / to / description
Previous value: -"Window end: a bare YYYY-MM-DD means through the END of that day (matching bars/series/spans); a timestamp is exclusive — events strictly before it. `until` accepted as alias."New value: +"Window end — same strict ISO subset. A bare `YYYY-MM-DD` means through the end of that day, matching bars/series/spans; a timestamp is exclusive (events strictly before it). (`until` accepted as an alias.)"
changedInput schema / properties / transition / description
Previous value: -"kind=signal only. `enter` (false->true) or `exit` (true->false). Always optional — an ordinary filter."New value: +"Signal-only filter — requires `kind=signal` alone. `enter` (false→true) or `exit` (true→false)."
changedInput schema / properties / universe / description
Previous value: -"Universe slug (top_10, top_100, or a saved one) to scope the stream. Mutually exclusive with `tickers`."New value: +"Universe slug (`top_10`, `top_100`, or one of yours) to scope the stream. Mutually exclusive with `tickers`."