From 6c08b16a95042b9f003d789c485db059019daaac Mon Sep 17 00:00:00 2001
From: "release-please-token-provider[bot]"
<225477224+release-please-token-provider[bot]@users.noreply.github.com>
Date: Wed, 17 Dec 2025 20:59:07 +0000
Subject: [PATCH 01/19] chore(support/v2): release 2.4.0
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 7 +++++++
Directory.Build.props | 2 +-
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index de740effa..b44b28703 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "2.3.12"
+ ".": "2.4.0"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 53c21a800..a60c484e2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## [2.4.0](https://github.com/microsoft/OpenAPI.NET/compare/v2.3.12...v2.4.0) (2025-12-17)
+
+
+### Features
+
+* Add `type: "null"` downcasting when in oneOf and anyOf for OpenAPI v3 ([782cf8d](https://github.com/microsoft/OpenAPI.NET/commit/782cf8d1ff8166e3c7be706e08dabf168b9616a4))
+
## [2.3.12](https://github.com/microsoft/OpenAPI.NET/compare/v2.3.11...v2.3.12) (2025-12-15)
diff --git a/Directory.Build.props b/Directory.Build.props
index 26fffd5c2..caf63957a 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -12,7 +12,7 @@
https://github.com/Microsoft/OpenAPI.NET
© Microsoft Corporation. All rights reserved.
OpenAPI .NET
- 2.3.12
+ 2.4.0
From e36fc9565bce42916eb7bf64d1f74d491dd1f407 Mon Sep 17 00:00:00 2001
From: Niels van Dijk
Date: Thu, 18 Dec 2025 10:04:33 +0100
Subject: [PATCH 02/19] fix(schema): always serialize `additionalProperties:
false`
* Updates serialization logic to emit `additionalProperties: false` for all OpenAPI versions when `AdditionalPropertiesAllowed` is false.
* Refactors related test to a theory and verifies behavior for both OpenAPI 3.0 and 3.1.
* Ensures consistent schema output across OpenAPI versions.
---
src/Microsoft.OpenApi/Models/OpenApiSchema.cs | 5 ++---
test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs | 8 +++++---
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs
index 1ffccd272..e0b4ae495 100644
--- a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs
+++ b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs
@@ -489,9 +489,8 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
AdditionalProperties,
callback);
}
- // true is the default in earlier versions 3, no need to write it out
- // boolean value is only supported for version 3 and earlier (version 2 is implemented in the other serialize method, the condition is a failsafe)
- else if (!AdditionalPropertiesAllowed && version <= OpenApiSpecVersion.OpenApi3_0)
+ // true is the default, no need to write it out
+ else if (!AdditionalPropertiesAllowed)
{
writer.WriteProperty(OpenApiConstants.AdditionalProperties, AdditionalPropertiesAllowed);
}
diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs b/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs
index c20da3127..67a79e35e 100644
--- a/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs
+++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs
@@ -754,8 +754,10 @@ public async Task SerializeAdditionalPropertiesAllowedAsV3PlusDefaultDoesNotEmit
Assert.True(JsonNode.DeepEquals(JsonNode.Parse(expected), JsonNode.Parse(actual)));
}
- [Fact]
- public async Task SerializeAdditionalPropertiesAllowedAsV3FalseEmits()
+ [Theory]
+ [InlineData(OpenApiSpecVersion.OpenApi3_0)]
+ [InlineData(OpenApiSpecVersion.OpenApi3_1)]
+ public async Task SerializeAdditionalPropertiesAllowedAsV3PlusFalseEmits(OpenApiSpecVersion version)
{
var expected = @"{ ""additionalProperties"": false }";
// Given
@@ -765,7 +767,7 @@ public async Task SerializeAdditionalPropertiesAllowedAsV3FalseEmits()
};
// When
- var actual = await schema.SerializeAsJsonAsync(OpenApiSpecVersion.OpenApi3_0);
+ var actual = await schema.SerializeAsJsonAsync(version);
// Then
Assert.True(JsonNode.DeepEquals(JsonNode.Parse(expected), JsonNode.Parse(actual)));
From a7ae46e7e9432986d656bcb747071787a0e87c47 Mon Sep 17 00:00:00 2001
From: "release-please-token-provider[bot]"
<225477224+release-please-token-provider[bot]@users.noreply.github.com>
Date: Thu, 18 Dec 2025 11:35:21 +0000
Subject: [PATCH 03/19] chore(support/v2): release 2.4.1
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 8 ++++++++
Directory.Build.props | 2 +-
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index b44b28703..adf5fd769 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "2.4.0"
+ ".": "2.4.1"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a60c484e2..7414944db 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## [2.4.1](https://github.com/microsoft/OpenAPI.NET/compare/v2.4.0...v2.4.1) (2025-12-18)
+
+
+### Bug Fixes
+
+* **schema:** always serialize `additionalProperties: false` ([6651c36](https://github.com/microsoft/OpenAPI.NET/commit/6651c36ff341329c053776d65b36b1b7fa9dd3ea))
+* **schema:** always serialize `additionalProperties: false` ([e36fc95](https://github.com/microsoft/OpenAPI.NET/commit/e36fc9565bce42916eb7bf64d1f74d491dd1f407))
+
## [2.4.0](https://github.com/microsoft/OpenAPI.NET/compare/v2.3.12...v2.4.0) (2025-12-17)
diff --git a/Directory.Build.props b/Directory.Build.props
index caf63957a..2d0fc7255 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -12,7 +12,7 @@
https://github.com/Microsoft/OpenAPI.NET
© Microsoft Corporation. All rights reserved.
OpenAPI .NET
- 2.4.0
+ 2.4.1
From f71787dd16a40d079aa5013ac5c937c81f92b563 Mon Sep 17 00:00:00 2001
From: "release-please-token-provider[bot]"
<225477224+release-please-token-provider[bot]@users.noreply.github.com>
Date: Thu, 18 Dec 2025 16:12:12 +0000
Subject: [PATCH 04/19] chore(main): release 3.1.1
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 8 ++++++++
Directory.Build.props | 2 +-
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index e0dc5001b..89c23baca 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "3.1.0"
+ ".": "3.1.1"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b3e5aa34a..be4068a9a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## [3.1.1](https://github.com/microsoft/OpenAPI.NET/compare/v3.1.0...v3.1.1) (2025-12-18)
+
+
+### Bug Fixes
+
+* **schema:** always serialize `additionalProperties: false` ([6651c36](https://github.com/microsoft/OpenAPI.NET/commit/6651c36ff341329c053776d65b36b1b7fa9dd3ea))
+* **schema:** always serialize `additionalProperties: false` ([e36fc95](https://github.com/microsoft/OpenAPI.NET/commit/e36fc9565bce42916eb7bf64d1f74d491dd1f407))
+
## [3.1.0](https://github.com/microsoft/OpenAPI.NET/compare/v3.0.3...v3.1.0) (2025-12-17)
### Features
diff --git a/Directory.Build.props b/Directory.Build.props
index 11a996a34..5aba3b052 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -12,7 +12,7 @@
https://github.com/Microsoft/OpenAPI.NET
© Microsoft Corporation. All rights reserved.
OpenAPI .NET
- 3.1.0
+ 3.1.1
From 82177a457784e9ed9fbd35f34b4d1b013997d269 Mon Sep 17 00:00:00 2001
From: Vincent Biret
Date: Fri, 19 Dec 2025 14:29:19 -0500
Subject: [PATCH 05/19] docs: adds instructions to update public reference docs
after nuget release
Signed-off-by: Vincent Biret
---
.azure-pipelines/ci-build.yml | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/.azure-pipelines/ci-build.yml b/.azure-pipelines/ci-build.yml
index 8921e7112..53b181b22 100644
--- a/.azure-pipelines/ci-build.yml
+++ b/.azure-pipelines/ci-build.yml
@@ -472,4 +472,8 @@ extends:
-t "$(REGISTRY)/$(IMAGE_NAME):${VERSION}" \
"$(Pipeline.Workspace)"
displayName: 'Build and Push Release Image'
- condition: contains(variables['Build.SourceBranch'], 'refs/tags/v')
\ No newline at end of file
+ condition: contains(variables['Build.SourceBranch'], 'refs/tags/v')
+
+# once the nuget has been released, fill this form to get the public documentation updated.
+# https://dev.azure.com/msft-skilling/Content/_workitems/create/User%20Story?templateId=39fb91e3-64a2-4c8a-83db-b2bdf3603dd3&ownerId=c4a28f90-17ae-4384-b514-7273392b082b
+# https://learn.microsoft.com/en-us/dotnet/api/microsoft.openapi
From 931a3929fc14dc15f862b98bc03e52236a1a8e03 Mon Sep 17 00:00:00 2001
From: Vincent Biret
Date: Mon, 22 Dec 2025 13:21:08 -0500
Subject: [PATCH 06/19] chore: adds 3.2 version to the workbench chore: sets
3.2 as default version for the workbench
Signed-off-by: Vincent Biret
---
src/Microsoft.OpenApi.Workbench/MainModel.cs | 2 +-
src/Microsoft.OpenApi.Workbench/MainWindow.xaml | 5 +++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/Microsoft.OpenApi.Workbench/MainModel.cs b/src/Microsoft.OpenApi.Workbench/MainModel.cs
index 660fcc5ed..08bfbd001 100644
--- a/src/Microsoft.OpenApi.Workbench/MainModel.cs
+++ b/src/Microsoft.OpenApi.Workbench/MainModel.cs
@@ -42,7 +42,7 @@ public class MainModel : INotifyPropertyChanged
///
/// Default version.
///
- private OpenApiSpecVersion _version = OpenApiSpecVersion.OpenApi3_0;
+ private OpenApiSpecVersion _version = OpenApiSpecVersion.OpenApi3_2;
private static readonly HttpClient _httpClient = new();
diff --git a/src/Microsoft.OpenApi.Workbench/MainWindow.xaml b/src/Microsoft.OpenApi.Workbench/MainWindow.xaml
index 32c14659d..87e219796 100644
--- a/src/Microsoft.OpenApi.Workbench/MainWindow.xaml
+++ b/src/Microsoft.OpenApi.Workbench/MainWindow.xaml
@@ -40,8 +40,9 @@
-
-
+
+
+
From 2495dea83fef872752120edeb842be492a0723d4 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 22 Dec 2025 18:53:09 +0000
Subject: [PATCH 07/19] Initial plan
From 50b44aad12d8fa86a46f7f6d62896a7b1c344d2e Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 22 Dec 2025 19:07:23 +0000
Subject: [PATCH 08/19] fix: wrap extension parser calls in try-catch to ensure
correct error pointers
When extension parsers throw OpenApiException, the exceptions are now caught in LoadExtension methods across all OpenAPI versions (V2, V3, V3.1, V3.2). This ensures the error pointer correctly includes all path segments (e.g., #/definitions/demo/x-tag instead of #/definitions/x-tag).
Co-authored-by: baywet <7905502+baywet@users.noreply.github.com>
---
.../Reader/V2/OpenApiV2Deserializer.cs | 11 +-
.../Reader/V3/OpenApiV3Deserializer.cs | 23 ++--
.../Reader/V31/OpenApiV31Deserializer.cs | 17 ++-
.../Reader/V32/OpenApiV32Deserializer.cs | 17 ++-
.../TestCustomExtension.cs | 102 ++++++++++++++++++
5 files changed, 156 insertions(+), 14 deletions(-)
diff --git a/src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs b/src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs
index c640b310c..2b075c1bc 100644
--- a/src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs
@@ -79,7 +79,16 @@ private static IOpenApiExtension LoadExtension(string name, ParseNode node)
{
if (node.Context.ExtensionParsers is not null && node.Context.ExtensionParsers.TryGetValue(name, out var parser))
{
- return parser(node.CreateAny(), OpenApiSpecVersion.OpenApi2_0);
+ try
+ {
+ return parser(node.CreateAny(), OpenApiSpecVersion.OpenApi2_0);
+ }
+ catch (OpenApiException ex)
+ {
+ ex.Pointer = node.Context.GetLocation();
+ node.Context.Diagnostic.Errors.Add(new(ex));
+ return new JsonNodeExtension(node.CreateAny());
+ }
}
else
{
diff --git a/src/Microsoft.OpenApi/Reader/V3/OpenApiV3Deserializer.cs b/src/Microsoft.OpenApi/Reader/V3/OpenApiV3Deserializer.cs
index 0b74cedc5..1a03268d6 100644
--- a/src/Microsoft.OpenApi/Reader/V3/OpenApiV3Deserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V3/OpenApiV3Deserializer.cs
@@ -130,15 +130,24 @@ public static JsonNodeExtension LoadAny(ParseNode node, OpenApiDocument hostDocu
private static IOpenApiExtension LoadExtension(string name, ParseNode node)
{
- if (node.Context.ExtensionParsers is not null && node.Context.ExtensionParsers.TryGetValue(name, out var parser) && parser(
- node.CreateAny(), OpenApiSpecVersion.OpenApi3_0) is { } result)
+ if (node.Context.ExtensionParsers is not null && node.Context.ExtensionParsers.TryGetValue(name, out var parser))
{
- return result;
- }
- else
- {
- return new JsonNodeExtension(node.CreateAny());
+ try
+ {
+ var result = parser(node.CreateAny(), OpenApiSpecVersion.OpenApi3_0);
+ if (result is { })
+ {
+ return result;
+ }
+ }
+ catch (OpenApiException ex)
+ {
+ ex.Pointer = node.Context.GetLocation();
+ node.Context.Diagnostic.Errors.Add(new(ex));
+ }
}
+
+ return new JsonNodeExtension(node.CreateAny());
}
private static string? LoadString(ParseNode node)
diff --git a/src/Microsoft.OpenApi/Reader/V31/OpenApiV31Deserializer.cs b/src/Microsoft.OpenApi/Reader/V31/OpenApiV31Deserializer.cs
index 08f2ec048..3608ad5f7 100644
--- a/src/Microsoft.OpenApi/Reader/V31/OpenApiV31Deserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V31/OpenApiV31Deserializer.cs
@@ -131,9 +131,20 @@ public static JsonNode LoadAny(ParseNode node, OpenApiDocument hostDocument)
private static IOpenApiExtension LoadExtension(string name, ParseNode node)
{
- return node.Context.ExtensionParsers is not null && node.Context.ExtensionParsers.TryGetValue(name, out var parser)
- ? parser(node.CreateAny(), OpenApiSpecVersion.OpenApi3_1)
- : new JsonNodeExtension(node.CreateAny());
+ if (node.Context.ExtensionParsers is not null && node.Context.ExtensionParsers.TryGetValue(name, out var parser))
+ {
+ try
+ {
+ return parser(node.CreateAny(), OpenApiSpecVersion.OpenApi3_1);
+ }
+ catch (OpenApiException ex)
+ {
+ ex.Pointer = node.Context.GetLocation();
+ node.Context.Diagnostic.Errors.Add(new(ex));
+ }
+ }
+
+ return new JsonNodeExtension(node.CreateAny());
}
private static string? LoadString(ParseNode node)
diff --git a/src/Microsoft.OpenApi/Reader/V32/OpenApiV32Deserializer.cs b/src/Microsoft.OpenApi/Reader/V32/OpenApiV32Deserializer.cs
index 9b062931d..55f45b38e 100644
--- a/src/Microsoft.OpenApi/Reader/V32/OpenApiV32Deserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V32/OpenApiV32Deserializer.cs
@@ -131,9 +131,20 @@ public static JsonNode LoadAny(ParseNode node, OpenApiDocument hostDocument)
private static IOpenApiExtension LoadExtension(string name, ParseNode node)
{
- return node.Context.ExtensionParsers is not null && node.Context.ExtensionParsers.TryGetValue(name, out var parser)
- ? parser(node.CreateAny(), OpenApiSpecVersion.OpenApi3_2)
- : new JsonNodeExtension(node.CreateAny());
+ if (node.Context.ExtensionParsers is not null && node.Context.ExtensionParsers.TryGetValue(name, out var parser))
+ {
+ try
+ {
+ return parser(node.CreateAny(), OpenApiSpecVersion.OpenApi3_2);
+ }
+ catch (OpenApiException ex)
+ {
+ ex.Pointer = node.Context.GetLocation();
+ node.Context.Diagnostic.Errors.Add(new(ex));
+ }
+ }
+
+ return new JsonNodeExtension(node.CreateAny());
}
private static string? LoadString(ParseNode node)
diff --git a/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs b/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs
index 57f55e95e..1964ea61b 100644
--- a/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs
+++ b/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs
@@ -44,6 +44,108 @@ public void ParseCustomExtension()
Assert.Equal("hey", fooExtension.Bar);
Assert.Equal("hi!", fooExtension.Baz);
}
+
+ [Fact]
+ public void ExtensionParserThrowingOpenApiException_V2_ShouldHaveCorrectPointer()
+ {
+ var json = @"{
+ ""swagger"": ""2.0"",
+ ""info"": {
+ ""title"": ""Demo"",
+ ""version"": ""1""
+ },
+ ""paths"": {},
+ ""definitions"": {
+ ""demo"": {
+ ""x-tag"": null
+ }
+ }
+}";
+ var settings = new OpenApiReaderSettings
+ {
+ ExtensionParsers =
+ {
+ { "x-tag", (any, version) => throw new OpenApiException("Testing") }
+ }
+ };
+
+ var result = OpenApiDocument.Parse(json, "json", settings);
+
+ Assert.NotNull(result.Diagnostic);
+ Assert.NotEmpty(result.Diagnostic.Errors);
+ var error = result.Diagnostic.Errors[0];
+ Assert.Equal("Testing", error.Message);
+ Assert.Equal("#/definitions/demo/x-tag", error.Pointer);
+ }
+
+ [Fact]
+ public void ExtensionParserThrowingOpenApiException_V3_ShouldHaveCorrectPointer()
+ {
+ var json = @"{
+ ""openapi"": ""3.0.0"",
+ ""info"": {
+ ""title"": ""Demo"",
+ ""version"": ""1""
+ },
+ ""paths"": {},
+ ""components"": {
+ ""schemas"": {
+ ""demo"": {
+ ""x-tag"": null
+ }
+ }
+ }
+}";
+ var settings = new OpenApiReaderSettings
+ {
+ ExtensionParsers =
+ {
+ { "x-tag", (any, version) => throw new OpenApiException("Testing") }
+ }
+ };
+
+ var result = OpenApiDocument.Parse(json, "json", settings);
+
+ Assert.NotNull(result.Diagnostic);
+ Assert.NotEmpty(result.Diagnostic.Errors);
+ var error = result.Diagnostic.Errors[0];
+ Assert.Equal("Testing", error.Message);
+ Assert.Equal("#/components/schemas/demo/x-tag", error.Pointer);
+ }
+
+ [Fact]
+ public void ExtensionParserThrowingOpenApiException_V31_ShouldHaveCorrectPointer()
+ {
+ var json = @"{
+ ""openapi"": ""3.1.0"",
+ ""info"": {
+ ""title"": ""Demo"",
+ ""version"": ""1""
+ },
+ ""components"": {
+ ""schemas"": {
+ ""demo"": {
+ ""x-tag"": null
+ }
+ }
+ }
+}";
+ var settings = new OpenApiReaderSettings
+ {
+ ExtensionParsers =
+ {
+ { "x-tag", (any, version) => throw new OpenApiException("Testing") }
+ }
+ };
+
+ var result = OpenApiDocument.Parse(json, "json", settings);
+
+ Assert.NotNull(result.Diagnostic);
+ Assert.NotEmpty(result.Diagnostic.Errors);
+ var error = result.Diagnostic.Errors[0];
+ Assert.Equal("Testing", error.Message);
+ Assert.Equal("#/components/schemas/demo/x-tag", error.Pointer);
+ }
}
internal class FooExtension : IOpenApiExtension, IOpenApiElement
From 12f649959fe73d76c36a51f0126b41f14f4823fd Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 22 Dec 2025 19:10:01 +0000
Subject: [PATCH 09/19] refactor: make V2 LoadExtension consistent with other
versions
Moved the return statement for JsonNodeExtension outside the catch block to match the pattern used in V3, V31, and V32 deserializers.
Co-authored-by: baywet <7905502+baywet@users.noreply.github.com>
---
src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs b/src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs
index 2b075c1bc..80d079b5e 100644
--- a/src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs
@@ -87,13 +87,10 @@ private static IOpenApiExtension LoadExtension(string name, ParseNode node)
{
ex.Pointer = node.Context.GetLocation();
node.Context.Diagnostic.Errors.Add(new(ex));
- return new JsonNodeExtension(node.CreateAny());
}
}
- else
- {
- return new JsonNodeExtension(node.CreateAny());
- }
+
+ return new JsonNodeExtension(node.CreateAny());
}
private static string? LoadString(ParseNode node)
From e85698a4172a874c33eba6c902d60f975e51e887 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 22 Dec 2025 19:20:54 +0000
Subject: [PATCH 10/19] style: use raw string literals for JSON test data
Changed from verbatim string literals (@"...") to raw string literals ("""...""") for consistency with existing test code.
Co-authored-by: baywet <7905502+baywet@users.noreply.github.com>
---
.../TestCustomExtension.cs | 68 ++++++++++---------
1 file changed, 37 insertions(+), 31 deletions(-)
diff --git a/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs b/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs
index 1964ea61b..b12a56d31 100644
--- a/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs
+++ b/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs
@@ -48,19 +48,21 @@ public void ParseCustomExtension()
[Fact]
public void ExtensionParserThrowingOpenApiException_V2_ShouldHaveCorrectPointer()
{
- var json = @"{
- ""swagger"": ""2.0"",
- ""info"": {
- ""title"": ""Demo"",
- ""version"": ""1""
+ var json = """
+{
+ "swagger": "2.0",
+ "info": {
+ "title": "Demo",
+ "version": "1"
},
- ""paths"": {},
- ""definitions"": {
- ""demo"": {
- ""x-tag"": null
+ "paths": {},
+ "definitions": {
+ "demo": {
+ "x-tag": null
}
}
-}";
+}
+""";
var settings = new OpenApiReaderSettings
{
ExtensionParsers =
@@ -81,21 +83,23 @@ public void ExtensionParserThrowingOpenApiException_V2_ShouldHaveCorrectPointer(
[Fact]
public void ExtensionParserThrowingOpenApiException_V3_ShouldHaveCorrectPointer()
{
- var json = @"{
- ""openapi"": ""3.0.0"",
- ""info"": {
- ""title"": ""Demo"",
- ""version"": ""1""
+ var json = """
+{
+ "openapi": "3.0.0",
+ "info": {
+ "title": "Demo",
+ "version": "1"
},
- ""paths"": {},
- ""components"": {
- ""schemas"": {
- ""demo"": {
- ""x-tag"": null
+ "paths": {},
+ "components": {
+ "schemas": {
+ "demo": {
+ "x-tag": null
}
}
}
-}";
+}
+""";
var settings = new OpenApiReaderSettings
{
ExtensionParsers =
@@ -116,20 +120,22 @@ public void ExtensionParserThrowingOpenApiException_V3_ShouldHaveCorrectPointer(
[Fact]
public void ExtensionParserThrowingOpenApiException_V31_ShouldHaveCorrectPointer()
{
- var json = @"{
- ""openapi"": ""3.1.0"",
- ""info"": {
- ""title"": ""Demo"",
- ""version"": ""1""
+ var json = """
+{
+ "openapi": "3.1.0",
+ "info": {
+ "title": "Demo",
+ "version": "1"
},
- ""components"": {
- ""schemas"": {
- ""demo"": {
- ""x-tag"": null
+ "components": {
+ "schemas": {
+ "demo": {
+ "x-tag": null
}
}
}
-}";
+}
+""";
var settings = new OpenApiReaderSettings
{
ExtensionParsers =
From 8021a752fb5516ccf749bd3628f860bf3f0848c0 Mon Sep 17 00:00:00 2001
From: Vincent Biret
Date: Mon, 22 Dec 2025 14:42:22 -0500
Subject: [PATCH 11/19] chore: refactors test definition for better coverage
Signed-off-by: Vincent Biret
---
.../TestCustomExtension.cs | 47 +++----------------
1 file changed, 7 insertions(+), 40 deletions(-)
diff --git a/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs b/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs
index b12a56d31..9f4404c05 100644
--- a/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs
+++ b/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs
@@ -80,12 +80,15 @@ public void ExtensionParserThrowingOpenApiException_V2_ShouldHaveCorrectPointer(
Assert.Equal("#/definitions/demo/x-tag", error.Pointer);
}
- [Fact]
- public void ExtensionParserThrowingOpenApiException_V3_ShouldHaveCorrectPointer()
+ [Theory]
+ [InlineData("3.0.4")]
+ [InlineData("3.1.1")]
+ [InlineData("3.2.0")]
+ public void ExtensionParserThrowingOpenApiException_V3_ShouldHaveCorrectPointer(string version)
{
- var json = """
+ var json = $$"""
{
- "openapi": "3.0.0",
+ "openapi": "{{version}}",
"info": {
"title": "Demo",
"version": "1"
@@ -116,42 +119,6 @@ public void ExtensionParserThrowingOpenApiException_V3_ShouldHaveCorrectPointer(
Assert.Equal("Testing", error.Message);
Assert.Equal("#/components/schemas/demo/x-tag", error.Pointer);
}
-
- [Fact]
- public void ExtensionParserThrowingOpenApiException_V31_ShouldHaveCorrectPointer()
- {
- var json = """
-{
- "openapi": "3.1.0",
- "info": {
- "title": "Demo",
- "version": "1"
- },
- "components": {
- "schemas": {
- "demo": {
- "x-tag": null
- }
- }
- }
-}
-""";
- var settings = new OpenApiReaderSettings
- {
- ExtensionParsers =
- {
- { "x-tag", (any, version) => throw new OpenApiException("Testing") }
- }
- };
-
- var result = OpenApiDocument.Parse(json, "json", settings);
-
- Assert.NotNull(result.Diagnostic);
- Assert.NotEmpty(result.Diagnostic.Errors);
- var error = result.Diagnostic.Errors[0];
- Assert.Equal("Testing", error.Message);
- Assert.Equal("#/components/schemas/demo/x-tag", error.Pointer);
- }
}
internal class FooExtension : IOpenApiExtension, IOpenApiElement
From 458cabe6cd0fbdb192dbd17f2d6ab3b8162d1166 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 22 Dec 2025 19:07:23 +0000
Subject: [PATCH 12/19] fix: wrap extension parser calls in try-catch to ensure
correct error pointers
When extension parsers throw OpenApiException, the exceptions are now caught in LoadExtension methods across all OpenAPI versions (V2, V3, V3.1, V3.2). This ensures the error pointer correctly includes all path segments (e.g., #/definitions/demo/x-tag instead of #/definitions/x-tag).
Co-authored-by: baywet <7905502+baywet@users.noreply.github.com>
refactor: make V2 LoadExtension consistent with other versions
Moved the return statement for JsonNodeExtension outside the catch block to match the pattern used in V3, V31, and V32 deserializers.
Co-authored-by: baywet <7905502+baywet@users.noreply.github.com>
style: use raw string literals for JSON test data
Changed from verbatim string literals (@"...") to raw string literals ("""...""") for consistency with existing test code.
Co-authored-by: baywet <7905502+baywet@users.noreply.github.com>
chore: refactors test definition for better coverage
Signed-off-by: Vincent Biret
chore: removes extraneous version
---
.../Reader/V2/OpenApiV2Deserializer.cs | 16 ++--
.../Reader/V3/OpenApiV3Deserializer.cs | 23 ++++--
.../Reader/V31/OpenApiV31Deserializer.cs | 17 ++++-
.../TestCustomExtension.cs | 74 +++++++++++++++++++
4 files changed, 115 insertions(+), 15 deletions(-)
diff --git a/src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs b/src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs
index c640b310c..80d079b5e 100644
--- a/src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V2/OpenApiV2Deserializer.cs
@@ -79,12 +79,18 @@ private static IOpenApiExtension LoadExtension(string name, ParseNode node)
{
if (node.Context.ExtensionParsers is not null && node.Context.ExtensionParsers.TryGetValue(name, out var parser))
{
- return parser(node.CreateAny(), OpenApiSpecVersion.OpenApi2_0);
- }
- else
- {
- return new JsonNodeExtension(node.CreateAny());
+ try
+ {
+ return parser(node.CreateAny(), OpenApiSpecVersion.OpenApi2_0);
+ }
+ catch (OpenApiException ex)
+ {
+ ex.Pointer = node.Context.GetLocation();
+ node.Context.Diagnostic.Errors.Add(new(ex));
+ }
}
+
+ return new JsonNodeExtension(node.CreateAny());
}
private static string? LoadString(ParseNode node)
diff --git a/src/Microsoft.OpenApi/Reader/V3/OpenApiV3Deserializer.cs b/src/Microsoft.OpenApi/Reader/V3/OpenApiV3Deserializer.cs
index 0b74cedc5..1a03268d6 100644
--- a/src/Microsoft.OpenApi/Reader/V3/OpenApiV3Deserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V3/OpenApiV3Deserializer.cs
@@ -130,15 +130,24 @@ public static JsonNodeExtension LoadAny(ParseNode node, OpenApiDocument hostDocu
private static IOpenApiExtension LoadExtension(string name, ParseNode node)
{
- if (node.Context.ExtensionParsers is not null && node.Context.ExtensionParsers.TryGetValue(name, out var parser) && parser(
- node.CreateAny(), OpenApiSpecVersion.OpenApi3_0) is { } result)
+ if (node.Context.ExtensionParsers is not null && node.Context.ExtensionParsers.TryGetValue(name, out var parser))
{
- return result;
- }
- else
- {
- return new JsonNodeExtension(node.CreateAny());
+ try
+ {
+ var result = parser(node.CreateAny(), OpenApiSpecVersion.OpenApi3_0);
+ if (result is { })
+ {
+ return result;
+ }
+ }
+ catch (OpenApiException ex)
+ {
+ ex.Pointer = node.Context.GetLocation();
+ node.Context.Diagnostic.Errors.Add(new(ex));
+ }
}
+
+ return new JsonNodeExtension(node.CreateAny());
}
private static string? LoadString(ParseNode node)
diff --git a/src/Microsoft.OpenApi/Reader/V31/OpenApiV31Deserializer.cs b/src/Microsoft.OpenApi/Reader/V31/OpenApiV31Deserializer.cs
index 08f2ec048..3608ad5f7 100644
--- a/src/Microsoft.OpenApi/Reader/V31/OpenApiV31Deserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V31/OpenApiV31Deserializer.cs
@@ -131,9 +131,20 @@ public static JsonNode LoadAny(ParseNode node, OpenApiDocument hostDocument)
private static IOpenApiExtension LoadExtension(string name, ParseNode node)
{
- return node.Context.ExtensionParsers is not null && node.Context.ExtensionParsers.TryGetValue(name, out var parser)
- ? parser(node.CreateAny(), OpenApiSpecVersion.OpenApi3_1)
- : new JsonNodeExtension(node.CreateAny());
+ if (node.Context.ExtensionParsers is not null && node.Context.ExtensionParsers.TryGetValue(name, out var parser))
+ {
+ try
+ {
+ return parser(node.CreateAny(), OpenApiSpecVersion.OpenApi3_1);
+ }
+ catch (OpenApiException ex)
+ {
+ ex.Pointer = node.Context.GetLocation();
+ node.Context.Diagnostic.Errors.Add(new(ex));
+ }
+ }
+
+ return new JsonNodeExtension(node.CreateAny());
}
private static string? LoadString(ParseNode node)
diff --git a/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs b/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs
index 57f55e95e..96de89cf9 100644
--- a/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs
+++ b/test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs
@@ -44,6 +44,80 @@ public void ParseCustomExtension()
Assert.Equal("hey", fooExtension.Bar);
Assert.Equal("hi!", fooExtension.Baz);
}
+
+ [Fact]
+ public void ExtensionParserThrowingOpenApiException_V2_ShouldHaveCorrectPointer()
+ {
+ var json = """
+{
+ "swagger": "2.0",
+ "info": {
+ "title": "Demo",
+ "version": "1"
+ },
+ "paths": {},
+ "definitions": {
+ "demo": {
+ "x-tag": null
+ }
+ }
+}
+""";
+ var settings = new OpenApiReaderSettings
+ {
+ ExtensionParsers =
+ {
+ { "x-tag", (any, version) => throw new OpenApiException("Testing") }
+ }
+ };
+
+ var result = OpenApiDocument.Parse(json, "json", settings);
+
+ Assert.NotNull(result.Diagnostic);
+ Assert.NotEmpty(result.Diagnostic.Errors);
+ var error = result.Diagnostic.Errors[0];
+ Assert.Equal("Testing", error.Message);
+ Assert.Equal("#/definitions/demo/x-tag", error.Pointer);
+ }
+
+ [Theory]
+ [InlineData("3.0.4")]
+ [InlineData("3.1.1")]
+ public void ExtensionParserThrowingOpenApiException_V3_ShouldHaveCorrectPointer(string version)
+ {
+ var json = $$"""
+{
+ "openapi": "{{version}}",
+ "info": {
+ "title": "Demo",
+ "version": "1"
+ },
+ "paths": {},
+ "components": {
+ "schemas": {
+ "demo": {
+ "x-tag": null
+ }
+ }
+ }
+}
+""";
+ var settings = new OpenApiReaderSettings
+ {
+ ExtensionParsers =
+ {
+ { "x-tag", (any, version) => throw new OpenApiException("Testing") }
+ }
+ };
+
+ var result = OpenApiDocument.Parse(json, "json", settings);
+
+ Assert.NotNull(result.Diagnostic);
+ Assert.NotEmpty(result.Diagnostic.Errors);
+ var error = result.Diagnostic.Errors[0];
+ Assert.Equal("Testing", error.Message);
+ Assert.Equal("#/components/schemas/demo/x-tag", error.Pointer);
+ }
}
internal class FooExtension : IOpenApiExtension, IOpenApiElement
From aeffc9832f2aac1f1e65c0b6ae0a73fb10560900 Mon Sep 17 00:00:00 2001
From: "release-please-token-provider[bot]"
<225477224+release-please-token-provider[bot]@users.noreply.github.com>
Date: Mon, 22 Dec 2025 20:20:29 +0000
Subject: [PATCH 13/19] chore(support/v2): release 2.4.2
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 8 ++++++++
Directory.Build.props | 2 +-
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index adf5fd769..bd1ba1cb3 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "2.4.1"
+ ".": "2.4.2"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7414944db..b7d9b73f6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## [2.4.2](https://github.com/microsoft/OpenAPI.NET/compare/v2.4.1...v2.4.2) (2025-12-22)
+
+
+### Bug Fixes
+
+* wrap extension parser calls in try-catch to ensure correct error pointers ([63cf4a3](https://github.com/microsoft/OpenAPI.NET/commit/63cf4a3029fe2d285a6fe2724e30ffcf3bdd2f9f))
+* wrap extension parser calls in try-catch to ensure correct error pointers ([458cabe](https://github.com/microsoft/OpenAPI.NET/commit/458cabe6cd0fbdb192dbd17f2d6ab3b8162d1166))
+
## [2.4.1](https://github.com/microsoft/OpenAPI.NET/compare/v2.4.0...v2.4.1) (2025-12-18)
diff --git a/Directory.Build.props b/Directory.Build.props
index 2d0fc7255..a64e378aa 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -12,7 +12,7 @@
https://github.com/Microsoft/OpenAPI.NET
© Microsoft Corporation. All rights reserved.
OpenAPI .NET
- 2.4.1
+ 2.4.2
From d0cae6626ae17cd64db584885de12cec6c80ce1f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 5 Jan 2026 21:01:46 +0000
Subject: [PATCH 14/19] chore(deps): bump dependabot/fetch-metadata from 2.4.0
to 2.5.0
Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 2.4.0 to 2.5.0.
- [Release notes](https://github.com/dependabot/fetch-metadata/releases)
- [Commits](https://github.com/dependabot/fetch-metadata/compare/v2.4.0...v2.5.0)
---
updated-dependencies:
- dependency-name: dependabot/fetch-metadata
dependency-version: 2.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
.github/workflows/auto-merge-dependabot.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/auto-merge-dependabot.yml b/.github/workflows/auto-merge-dependabot.yml
index d454cd186..ba2243c97 100644
--- a/.github/workflows/auto-merge-dependabot.yml
+++ b/.github/workflows/auto-merge-dependabot.yml
@@ -19,7 +19,7 @@ jobs:
steps:
- name: Dependabot metadata
id: metadata
- uses: dependabot/fetch-metadata@v2.4.0
+ uses: dependabot/fetch-metadata@v2.5.0
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
From 9792817c391be1b631a57462e0b417aa04c5f3d4 Mon Sep 17 00:00:00 2001
From: Vincent Biret
Date: Tue, 6 Jan 2026 08:16:45 -0500
Subject: [PATCH 15/19] docs: updates versions to clarify the ranges
---
docs/upgrade-guide-3.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/upgrade-guide-3.md b/docs/upgrade-guide-3.md
index e874a8998..49e467d24 100644
--- a/docs/upgrade-guide-3.md
+++ b/docs/upgrade-guide-3.md
@@ -11,11 +11,11 @@ We are excited to announce OpenAPI.NET v3.0! This major update introduces suppor
If you are using this library with [AspNetCore OpenAPI versions](https://www.nuget.org/packages/Microsoft.AspNetCore.OpenApi) `< 10.0` then you must remain on version `1.x` as it's not compatible with version 3 or above of this library.
-If you are using this library with [AspNetCore OpenAPI versions](https://www.nuget.org/packages/Microsoft.AspNetCore.OpenApi) `= 10.0` then you must remain on version `2.x` as it's not compatible with version 3 or above of this library.
+If you are using this library with [AspNetCore OpenAPI versions](https://www.nuget.org/packages/Microsoft.AspNetCore.OpenApi) `= 10.X` then you must remain on version `2.x` as it's not compatible with version 3 or above of this library.
If you are using this library with [Swashbuckle.AspNetCore version](https://www.nuget.org/packages/Swashbuckle.AspNetCore/) `< 10.0` then you must remain on version `1.x` as it's not compatible with version 3 or above of this library.
-If you are using this library with [Swashbuckle.AspNetCore version](https://www.nuget.org/packages/Swashbuckle.AspNetCore/) `= 10.0` then you must remain on version `2.x` as it's not compatible with version 3 or above of this library.
+If you are using this library with [Swashbuckle.AspNetCore version](https://www.nuget.org/packages/Swashbuckle.AspNetCore/) `= 10.X` then you must remain on version `2.x` as it's not compatible with version 3 or above of this library.
The latest support policy information for this library, and integration with ASP.NET Core can be found on [the contributing documentation](https://github.com/microsoft/OpenAPI.NET/blob/main/CONTRIBUTING.md#branches-and-support-policy).
From 4e4f4c6ed737bb759fce508cd2a6e8dd3c4e2084 Mon Sep 17 00:00:00 2001
From: "release-please-token-provider[bot]"
<225477224+release-please-token-provider[bot]@users.noreply.github.com>
Date: Tue, 6 Jan 2026 15:00:35 +0000
Subject: [PATCH 16/19] chore(main): release 3.1.2
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 8 ++++++++
Directory.Build.props | 2 +-
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 89c23baca..9d7db69f9 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "3.1.1"
+ ".": "3.1.2"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index be4068a9a..ed99a1173 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## [3.1.2](https://github.com/microsoft/OpenAPI.NET/compare/v3.1.1...v3.1.2) (2026-01-06)
+
+
+### Bug Fixes
+
+* correct error pointer when extension parser throws OpenApiException ([43c75a9](https://github.com/microsoft/OpenAPI.NET/commit/43c75a90746344fcc975611100e995fe4045edf0))
+* wrap extension parser calls in try-catch to ensure correct error pointers ([50b44aa](https://github.com/microsoft/OpenAPI.NET/commit/50b44aad12d8fa86a46f7f6d62896a7b1c344d2e))
+
## [3.1.1](https://github.com/microsoft/OpenAPI.NET/compare/v3.1.0...v3.1.1) (2025-12-18)
diff --git a/Directory.Build.props b/Directory.Build.props
index 5aba3b052..c1b6e63d1 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -12,7 +12,7 @@
https://github.com/Microsoft/OpenAPI.NET
© Microsoft Corporation. All rights reserved.
OpenAPI .NET
- 3.1.1
+ 3.1.2
From aef319c3093837b8ebb03c77f08f18ac9ad1a85d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 13 Jan 2026 21:25:18 +0000
Subject: [PATCH 17/19] chore(deps): bump dotnet-sdk from 8.0.416 to 8.0.417
Bumps [dotnet-sdk](https://github.com/dotnet/sdk) from 8.0.416 to 8.0.417.
- [Release notes](https://github.com/dotnet/sdk/releases)
- [Commits](https://github.com/dotnet/sdk/compare/v8.0.416...v8.0.417)
---
updated-dependencies:
- dependency-name: dotnet-sdk
dependency-version: 8.0.417
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
global.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/global.json b/global.json
index 3d946171e..4ca757b0e 100644
--- a/global.json
+++ b/global.json
@@ -1,5 +1,5 @@
{
"sdk": {
- "version": "8.0.416"
+ "version": "8.0.417"
}
}
\ No newline at end of file
From b05d54a75207f60e93592b9dc053db3ade5cbf75 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 13 Jan 2026 21:25:54 +0000
Subject: [PATCH 18/19] Bump the microsoftextensions group with 6 updates
Bumps Microsoft.Extensions.DependencyInjection from 10.0.1 to 10.0.2
Bumps Microsoft.Extensions.Logging from 10.0.1 to 10.0.2
Bumps Microsoft.Extensions.Logging.Abstractions from 10.0.1 to 10.0.2
Bumps Microsoft.Extensions.Logging.Console from 10.0.1 to 10.0.2
Bumps Microsoft.Extensions.Logging.Debug from 10.0.1 to 10.0.2
Bumps System.Text.Json from 10.0.1 to 10.0.2
---
updated-dependencies:
- dependency-name: Microsoft.Extensions.DependencyInjection
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: microsoftextensions
- dependency-name: Microsoft.Extensions.Logging
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: microsoftextensions
- dependency-name: Microsoft.Extensions.Logging
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: microsoftextensions
- dependency-name: Microsoft.Extensions.Logging.Abstractions
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: microsoftextensions
- dependency-name: Microsoft.Extensions.Logging.Console
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: microsoftextensions
- dependency-name: System.Text.Json
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: microsoftextensions
- dependency-name: Microsoft.Extensions.Logging.Console
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: microsoftextensions
- dependency-name: Microsoft.Extensions.Logging.Debug
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: microsoftextensions
- dependency-name: Microsoft.Extensions.Logging.Debug
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: microsoftextensions
...
Signed-off-by: dependabot[bot]
---
performance/resultsComparer/resultsComparer.csproj | 10 +++++-----
.../Microsoft.OpenApi.Hidi.csproj | 8 ++++----
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/performance/resultsComparer/resultsComparer.csproj b/performance/resultsComparer/resultsComparer.csproj
index aab8f01bb..248caf5fa 100644
--- a/performance/resultsComparer/resultsComparer.csproj
+++ b/performance/resultsComparer/resultsComparer.csproj
@@ -8,12 +8,12 @@
-
-
-
-
+
+
+
+
-
+
diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj
index 458972ef0..2e955f3a6 100644
--- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj
+++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj
@@ -29,10 +29,10 @@
-
-
-
-
+
+
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
From eb07dc202cb6c4a2478f3251ee8c149808997b9f Mon Sep 17 00:00:00 2001
From: Vincent Biret
Date: Wed, 14 Jan 2026 10:49:02 -0500
Subject: [PATCH 19/19] chore: aligns STJ package to avoid dependency downgrade
---
.../Microsoft.OpenApi.Readers.Tests.csproj | 2 +-
test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj b/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj
index a49f77ebd..95365132f 100644
--- a/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj
+++ b/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj
index 6913fdd97..8792e4404 100644
--- a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj
+++ b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj
@@ -13,7 +13,7 @@
-
+