All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.0 - 2026-03-23
Added
AshZoi.to_schema/2for converting Ash types to Zoi validation schemas- Support for all built-in Ash types: String, CiString, Integer, Float, Boolean, Atom, Decimal, Date, Time, DateTime, NaiveDatetime, UtcDatetime, UtcDatetimeUsec, UUID, UUIDv7, Binary, Map, Struct, Module, and Union
- Automatic constraint mapping from Ash to Zoi (min/max → gte/lte, min_length/max_length, match → regex, one_of → enum)
- Ash Resource introspection — pass a resource module to generate a Zoi map schema from its public attributes
:onlyand:exceptoptions for filtering resource attributes- Embedded resource support — nested resources are converted recursively
Ash.Type.Structsupport withinstance_ofandfieldsconstraintsAsh.Type.Unionsupport viaZoi.discriminated_union/3using Ash's_union_type/_union_valueinput formatAsh.TypedStructsupport — typed structs are introspected and converted to Zoi map schemasAsh.Type.NewTypesupport — NewTypes are automatically unwrapped to their underlying type with merged constraints- Array type support (
{:array, type}) with element-level and array-level constraints - Depth-limited NewType unwrapping to prevent infinite recursion