The Zod query schema for a list route: page/perPage/sort/order/q (coerced from strings). Extra column filters
are read by parseListQuery at runtime (OpenAPI query params are flat, so they aren't enumerated here).
table is OPTIONAL: with a table (or opts.columns) sort is a column enum; without either it is a free string —
so the contract-projection layer (@suluk/builder), which holds a Zod entity rather than a Drizzle table, can call
listQuerySchema() and still emit the same five params into the v4 doc + SDK.
The Zod query schema for a list route: page/perPage/sort/order/q (coerced from strings). Extra column filters are read by parseListQuery at runtime (OpenAPI query params are flat, so they aren't enumerated here).
tableis OPTIONAL: with a table (oropts.columns)sortis a column enum; without either it is a free string — so the contract-projection layer (@suluk/builder), which holds a Zod entity rather than a Drizzle table, can calllistQuerySchema()and still emit the same five params into the v4 doc + SDK.