Skip to content

v0.2.0 — enforce and complete the grammar

Choose a tag to compare

@christosgkoros christosgkoros released this 06 Aug 08:47
· 36 commits to main since this release

First published release. The v0.1.0 schema described a grammar but did not enforce one: its root used "id" rather than "$id" and wrapped definitions in components.schemas, so under draft 2020-12 the root carried no assertion keywords and accepted every instance.

Fixed — the schema now validates. The eight-way oneOf over leaf conditions collapses into one recursive Filter, which makes {"age": {"$gt": 18, "$ne": 30}} expressible (it was rejected before) and removes the {}-matches-everything ambiguity. "regex" → dropped (not a JSON Schema keyword), examples corrected to arrays, $in/$nin now accept booleans and null.

Added$nor, $nbetween, the string family, $regex/$flags, $exists, $type, the collection operators, $search, field-level $not, and {"$field": "path"} for WHERE price > cost. Plus a field-path grammar, conformance profiles, SPEC.md for the semantics a schema cannot express, and OpenAPI 3.1 / 3.2 integration examples.

Breaking$isnull$isNull; #/components/schemas/*#/$defs/*. Filter documents are otherwise unaffected.

Full detail in CHANGELOG.md.