@@ -43,7 +43,7 @@ public class OpenApiSchema : IOpenApiAnnotatable, IOpenApiExtensible, IOpenApiRe
43
43
/// <summary>
44
44
/// $vocabulary- used in meta-schemas to identify the vocabularies available for use in schemas described by that meta-schema.
45
45
/// </summary>
46
- public virtual string Vocabulary { get ; set ; }
46
+ public virtual IDictionary < string , bool > Vocabulary { get ; set ; }
47
47
48
48
/// <summary>
49
49
/// $dynamicRef - an applicator that allows for deferring the full resolution until runtime, at which point it is resolved each time it is encountered while evaluating an instance
@@ -55,16 +55,6 @@ public class OpenApiSchema : IOpenApiAnnotatable, IOpenApiExtensible, IOpenApiRe
55
55
/// </summary>
56
56
public virtual string DynamicAnchor { get ; set ; }
57
57
58
- /// <summary>
59
- /// $recursiveAnchor - used to construct recursive schemas i.e one that has a reference to its own root, identified by the empty fragment URI reference ("#")
60
- /// </summary>
61
- public virtual string RecursiveAnchor { get ; set ; }
62
-
63
- /// <summary>
64
- /// $recursiveRef - used to construct recursive schemas i.e one that has a reference to its own root, identified by the empty fragment URI reference ("#")
65
- /// </summary>
66
- public virtual string RecursiveRef { get ; set ; }
67
-
68
58
/// <summary>
69
59
/// $defs - reserves a location for schema authors to inline re-usable JSON Schemas into a more general schema.
70
60
/// The keyword does not directly affect the validation result
@@ -358,11 +348,9 @@ public OpenApiSchema(OpenApiSchema schema)
358
348
Id = schema ? . Id ?? Id ;
359
349
Schema = schema ? . Schema ?? Schema ;
360
350
Comment = schema ? . Comment ?? Comment ;
361
- Vocabulary = schema ? . Vocabulary ?? Vocabulary ;
351
+ Vocabulary = schema ? . Vocabulary != null ? new Dictionary < string , bool > ( schema . Vocabulary ) : null ;
362
352
DynamicAnchor = schema ? . DynamicAnchor ?? DynamicAnchor ;
363
353
DynamicRef = schema ? . DynamicRef ?? DynamicRef ;
364
- RecursiveAnchor = schema ? . RecursiveAnchor ?? RecursiveAnchor ;
365
- RecursiveRef = schema ? . RecursiveRef ?? RecursiveRef ;
366
354
Definitions = schema ? . Definitions != null ? new Dictionary < string , OpenApiSchema > ( schema . Definitions ) : null ;
367
355
UnevaluatedProperties = schema ? . UnevaluatedProperties ?? UnevaluatedProperties ;
368
356
V31ExclusiveMaximum = schema ? . V31ExclusiveMaximum ?? V31ExclusiveMaximum ;
@@ -490,30 +478,30 @@ public void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version,
490
478
SerializeTypeProperty ( Type , writer , version ) ;
491
479
492
480
// allOf
493
- writer . WriteOptionalCollection ( OpenApiConstants . AllOf , AllOf , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
481
+ writer . WriteOptionalCollection ( OpenApiConstants . AllOf , AllOf , callback ) ;
494
482
495
483
// anyOf
496
- writer . WriteOptionalCollection ( OpenApiConstants . AnyOf , AnyOf , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
484
+ writer . WriteOptionalCollection ( OpenApiConstants . AnyOf , AnyOf , callback ) ;
497
485
498
486
// oneOf
499
- writer . WriteOptionalCollection ( OpenApiConstants . OneOf , OneOf , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
487
+ writer . WriteOptionalCollection ( OpenApiConstants . OneOf , OneOf , callback ) ;
500
488
501
489
// not
502
- writer . WriteOptionalObject ( OpenApiConstants . Not , Not , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
490
+ writer . WriteOptionalObject ( OpenApiConstants . Not , Not , callback ) ;
503
491
504
492
// items
505
- writer . WriteOptionalObject ( OpenApiConstants . Items , Items , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
493
+ writer . WriteOptionalObject ( OpenApiConstants . Items , Items , callback ) ;
506
494
507
495
// properties
508
- writer . WriteOptionalMap ( OpenApiConstants . Properties , Properties , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
496
+ writer . WriteOptionalMap ( OpenApiConstants . Properties , Properties , callback ) ;
509
497
510
498
// additionalProperties
511
499
if ( AdditionalPropertiesAllowed )
512
500
{
513
501
writer . WriteOptionalObject (
514
502
OpenApiConstants . AdditionalProperties ,
515
503
AdditionalProperties ,
516
- ( w , s ) => s . SerializeAsV3 ( w ) ) ;
504
+ callback ) ;
517
505
}
518
506
else
519
507
{
@@ -536,7 +524,7 @@ public void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version,
536
524
}
537
525
538
526
// discriminator
539
- writer . WriteOptionalObject ( OpenApiConstants . Discriminator , Discriminator , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
527
+ writer . WriteOptionalObject ( OpenApiConstants . Discriminator , Discriminator , callback ) ;
540
528
541
529
// readOnly
542
530
writer . WriteProperty ( OpenApiConstants . ReadOnly , ReadOnly , false ) ;
@@ -548,7 +536,7 @@ public void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version,
548
536
writer . WriteOptionalObject ( OpenApiConstants . Xml , Xml , ( w , s ) => s . SerializeAsV2 ( w ) ) ;
549
537
550
538
// externalDocs
551
- writer . WriteOptionalObject ( OpenApiConstants . ExternalDocs , ExternalDocs , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
539
+ writer . WriteOptionalObject ( OpenApiConstants . ExternalDocs , ExternalDocs , callback ) ;
552
540
553
541
// example
554
542
writer . WriteOptionalObject ( OpenApiConstants . Example , Example , ( w , e ) => w . WriteAny ( e ) ) ;
@@ -557,7 +545,7 @@ public void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version,
557
545
writer . WriteProperty ( OpenApiConstants . Deprecated , Deprecated , false ) ;
558
546
559
547
// extensions
560
- writer . WriteExtensions ( Extensions , OpenApiSpecVersion . OpenApi3_0 ) ;
548
+ writer . WriteExtensions ( Extensions , version ) ;
561
549
562
550
writer . WriteEndObject ( ) ;
563
551
}
@@ -574,12 +562,10 @@ internal void WriteV31Properties(IOpenApiWriter writer)
574
562
writer . WriteProperty ( OpenApiConstants . Id , Id ) ;
575
563
writer . WriteProperty ( OpenApiConstants . DollarSchema , Schema ) ;
576
564
writer . WriteProperty ( OpenApiConstants . Comment , Comment ) ;
577
- writer . WriteProperty ( OpenApiConstants . Vocabulary , Vocabulary ) ;
578
- writer . WriteOptionalMap ( OpenApiConstants . Defs , Definitions , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
565
+ writer . WriteOptionalMap ( OpenApiConstants . Vocabulary , Vocabulary , ( w , s ) => w . WriteValue ( s ) ) ;
566
+ writer . WriteOptionalMap ( OpenApiConstants . Defs , Definitions , ( w , s ) => s . SerializeAsV31 ( w ) ) ;
579
567
writer . WriteProperty ( OpenApiConstants . DynamicRef , DynamicRef ) ;
580
568
writer . WriteProperty ( OpenApiConstants . DynamicAnchor , DynamicAnchor ) ;
581
- writer . WriteProperty ( OpenApiConstants . RecursiveAnchor , RecursiveAnchor ) ;
582
- writer . WriteProperty ( OpenApiConstants . RecursiveRef , RecursiveRef ) ;
583
569
writer . WriteProperty ( OpenApiConstants . V31ExclusiveMaximum , V31ExclusiveMaximum ) ;
584
570
writer . WriteProperty ( OpenApiConstants . V31ExclusiveMinimum , V31ExclusiveMinimum ) ;
585
571
writer . WriteProperty ( OpenApiConstants . UnevaluatedProperties , UnevaluatedProperties , false ) ;
0 commit comments