Three ways in, in order: a schema that describes itself is asked to (Zod 4 and anything like it),
a Zod 3 schema goes through the external converter, and a plain JSON Schema object passes through
untouched so any engine at all can be used.
The document declares OpenAPI 3.0, so that dialect is requested: it is the difference between
nullable: true and a anyOf with a null branch, and between a document tools accept and one
they reject. A converter too old to know the dialect still answers, and only its $schema marker
has to go, since OpenAPI 3.0 has no place for it.
Converts a schema input into a JSON Schema.
Three ways in, in order: a schema that describes itself is asked to (Zod 4 and anything like it), a Zod 3 schema goes through the external converter, and a plain JSON Schema object passes through untouched so any engine at all can be used.
The document declares OpenAPI 3.0, so that dialect is requested: it is the difference between
nullable: trueand aanyOfwith a null branch, and between a document tools accept and one they reject. A converter too old to know the dialect still answers, and only its$schemamarker has to go, since OpenAPI 3.0 has no place for it.