# Changelog ## [0.7.2] - 2020-04-30 ### Added: - Enable deriving JsonSchema on adjacent tagged enums (https://github.com/GREsau/schemars/issues/4) ## [0.7.1] - 2020-04-11 ### Added: - Added `examples` (https://tools.ietf.org/html/draft-handrews-json-schema-validation-02#section-9.5) to `Metadata` ### Fixed - Fixed a bug in schemars_derive causing a compile error when the `default`, `skip_serializing_if`, and `serialize_with`/`with` attributes are used together (https://github.com/GREsau/schemars/issues/26) ## [0.7.0] - 2020-03-24 ### Changed: - **BREAKING CHANGE** - `SchemaSettings` can no longer be created using struct initialization syntax. Instead, if you need to use custom schema settings, you can use a constructor function and either: - assign it to a `mut` variable and modify its public fields - call the `with(|s| ...)` method on the settings and modify the settings inside the closure/function (as in the custom_settings.rs example) ### Fixed: - When deriving `JsonSchema` on structs, `Option` struct fields are no longer included in the list of required properties in the schema (https://github.com/GREsau/schemars/issues/11) - Fix deriving `JsonSchema` when a non-std `String` type is in scope (https://github.com/GREsau/schemars/pull/19) - This will now compile: `#[schemars(with="()")]` ### Added: - Added `allow_ref_siblings` setting to `SchemaSettings`. When enabled, schemas with a `$ref` property may have other properties set. - Can create JSON Schema 2019-09 schemas using `SchemaSettings::draft2019_09()` (which enables `allow_ref_siblings`) ## [0.6.5] - 2019-12-29 ### Added: - Implemented `JsonSchema` on types from `smallvec` and `arrayvec` (as optional dependencies) ## [0.6.4] - 2019-12-27 ### Added: - Implemented `JsonSchema` on types from `indexmap`, `either` and `uuid` (as optional dependencies) ### Changed - Remove trait bounds from Map/Set JsonSchema impls. They are unnecessary as we never create/use any instances of these types. ## [0.6.3] - 2019-12-27 - No actual code changes - this version was just published to fix broken README on crates.io ## [0.6.2] - 2019-12-27 ### Added: - Documentation website available at https://graham.cool/schemars/! ### Changed: - Rename `derive_json_schema` to `impl_json_schema`. `derive_json_schema` is still available for backward-compatibility, but will be removed in a future version. - Improve schema naming for deriving on remote types. A `#[serde(remote = "Duration")]` attribute is now treated similarly to `#[serde(rename = "Duration")]`. - Ensure root schemas do not have a `$ref` property. If necessary, wrap the `$ref` in an `allOf`. ## [0.6.1] - 2019-12-09 ### Fixed: - Fix a compile error that can occur when deriving `JsonSchema` from a project that doesn't reference serde_json ## [0.6.0] - 2019-12-09 ### Added: - When deriving `JsonSchema`, the schema's `title` and `description` are now set from `#[doc]` comments (https://github.com/GREsau/schemars/issues/7) - When deriving `JsonSchema` on structs using a `#[serde(default)]` attribute, the schema's properties will now include `default`, unless the default value is skipped by the field's `skip_serializing_if` function (https://github.com/GREsau/schemars/issues/6) ### Changed: - When the `option_nullable` setting is enabled (e.g. for openapi 3), schemas for `Option` will no longer inline `T`'s schema when it should be referenceable. ## [0.5.1] - 2019-10-30 ### Fixed: - Added missing doc comment for `title` schema property ## [0.5.0] - 2019-10-30 ### Added: - Implemented `JsonSchema` for more standard library types (https://github.com/GREsau/schemars/issues/3) ### Changed: - Unsigned integer types (usize, u8 etc.) now have their [`minimum`](https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.6.2.4) explicitly set to zero - Made prepositions/conjunctions in generated schema names lowercase - e.g. schema name for `Result>` has changed from "Result_Of_MyStruct_Or_Array_Of_String" to "Result_of_MyStruct_or_Array_of_String" - Some provided `JsonSchema` implementations with the same `type` but different `format`s (e.g. `i8` and `usize`) used the `type` as their name. They have now been updated to use `format` as their name. - Previously, schema generation would incorrectly assume types such as `MyStruct` and `MyStruct` were identical, and give them a single schema definition called `MyStruct_for_Integer` despite the fact they should have different schemas. Now they will each have their own schema (`MyStruct_for_i8` and `MyStruct_for_usize` respectively).