← All Releases
v0.2.17
TRUE VIRTUALIZATION
The api-portal stops reading tables and starts virtualizing: every API call executes the model's logic live against its sources through the federation engine. Change a source row, the API answers differently — no dvt run. Plus named endpoints with locked row filters, dialect-correct identifier quoting, and a consumer console with snippets for four languages.
CHANGED
- ▸The API virtualizes instead of reading materializations: the model's compiled SQL is decomposed, transpiled per source with pushdown, Sling-extracted from the LIVE engines and computed in an in-memory DuckDB — per request. Cross-engine models federate on every call (one REST call joined postgres and mysql live in verification); single-engine models push the whole query down in one hop. Materialization is irrelevant to the API — ephemeral models are queryable.
ADDED
- ▸Named endpoints: any number of APIs over one model (/api/v1/endpoints/<name>), each with its own column allow-list and FIXED row filters — locked WHERE clauses callers can't override, and they may restrict on columns the endpoint doesn't expose. Row-level security in one move.
- ▸The consumer console: every model panel carries curl / Python / JavaScript / Java snippets (auth header included when keys are enforced), a copy button, and an in-browser try-it runner showing the live JSON.
- ▸Column search in the model config panel — fifty-column models stopped being a scroll.
FIXED
- ▸Identifier quoting is dialect-exact: every column is quoted in the executing engine's own syntax (backticks, brackets, double quotes) using the catalog's ground-truth names — mixed-case columns, reserved words and spaces all safe.
- ▸Compiled SQL resolution falls back to target/compiled files when the manifest carries none inline (bare-parse manifests).
Get it: pip install dvt-core==0.2.17 · wheels on PyPI for macOS (arm64 + x86_64) and Linux, Python 3.10–3.12.