NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #500 most downloaded on NuGet
JSON Schema reader, generator and validator for .NET
Last release 5 months ago
20 Apr 2026
Release timing varies
gaps range from 2 weeks to 5 months
Most releases are documented
notes for 10 of 14 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
17 releases · first in 2023
One column per quarter.
Important v11.6.0 should not be used — it introduced a regression that caused required T? / [JsonRequired] T? properties to incorrectly lose their nul
Important
v11.6.0 should not be used — it introduced a regression that caused required T? / [JsonRequired] T? properties to incorrectly lose their nullability and gain a spurious MinLength=1 on strings. Please upgrade directly from v11.5.x to v11.6.1.
v11.6.0 added support for the C# 11 required keyword and [JsonRequired] in schema generation (#1908), but folded them into the same bucket as DataAnnotations [Required] — which conflated three distinct concepts:
required array): required keyword, [JsonRequired], [Required], [DataMember(IsRequired=true)], Newtonsoft Required.Always/AllowNull[Required] only (plus Newtonsoft Required.Always/DisallowNull for runtime correctness)MinLength=1 on strings): [Required] only (unless AllowEmptyStrings=true)v11.6.1 (#1919) restores the correct separation. The required keyword and [JsonRequired] are now presence-only markers — they add the property to the schema's required array without suppressing nullability or adding MinLength=1.
| C# declaration | v11.6.0 (broken) | v11.6.1 |
|---|---|---|
required string? |
nullable: false, MinLength: 1 ❌ |
nullable: true, no MinLength ✅ |
required string |
MinLength: 1 ❌ |
no MinLength ✅ |
[JsonRequired] string? |
nullable: false, MinLength: 1 ❌ |
nullable: true, no MinLength ✅ |
[JsonRequired] string |
MinLength: 1 ❌ |
no MinLength ✅ |
[Required], [JsonProperty(Required=*)], and [DataMember(IsRequired=true)] semantics are unchanged across v11.5.x / v11.6.0 / v11.6.1.
The v11.6.0 regression surfaced in NSwag as NSwag#5359: TypeScript clients generated from required T? DTO properties silently lost their | null, removing null-safety for fields the server can legitimately return as null. v11.6.1 fixes this. A matching NSwag release is required to pick up the fix.
Full Changelog: v11.6.0...v11.6.1
Caution Do not use this release — upgrade to v11.6.1 or later.
Caution
Do not use this release — upgrade to v11.6.1 or later.
v11.6.0 introduced a regression in the handling of the C# required keyword and [JsonRequired]: required T? / [JsonRequired] T? properties incorrectly lost their nullability and gained a spurious MinLength=1 on strings. This broke downstream client generation — see NSwag#5359. Fixed in v11.6.1 (#1919).
required keyword now recognized as required: Properties using the C# 11 required keyword (RequiredMemberAttribute / JsonRequiredAttribute) are now correctly treated as required in schema generation and code output. Previously these were incorrectly treated as optional (Required.Default). This changes generated code: such properties now get Required.Always, [Required] attribute, and the required modifier when UseRequiredKeyword is enabled. (#1908)JsonStringEnumMemberName and EnumMember attributes are now emitted for enum members when using System.Text.Json, for compatibility with NSwag's reflection-based URL parameter serialization. (#1905)$schema version preserved in ToJson() instead of forcing draft-04. If you relied on the output always being draft-04, this may affect you. (#1881)patternProperties validation now correctly applies to all matching properties, not just the first. (#1898)DateTime, DateTimeOffset, DateOnly, TimeOnly properties. (#1900)+ in JSON reference paths being decoded as space by @Copilot in #1880-1 generating invalid C# identifier instead of Minus1 by @Copilot in #1882Full Changelog: v11.5.2...v11.6.0
Reverts the breaking change introduced by "Use [JsonStringEnumMemberName] instead of [EnumMember] #1864 "
JsonStringEnumConverter<T> detection and test it by @wellWINeo in #1868Full Changelog: v11.5.1...v11.5.2
fix: Enum descriptions serialization/property by @RicoSuter in #1861
Full Changelog: v11.5.0...v11.5.1
Change TypeScript default version to 4.3 (removed support for TS versions < 4.3) by @lahma in #1855
Breaking changes:
Others:
Full Changelog: v11.4.0...v11.5.0
Cache NJsonSchema properties in JsonReferenceResolver by @lahma in #1817
JsonReferenceResolver by @lahma in #1817JsonSchema construction for object having boolean required by @lahma in #1818AsyncJsonReferenceVisitorBase.Visit by @lahma in #1819FluidParser construction by @lahma in #1822tsc by @lahma in #1824ApplyRangeAttribute failing when min/max is specified as string by @sindrekroknes in #1831templateFolder by @Georgy-Losenkov in #1835as TYPE instead cast with <TYPE> by @lahma in #1837ValueStringBuilder in ConvertDashesToCamelCase by @lahma in #1844JTokens with type Uri by @ertrumbl in #1403x-enumNames value by @lekhmanrus in #1789Full Changelog: v11.3.2...v11.4.0
Revert "C# generator: create anoymous types with camel casing (reworked)" by @RicoSuter in #1816
Full Changelog: v11.3.1...v11.3.2
Don't throw on missing member when resolving template identifier by @lahma in #1815
Full Changelog: v11.3.0...v11.3.1
Add NET 8 targets and fix analyzer reported issues by @lahma in #1792
Full Changelog: v11.2.0...v11.3.0
Prepare for NET 9 SDK analysis by @lahma in #1743
Full Changelog: v11.1.0...v11.2.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →