fix(support/v2): backport nullability round-tripping fix from PR #2994 - #7
Merged
Merged
Conversation
fixes a bug in deserialization where a null in enum array would be dropped emits "nullable": true when we detect a null type, even if we haven't serialized a type (i.e, we allow emitting a redundant nullable property) detects the pattern of `enum: [ null ]`, and deserialize it `JsonSchemaType.Null`. This makes round-tripping behavior better. (cherry picked from commit 655c2c8) Co-authored-by: Youssef1313 <31348972+Youssef1313@users.noreply.github.com>
Copilot created this pull request from a session on behalf of
Youssef1313
August 11, 2026 08:27
View session
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request
Description
Backports the nullability round-tripping fix from microsoft#2994 to
support/v2.This addresses loss of
nullsemantics during OpenAPI 3.0 schema serialize/deserialize flows, especially around enum-null patterns and nullable emission.Type of Change
Related Issue(s)
N/A
Changes Made
OpenAPI 3.0 schema serialization
nullable: trueis preserved when nullability is represented without a serializabletypevalue.Null enum preservation in reader
nullentries viaJsonNullSentinel.enum: [null]values from being dropped during deserialization.Deserializer normalization for null-only enum
enum: [null]with no explicit type and normalizes toType = JsonSchemaType.Null.Regression coverage
OpenApiSchemaTestsexpectations for nullable output in 3.0 serialization.OpenApiSchemaV30CompatibilityTestscovering nullable enum/type round-tripping and compatibility transforms.Testing
Checklist
Versions applicability
See the contributing guidelines for more information about how patches are applied across multiple versions.
Additional Notes
Example of the normalized case now preserved across round-trip:
{ "enum": [null], "nullable": true }This is deserialized as
Type = JsonSchemaType.Null(instead of dropping the null enum signal), improving fidelity when re-serializing.