diff --git a/eng/Versions.props b/eng/Versions.props
index d758a5e19c9f..ca9d7be96f9e 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -191,8 +191,8 @@
$(XunitVersion)
3.1.3
5.2.2
- 2.0.0
- 2.0.0
+ 3.3.1
+ 3.3.1
6.0.322601
1.10.93
diff --git a/src/OpenApi/gen/XmlCommentGenerator.Emitter.cs b/src/OpenApi/gen/XmlCommentGenerator.Emitter.cs
index 2dd60e993cc9..82864654e936 100644
--- a/src/OpenApi/gen/XmlCommentGenerator.Emitter.cs
+++ b/src/OpenApi/gen/XmlCommentGenerator.Emitter.cs
@@ -413,7 +413,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
{
continue;
}
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = jsonString.Parse();
}
@@ -475,7 +475,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
continue;
}
var parsedExample = jsonString.Parse();
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = parsedExample;
}
diff --git a/src/OpenApi/src/Services/OpenApiDocumentService.cs b/src/OpenApi/src/Services/OpenApiDocumentService.cs
index a2b070ae7981..89a33513afa6 100644
--- a/src/OpenApi/src/Services/OpenApiDocumentService.cs
+++ b/src/OpenApi/src/Services/OpenApiDocumentService.cs
@@ -418,7 +418,7 @@ private async Task GetResponseAsync(
var response = new OpenApiResponse
{
Description = apiResponseType.Description ?? ReasonPhrases.GetReasonPhrase(statusCode),
- Content = new Dictionary()
+ Content = new Dictionary()
};
// ApiResponseFormats aggregates information about the supported response content types
@@ -576,7 +576,7 @@ private async Task GetFormRequestBody(
// serializing a form collection from an empty body. Instead, requiredness
// must be set on a per-parameter basis. See below.
Required = true,
- Content = new Dictionary()
+ Content = new Dictionary()
};
var schema = new OpenApiSchema { Type = JsonSchemaType.Object, Properties = new Dictionary() };
@@ -750,7 +750,7 @@ private async Task GetJsonRequestBody(
var requestBody = new OpenApiRequestBody
{
Required = IsRequired(bodyParameter),
- Content = new Dictionary(),
+ Content = new Dictionary(),
Description = GetParameterDescriptionFromAttribute(bodyParameter)
};
diff --git a/src/OpenApi/src/Services/OpenApiGenerator.cs b/src/OpenApi/src/Services/OpenApiGenerator.cs
index 6257f7fa2fea..db8a1ba35ec1 100644
--- a/src/OpenApi/src/Services/OpenApiGenerator.cs
+++ b/src/OpenApi/src/Services/OpenApiGenerator.cs
@@ -197,7 +197,7 @@ private static OpenApiResponses GetOpenApiResponses(MethodInfo method, EndpointM
// TODO: Use the discarded response Type for schema generation
var (_, contentTypes) = annotation.Value;
- var responseContent = new Dictionary();
+ var responseContent = new Dictionary();
foreach (var contentType in contentTypes)
{
@@ -269,7 +269,7 @@ private static void GenerateDefaultResponses(Dictionary();
- var requestBodyContent = new Dictionary();
+ var requestBodyContent = new Dictionary();
if (acceptsMetadata is not null)
{
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/AddOpenApiTests.CanInterceptAddOpenApi#OpenApiXmlCommentSupport.generated.verified.cs b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/AddOpenApiTests.CanInterceptAddOpenApi#OpenApiXmlCommentSupport.generated.verified.cs
index c235ae4c3688..6c44a0094278 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/AddOpenApiTests.CanInterceptAddOpenApi#OpenApiXmlCommentSupport.generated.verified.cs
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/AddOpenApiTests.CanInterceptAddOpenApi#OpenApiXmlCommentSupport.generated.verified.cs
@@ -395,7 +395,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
{
continue;
}
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = jsonString.Parse();
}
@@ -457,7 +457,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
continue;
}
var parsedExample = jsonString.Parse();
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = parsedExample;
}
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/AdditionalTextsTests.CanHandleXmlForSchemasInAdditionalTexts#OpenApiXmlCommentSupport.generated.verified.cs b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/AdditionalTextsTests.CanHandleXmlForSchemasInAdditionalTexts#OpenApiXmlCommentSupport.generated.verified.cs
index 3affbf940068..0e41890976c0 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/AdditionalTextsTests.CanHandleXmlForSchemasInAdditionalTexts#OpenApiXmlCommentSupport.generated.verified.cs
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/AdditionalTextsTests.CanHandleXmlForSchemasInAdditionalTexts#OpenApiXmlCommentSupport.generated.verified.cs
@@ -424,7 +424,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
{
continue;
}
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = jsonString.Parse();
}
@@ -486,7 +486,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
continue;
}
var parsedExample = jsonString.Parse();
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = parsedExample;
}
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/CompletenessTests.SupportsAllXmlTagsOnSchemas#OpenApiXmlCommentSupport.generated.verified.cs b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/CompletenessTests.SupportsAllXmlTagsOnSchemas#OpenApiXmlCommentSupport.generated.verified.cs
index 7bb176e85405..4a0aaf7895bf 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/CompletenessTests.SupportsAllXmlTagsOnSchemas#OpenApiXmlCommentSupport.generated.verified.cs
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/CompletenessTests.SupportsAllXmlTagsOnSchemas#OpenApiXmlCommentSupport.generated.verified.cs
@@ -522,7 +522,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
{
continue;
}
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = jsonString.Parse();
}
@@ -584,7 +584,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
continue;
}
var parsedExample = jsonString.Parse();
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = parsedExample;
}
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsRouteParametersFromControllers#OpenApiXmlCommentSupport.generated.verified.cs b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsRouteParametersFromControllers#OpenApiXmlCommentSupport.generated.verified.cs
index 9f2b1de95ca8..e569ddc2f4a8 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsRouteParametersFromControllers#OpenApiXmlCommentSupport.generated.verified.cs
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsRouteParametersFromControllers#OpenApiXmlCommentSupport.generated.verified.cs
@@ -396,7 +396,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
{
continue;
}
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = jsonString.Parse();
}
@@ -458,7 +458,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
continue;
}
var parsedExample = jsonString.Parse();
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = parsedExample;
}
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsXmlCommentsOnOperationsFromControllers#OpenApiXmlCommentSupport.generated.verified.cs b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsXmlCommentsOnOperationsFromControllers#OpenApiXmlCommentSupport.generated.verified.cs
index 753c09661ae8..6ac0fcb221a9 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsXmlCommentsOnOperationsFromControllers#OpenApiXmlCommentSupport.generated.verified.cs
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsXmlCommentsOnOperationsFromControllers#OpenApiXmlCommentSupport.generated.verified.cs
@@ -399,7 +399,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
{
continue;
}
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = jsonString.Parse();
}
@@ -461,7 +461,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
continue;
}
var parsedExample = jsonString.Parse();
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = parsedExample;
}
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsXmlCommentsOnOperationsFromMinimalApis#OpenApiXmlCommentSupport.generated.verified.cs b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsXmlCommentsOnOperationsFromMinimalApis#OpenApiXmlCommentSupport.generated.verified.cs
index fe7be155d841..85d5e91dd378 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsXmlCommentsOnOperationsFromMinimalApis#OpenApiXmlCommentSupport.generated.verified.cs
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsXmlCommentsOnOperationsFromMinimalApis#OpenApiXmlCommentSupport.generated.verified.cs
@@ -443,7 +443,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
{
continue;
}
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = jsonString.Parse();
}
@@ -505,7 +505,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
continue;
}
var parsedExample = jsonString.Parse();
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = parsedExample;
}
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/SchemaTests.SupportsXmlCommentsOnSchemas#OpenApiXmlCommentSupport.generated.verified.cs b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/SchemaTests.SupportsXmlCommentsOnSchemas#OpenApiXmlCommentSupport.generated.verified.cs
index 9ae384e0e245..9f6a292f13bb 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/SchemaTests.SupportsXmlCommentsOnSchemas#OpenApiXmlCommentSupport.generated.verified.cs
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/SchemaTests.SupportsXmlCommentsOnSchemas#OpenApiXmlCommentSupport.generated.verified.cs
@@ -425,7 +425,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
{
continue;
}
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = jsonString.Parse();
}
@@ -487,7 +487,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
continue;
}
var parsedExample = jsonString.Parse();
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = parsedExample;
}
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/SchemaTests.XmlCommentsOnPropertiesShouldApplyToSchemaReferences#OpenApiXmlCommentSupport.generated.verified.cs b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/SchemaTests.XmlCommentsOnPropertiesShouldApplyToSchemaReferences#OpenApiXmlCommentSupport.generated.verified.cs
index 86f754cd6cd6..be4687040128 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/SchemaTests.XmlCommentsOnPropertiesShouldApplyToSchemaReferences#OpenApiXmlCommentSupport.generated.verified.cs
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/SchemaTests.XmlCommentsOnPropertiesShouldApplyToSchemaReferences#OpenApiXmlCommentSupport.generated.verified.cs
@@ -404,7 +404,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
{
continue;
}
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = jsonString.Parse();
}
@@ -466,7 +466,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
continue;
}
var parsedExample = jsonString.Parse();
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = parsedExample;
}
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/XmlCommentDocumentationIdTests.CanMergeXmlCommentsWithDifferentDocumentationIdFormats#OpenApiXmlCommentSupport.generated.verified.cs b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/XmlCommentDocumentationIdTests.CanMergeXmlCommentsWithDifferentDocumentationIdFormats#OpenApiXmlCommentSupport.generated.verified.cs
index 44baeee7116b..14e6fc1de407 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/XmlCommentDocumentationIdTests.CanMergeXmlCommentsWithDifferentDocumentationIdFormats#OpenApiXmlCommentSupport.generated.verified.cs
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/XmlCommentDocumentationIdTests.CanMergeXmlCommentsWithDifferentDocumentationIdFormats#OpenApiXmlCommentSupport.generated.verified.cs
@@ -396,7 +396,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
{
continue;
}
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = jsonString.Parse();
}
@@ -458,7 +458,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
continue;
}
var parsedExample = jsonString.Parse();
- foreach (var mediaType in content)
+ foreach (var mediaType in content.OfType())
{
mediaType.Example = parsedExample;
}
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Extensions/OpenApiEndpointRouteBuilderExtensionsTests.cs b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Extensions/OpenApiEndpointRouteBuilderExtensionsTests.cs
index 1df8c8647ba5..010d3e874408 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Extensions/OpenApiEndpointRouteBuilderExtensionsTests.cs
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Extensions/OpenApiEndpointRouteBuilderExtensionsTests.cs
@@ -100,7 +100,7 @@ public async Task MapOpenApi_ReturnsDefaultDocumentIfNoNameProvided(string expec
Assert.Equal(expectedContentType, context.Response.ContentType);
var responseString = Encoding.UTF8.GetString(responseBodyStream.ToArray());
// String check to validate that generated document starts with YAML syntax
- Assert.Equal(isYaml, responseString.StartsWith("openapi: '3.1.1'", StringComparison.OrdinalIgnoreCase));
+ Assert.Equal(isYaml, responseString.StartsWith("openapi: '3.1.2'", StringComparison.OrdinalIgnoreCase));
responseBodyStream.Position = 0;
await ValidateOpenApiDocumentAsync(responseBodyStream, document =>
{
@@ -221,7 +221,7 @@ public async Task MapOpenApi_ReturnsDocumentIfNameProvidedInQuery(string expecte
Assert.Equal(expectedContentType, context.Response.ContentType);
var responseString = Encoding.UTF8.GetString(responseBodyStream.ToArray());
// String check to validate that generated document starts with YAML syntax
- Assert.Equal(isYaml, responseString.StartsWith("openapi: '3.1.1'", StringComparison.OrdinalIgnoreCase));
+ Assert.Equal(isYaml, responseString.StartsWith("openapi: '3.1.2'", StringComparison.OrdinalIgnoreCase));
responseBodyStream.Position = 0;
await ValidateOpenApiDocumentAsync(responseBodyStream, document =>
{
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/OpenApiDocumentIntegrationTests.cs b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/OpenApiDocumentIntegrationTests.cs
index 47540c6a10b2..19d9bfa48d53 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/OpenApiDocumentIntegrationTests.cs
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/OpenApiDocumentIntegrationTests.cs
@@ -16,6 +16,7 @@ public static TheoryData OpenApiDocuments()
[
OpenApiSpecVersion.OpenApi3_0,
OpenApiSpecVersion.OpenApi3_1,
+ OpenApiSpecVersion.OpenApi3_2,
];
var testCases = new TheoryData();
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_0/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=schemas-by-ref.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_0/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=schemas-by-ref.verified.txt
index 648510972ee6..d797ed256419 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_0/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=schemas-by-ref.verified.txt
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_0/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=schemas-by-ref.verified.txt
@@ -667,14 +667,13 @@
"content": {
"application/json": {
"schema": {
+ "type": "object",
"oneOf": [
- {
- "nullable": true
- },
{
"$ref": "#/components/schemas/NullableResponseModel"
}
- ]
+ ],
+ "nullable": true
}
}
}
@@ -691,14 +690,13 @@
"content": {
"application/json": {
"schema": {
+ "type": "object",
"oneOf": [
- {
- "nullable": true
- },
{
"$ref": "#/components/schemas/NullableRequestModel"
}
- ]
+ ],
+ "nullable": true
}
}
}
@@ -873,14 +871,13 @@
"type": "string"
},
"optionalNested": {
+ "type": "object",
"oneOf": [
- {
- "nullable": true
- },
{
"$ref": "#/components/schemas/NestedModel"
}
- ]
+ ],
+ "nullable": true
},
"requiredNested": {
"$ref": "#/components/schemas/NestedModel"
@@ -998,14 +995,13 @@
"$ref": "#/components/schemas/TestEnum"
},
"nullableEnum": {
+ "type": "integer",
"oneOf": [
- {
- "nullable": true
- },
{
"$ref": "#/components/schemas/TestEnum"
}
- ]
+ ],
+ "nullable": true
},
"listOfNullableEnums": {
"type": "array",
@@ -1160,14 +1156,13 @@
"nullable": true
},
"deepNested": {
+ "type": "object",
"oneOf": [
- {
- "nullable": true
- },
{
"$ref": "#/components/schemas/ComplexType"
}
- ]
+ ],
+ "nullable": true
}
}
},
@@ -1239,14 +1234,13 @@
"nullable": true
},
"nullableComplexProperty": {
+ "type": "object",
"oneOf": [
- {
- "nullable": true
- },
{
"$ref": "#/components/schemas/ComplexType"
}
- ]
+ ],
+ "nullable": true
}
}
},
@@ -1475,14 +1469,13 @@
"$ref": "#/components/schemas/RefProfile"
},
"secondaryUser": {
+ "type": "object",
"oneOf": [
- {
- "nullable": true
- },
{
"$ref": "#/components/schemas/RefProfile"
}
- ]
+ ],
+ "nullable": true
}
}
},
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=controllers.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=controllers.verified.txt
index 54815495aa78..36fa03d8e378 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=controllers.verified.txt
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=controllers.verified.txt
@@ -1,5 +1,5 @@
{
- "openapi": "3.1.1",
+ "openapi": "3.1.2",
"info": {
"title": "Sample | controllers",
"version": "1.0.0"
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=forms.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=forms.verified.txt
index c68e4d17c64d..aba205890ede 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=forms.verified.txt
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=forms.verified.txt
@@ -1,5 +1,5 @@
{
- "openapi": "3.1.1",
+ "openapi": "3.1.2",
"info": {
"title": "Sample | forms",
"version": "1.0.0"
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=responses.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=responses.verified.txt
index 45a4660aa78c..4ecf3886a25f 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=responses.verified.txt
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=responses.verified.txt
@@ -1,5 +1,5 @@
{
- "openapi": "3.1.1",
+ "openapi": "3.1.2",
"info": {
"title": "Sample | responses",
"version": "1.0.0"
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=schemas-by-ref.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=schemas-by-ref.verified.txt
index 61d0527bc80f..798fd4126407 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=schemas-by-ref.verified.txt
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=schemas-by-ref.verified.txt
@@ -1,5 +1,5 @@
{
- "openapi": "3.1.1",
+ "openapi": "3.1.2",
"info": {
"title": "Sample | schemas-by-ref",
"version": "1.0.0"
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v1.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v1.verified.txt
index abbe8732d74f..c1b8af2ebde4 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v1.verified.txt
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v1.verified.txt
@@ -1,5 +1,5 @@
{
- "openapi": "3.1.1",
+ "openapi": "3.1.2",
"info": {
"title": "Sample | v1",
"version": "1.0.0"
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v2.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v2.verified.txt
index fed56ba97790..6098355a6009 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v2.verified.txt
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v2.verified.txt
@@ -1,5 +1,5 @@
{
- "openapi": "3.1.1",
+ "openapi": "3.1.2",
"info": {
"title": "Sample | v2",
"contact": {
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=xml.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=xml.verified.txt
index 7a4b01a03316..c2d9ef8c8393 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=xml.verified.txt
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_1/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=xml.verified.txt
@@ -1,5 +1,5 @@
{
- "openapi": "3.1.1",
+ "openapi": "3.1.2",
"info": {
"title": "Sample | xml",
"version": "1.0.0"
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=controllers.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=controllers.verified.txt
new file mode 100644
index 000000000000..e37a837ab7d0
--- /dev/null
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=controllers.verified.txt
@@ -0,0 +1,169 @@
+{
+ "openapi": "3.2.0",
+ "info": {
+ "title": "Sample | controllers",
+ "version": "1.0.0"
+ },
+ "paths": {
+ "/getbyidandname/{id}/{name}": {
+ "get": {
+ "tags": [
+ "Test"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ },
+ {
+ "name": "name",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "minLength": 5,
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "text/plain": {
+ "schema": {
+ "type": "string"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ },
+ "text/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/gettypedresult": {
+ "get": {
+ "tags": [
+ "Test"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/MvcTodo"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/forms": {
+ "post": {
+ "tags": [
+ "Test"
+ ],
+ "requestBody": {
+ "content": {
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "Title": {
+ "type": "string"
+ },
+ "Description": {
+ "type": "string"
+ },
+ "IsCompleted": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/getcultureinvariant": {
+ "get": {
+ "tags": [
+ "Test"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CurrentWeather"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "CurrentWeather": {
+ "type": "object",
+ "properties": {
+ "temperature": {
+ "maximum": 100.5,
+ "minimum": -100.5,
+ "type": "number",
+ "format": "float",
+ "default": 0.1
+ }
+ }
+ },
+ "MvcTodo": {
+ "required": [
+ "title",
+ "description",
+ "isCompleted"
+ ],
+ "type": "object",
+ "properties": {
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "isCompleted": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ {
+ "name": "Test"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=forms.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=forms.verified.txt
new file mode 100644
index 000000000000..05774d38b2a7
--- /dev/null
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=forms.verified.txt
@@ -0,0 +1,227 @@
+{
+ "openapi": "3.2.0",
+ "info": {
+ "title": "Sample | forms",
+ "version": "1.0.0"
+ },
+ "paths": {
+ "/forms/form-file": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "required": [
+ "resume"
+ ],
+ "type": "object",
+ "properties": {
+ "resume": {
+ "$ref": "#/components/schemas/IFormFile"
+ }
+ }
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/forms/form-files": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "required": [
+ "files"
+ ],
+ "type": "object",
+ "properties": {
+ "files": {
+ "$ref": "#/components/schemas/IFormFileCollection"
+ }
+ }
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/forms/form-file-multiple": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "required": [
+ "resume",
+ "files"
+ ],
+ "type": "object",
+ "allOf": [
+ {
+ "type": "object",
+ "properties": {
+ "resume": {
+ "$ref": "#/components/schemas/IFormFile"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "files": {
+ "$ref": "#/components/schemas/IFormFileCollection"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/forms/form-todo": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/Todo"
+ }
+ },
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/Todo"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/forms/forms-pocos-and-files": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "required": [
+ "file"
+ ],
+ "type": "object",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Todo"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "file": {
+ "$ref": "#/components/schemas/IFormFile"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "IFormFile": {
+ "type": "string",
+ "format": "binary"
+ },
+ "IFormFileCollection": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/IFormFile"
+ }
+ },
+ "Todo": {
+ "required": [
+ "id",
+ "title",
+ "completed",
+ "createdAt"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The unique identifier of the to-do item.",
+ "format": "int32"
+ },
+ "title": {
+ "type": "string",
+ "description": "The title of the to-do item."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Indicates whether the to-do item is completed."
+ },
+ "createdAt": {
+ "type": "string",
+ "description": "The date and time when the to-do item was created.",
+ "format": "date-time"
+ }
+ },
+ "description": "Represents a to-do item."
+ }
+ }
+ },
+ "tags": [
+ {
+ "name": "Sample"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=responses.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=responses.verified.txt
new file mode 100644
index 000000000000..b4766a0d2cbf
--- /dev/null
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=responses.verified.txt
@@ -0,0 +1,208 @@
+{
+ "openapi": "3.2.0",
+ "info": {
+ "title": "Sample | responses",
+ "version": "1.0.0"
+ },
+ "paths": {
+ "/responses/200-add-xml": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Todo"
+ }
+ },
+ "text/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/Todo"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/responses/200-only-xml": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "text/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/Todo"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/responses/triangle": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Triangle"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/responses/shape": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Shape"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "Shape": {
+ "required": [
+ "$type"
+ ],
+ "type": "object",
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/ShapeTriangle"
+ },
+ {
+ "$ref": "#/components/schemas/ShapeSquare"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "$type",
+ "mapping": {
+ "triangle": "#/components/schemas/ShapeTriangle",
+ "square": "#/components/schemas/ShapeSquare"
+ }
+ }
+ },
+ "ShapeSquare": {
+ "properties": {
+ "$type": {
+ "enum": [
+ "square"
+ ],
+ "type": "string"
+ },
+ "area": {
+ "type": "number",
+ "format": "double"
+ },
+ "color": {
+ "type": "string"
+ },
+ "sides": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "ShapeTriangle": {
+ "properties": {
+ "$type": {
+ "enum": [
+ "triangle"
+ ],
+ "type": "string"
+ },
+ "hypotenuse": {
+ "type": "number",
+ "format": "double"
+ },
+ "color": {
+ "type": "string"
+ },
+ "sides": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "Todo": {
+ "required": [
+ "id",
+ "title",
+ "completed",
+ "createdAt"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The unique identifier of the to-do item.",
+ "format": "int32"
+ },
+ "title": {
+ "type": "string",
+ "description": "The title of the to-do item."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Indicates whether the to-do item is completed."
+ },
+ "createdAt": {
+ "type": "string",
+ "description": "The date and time when the to-do item was created.",
+ "format": "date-time"
+ }
+ },
+ "description": "Represents a to-do item."
+ },
+ "Triangle": {
+ "type": "object",
+ "properties": {
+ "hypotenuse": {
+ "type": "number",
+ "format": "double"
+ },
+ "color": {
+ "type": "string"
+ },
+ "sides": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ {
+ "name": "Sample"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=schemas-by-ref.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=schemas-by-ref.verified.txt
new file mode 100644
index 000000000000..f998e65c457f
--- /dev/null
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=schemas-by-ref.verified.txt
@@ -0,0 +1,1639 @@
+{
+ "openapi": "3.2.0",
+ "info": {
+ "title": "Sample | schemas-by-ref",
+ "version": "1.0.0"
+ },
+ "paths": {
+ "/schemas-by-ref/typed-results": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Triangle"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/multiple-results": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Triangle"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/iresult-no-produces": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/iresult-with-produces": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "text/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/Triangle"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/primitives": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "query",
+ "description": "The ID associated with the Todo item.",
+ "required": true,
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ },
+ {
+ "name": "size",
+ "in": "query",
+ "description": "The number of Todos to fetch",
+ "required": true,
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/product": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Product"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Product"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/account": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Account"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Account"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/array-of-ints": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/list-of-ints": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/ienumerable-of-ints": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/dictionary-of-ints": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/frozen-dictionary-of-ints": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/shape": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Shape"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/weatherforecastbase": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/WeatherForecastBase"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/person": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Person"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/category": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Category"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/container": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContainerType"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/root": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Root"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/location": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/LocationContainer"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/parent": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ParentObject"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/child": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ChildObject"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/json-patch": {
+ "patch": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json-patch+json": {
+ "schema": {
+ "$ref": "#/components/schemas/JsonPatchDocument"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/json-patch-generic": {
+ "patch": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json-patch+json": {
+ "schema": {
+ "$ref": "#/components/schemas/JsonPatchDocument"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/custom-iresult": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CustomIResultImplementor"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/config-with-generic-lists": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Config"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/project-response": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ProjectResponse"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/subscription": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Subscription"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/nullable-response": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/NullableResponseModel"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/nullable-return-type": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/NullableResponseModel"
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/nullable-request": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/NullableRequestModel"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/complex-nullable-hierarchy": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ComplexHierarchyModel"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/nullable-array-elements": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/NullableArrayModel"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/optional-with-default": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ModelWithDefaults"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/schemas-by-ref/nullable-enum-response": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/EnumNullableModel"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "Account": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "AddressDto": {
+ "required": [
+ "relatedLocation"
+ ],
+ "type": "object",
+ "properties": {
+ "relatedLocation": {
+ "$ref": "#/components/schemas/LocationDto"
+ }
+ }
+ },
+ "Category": {
+ "required": [
+ "name",
+ "parent"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "parent": {
+ "$ref": "#/components/schemas/Category"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Tag"
+ }
+ }
+ }
+ },
+ "ChildObject": {
+ "required": [
+ "parent"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "parent": {
+ "$ref": "#/components/schemas/ParentObject"
+ }
+ }
+ },
+ "CityResponse": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "ComplexHierarchyModel": {
+ "required": [
+ "id",
+ "requiredNested"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "optionalNested": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/NestedModel"
+ }
+ ]
+ },
+ "requiredNested": {
+ "$ref": "#/components/schemas/NestedModel"
+ },
+ "nullableListWithNullableItems": {
+ "type": [
+ "null",
+ "array"
+ ],
+ "items": {
+ "$ref": "#/components/schemas/NestedModel"
+ }
+ }
+ }
+ },
+ "ComplexType": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "timestamp": {
+ "type": [
+ "null",
+ "string"
+ ],
+ "format": "date-time"
+ }
+ }
+ },
+ "Config": {
+ "type": "object",
+ "properties": {
+ "items1": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ConfigItem"
+ }
+ },
+ "items2": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ConfigItem"
+ }
+ }
+ }
+ },
+ "ConfigItem": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": [
+ "null",
+ "integer"
+ ],
+ "format": "int32"
+ },
+ "lang": {
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "words": {
+ "type": [
+ "null",
+ "object"
+ ]
+ },
+ "break": {
+ "type": [
+ "null",
+ "array"
+ ],
+ "items": {
+ "type": "string"
+ }
+ },
+ "willBeGood": {
+ "type": [
+ "null",
+ "string"
+ ]
+ }
+ }
+ },
+ "ContainerType": {
+ "type": "object",
+ "properties": {
+ "seq1": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "seq2": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "CustomIResultImplementor": {
+ "required": [
+ "content"
+ ],
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string"
+ }
+ }
+ },
+ "EnumNullableModel": {
+ "required": [
+ "requiredEnum"
+ ],
+ "type": "object",
+ "properties": {
+ "requiredEnum": {
+ "$ref": "#/components/schemas/TestEnum"
+ },
+ "nullableEnum": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/TestEnum"
+ }
+ ]
+ },
+ "listOfNullableEnums": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/TestEnum"
+ }
+ }
+ }
+ },
+ "Item": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "value": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "JsonPatchDocument": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "oneOf": [
+ {
+ "required": [
+ "op",
+ "path",
+ "value"
+ ],
+ "type": "object",
+ "properties": {
+ "op": {
+ "enum": [
+ "add",
+ "replace",
+ "test"
+ ],
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "value": { }
+ },
+ "additionalProperties": false
+ },
+ {
+ "required": [
+ "op",
+ "path",
+ "from"
+ ],
+ "type": "object",
+ "properties": {
+ "op": {
+ "enum": [
+ "move",
+ "copy"
+ ],
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "from": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ {
+ "required": [
+ "op",
+ "path"
+ ],
+ "type": "object",
+ "properties": {
+ "op": {
+ "enum": [
+ "remove"
+ ],
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ }
+ ]
+ }
+ },
+ "LocationContainer": {
+ "required": [
+ "location"
+ ],
+ "type": "object",
+ "properties": {
+ "location": {
+ "$ref": "#/components/schemas/LocationDto"
+ }
+ }
+ },
+ "LocationDto": {
+ "required": [
+ "address"
+ ],
+ "type": "object",
+ "properties": {
+ "address": {
+ "$ref": "#/components/schemas/AddressDto"
+ }
+ }
+ },
+ "ModelWithDefaults": {
+ "type": "object",
+ "properties": {
+ "propertyWithDefault": {
+ "type": "string"
+ },
+ "nullableWithNull": {
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "numberWithDefault": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "boolWithDefault": {
+ "type": "boolean"
+ }
+ }
+ },
+ "NestedModel": {
+ "required": [
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "optionalValue": {
+ "type": [
+ "null",
+ "integer"
+ ],
+ "format": "int32"
+ },
+ "deepNested": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/ComplexType"
+ }
+ ]
+ }
+ }
+ },
+ "NullableArrayModel": {
+ "type": "object",
+ "properties": {
+ "nullableArray": {
+ "type": [
+ "null",
+ "array"
+ ],
+ "items": {
+ "type": "string"
+ }
+ },
+ "listWithNullableElements": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "nullableDictionaryWithNullableValues": {
+ "type": [
+ "null",
+ "object"
+ ],
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "NullableRequestModel": {
+ "required": [
+ "requiredField"
+ ],
+ "type": "object",
+ "properties": {
+ "requiredField": {
+ "type": "string"
+ },
+ "optionalField": {
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "nullableList": {
+ "type": [
+ "null",
+ "array"
+ ],
+ "items": {
+ "type": "string"
+ }
+ },
+ "nullableDictionary": {
+ "type": [
+ "null",
+ "object"
+ ],
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "NullableResponseModel": {
+ "required": [
+ "requiredProperty"
+ ],
+ "type": "object",
+ "properties": {
+ "requiredProperty": {
+ "type": "string"
+ },
+ "nullableProperty": {
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "nullableComplexProperty": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/ComplexType"
+ }
+ ]
+ }
+ }
+ },
+ "ParentObject": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ChildObject"
+ }
+ }
+ }
+ },
+ "Person": {
+ "required": [
+ "discriminator"
+ ],
+ "type": "object",
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/PersonStudent"
+ },
+ {
+ "$ref": "#/components/schemas/PersonTeacher"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "discriminator",
+ "mapping": {
+ "student": "#/components/schemas/PersonStudent",
+ "teacher": "#/components/schemas/PersonTeacher"
+ }
+ }
+ },
+ "PersonStudent": {
+ "properties": {
+ "discriminator": {
+ "enum": [
+ "student"
+ ],
+ "type": "string"
+ },
+ "gpa": {
+ "type": "number",
+ "format": "double"
+ }
+ }
+ },
+ "PersonTeacher": {
+ "required": [
+ "subject"
+ ],
+ "properties": {
+ "discriminator": {
+ "enum": [
+ "teacher"
+ ],
+ "type": "string"
+ },
+ "subject": {
+ "type": "string"
+ }
+ }
+ },
+ "Product": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "ProjectAddressResponse": {
+ "required": [
+ "city"
+ ],
+ "type": "object",
+ "properties": {
+ "city": {
+ "$ref": "#/components/schemas/CityResponse"
+ }
+ }
+ },
+ "ProjectBuilderResponse": {
+ "required": [
+ "city"
+ ],
+ "type": "object",
+ "properties": {
+ "city": {
+ "$ref": "#/components/schemas/CityResponse"
+ }
+ }
+ },
+ "ProjectResponse": {
+ "required": [
+ "address",
+ "builder"
+ ],
+ "type": "object",
+ "properties": {
+ "address": {
+ "$ref": "#/components/schemas/ProjectAddressResponse"
+ },
+ "builder": {
+ "$ref": "#/components/schemas/ProjectBuilderResponse"
+ }
+ }
+ },
+ "RefProfile": {
+ "required": [
+ "user"
+ ],
+ "type": "object",
+ "properties": {
+ "user": {
+ "$ref": "#/components/schemas/RefUser"
+ }
+ }
+ },
+ "RefUser": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ }
+ }
+ },
+ "Root": {
+ "type": "object",
+ "properties": {
+ "item1": {
+ "$ref": "#/components/schemas/Item"
+ },
+ "item2": {
+ "$ref": "#/components/schemas/Item"
+ }
+ }
+ },
+ "Shape": {
+ "required": [
+ "$type"
+ ],
+ "type": "object",
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/ShapeTriangle"
+ },
+ {
+ "$ref": "#/components/schemas/ShapeSquare"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "$type",
+ "mapping": {
+ "triangle": "#/components/schemas/ShapeTriangle",
+ "square": "#/components/schemas/ShapeSquare"
+ }
+ }
+ },
+ "ShapeSquare": {
+ "properties": {
+ "$type": {
+ "enum": [
+ "square"
+ ],
+ "type": "string"
+ },
+ "area": {
+ "type": "number",
+ "format": "double"
+ },
+ "color": {
+ "type": "string"
+ },
+ "sides": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "ShapeTriangle": {
+ "properties": {
+ "$type": {
+ "enum": [
+ "triangle"
+ ],
+ "type": "string"
+ },
+ "hypotenuse": {
+ "type": "number",
+ "format": "double"
+ },
+ "color": {
+ "type": "string"
+ },
+ "sides": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "Subscription": {
+ "required": [
+ "id",
+ "primaryUser"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "primaryUser": {
+ "$ref": "#/components/schemas/RefProfile"
+ },
+ "secondaryUser": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/RefProfile"
+ }
+ ]
+ }
+ }
+ },
+ "Tag": {
+ "required": [
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "TestEnum": {
+ "type": "integer"
+ },
+ "Triangle": {
+ "type": "object",
+ "properties": {
+ "hypotenuse": {
+ "type": "number",
+ "format": "double"
+ },
+ "color": {
+ "type": "string"
+ },
+ "sides": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "WeatherForecastBase": {
+ "required": [
+ "$type"
+ ],
+ "type": "object",
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/WeatherForecastBaseWeatherForecastWithCity"
+ },
+ {
+ "$ref": "#/components/schemas/WeatherForecastBaseWeatherForecastWithTimeSeries"
+ },
+ {
+ "$ref": "#/components/schemas/WeatherForecastBaseWeatherForecastWithLocalNews"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "$type",
+ "mapping": {
+ "0": "#/components/schemas/WeatherForecastBaseWeatherForecastWithCity",
+ "1": "#/components/schemas/WeatherForecastBaseWeatherForecastWithTimeSeries",
+ "2": "#/components/schemas/WeatherForecastBaseWeatherForecastWithLocalNews"
+ }
+ }
+ },
+ "WeatherForecastBaseWeatherForecastWithCity": {
+ "required": [
+ "city"
+ ],
+ "properties": {
+ "$type": {
+ "enum": [
+ 0
+ ],
+ "type": "integer"
+ },
+ "city": {
+ "type": "string"
+ }
+ }
+ },
+ "WeatherForecastBaseWeatherForecastWithLocalNews": {
+ "required": [
+ "news"
+ ],
+ "properties": {
+ "$type": {
+ "enum": [
+ 2
+ ],
+ "type": "integer"
+ },
+ "news": {
+ "type": "string"
+ }
+ }
+ },
+ "WeatherForecastBaseWeatherForecastWithTimeSeries": {
+ "required": [
+ "summary"
+ ],
+ "properties": {
+ "$type": {
+ "enum": [
+ 1
+ ],
+ "type": "integer"
+ },
+ "date": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "temperatureC": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "summary": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ {
+ "name": "Sample"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v1.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v1.verified.txt
new file mode 100644
index 000000000000..aa09fe7a58f9
--- /dev/null
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v1.verified.txt
@@ -0,0 +1,208 @@
+{
+ "openapi": "3.2.0",
+ "info": {
+ "title": "Sample | v1",
+ "version": "1.0.0"
+ },
+ "paths": {
+ "/v1/array-of-guids": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "parameters": [
+ {
+ "name": "guids",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ },
+ {
+ "name": "X-Version",
+ "in": "header",
+ "schema": {
+ "type": "string",
+ "default": "1.0"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v1/todos": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "summary": "Creates a new todo item.",
+ "parameters": [
+ {
+ "name": "X-Version",
+ "in": "header",
+ "schema": {
+ "type": "string",
+ "default": "1.0"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Todo"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/v1/todos/{id}": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "description": "Returns a specific todo item.",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ },
+ {
+ "name": "X-Version",
+ "in": "header",
+ "schema": {
+ "type": "string",
+ "default": "1.0"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TodoWithDueDate"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "Todo": {
+ "required": [
+ "id",
+ "title",
+ "completed",
+ "createdAt"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The unique identifier of the to-do item.",
+ "format": "int32"
+ },
+ "title": {
+ "type": "string",
+ "description": "The title of the to-do item."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Indicates whether the to-do item is completed."
+ },
+ "createdAt": {
+ "type": "string",
+ "description": "The date and time when the to-do item was created.",
+ "format": "date-time"
+ }
+ },
+ "description": "Represents a to-do item."
+ },
+ "TodoWithDueDate": {
+ "required": [
+ "dueDate",
+ "id",
+ "title",
+ "completed",
+ "createdAt"
+ ],
+ "type": "object",
+ "properties": {
+ "dueDate": {
+ "type": "string",
+ "description": "The due date of the to-do item.",
+ "format": "date-time"
+ },
+ "id": {
+ "type": "integer",
+ "description": "The unique identifier of the to-do item.",
+ "format": "int32"
+ },
+ "title": {
+ "type": "string",
+ "description": "The title of the to-do item."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Indicates whether the to-do item is completed."
+ },
+ "createdAt": {
+ "type": "string",
+ "description": "The date and time when the to-do item was created.",
+ "format": "date-time"
+ }
+ },
+ "description": "Represents a to-do item with a due date."
+ }
+ },
+ "securitySchemes": {
+ "Bearer": {
+ "type": "http",
+ "scheme": "bearer",
+ "bearerFormat": "Json Web Token"
+ }
+ }
+ },
+ "tags": [
+ {
+ "name": "Sample"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v2.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v2.verified.txt
new file mode 100644
index 000000000000..f7bab54b47b9
--- /dev/null
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=v2.verified.txt
@@ -0,0 +1,69 @@
+{
+ "openapi": "3.2.0",
+ "info": {
+ "title": "Sample | v2",
+ "contact": {
+ "name": "OpenAPI Enthusiast",
+ "email": "iloveopenapi@example.com"
+ },
+ "license": {
+ "name": "MIT"
+ },
+ "version": "1.0.0"
+ },
+ "paths": {
+ "/v2/users": {
+ "get": {
+ "tags": [
+ "users"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "externalDocs": {
+ "description": "Documentation for this OpenAPI schema",
+ "url": "https://example.com/api/docs/schemas/string"
+ }
+ },
+ "externalDocs": {
+ "description": "Documentation for this OpenAPI schema",
+ "url": "https://example.com/api/docs/schemas/array"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "externalDocs": {
+ "description": "Documentation for this OpenAPI endpoint",
+ "url": "https://example.com/api/docs/operations/CreateUser"
+ },
+ "operationId": "CreateUser",
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ {
+ "name": "users"
+ },
+ {
+ "name": "Sample"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=xml.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=xml.verified.txt
new file mode 100644
index 000000000000..74aff7eb39d0
--- /dev/null
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApi3_2/OpenApiDocumentIntegrationTests.VerifyOpenApiDocument_documentName=xml.verified.txt
@@ -0,0 +1,397 @@
+{
+ "openapi": "3.2.0",
+ "info": {
+ "title": "Sample | xml",
+ "version": "1.0.0"
+ },
+ "paths": {
+ "/xml/type-with-examples": {
+ "get": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TypeWithExamples"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TypeWithExamples"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/xml/todo": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TodoFomInterface"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/xml/project": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Project"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/xml/board": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BoardItem"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/xml/project-record": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ProjectRecord"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/xml/todo-with-description": {
+ "post": {
+ "tags": [
+ "Sample"
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TodoWithDescription"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
+ "/Xml": {
+ "get": {
+ "tags": [
+ "Xml"
+ ],
+ "parameters": [
+ {
+ "name": "name",
+ "in": "query",
+ "description": "The name of the person.",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Returns the greeting.",
+ "content": {
+ "text/plain": {
+ "schema": {
+ "type": "string"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ },
+ "text/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Xml"
+ ],
+ "requestBody": {
+ "description": "The todo to insert into the database.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Todo"
+ }
+ },
+ "text/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Todo"
+ }
+ },
+ "application/*+json": {
+ "schema": {
+ "$ref": "#/components/schemas/Todo"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "text/plain": {
+ "schema": {
+ "type": "string"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ },
+ "text/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "BoardItem": {
+ "required": [
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "description": "An item on the board."
+ },
+ "Project": {
+ "required": [
+ "name",
+ "description"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "description": "The project that contains Todo items."
+ },
+ "ProjectRecord": {
+ "required": [
+ "name",
+ "description"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the project."
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the project."
+ }
+ },
+ "description": "The project that contains Todo items."
+ },
+ "Todo": {
+ "required": [
+ "id",
+ "title",
+ "completed"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "title": {
+ "type": "string"
+ },
+ "completed": {
+ "type": "boolean"
+ }
+ }
+ },
+ "TodoFomInterface": {
+ "required": [
+ "name",
+ "description"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The identifier of the todo.",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the todo."
+ },
+ "description": {
+ "type": "string",
+ "description": "A description of the todo."
+ }
+ },
+ "description": "This is a todo item."
+ },
+ "TodoWithDescription": {
+ "required": [
+ "name",
+ "description"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The identifier of the todo, overridden.",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the todo, overridden."
+ },
+ "description": {
+ "type": "string",
+ "description": "A description of the the todo.\nAnother description of the todo."
+ }
+ }
+ },
+ "TypeWithExamples": {
+ "type": "object",
+ "properties": {
+ "booleanType": {
+ "type": "boolean",
+ "example": true
+ },
+ "integerType": {
+ "type": "integer",
+ "format": "int32",
+ "example": 42
+ },
+ "longType": {
+ "type": "integer",
+ "format": "int64",
+ "example": 1234567890123456789
+ },
+ "doubleType": {
+ "type": "number",
+ "format": "double",
+ "example": 3.14
+ },
+ "floatType": {
+ "type": "number",
+ "format": "float",
+ "example": 3.14
+ },
+ "dateTimeType": {
+ "type": "string",
+ "format": "date-time",
+ "example": "2022-01-01T00:00:00Z"
+ },
+ "dateOnlyType": {
+ "type": "string",
+ "format": "date",
+ "example": "2022-01-01"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ {
+ "name": "Sample"
+ },
+ {
+ "name": "Xml"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApiDocumentLocalizationTests.VerifyOpenApiDocumentIsInvariant.verified.txt b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApiDocumentLocalizationTests.VerifyOpenApiDocumentIsInvariant.verified.txt
index df155fbc8d21..f1694a7b3b22 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApiDocumentLocalizationTests.VerifyOpenApiDocumentIsInvariant.verified.txt
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Integration/snapshots/OpenApiDocumentLocalizationTests.VerifyOpenApiDocumentIsInvariant.verified.txt
@@ -1,5 +1,5 @@
{
- "openapi": "3.1.1",
+ "openapi": "3.2.0",
"info": {
"title": "Sample | localized",
"description": "This is a localized OpenAPI document for français (France).",
diff --git a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Transformers/CustomSchemaTransformerTests.cs b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Transformers/CustomSchemaTransformerTests.cs
index 1de9451beec0..be74d233af06 100644
--- a/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Transformers/CustomSchemaTransformerTests.cs
+++ b/src/OpenApi/test/Microsoft.AspNetCore.OpenApi.Tests/Transformers/CustomSchemaTransformerTests.cs
@@ -30,7 +30,7 @@ public async Task CustomSchemaTransformer_CanInsertSchemaIntoDocumentFromOperati
operation.Responses["500"] = new OpenApiResponse
{
Description = "Error",
- Content = new Dictionary()
+ Content = new Dictionary()
{
["application/problem+json"] = new OpenApiMediaType
{
@@ -97,7 +97,7 @@ public async Task GetOrCreateSchema_AddsSchemasForMultipleResponseTypes()
operation.Responses["200"] = new OpenApiResponse
{
Description = "Success",
- Content = new Dictionary()
+ Content = new Dictionary()
{
["application/json"] = new OpenApiMediaType
{
@@ -109,7 +109,7 @@ public async Task GetOrCreateSchema_AddsSchemasForMultipleResponseTypes()
operation.Responses["400"] = new OpenApiResponse
{
Description = "Bad Request",
- Content = new Dictionary()
+ Content = new Dictionary()
{
["application/problem+json"] = new OpenApiMediaType
{
@@ -260,7 +260,7 @@ public async Task GetOrCreateSchema_WorksWithNestedTypes()
["200"] = new OpenApiResponse
{
Description = "Success",
- Content = new Dictionary()
+ Content = new Dictionary()
{
["application/json"] = new OpenApiMediaType
{
@@ -346,7 +346,7 @@ public async Task GetOrCreateSchemaAsync_AppliesOtherSchemaTransformers()
operation.Responses["200"] = new OpenApiResponse
{
Description = "A product",
- Content = new Dictionary()
+ Content = new Dictionary()
{
["application/json"] = new OpenApiMediaType
{
@@ -414,7 +414,7 @@ public async Task GetOrCreateSchemaAsync_HandlesConcurrentRequests()
operation.Responses["200"] = new OpenApiResponse
{
Description = "Concurrent schema generation test",
- Content = new Dictionary()
+ Content = new Dictionary()
{
["application/json"] = new OpenApiMediaType
{
@@ -467,7 +467,7 @@ public async Task GetOrCreateSchemaAsync_RespectsJsonSerializerOptions()
operation.Responses["200"] = new OpenApiResponse
{
Description = "User with custom JSON options",
- Content = new Dictionary()
+ Content = new Dictionary()
{
["application/json"] = new OpenApiMediaType
{
diff --git a/src/Tools/GetDocumentInsider/src/Resources.resx b/src/Tools/GetDocumentInsider/src/Resources.resx
index ca5d34bc6642..745edb2eb8c8 100644
--- a/src/Tools/GetDocumentInsider/src/Resources.resx
+++ b/src/Tools/GetDocumentInsider/src/Resources.resx
@@ -1,17 +1,17 @@
-
@@ -201,7 +201,7 @@
The name of the OpenAPI document to generate. Optional.
- Invalid OpenAPI spec version '{0}' provided. Falling back to default: v3.0.
+ Invalid OpenAPI spec version '{0}' provided. Falling back to default: v3.1.
Document with name '{0}' not found.
@@ -215,4 +215,4 @@
FileName format invalid, only Alphanumeric and "_ -" authorized
-
\ No newline at end of file
+
diff --git a/src/Tools/GetDocumentInsider/tests/GetDocumentTests.cs b/src/Tools/GetDocumentInsider/tests/GetDocumentTests.cs
index 712ef8bc1f8c..263de27af1a5 100644
--- a/src/Tools/GetDocumentInsider/tests/GetDocumentTests.cs
+++ b/src/Tools/GetDocumentInsider/tests/GetDocumentTests.cs
@@ -89,7 +89,7 @@ public void GetDocument_WithInvalidOpenApiVersion_Errors()
], new GetDocumentCommand(_console), throwOnUnexpectedArg: false);
// Assert that error was produced and files were generated with v3.
- Assert.Contains("Invalid OpenAPI spec version 'OpenApi4_0' provided. Falling back to default: v3.0.", _console.GetOutput());
+ Assert.Contains("Invalid OpenAPI spec version 'OpenApi4_0' provided. Falling back to default: v3.1.", _console.GetOutput());
using var stream = new MemoryStream(File.ReadAllBytes(Path.Combine(outputPath.FullName, "Sample.json")));
var result = OpenApiDocument.Load(stream, "json");
Assert.Empty(result.Diagnostic.Errors);