@@ -742,13 +742,15 @@ let QUERYPARAM = 'query',
742
742
if ( resolvedSchema . type === 'object' && resolvedSchema . properties ) {
743
743
const schemaDetails = {
744
744
type : resolvedSchema . type || 'unknown' ,
745
- properties : { }
745
+ properties : { } ,
746
+ required : [ ]
746
747
} ,
747
748
requiredProperties = new Set ( resolvedSchema . required || [ ] ) ;
749
+
748
750
for ( let [ key , prop ] of Object . entries ( resolvedSchema . properties ) ) {
749
751
const propertyDetails = {
750
752
type : prop . type || 'unknown' ,
751
- required : requiredProperties . has ( key ) || parentRequired . has ( key ) ,
753
+ deprecated : prop . deprecated || false ,
752
754
enum : prop . enum || undefined ,
753
755
minLength : prop . minLength || undefined ,
754
756
maxLength : prop . maxLength || undefined ,
@@ -759,19 +761,29 @@ let QUERYPARAM = 'query',
759
761
description : prop . description || undefined ,
760
762
format : prop . format || undefined
761
763
} ;
764
+
765
+ if ( requiredProperties . has ( key ) || parentRequired . has ( key ) ) {
766
+ schemaDetails . required . push ( key ) ;
767
+ }
762
768
if ( prop . $ref ) {
763
- propertyDetails . properties = processSchema ( prop ) ;
769
+ propertyDetails . properties = processSchema ( prop , parentRequired = requiredProperties ) ;
764
770
}
765
771
else if ( prop . properties ) {
766
- let res = processSchema ( prop ) . properties ;
767
- propertyDetails . properties = res ;
772
+ let res = processSchema ( prop ) ;
773
+ propertyDetails . properties = res . properties ;
774
+ if ( res . required ) {
775
+ propertyDetails . required = res . required ;
776
+ }
768
777
}
769
778
else if ( prop . type === 'array' && prop . items ) {
770
- propertyDetails . items = processSchema ( prop . items ) ;
779
+ propertyDetails . items = processSchema ( prop . items , parentRequired = requiredProperties ) ;
771
780
}
772
781
773
782
schemaDetails . properties [ key ] = propertyDetails ;
774
783
}
784
+ if ( schemaDetails . required && schemaDetails . required . length === 0 ) {
785
+ schemaDetails . required = undefined ;
786
+ }
775
787
return schemaDetails ;
776
788
}
777
789
else if ( resolvedSchema . type === 'array' && resolvedSchema . items ) {
@@ -2019,6 +2031,8 @@ let QUERYPARAM = 'query',
2019
2031
keyName = name ;
2020
2032
properties = {
2021
2033
type : schema . type || 'unknown' ,
2034
+ required : param . required || false ,
2035
+ deprecated : param . deprecated || false ,
2022
2036
enum : schema . enum || undefined ,
2023
2037
minLength : schema . minLength || undefined ,
2024
2038
maxLength : schema . maxLength || undefined ,
@@ -2078,6 +2092,8 @@ let QUERYPARAM = 'query',
2078
2092
keyName = name ;
2079
2093
properties = {
2080
2094
type : schema . type || 'unknown' ,
2095
+ required : param . required || false ,
2096
+ deprecated : param . deprecated || false ,
2081
2097
enum : schema . enum || undefined ,
2082
2098
minLength : schema . minLength || undefined ,
2083
2099
maxLength : schema . maxLength || undefined ,
@@ -2168,6 +2184,8 @@ let QUERYPARAM = 'query',
2168
2184
keyName = name ;
2169
2185
properties = {
2170
2186
type : schema . type || 'unknown' ,
2187
+ required : param . required || false ,
2188
+ deprecated : param . deprecated || false ,
2171
2189
enum : schema . enum || undefined ,
2172
2190
minLength : schema . minLength || undefined ,
2173
2191
maxLength : schema . maxLength || undefined ,
@@ -2320,6 +2338,8 @@ let QUERYPARAM = 'query',
2320
2338
keyName = name ;
2321
2339
properties = {
2322
2340
type : schema . type || 'unknown' ,
2341
+ required : schema . required || false ,
2342
+ deprecated : schema . deprecated || false ,
2323
2343
enum : schema . enum || undefined ,
2324
2344
minLength : schema . minLength || undefined ,
2325
2345
maxLength : schema . maxLength || undefined ,
0 commit comments