diff --git a/src/Microsoft.OpenApi/Models/Interfaces/IOpenApiSchema.cs b/src/Microsoft.OpenApi/Models/Interfaces/IOpenApiSchema.cs
index 6cf093499..d48fad60a 100644
--- a/src/Microsoft.OpenApi/Models/Interfaces/IOpenApiSchema.cs
+++ b/src/Microsoft.OpenApi/Models/Interfaces/IOpenApiSchema.cs
@@ -55,12 +55,12 @@ public interface IOpenApiSchema : IOpenApiDescribedElement, IOpenApiSerializable
///
/// Follow JSON Schema definition: https://tools.ietf.org/html/draft-fge-json-schema-validation-00
///
- public decimal? V31ExclusiveMaximum { get; }
+ public decimal? ExclusiveMaximum { get; }
///
/// Follow JSON Schema definition: https://tools.ietf.org/html/draft-fge-json-schema-validation-00
///
- public decimal? V31ExclusiveMinimum { get; }
+ public decimal? ExclusiveMinimum { get; }
///
/// Follow JSON Schema definition: https://tools.ietf.org/html/draft-fge-json-schema-validation-00
@@ -90,21 +90,11 @@ public interface IOpenApiSchema : IOpenApiDescribedElement, IOpenApiSerializable
///
public decimal? Maximum { get; }
- ///
- /// Follow JSON Schema definition: https://tools.ietf.org/html/draft-fge-json-schema-validation-00
- ///
- public bool? ExclusiveMaximum { get; }
-
///
/// Follow JSON Schema definition: https://tools.ietf.org/html/draft-fge-json-schema-validation-00
///
public decimal? Minimum { get; }
- ///
- /// Follow JSON Schema definition: https://tools.ietf.org/html/draft-fge-json-schema-validation-00
- ///
- public bool? ExclusiveMinimum { get; }
-
///
/// Follow JSON Schema definition: https://tools.ietf.org/html/draft-fge-json-schema-validation-00
///
diff --git a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs
index e524cfe41..05d3c9afa 100644
--- a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs
+++ b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs
@@ -44,11 +44,63 @@ public class OpenApiSchema : IOpenApiReferenceable, IOpenApiExtensible, IOpenApi
///
public IDictionary Definitions { get; set; }
+ private decimal? _exclusiveMaximum;
///
- public decimal? V31ExclusiveMaximum { get; set; }
+ public decimal? ExclusiveMaximum
+ {
+ get
+ {
+ if (_exclusiveMaximum.HasValue)
+ {
+ return _exclusiveMaximum;
+ }
+ if (IsExclusiveMaximum == true && _maximum.HasValue)
+ {
+ return _maximum;
+ }
+ return null;
+ }
+ set
+ {
+ _exclusiveMaximum = value;
+ IsExclusiveMaximum = value != null;
+ }
+ }
+ ///
+ /// Compatibility property for OpenAPI 3.0 or earlier serialization of the exclusive maximum value.
+ ///
+ /// DO NOT CHANGE THE VISIBILITY OF THIS PROPERTY TO PUBLIC
+ internal bool? IsExclusiveMaximum { get; set; }
+
+ private decimal? _exclusiveMinimum;
///
- public decimal? V31ExclusiveMinimum { get; set; }
+ public decimal? ExclusiveMinimum
+ {
+ get
+ {
+ if (_exclusiveMinimum.HasValue)
+ {
+ return _exclusiveMinimum;
+ }
+ if (IsExclusiveMinimum == true && _minimum.HasValue)
+ {
+ return _minimum;
+ }
+ return null;
+ }
+ set
+ {
+ _exclusiveMinimum = value;
+ IsExclusiveMinimum = value != null;
+ }
+ }
+
+ ///
+ /// Compatibility property for OpenAPI 3.0 or earlier serialization of the exclusive minimum value.
+ ///
+ /// DO NOT CHANGE THE VISIBILITY OF THIS PROPERTY TO PUBLIC
+ internal bool? IsExclusiveMinimum { get; set; }
///
public bool UnEvaluatedProperties { get; set; }
@@ -65,17 +117,42 @@ public class OpenApiSchema : IOpenApiReferenceable, IOpenApiExtensible, IOpenApi
///
public string Description { get; set; }
+ private decimal? _maximum;
///
- public decimal? Maximum { get; set; }
-
- ///
- public bool? ExclusiveMaximum { get; set; }
+ public decimal? Maximum
+ {
+ get
+ {
+ if (IsExclusiveMaximum == true)
+ {
+ return null;
+ }
+ return _maximum;
+ }
+ set
+ {
+ _maximum = value;
+ }
+ }
- ///
- public decimal? Minimum { get; set; }
+ private decimal? _minimum;
///
- public bool? ExclusiveMinimum { get; set; }
+ public decimal? Minimum
+ {
+ get
+ {
+ if (IsExclusiveMinimum == true)
+ {
+ return null;
+ }
+ return _minimum;
+ }
+ set
+ {
+ _minimum = value;
+ }
+ }
///
public int? MaxLength { get; set; }
@@ -201,15 +278,18 @@ internal OpenApiSchema(IOpenApiSchema schema)
DynamicRef = schema.DynamicRef ?? DynamicRef;
Definitions = schema.Definitions != null ? new Dictionary(schema.Definitions) : null;
UnevaluatedProperties = schema.UnevaluatedProperties;
- V31ExclusiveMaximum = schema.V31ExclusiveMaximum ?? V31ExclusiveMaximum;
- V31ExclusiveMinimum = schema.V31ExclusiveMinimum ?? V31ExclusiveMinimum;
+ ExclusiveMaximum = schema.ExclusiveMaximum ?? ExclusiveMaximum;
+ ExclusiveMinimum = schema.ExclusiveMinimum ?? ExclusiveMinimum;
+ if (schema is OpenApiSchema eMSchema)
+ {
+ IsExclusiveMaximum = eMSchema.IsExclusiveMaximum;
+ IsExclusiveMinimum = eMSchema.IsExclusiveMinimum;
+ }
Type = schema.Type ?? Type;
Format = schema.Format ?? Format;
Description = schema.Description ?? Description;
Maximum = schema.Maximum ?? Maximum;
- ExclusiveMaximum = schema.ExclusiveMaximum ?? ExclusiveMaximum;
Minimum = schema.Minimum ?? Minimum;
- ExclusiveMinimum = schema.ExclusiveMinimum ?? ExclusiveMinimum;
MaxLength = schema.MaxLength ?? MaxLength;
MinLength = schema.MinLength ?? MinLength;
Pattern = schema.Pattern ?? Pattern;
@@ -257,6 +337,44 @@ public void SerializeAsV3(IOpenApiWriter writer)
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_0, (writer, element) => element.SerializeAsV3(writer));
}
+ private static void SerializeBounds(IOpenApiWriter writer, OpenApiSpecVersion version, string propertyName, string exclusivePropertyName, string isExclusivePropertyName, decimal? value, decimal? exclusiveValue, bool? isExclusiveValue)
+ {
+ if (version >= OpenApiSpecVersion.OpenApi3_1)
+ {
+ if (exclusiveValue.HasValue)
+ {
+ // was explicitly set in the document or object model
+ writer.WriteProperty(exclusivePropertyName, exclusiveValue.Value);
+ }
+ else if (isExclusiveValue == true && value.HasValue)
+ {
+ // came from parsing an old document
+ writer.WriteProperty(exclusivePropertyName, value);
+ }
+ else if (value.HasValue)
+ {
+ // was explicitly set in the document or object model
+ writer.WriteProperty(propertyName, value);
+ }
+ }
+ else
+ {
+ if (exclusiveValue.HasValue)
+ {
+ // was explicitly set in a new document being downcast or object model
+ writer.WriteProperty(propertyName, exclusiveValue.Value);
+ writer.WriteProperty(isExclusivePropertyName, true);
+ }
+ else if (value.HasValue)
+ {
+ // came from parsing an old document, we're just mirroring the information
+ writer.WriteProperty(propertyName, value);
+ if (isExclusiveValue.HasValue)
+ writer.WriteProperty(isExclusivePropertyName, isExclusiveValue.Value);
+ }
+ }
+ }
+
private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version,
Action callback)
{
@@ -274,16 +392,12 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
writer.WriteProperty(OpenApiConstants.MultipleOf, MultipleOf);
// maximum
- writer.WriteProperty(OpenApiConstants.Maximum, Maximum);
-
// exclusiveMaximum
- writer.WriteProperty(OpenApiConstants.ExclusiveMaximum, ExclusiveMaximum);
+ SerializeBounds(writer, version, OpenApiConstants.Maximum, OpenApiConstants.ExclusiveMaximum, OpenApiConstants.V31ExclusiveMaximum, Maximum, ExclusiveMaximum, IsExclusiveMaximum);
// minimum
- writer.WriteProperty(OpenApiConstants.Minimum, Minimum);
-
// exclusiveMinimum
- writer.WriteProperty(OpenApiConstants.ExclusiveMinimum, ExclusiveMinimum);
+ SerializeBounds(writer, version, OpenApiConstants.Minimum, OpenApiConstants.ExclusiveMinimum, OpenApiConstants.V31ExclusiveMinimum, Minimum, ExclusiveMinimum, IsExclusiveMinimum);
// maxLength
writer.WriteProperty(OpenApiConstants.MaxLength, MaxLength);
@@ -407,8 +521,6 @@ internal void WriteJsonSchemaKeywords(IOpenApiWriter writer)
writer.WriteOptionalMap(OpenApiConstants.Defs, Definitions, (w, s) => s.SerializeAsV31(w));
writer.WriteProperty(OpenApiConstants.DynamicRef, DynamicRef);
writer.WriteProperty(OpenApiConstants.DynamicAnchor, DynamicAnchor);
- writer.WriteProperty(OpenApiConstants.V31ExclusiveMaximum, V31ExclusiveMaximum);
- writer.WriteProperty(OpenApiConstants.V31ExclusiveMinimum, V31ExclusiveMinimum);
writer.WriteProperty(OpenApiConstants.UnevaluatedProperties, UnevaluatedProperties, false);
writer.WriteOptionalCollection(OpenApiConstants.Examples, Examples, (nodeWriter, s) => nodeWriter.WriteAny(s));
writer.WriteOptionalMap(OpenApiConstants.PatternProperties, PatternProperties, (w, s) => s.SerializeAsV31(w));
@@ -438,16 +550,12 @@ internal void WriteAsItemsProperties(IOpenApiWriter writer)
writer.WriteOptionalObject(OpenApiConstants.Default, Default, (w, d) => w.WriteAny(d));
// maximum
- writer.WriteProperty(OpenApiConstants.Maximum, Maximum);
-
// exclusiveMaximum
- writer.WriteProperty(OpenApiConstants.ExclusiveMaximum, ExclusiveMaximum);
+ SerializeBounds(writer, OpenApiSpecVersion.OpenApi2_0, OpenApiConstants.Maximum, OpenApiConstants.ExclusiveMaximum, OpenApiConstants.V31ExclusiveMaximum, Maximum, ExclusiveMaximum, IsExclusiveMaximum);
// minimum
- writer.WriteProperty(OpenApiConstants.Minimum, Minimum);
-
// exclusiveMinimum
- writer.WriteProperty(OpenApiConstants.ExclusiveMinimum, ExclusiveMinimum);
+ SerializeBounds(writer, OpenApiSpecVersion.OpenApi2_0, OpenApiConstants.Minimum, OpenApiConstants.ExclusiveMinimum, OpenApiConstants.V31ExclusiveMinimum, Minimum, ExclusiveMinimum, IsExclusiveMinimum);
// maxLength
writer.WriteProperty(OpenApiConstants.MaxLength, MaxLength);
@@ -522,16 +630,12 @@ private void SerializeAsV2(
writer.WriteProperty(OpenApiConstants.MultipleOf, MultipleOf);
// maximum
- writer.WriteProperty(OpenApiConstants.Maximum, Maximum);
-
// exclusiveMaximum
- writer.WriteProperty(OpenApiConstants.ExclusiveMaximum, ExclusiveMaximum);
+ SerializeBounds(writer, OpenApiSpecVersion.OpenApi2_0, OpenApiConstants.Maximum, OpenApiConstants.ExclusiveMaximum, OpenApiConstants.V31ExclusiveMaximum, Maximum, ExclusiveMaximum, IsExclusiveMaximum);
// minimum
- writer.WriteProperty(OpenApiConstants.Minimum, Minimum);
-
// exclusiveMinimum
- writer.WriteProperty(OpenApiConstants.ExclusiveMinimum, ExclusiveMinimum);
+ SerializeBounds(writer, OpenApiSpecVersion.OpenApi2_0, OpenApiConstants.Minimum, OpenApiConstants.ExclusiveMinimum, OpenApiConstants.V31ExclusiveMinimum, Minimum, ExclusiveMinimum, IsExclusiveMinimum);
// maxLength
writer.WriteProperty(OpenApiConstants.MaxLength, MaxLength);
diff --git a/src/Microsoft.OpenApi/Models/References/OpenApiSchemaReference.cs b/src/Microsoft.OpenApi/Models/References/OpenApiSchemaReference.cs
index 746af1d80..52631941b 100644
--- a/src/Microsoft.OpenApi/Models/References/OpenApiSchemaReference.cs
+++ b/src/Microsoft.OpenApi/Models/References/OpenApiSchemaReference.cs
@@ -66,9 +66,9 @@ public string Description
///
public IDictionary Definitions { get => Target?.Definitions; }
///
- public decimal? V31ExclusiveMaximum { get => Target?.V31ExclusiveMaximum; }
+ public decimal? ExclusiveMaximum { get => Target?.ExclusiveMaximum; }
///
- public decimal? V31ExclusiveMinimum { get => Target?.V31ExclusiveMinimum; }
+ public decimal? ExclusiveMinimum { get => Target?.ExclusiveMinimum; }
///
public bool UnEvaluatedProperties { get => Target?.UnEvaluatedProperties ?? false; }
///
@@ -80,12 +80,8 @@ public string Description
///
public decimal? Maximum { get => Target?.Maximum; }
///
- public bool? ExclusiveMaximum { get => Target?.ExclusiveMaximum; }
- ///
public decimal? Minimum { get => Target?.Minimum; }
///
- public bool? ExclusiveMinimum { get => Target?.ExclusiveMinimum; }
- ///
public int? MaxLength { get => Target?.MaxLength; }
///
public int? MinLength { get => Target?.MinLength; }
diff --git a/src/Microsoft.OpenApi/Reader/V2/OpenApiHeaderDeserializer.cs b/src/Microsoft.OpenApi/Reader/V2/OpenApiHeaderDeserializer.cs
index 9c712b0a3..e92c47231 100644
--- a/src/Microsoft.OpenApi/Reader/V2/OpenApiHeaderDeserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V2/OpenApiHeaderDeserializer.cs
@@ -49,7 +49,7 @@ internal static partial class OpenApiV2Deserializer
},
{
"exclusiveMaximum",
- (o, n, _) => GetOrCreateSchema(o).ExclusiveMaximum = bool.Parse(n.GetScalarValue())
+ (o, n, _) => GetOrCreateSchema(o).IsExclusiveMaximum = bool.Parse(n.GetScalarValue())
},
{
"minimum",
@@ -57,7 +57,7 @@ internal static partial class OpenApiV2Deserializer
},
{
"exclusiveMinimum",
- (o, n, _) => GetOrCreateSchema(o).ExclusiveMinimum = bool.Parse(n.GetScalarValue())
+ (o, n, _) => GetOrCreateSchema(o).IsExclusiveMinimum = bool.Parse(n.GetScalarValue())
},
{
"maxLength",
diff --git a/src/Microsoft.OpenApi/Reader/V2/OpenApiSchemaDeserializer.cs b/src/Microsoft.OpenApi/Reader/V2/OpenApiSchemaDeserializer.cs
index 42575e394..87a8fdf8a 100644
--- a/src/Microsoft.OpenApi/Reader/V2/OpenApiSchemaDeserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V2/OpenApiSchemaDeserializer.cs
@@ -34,7 +34,7 @@ internal static partial class OpenApiV2Deserializer
},
{
"exclusiveMaximum",
- (o, n, _) => o.ExclusiveMaximum = bool.Parse(n.GetScalarValue())
+ (o, n, _) => o.IsExclusiveMaximum = bool.Parse(n.GetScalarValue())
},
{
"minimum",
@@ -42,7 +42,7 @@ internal static partial class OpenApiV2Deserializer
},
{
"exclusiveMinimum",
- (o, n, _) => o.ExclusiveMinimum = bool.Parse(n.GetScalarValue())
+ (o, n, _) => o.IsExclusiveMinimum = bool.Parse(n.GetScalarValue())
},
{
"maxLength",
diff --git a/src/Microsoft.OpenApi/Reader/V3/OpenApiSchemaDeserializer.cs b/src/Microsoft.OpenApi/Reader/V3/OpenApiSchemaDeserializer.cs
index 25d68b477..2cc13484f 100644
--- a/src/Microsoft.OpenApi/Reader/V3/OpenApiSchemaDeserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V3/OpenApiSchemaDeserializer.cs
@@ -34,7 +34,7 @@ internal static partial class OpenApiV3Deserializer
},
{
"exclusiveMaximum",
- (o, n, _) => o.ExclusiveMaximum = bool.Parse(n.GetScalarValue())
+ (o, n, _) => o.IsExclusiveMaximum = bool.Parse(n.GetScalarValue())
},
{
"minimum",
@@ -42,7 +42,7 @@ internal static partial class OpenApiV3Deserializer
},
{
"exclusiveMinimum",
- (o, n, _) => o.ExclusiveMinimum = bool.Parse(n.GetScalarValue())
+ (o, n, _) => o.IsExclusiveMinimum = bool.Parse(n.GetScalarValue())
},
{
"maxLength",
diff --git a/src/Microsoft.OpenApi/Reader/V31/OpenApiSchemaDeserializer.cs b/src/Microsoft.OpenApi/Reader/V31/OpenApiSchemaDeserializer.cs
index 02039cebd..460dbc508 100644
--- a/src/Microsoft.OpenApi/Reader/V31/OpenApiSchemaDeserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V31/OpenApiSchemaDeserializer.cs
@@ -59,7 +59,7 @@ internal static partial class OpenApiV31Deserializer
},
{
"exclusiveMaximum",
- (o, n, _) => o.V31ExclusiveMaximum = ParserHelper.ParseDecimalWithFallbackOnOverflow(n.GetScalarValue(), decimal.MaxValue)
+ (o, n, _) => o.ExclusiveMaximum = ParserHelper.ParseDecimalWithFallbackOnOverflow(n.GetScalarValue(), decimal.MaxValue)
},
{
"minimum",
@@ -67,7 +67,7 @@ internal static partial class OpenApiV31Deserializer
},
{
"exclusiveMinimum",
- (o, n, _) => o.V31ExclusiveMinimum = ParserHelper.ParseDecimalWithFallbackOnOverflow(n.GetScalarValue(), decimal.MaxValue)
+ (o, n, _) => o.ExclusiveMinimum = ParserHelper.ParseDecimalWithFallbackOnOverflow(n.GetScalarValue(), decimal.MaxValue)
},
{
"maxLength",
diff --git a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiDocumentTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiDocumentTests.cs
index 1059c3b02..be5921e54 100644
--- a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiDocumentTests.cs
+++ b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiDocumentTests.cs
@@ -50,49 +50,22 @@ public void ParseDocumentWithDifferentCultureShouldSucceed(string culture)
exclusiveMaximum: true
exclusiveMinimum: false
paths: {}
- """,
+ """,
"yaml", SettingsFixture.ReaderSettings);
- result.Document.Should().BeEquivalentTo(
- new OpenApiDocument
- {
- Info = new()
- {
- Title = "Simple Document",
- Version = "0.9.1",
- Extensions =
- {
- ["x-extension"] = new OpenApiAny(2.335)
- }
- },
- Components = new()
- {
- Schemas =
- {
- ["sampleSchema"] = new OpenApiSchema()
- {
- Type = JsonSchemaType.Object,
- Properties =
- {
- ["sampleProperty"] = new OpenApiSchema()
- {
- Type = JsonSchemaType.Number,
- Minimum = (decimal)100.54,
- Maximum = (decimal)60000000.35,
- ExclusiveMaximum = true,
- ExclusiveMinimum = false
- }
- }
- }
- }
- },
- Paths = new()
- }, options => options
- .Excluding(x=> x.BaseUri)
- .Excluding((IMemberInfo memberInfo) =>
- memberInfo.Path.EndsWith("Parent"))
- .Excluding((IMemberInfo memberInfo) =>
- memberInfo.Path.EndsWith("Root")));
+ Assert.Equal("0.9.1", result.Document.Info.Version, StringComparer.OrdinalIgnoreCase);
+ var extension = Assert.IsType(result.Document.Info.Extensions["x-extension"]);
+ Assert.Equal(2.335M, extension.Node.GetValue());
+ var sampleSchema = Assert.IsType(result.Document.Components.Schemas["sampleSchema"]);
+ var samplePropertySchema = Assert.IsType(sampleSchema.Properties["sampleProperty"]);
+ var expectedPropertySchema = new OpenApiSchema()
+ {
+ Type = JsonSchemaType.Number,
+ Minimum = (decimal)100.54,
+ ExclusiveMaximum = (decimal)60000000.35,
+ };
+
+ Assert.Equivalent(expectedPropertySchema, samplePropertySchema);
}
[Fact]
diff --git a/test/Microsoft.OpenApi.Readers.Tests/V31Tests/OpenApiSchemaTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V31Tests/OpenApiSchemaTests.cs
index d96a1fe87..854fc403c 100644
--- a/test/Microsoft.OpenApi.Readers.Tests/V31Tests/OpenApiSchemaTests.cs
+++ b/test/Microsoft.OpenApi.Readers.Tests/V31Tests/OpenApiSchemaTests.cs
@@ -239,7 +239,7 @@ public async Task ParseAdvancedV31SchemaShouldSucceed()
["six"] = new OpenApiSchema()
{
Description = "exclusiveMinimum true",
- V31ExclusiveMinimum = 10
+ ExclusiveMinimum = 10
},
["seven"] = new OpenApiSchema()
{
@@ -249,7 +249,7 @@ public async Task ParseAdvancedV31SchemaShouldSucceed()
["eight"] = new OpenApiSchema()
{
Description = "exclusiveMaximum true",
- V31ExclusiveMaximum = 20
+ ExclusiveMaximum = 20
},
["nine"] = new OpenApiSchema()
{
diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiOperationTests.cs b/test/Microsoft.OpenApi.Tests/Models/OpenApiOperationTests.cs
index 31a26f1be..bb615f2dd 100644
--- a/test/Microsoft.OpenApi.Tests/Models/OpenApiOperationTests.cs
+++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiOperationTests.cs
@@ -372,9 +372,7 @@ public async Task SerializeOperationWithBodyAsV3JsonWorks()
var actual = await _operationWithBody.SerializeAsJsonAsync(OpenApiSpecVersion.OpenApi3_0);
// Assert
- actual = actual.MakeLineBreaksEnvironmentNeutral();
- expected = expected.MakeLineBreaksEnvironmentNeutral();
- Assert.Equal(expected, actual);
+ Assert.True(JsonNode.DeepEquals(JsonNode.Parse(expected), JsonNode.Parse(actual)));
}
[Fact]
diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs b/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs
index 76d6c00fa..9fc3dcebb 100644
--- a/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs
+++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs
@@ -30,8 +30,7 @@ public class OpenApiSchemaTests
Title = "title1",
MultipleOf = 3,
Maximum = 42,
- ExclusiveMinimum = true,
- Minimum = 10,
+ ExclusiveMinimum = 10,
Default = 15,
Type = JsonSchemaType.Integer | JsonSchemaType.Null,
@@ -148,8 +147,7 @@ public class OpenApiSchemaTests
Title = "title1",
MultipleOf = 3,
Maximum = 42,
- ExclusiveMinimum = true,
- Minimum = 10,
+ ExclusiveMinimum = 10,
Default = 15,
Type = JsonSchemaType.Integer | JsonSchemaType.Null,
diff --git a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt
index 76697d7ae..fc2560060 100644
--- a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt
+++ b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt
@@ -429,8 +429,8 @@ namespace Microsoft.OpenApi.Models.Interfaces
System.Collections.Generic.IList Enum { get; }
System.Text.Json.Nodes.JsonNode Example { get; }
System.Collections.Generic.IList Examples { get; }
- bool? ExclusiveMaximum { get; }
- bool? ExclusiveMinimum { get; }
+ decimal? ExclusiveMaximum { get; }
+ decimal? ExclusiveMinimum { get; }
Microsoft.OpenApi.Models.OpenApiExternalDocs ExternalDocs { get; }
string Format { get; }
string Id { get; }
@@ -458,8 +458,6 @@ namespace Microsoft.OpenApi.Models.Interfaces
bool UnevaluatedProperties { get; }
bool? UniqueItems { get; }
System.Collections.Generic.IDictionary UnrecognizedKeywords { get; }
- decimal? V31ExclusiveMaximum { get; }
- decimal? V31ExclusiveMinimum { get; }
System.Collections.Generic.IDictionary Vocabulary { get; }
bool WriteOnly { get; }
Microsoft.OpenApi.Models.OpenApiXml Xml { get; }
@@ -1033,8 +1031,8 @@ namespace Microsoft.OpenApi.Models
public System.Collections.Generic.IList Enum { get; set; }
public System.Text.Json.Nodes.JsonNode Example { get; set; }
public System.Collections.Generic.IList Examples { get; set; }
- public bool? ExclusiveMaximum { get; set; }
- public bool? ExclusiveMinimum { get; set; }
+ public decimal? ExclusiveMaximum { get; set; }
+ public decimal? ExclusiveMinimum { get; set; }
public System.Collections.Generic.IDictionary Extensions { get; set; }
public Microsoft.OpenApi.Models.OpenApiExternalDocs ExternalDocs { get; set; }
public string Format { get; set; }
@@ -1063,8 +1061,6 @@ namespace Microsoft.OpenApi.Models
public bool UnevaluatedProperties { get; set; }
public bool? UniqueItems { get; set; }
public System.Collections.Generic.IDictionary UnrecognizedKeywords { get; set; }
- public decimal? V31ExclusiveMaximum { get; set; }
- public decimal? V31ExclusiveMinimum { get; set; }
public System.Collections.Generic.IDictionary Vocabulary { get; set; }
public bool WriteOnly { get; set; }
public Microsoft.OpenApi.Models.OpenApiXml Xml { get; set; }
@@ -1386,8 +1382,8 @@ namespace Microsoft.OpenApi.Models.References
public System.Collections.Generic.IList Enum { get; }
public System.Text.Json.Nodes.JsonNode Example { get; }
public System.Collections.Generic.IList Examples { get; }
- public bool? ExclusiveMaximum { get; }
- public bool? ExclusiveMinimum { get; }
+ public decimal? ExclusiveMaximum { get; }
+ public decimal? ExclusiveMinimum { get; }
public System.Collections.Generic.IDictionary Extensions { get; }
public Microsoft.OpenApi.Models.OpenApiExternalDocs ExternalDocs { get; }
public string Format { get; }
@@ -1416,8 +1412,6 @@ namespace Microsoft.OpenApi.Models.References
public bool UnevaluatedProperties { get; }
public bool? UniqueItems { get; }
public System.Collections.Generic.IDictionary UnrecognizedKeywords { get; }
- public decimal? V31ExclusiveMaximum { get; }
- public decimal? V31ExclusiveMinimum { get; }
public System.Collections.Generic.IDictionary Vocabulary { get; }
public bool WriteOnly { get; }
public Microsoft.OpenApi.Models.OpenApiXml Xml { get; }