Skip to content

Commit 8e020d8

Browse files
committed
Merge branch 'mk/add-json-schema-model' into mk/use-json-schema-model
2 parents 8f62e54 + f5811e9 commit 8e020d8

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/Microsoft.OpenApi/Models/OpenApiSchema.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Microsoft Corporation. All rights reserved.
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

44
using System;
@@ -227,6 +227,15 @@ public class OpenApiSchema : IOpenApiExtensible, IOpenApiReferenceable, IOpenApi
227227
/// </summary>
228228
public IDictionary<string, OpenApiSchema> Properties { get; set; } = new Dictionary<string, OpenApiSchema>();
229229

230+
/// <summary>
231+
/// Follow JSON Schema definition: https://tools.ietf.org/html/draft-fge-json-schema-validation-00
232+
/// PatternProperty definitions MUST be a Schema Object and not a standard JSON Schema (inline or referenced)
233+
/// Each property name of this object SHOULD be a valid regular expression according to the ECMA 262 r
234+
/// egular expression dialect. Each property value of this object MUST be an object, and each object MUST
235+
/// be a valid Schema Object not a standard JSON Schema.
236+
/// </summary>
237+
public IDictionary<string, OpenApiSchema> PatternProperties { get; set; } = new Dictionary<string, OpenApiSchema>();
238+
230239
/// <summary>
231240
/// Follow JSON Schema definition: https://tools.ietf.org/html/draft-fge-json-schema-validation-00
232241
/// </summary>
@@ -363,11 +372,12 @@ public OpenApiSchema(OpenApiSchema schema)
363372
MinItems = schema?.MinItems ?? MinItems;
364373
UniqueItems = schema?.UniqueItems ?? UniqueItems;
365374
Properties = schema?.Properties != null ? new Dictionary<string, OpenApiSchema>(schema.Properties) : null;
375+
PatternProperties = schema?.PatternProperties != null ? new Dictionary<string, OpenApiSchema>(schema.PatternProperties) : null;
366376
MaxProperties = schema?.MaxProperties ?? MaxProperties;
367377
MinProperties = schema?.MinProperties ?? MinProperties;
368378
AdditionalPropertiesAllowed = schema?.AdditionalPropertiesAllowed ?? AdditionalPropertiesAllowed;
369379
AdditionalProperties = schema?.AdditionalProperties != null ? new(schema?.AdditionalProperties) : null;
370-
Discriminator = schema?.Discriminator != null ? new(schema?.Discriminator) : null;
380+
Discriminator = schema?.Discriminator != null ? new(schema?.Discriminator) : null;
371381
Example = schema?.Example != null ? new(schema?.Example.Node) : null;
372382
Examples = schema?.Examples != null ? new List<JsonNode>(schema.Examples) : null;
373383
Enum = schema?.Enum != null ? new List<JsonNode>(schema.Enum) : null;
@@ -596,6 +606,7 @@ internal void WriteV31Properties(IOpenApiWriter writer)
596606
writer.WriteProperty(OpenApiConstants.V31ExclusiveMinimum, V31ExclusiveMinimum);
597607
writer.WriteProperty(OpenApiConstants.UnevaluatedProperties, UnevaluatedProperties, false);
598608
writer.WriteOptionalCollection(OpenApiConstants.Examples, Examples, (nodeWriter, s) => nodeWriter.WriteAny(new OpenApiAny(s)));
609+
writer.WriteOptionalMap(OpenApiConstants.PatternProperties, PatternProperties, (w, s) => s.SerializeAsV31(w));
599610
}
600611

601612
/// <summary>

src/Microsoft.OpenApi/Reader/V31/OpenApiSchemaDeserializer.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,10 @@ internal static partial class OpenApiV31Deserializer
150150
"properties",
151151
(o, n, t) => o.Properties = n.CreateMap(LoadOpenApiSchema, t)
152152
},
153+
{
154+
"patternProperties",
155+
(o, n, t) => o.PatternProperties = n.CreateMap(LoadOpenApiSchema, t)
156+
},
153157
{
154158
"additionalProperties", (o, n, _) =>
155159
{

0 commit comments

Comments
 (0)