diff --git a/src/JsonApiDotNetCore.OpenApi/JsonApiActionDescriptorCollectionProvider.cs b/src/JsonApiDotNetCore.OpenApi/JsonApiActionDescriptorCollectionProvider.cs index 16b173dd17..6f48884df8 100644 --- a/src/JsonApiDotNetCore.OpenApi/JsonApiActionDescriptorCollectionProvider.cs +++ b/src/JsonApiDotNetCore.OpenApi/JsonApiActionDescriptorCollectionProvider.cs @@ -27,6 +27,7 @@ public JsonApiActionDescriptorCollectionProvider(IControllerResourceMapping cont { ArgumentGuard.NotNull(controllerResourceMapping); ArgumentGuard.NotNull(defaultProvider); + ArgumentGuard.NotNull(resourceFieldValidationMetadataProvider); _defaultProvider = defaultProvider; _jsonApiEndpointMetadataProvider = new JsonApiEndpointMetadataProvider(controllerResourceMapping, resourceFieldValidationMetadataProvider); diff --git a/src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/JsonApiEndpointMetadataProvider.cs b/src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/JsonApiEndpointMetadataProvider.cs index ad8360591c..ada4153c08 100644 --- a/src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/JsonApiEndpointMetadataProvider.cs +++ b/src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/JsonApiEndpointMetadataProvider.cs @@ -20,6 +20,8 @@ public JsonApiEndpointMetadataProvider(IControllerResourceMapping controllerReso ResourceFieldValidationMetadataProvider resourceFieldValidationMetadataProvider) { ArgumentGuard.NotNull(controllerResourceMapping); + ArgumentGuard.NotNull(resourceFieldValidationMetadataProvider); + _nonPrimaryDocumentTypeFactory = new NonPrimaryDocumentTypeFactory(resourceFieldValidationMetadataProvider); _controllerResourceMapping = controllerResourceMapping; } diff --git a/src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/RelationshipTypeFactory.cs b/src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/RelationshipTypeFactory.cs index 033d875b31..dbdd8b4a23 100644 --- a/src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/RelationshipTypeFactory.cs +++ b/src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/RelationshipTypeFactory.cs @@ -10,6 +10,8 @@ internal sealed class RelationshipTypeFactory public RelationshipTypeFactory(ResourceFieldValidationMetadataProvider resourceFieldValidationMetadataProvider) { + ArgumentGuard.NotNull(resourceFieldValidationMetadataProvider); + _nonPrimaryDocumentTypeFactory = new NonPrimaryDocumentTypeFactory(resourceFieldValidationMetadataProvider); _resourceFieldValidationMetadataProvider = resourceFieldValidationMetadataProvider; } diff --git a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/CachingSwaggerGenerator.cs b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/CachingSwaggerGenerator.cs index c4af79fc5d..232cc4f262 100644 --- a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/CachingSwaggerGenerator.cs +++ b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/CachingSwaggerGenerator.cs @@ -17,6 +17,7 @@ internal sealed class CachingSwaggerGenerator : ISwaggerProvider public CachingSwaggerGenerator(SwaggerGenerator defaultSwaggerGenerator) { ArgumentGuard.NotNull(defaultSwaggerGenerator); + _defaultSwaggerGenerator = defaultSwaggerGenerator; } diff --git a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/JsonApiSchemaGenerator.cs b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/JsonApiSchemaGenerator.cs index fb5435062d..3c08df30db 100644 --- a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/JsonApiSchemaGenerator.cs +++ b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/JsonApiSchemaGenerator.cs @@ -45,6 +45,7 @@ internal sealed class JsonApiSchemaGenerator : ISchemaGenerator }; private readonly ISchemaGenerator _defaultSchemaGenerator; + private readonly IJsonApiOptions _options; private readonly ResourceObjectSchemaGenerator _resourceObjectSchemaGenerator; private readonly NullableReferenceSchemaGenerator _nullableReferenceSchemaGenerator; private readonly SchemaRepositoryAccessor _schemaRepositoryAccessor = new(); @@ -55,8 +56,10 @@ public JsonApiSchemaGenerator(SchemaGenerator defaultSchemaGenerator, IResourceG ArgumentGuard.NotNull(defaultSchemaGenerator); ArgumentGuard.NotNull(resourceGraph); ArgumentGuard.NotNull(options); + ArgumentGuard.NotNull(resourceFieldValidationMetadataProvider); _defaultSchemaGenerator = defaultSchemaGenerator; + _options = options; _nullableReferenceSchemaGenerator = new NullableReferenceSchemaGenerator(_schemaRepositoryAccessor, options.SerializerOptions.PropertyNamingPolicy); _resourceObjectSchemaGenerator = new ResourceObjectSchemaGenerator(defaultSchemaGenerator, resourceGraph, options, _schemaRepositoryAccessor, @@ -84,6 +87,11 @@ public OpenApiSchema GenerateSchema(Type modelType, SchemaRepository schemaRepos { SetDataObjectSchemaToNullable(schema); } + + if (!_options.IncludeJsonApiVersion) + { + RemoveJsonApiObject(schema); + } } return _defaultSchemaGenerator.GenerateSchema(modelType, schemaRepository, memberInfo, parameterInfo, routeInfo); @@ -129,6 +137,15 @@ private static bool IsDataPropertyNullableInDocument(Type documentType) return JsonApiDocumentWithNullableDataOpenTypes.Contains(documentOpenType); } + private static OpenApiSchema CreateArrayTypeDataSchema(OpenApiSchema referenceSchemaForResourceObject) + { + return new OpenApiSchema + { + Items = referenceSchemaForResourceObject, + Type = "array" + }; + } + private void SetDataObjectSchemaToNullable(OpenApiSchema referenceSchemaForDocument) { OpenApiSchema fullSchemaForDocument = _schemaRepositoryAccessor.Current.Schemas[referenceSchemaForDocument.Reference.Id]; @@ -136,12 +153,11 @@ private void SetDataObjectSchemaToNullable(OpenApiSchema referenceSchemaForDocum fullSchemaForDocument.Properties[JsonApiPropertyName.Data] = _nullableReferenceSchemaGenerator.GenerateSchema(referenceSchemaForData); } - private static OpenApiSchema CreateArrayTypeDataSchema(OpenApiSchema referenceSchemaForResourceObject) + private void RemoveJsonApiObject(OpenApiSchema referenceSchemaForDocument) { - return new OpenApiSchema - { - Items = referenceSchemaForResourceObject, - Type = "array" - }; + OpenApiSchema fullSchemaForDocument = _schemaRepositoryAccessor.Current.Schemas[referenceSchemaForDocument.Reference.Id]; + fullSchemaForDocument.Properties.Remove(JsonApiPropertyName.Jsonapi); + + _schemaRepositoryAccessor.Current.Schemas.Remove("jsonapi-object"); } } diff --git a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/NullableReferenceSchemaGenerator.cs b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/NullableReferenceSchemaGenerator.cs index 4e09769e87..f40bb0c60a 100644 --- a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/NullableReferenceSchemaGenerator.cs +++ b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/NullableReferenceSchemaGenerator.cs @@ -20,7 +20,6 @@ public NullableReferenceSchemaGenerator(ISchemaRepositoryAccessor schemaReposito ArgumentGuard.NotNull(schemaRepositoryAccessor); _schemaRepositoryAccessor = schemaRepositoryAccessor; - _nullableSchemaReferenceId = namingPolicy != null ? namingPolicy.ConvertName(PascalCaseNullableSchemaReferenceId) : PascalCaseNullableSchemaReferenceId; } diff --git a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/OpenApiSchemaExtensions.cs b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/OpenApiSchemaExtensions.cs index b54e16fd96..d49abce453 100644 --- a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/OpenApiSchemaExtensions.cs +++ b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/OpenApiSchemaExtensions.cs @@ -6,6 +6,9 @@ internal static class OpenApiSchemaExtensions { public static void ReorderProperties(this OpenApiSchema fullSchemaForResourceObject, IEnumerable propertyNamesInOrder) { + ArgumentGuard.NotNull(fullSchemaForResourceObject); + ArgumentGuard.NotNull(propertyNamesInOrder); + var propertiesInOrder = new Dictionary(); foreach (string propertyName in propertyNamesInOrder) diff --git a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/ResourceFieldObjectSchemaBuilder.cs b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/ResourceFieldObjectSchemaBuilder.cs index 29b6d29a47..84b473990f 100644 --- a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/ResourceFieldObjectSchemaBuilder.cs +++ b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/ResourceFieldObjectSchemaBuilder.cs @@ -74,6 +74,8 @@ private IDictionary GetFieldSchemas() public void SetMembersOfAttributesObject(OpenApiSchema fullSchemaForAttributesObject) { + ArgumentGuard.NotNull(fullSchemaForAttributesObject); + AttrCapabilities requiredCapability = GetRequiredCapabilityForAttributes(_resourceTypeInfo.ResourceObjectOpenType); foreach ((string fieldName, OpenApiSchema resourceFieldSchema) in _schemasForResourceFields) @@ -127,6 +129,8 @@ private bool IsFieldRequired(ResourceFieldAttribute field) public void SetMembersOfRelationshipsObject(OpenApiSchema fullSchemaForRelationshipsObject) { + ArgumentGuard.NotNull(fullSchemaForRelationshipsObject); + foreach (string fieldName in _schemasForResourceFields.Keys) { RelationshipAttribute? matchingRelationship = _resourceTypeInfo.ResourceType.FindRelationshipByPublicName(fieldName); diff --git a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/ResourceObjectSchemaGenerator.cs b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/ResourceObjectSchemaGenerator.cs index 76d730801c..42fd662719 100644 --- a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/ResourceObjectSchemaGenerator.cs +++ b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/ResourceObjectSchemaGenerator.cs @@ -31,6 +31,7 @@ public ResourceObjectSchemaGenerator(SchemaGenerator defaultSchemaGenerator, IRe ArgumentGuard.NotNull(resourceGraph); ArgumentGuard.NotNull(options); ArgumentGuard.NotNull(schemaRepositoryAccessor); + ArgumentGuard.NotNull(resourceFieldValidationMetadataProvider); _defaultSchemaGenerator = defaultSchemaGenerator; _resourceGraph = resourceGraph; diff --git a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/SchemaRepositoryAccessor.cs b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/SchemaRepositoryAccessor.cs index cc5edb6367..578106b29d 100644 --- a/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/SchemaRepositoryAccessor.cs +++ b/src/JsonApiDotNetCore.OpenApi/SwaggerComponents/SchemaRepositoryAccessor.cs @@ -12,7 +12,7 @@ public SchemaRepository Current { if (_schemaRepository == null) { - throw new InvalidOperationException("SchemaRepository unavailable."); + throw new InvalidOperationException("SchemaRepository is unavailable."); } return _schemaRepository; diff --git a/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOff/ModelStateValidationOff/swagger.g.json b/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOff/ModelStateValidationOff/swagger.g.json index e880abd174..9f87d2acb5 100644 --- a/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOff/ModelStateValidationOff/swagger.g.json +++ b/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOff/ModelStateValidationOff/swagger.g.json @@ -934,9 +934,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceCollectionDocument" }, @@ -1002,9 +999,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceIdentifierCollectionDocument" }, @@ -1215,9 +1209,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceIdentifierDocument" }, @@ -1245,9 +1236,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceDocument" }, @@ -1429,9 +1417,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceCollectionDocument" }, @@ -1551,9 +1536,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceDocument" }, diff --git a/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOff/ModelStateValidationOn/swagger.g.json b/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOff/ModelStateValidationOn/swagger.g.json index 989dded857..2f81c0ad70 100644 --- a/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOff/ModelStateValidationOn/swagger.g.json +++ b/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOff/ModelStateValidationOn/swagger.g.json @@ -934,9 +934,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceCollectionDocument" }, @@ -1002,9 +999,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceIdentifierCollectionDocument" }, @@ -1028,9 +1022,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceIdentifierDocument" }, @@ -1057,9 +1048,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceDocument" }, @@ -1261,9 +1249,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceIdentifierDocument" }, @@ -1291,9 +1276,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceDocument" }, @@ -1467,9 +1449,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceCollectionDocument" }, @@ -1589,9 +1568,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceDocument" }, diff --git a/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOn/ModelStateValidationOff/swagger.g.json b/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOn/ModelStateValidationOff/swagger.g.json index 762ba9f438..10d4fcd80e 100644 --- a/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOn/ModelStateValidationOff/swagger.g.json +++ b/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOn/ModelStateValidationOff/swagger.g.json @@ -1236,9 +1236,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceCollectionDocument" }, @@ -1304,9 +1301,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceIdentifierCollectionDocument" }, @@ -1330,9 +1324,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceIdentifierDocument" }, @@ -1359,9 +1350,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceDocument" }, @@ -1563,9 +1551,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceIdentifierDocument" }, @@ -1593,9 +1578,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceDocument" }, @@ -1800,9 +1782,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceCollectionDocument" }, @@ -1922,9 +1901,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceDocument" }, diff --git a/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOn/ModelStateValidationOn/swagger.g.json b/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOn/ModelStateValidationOn/swagger.g.json index 9ef5d3892f..1f610c0c5a 100644 --- a/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOn/ModelStateValidationOn/swagger.g.json +++ b/test/OpenApiClientTests/ResourceFieldValidation/NullableReferenceTypesOn/ModelStateValidationOn/swagger.g.json @@ -1236,9 +1236,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceCollectionDocument" }, @@ -1304,9 +1301,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceIdentifierCollectionDocument" }, @@ -1330,9 +1324,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceIdentifierDocument" }, @@ -1359,9 +1350,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceDocument" }, @@ -1563,9 +1551,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceIdentifierDocument" }, @@ -1593,9 +1578,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceDocument" }, @@ -1794,9 +1776,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceCollectionDocument" }, @@ -1916,9 +1895,6 @@ ], "type": "object", "properties": { - "jsonapi": { - "$ref": "#/components/schemas/jsonapiObject" - }, "links": { "$ref": "#/components/schemas/linksInResourceDocument" }, diff --git a/test/OpenApiTests/LegacyOpenApiIntegration/LegacyOpenApiIntegrationStartup.cs b/test/OpenApiTests/LegacyOpenApiIntegration/LegacyOpenApiIntegrationStartup.cs index 38cd66b41d..2cfa28ebf6 100644 --- a/test/OpenApiTests/LegacyOpenApiIntegration/LegacyOpenApiIntegrationStartup.cs +++ b/test/OpenApiTests/LegacyOpenApiIntegration/LegacyOpenApiIntegrationStartup.cs @@ -16,6 +16,7 @@ protected override void SetJsonApiOptions(JsonApiOptions options) options.Namespace = "api"; options.DefaultAttrCapabilities = AttrCapabilities.AllowView; + options.IncludeJsonApiVersion = true; options.SerializerOptions.PropertyNamingPolicy = JsonKebabCaseNamingPolicy.Instance; options.SerializerOptions.DictionaryKeyPolicy = JsonKebabCaseNamingPolicy.Instance; options.SerializerOptions.Converters.Add(new JsonStringEnumConverter()); diff --git a/test/OpenApiTests/NamingConventions/CamelCase/CamelCaseNamingConventionStartup.cs b/test/OpenApiTests/NamingConventions/CamelCase/CamelCaseNamingConventionStartup.cs index eeca328a8b..cf910b3a53 100644 --- a/test/OpenApiTests/NamingConventions/CamelCase/CamelCaseNamingConventionStartup.cs +++ b/test/OpenApiTests/NamingConventions/CamelCase/CamelCaseNamingConventionStartup.cs @@ -14,6 +14,7 @@ protected override void SetJsonApiOptions(JsonApiOptions options) { base.SetJsonApiOptions(options); + options.IncludeJsonApiVersion = true; options.SerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; options.SerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase; options.SerializerOptions.Converters.Add(new JsonStringEnumConverter()); diff --git a/test/OpenApiTests/NamingConventions/KebabCase/KebabCaseNamingConventionStartup.cs b/test/OpenApiTests/NamingConventions/KebabCase/KebabCaseNamingConventionStartup.cs index e7534bf657..b3cba0120b 100644 --- a/test/OpenApiTests/NamingConventions/KebabCase/KebabCaseNamingConventionStartup.cs +++ b/test/OpenApiTests/NamingConventions/KebabCase/KebabCaseNamingConventionStartup.cs @@ -14,6 +14,7 @@ protected override void SetJsonApiOptions(JsonApiOptions options) { base.SetJsonApiOptions(options); + options.IncludeJsonApiVersion = true; options.SerializerOptions.PropertyNamingPolicy = JsonKebabCaseNamingPolicy.Instance; options.SerializerOptions.DictionaryKeyPolicy = JsonKebabCaseNamingPolicy.Instance; options.SerializerOptions.Converters.Add(new JsonStringEnumConverter()); diff --git a/test/OpenApiTests/NamingConventions/PascalCase/PascalCaseNamingConventionStartup.cs b/test/OpenApiTests/NamingConventions/PascalCase/PascalCaseNamingConventionStartup.cs index e51e9029a2..8a367641f2 100644 --- a/test/OpenApiTests/NamingConventions/PascalCase/PascalCaseNamingConventionStartup.cs +++ b/test/OpenApiTests/NamingConventions/PascalCase/PascalCaseNamingConventionStartup.cs @@ -13,6 +13,7 @@ protected override void SetJsonApiOptions(JsonApiOptions options) { base.SetJsonApiOptions(options); + options.IncludeJsonApiVersion = true; options.SerializerOptions.PropertyNamingPolicy = null; options.SerializerOptions.DictionaryKeyPolicy = null; options.SerializerOptions.Converters.Add(new JsonStringEnumConverter());