GET /search/query
Execute a structured search query against the local encrypted search index. Returns HTTP 423 if the encryption session is locked.
ADR-008 wire change: total/hasMore are no longer top-level siblings of the envelope — they are folded INTO the data payload alongside the renamed items array (SearchQueryResultDto). The response is the canonical ApiEnvelope<SearchQueryResultDto> ({ data: { items, total, hasMore }, ts }).
Query parameters
Required free-text query string.
Optional explicit operator: "and" or "or".
Optional time preset: today, yesterday, last_24h, last_7d, last_30d, this_week, this_month.
Absolute range start (ms since epoch). Must be paired with to_ms.
Absolute range end (ms since epoch). Must be paired with from_ms.
Comma-separated file types (text, html, link, file, image, other).
Comma-separated file extensions (e.g. "md,txt").
Comma-separated source device ids; restricts results to those origins.
Maximum results. Default 50, clamped to 200.
Pagination offset. Default 0.
Response
Search results page