JsonSpec
Built-in JSON-Schema-shaped config vocabulary. Use as the type parameter of Schema to get toJsonSchema without writing a mapper. For domain-specific configs, define your own sealed type and use the SchemaDef.toJsonSchema overload that takes a per-entry mapper lambda.
Inheritors
Types
Wraps another JsonSpec with JSON Schema annotations. Annotations decorate the inner spec without changing the values it accepts.
Array of values. items constrains every element; prefixItems constrains the first N positionally (tuple-style); set both for a tuple with a trailing homogeneous tail.
Conditional schema. If condition matches, then applies; otherwise otherwise applies. Either branch may be omitted.
Floating-point value, optionally bounded. Maps to {"type":"number"} plus minimum/maximum.
Object with named properties. additionalPropertiesAllowed gates extras; set additionalPropertiesSpec to constrain extras to a schema instead of a boolean. If both are set, the spec wins.
Reference to a named spec defined elsewhere. Renders as {"$ref": pointer}. Pass pointer = "#/$defs/User" to point at a definition supplied via the defs parameter of SchemaDef.toJsonSchema; absolute URIs work too.