typify
JSON schema to rust type code generator
0.7.0
27M downloads/mo
#1775 most downloaded on crates.io
oxidecomputer/typify
What this package is like to depend on
Last release 2 months ago
05 Jun 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 25 of 26 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
26 releases · first in 2021
5 releases in the last 12 months
see the full history below
Release timeline
26 releases · Nov 2021 to Jun 2026Releases
latest 26-
0.7.005 Jun 2026Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.6.2...v0.7.0[Full list of commits]
- Support for merging multiple string types with pattern fields (#1008)
- Generate
JsonSchemafor newtypes with enumerated patterns (#1017)
-
0.6.224 Apr 2026Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.6.1...v0.6.2[Full list of commits]
- Improve merging of strings and numbers (#998)
- Avoid generation of unused default functions (#990)
- Pass through f64 field descriptions (#974)
-
0.6.110 Feb 2026Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.6.0...v0.6.1[Full list of commits]
- Add public
accept_as_identto determine if a string is a valid Rust identifier (#973)
- Add public
-
0.6.003 Feb 2026Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.5.0...v0.6.0[Full list of commits]
- remove non-idiomatic From<&String> trait impls (#946)
- allow custom attributes to be applied to all generated types with
attrssetting (#949) - remove non-idiomatic From<&T> for T trait impls (#945)
- use inline format args in generated code (#934)
- properly handle JSON pointer escape sequences (#940)
-
0.5.009 Oct 2025Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.4.3...v0.5.0[Full list of commits]
- improve heuristics for enum variant naming (#894)
-
0.4.315 Aug 2025Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.4.2...v0.4.3[Full list of commits]
- allow the map type to be specified by macro users (#835)
- handle more flavors of the unsatisfiable schema (#842 and #869)
- avoid warnings with Rust 1.89 lifetime checks (#827)
-
0.4.227 May 2025Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.4.1...v0.4.2[Full list of commits]
- improve merging logic for "not" schemas (#831)
- improve regex validation performance. (#825)
- remove some dead code that displeases more recent rust versions (#826)
-
0.4.130 Apr 2025Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.4.0...v0.4.1[Full list of commits]
- improve
nullrecognition (#817) - improve identification of mutually incompatible
anyOfsubschemas (#817)
- improve
-
0.4.016 Apr 2025Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.3.0...v0.4.0[Full list of commits]
- Doc fixes
- Slightly more effort made to disambiguate enum variant identifiers (#762)
- Fix for panic with non-zero integers, nullable types, and default values (#771)
- Greater consistency wrt
additionalPropertiesinterpretation (#773) - Fix for string length validation for non ascii strings (#776)
- Improved handling of integer format with min/max values (#733)
-
0.3.027 Dec 2024Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.2.0...v0.3.0[Full list of commits]
- Mark newtype wrappers as
#[serde(transparent)](#724) - impl
Defaultfor structs where all properties have a default (#725) - Add support specifying the map type to use (#708)
- Fully qualify more type names e.g. from
std(#705)
These changes may break users of previous versions in particular if you were to implement
Defaultby hand for types for which the implementation is now generated. - Mark newtype wrappers as
-
0.2.026 Sep 2024Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.1.0...v0.2.0[Full list of commits]
- Migrate from
ToStringtostd::fmt::Display(#663) - fully qualify types and traits (#647)
- Add support for
patternPropertiesin particular circumstances (#637) - Fully qualify
serde::Deserialize`` andserde::Serialize` in outputs (#634) - Fix panic in
all_mutually_exclusiveand allow multiple subschema types in a single schema (#627) - handle default values for fields represented as `NonZeroU{8,16,32}`` (#608)
- Migrate from
-
0.1.013 May 2024Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.0.16...v0.1.0[Full list of commits]
- Improvements and bug fixes around schema merging
- Fixes for various bugs with defaults
- Support for the
x-rust-typeextension (#584)
-
0.0.1628 Feb 2024Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.0.15...v0.0.16[Full list of commits]
- Introduce a proper Error type for various conversions (#475)
- Add docs to generated mods (#476)
- Various enum improvements
-
0.0.1515 Dec 2023Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.0.14...v0.0.15[Full list of commits]
- Improvements to array merging and mutual exclusivity checks (#412)
- Support for 32-bit floating-point numbers (#440)
- Better handling for unsatisfiable merged schemas (#447)
- Show original JSON Schema in generated type docs (#454)
-
0.0.1425 Sep 2023Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.0.13...v0.0.14[Full list of commits]
- Handle arbitrary containment cycles (#300)
- More permissive of valid (if useless) schema constructions (#306, #320)
- Much better handling of
allOfconstructions by merging schemas (#405) - Support for more
notsubschemas (#410)
-
0.0.1314 May 2023Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.0.12...v0.0.13[Full list of commits]
- Fixed-length, single-type arrays to
[T; N](#286) - Support for reflexive schemas (#292)
- Much improved support for multi-type schemas (#291)
- Better error messages on failures
- Fixed-length, single-type arrays to
-
0.0.1203 May 2023Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.0.11...v0.0.12[Full list of commits]
- Improved enum generation (#270)
- Improved integer type selection based on number criteria (#255)
TypeSpace::add_root_schema()(#236)- ... and many general improvements
-
0.0.1118 Mar 2023Release notes
Open source →This is a big update with many, many changes to code generation, and many more JSON schema structures well-handled. Among the many changes:
- Generate a
ToStringimpl for untagged enums with trivial variants (#145) - Allow conversion overrides by specifying a schema (#155)
- Handle untyped enums that contain nulls (#167)
- Handle
notschemas for enumerated values (#168) - Improve generated code for FromStr and TryFrom impls (#174)
- Handle format specifiers for enumerated strings (#188)
=== Breaking: The removal of
TypeSpace::to_string()Previously all transitive consumers required the presence of
rustfmt. In this version we leave formatting to the consumer. See link:README.md#formatting[the formatting section of the README] for details on formatting.=== CLI
This version adds the
cargo-typifycrate for stand-alone code generation.=== Augmented Generation
Consumers can now affect how code is generated in several ways:
- adding derive macros to all generated types
- modifying specific types by name to rename them or add derive macros
- specifying a replacement type by name
- specifying a replacement type by schema pattern
https://github.com/oxidecomputer/typify/compare/v0.0.10...v0.0.11[Full list of commits]
- Allow per-type renames and derive macro applications (#131)
ToStringimplementations for untagged enums with trivial newtype variants (#145)- Fixed an issue with generation of enum defaults (#137)
- Allow conversion overrides by specifying a schema (#155)
- Generate a
-
0.0.1010 Sep 2022Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.0.9...v0.0.10[Full list of commits]
- Add support for string types with
formatset toip,ipv4, oripv6(#76) - Be more accommodating in the face of a missing
typefield #(79) - The order of derives on types has stabilized (and therefore has changed) (#81)
- Specific
FromandDeserializeimplementations for constrained string types (#81) - Specific
Fromimplementation for untagged enums with constrained string variants (#81) FromStrimplementation for simple-variant-onlyenums (#81)- Ignore unknown
formatvalues (#81) - Added
regressdependency for ECMA 262 style regexes (#81) - Dropshot produces a complex
Nulltype (by necessity); now rendered as()(#83) - Fixed rendering of enums with a single variant (#87)
- Updated public interface (breaking for consumers) (#98)
- Optional builder interface for generated structs (#98)
- Add support for string types with
-
0.0.920 Jun 2022Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.0.8...v0.0.9[Full list of commits]
- Switched from
unicode-xidtounicode-ident(#60) - Elevate
TypeDetail::Stringrather thanTypeDetail::BuiltIn("String")(#72)
- Switched from
-
0.0.822 May 2022Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.0.7...v0.0.8[Full list of commits]
- Support for integer schemas with
enum_valuespopulated (breaking change) (#57) - Deeper inspection of
oneOfconstructions to make betterenums (#59) - Simple handling for "constraint"
allOfconstructions (#59) - Improved handling of non-required unit struct members (#59)
- Support for integer schemas with
-
0.0.718 May 2022Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.0.6...v0.0.7[Full list of commits]
- Update to
uuidv1.0.0 for testing (non-breaking change)
- Update to
-
0.0.612 May 2022Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.0.5...v0.0.6[Full list of commits]
- Add an interface to allow consumers to specify additional derives for generated types (#35)
- Handle all invalid identifier characters (#37)
- Add support for
std::net::Ipv6Addrtype (#38) - Add
Copyto simple enums (#40) Boxtrivial cyclic refs (#41)- Move to heck for case conversion (#43)
- Improve handling of default values for object properties (#44)
-
0.0.517 Nov 2021Release notes
Open source →https://github.com/oxidecomputer/typify/compare/v0.0.4...v0.0.5[Full list of commits]
- use include_str! so that our macro is re-run if the given file changes (#27)
- Better handling of enums that look like the Result type (#26)
- Pass through name for make_map (#25)
-
0.0.408 Nov 2021 -
0.0.308 Nov 2021Nothing published for this version