@@ -114,27 +114,30 @@ class Schema(BaseModel):
114114 dynamicAnchor : Optional [str ] = Field (default = None , alias = "$dynamicAnchor" )
115115 ref : Optional [str ] = Field (default = None , alias = "$ref" )
116116 dynamicRef : Optional [str ] = Field (default = None , alias = "$dynamicRef" )
117- defs : Optional [Dict [str , "Schema " ]] = Field (default = None , alias = "$defs" )
117+ defs : Optional [Dict [str , "SchemaOrBool " ]] = Field (default = None , alias = "$defs" )
118118 comment : Optional [str ] = Field (default = None , alias = "$comment" )
119119 # Ref: JSON Schema 2020-12: https://json-schema.org/draft/2020-12/json-schema-core.html#name-a-vocabulary-for-applying-s
120120 # A Vocabulary for Applying Subschemas
121- allOf : Optional [List ["Schema" ]] = None
122- anyOf : Optional [List ["Schema" ]] = None
123- oneOf : Optional [List ["Schema" ]] = None
124- not_ : Optional ["Schema" ] = Field (default = None , alias = "not" )
125- if_ : Optional ["Schema" ] = Field (default = None , alias = "if" )
126- then : Optional ["Schema" ] = None
127- else_ : Optional ["Schema" ] = Field (default = None , alias = "else" )
128- dependentSchemas : Optional [Dict [str , "Schema" ]] = None
129- prefixItems : Optional [List ["Schema" ]] = None
130- items : Optional [Union ["Schema" , List ["Schema" ]]] = None
131- contains : Optional ["Schema" ] = None
132- properties : Optional [Dict [str , "Schema" ]] = None
133- patternProperties : Optional [Dict [str , "Schema" ]] = None
134- additionalProperties : Optional ["Schema" ] = None
135- propertyNames : Optional ["Schema" ] = None
136- unevaluatedItems : Optional ["Schema" ] = None
137- unevaluatedProperties : Optional ["Schema" ] = None
121+ allOf : Optional [List ["SchemaOrBool" ]] = None
122+ anyOf : Optional [List ["SchemaOrBool" ]] = None
123+ oneOf : Optional [List ["SchemaOrBool" ]] = None
124+ not_ : Optional ["SchemaOrBool" ] = Field (default = None , alias = "not" )
125+ if_ : Optional ["SchemaOrBool" ] = Field (default = None , alias = "if" )
126+ then : Optional ["SchemaOrBool" ] = None
127+ else_ : Optional ["SchemaOrBool" ] = Field (default = None , alias = "else" )
128+ dependentSchemas : Optional [Dict [str , "SchemaOrBool" ]] = None
129+ prefixItems : Optional [List ["SchemaOrBool" ]] = None
130+ # TODO: uncomment and remove below when deprecating Pydantic v1
131+ # It generales a list of schemas for tuples, before prefixItems was available
132+ # items: Optional["SchemaOrBool"] = None
133+ items : Optional [Union ["SchemaOrBool" , List ["SchemaOrBool" ]]] = None
134+ contains : Optional ["SchemaOrBool" ] = None
135+ properties : Optional [Dict [str , "SchemaOrBool" ]] = None
136+ patternProperties : Optional [Dict [str , "SchemaOrBool" ]] = None
137+ additionalProperties : Optional ["SchemaOrBool" ] = None
138+ propertyNames : Optional ["SchemaOrBool" ] = None
139+ unevaluatedItems : Optional ["SchemaOrBool" ] = None
140+ unevaluatedProperties : Optional ["SchemaOrBool" ] = None
138141 # Ref: JSON Schema Validation 2020-12: https://json-schema.org/draft/2020-12/json-schema-validation.html#name-a-vocabulary-for-structural
139142 # A Vocabulary for Structural Validation
140143 type : Optional [str ] = None
@@ -164,7 +167,7 @@ class Schema(BaseModel):
164167 # A Vocabulary for the Contents of String-Encoded Data
165168 contentEncoding : Optional [str ] = None
166169 contentMediaType : Optional [str ] = None
167- contentSchema : Optional ["Schema " ] = None
170+ contentSchema : Optional ["SchemaOrBool " ] = None
168171 # Ref: JSON Schema Validation 2020-12: https://json-schema.org/draft/2020-12/json-schema-validation.html#name-a-vocabulary-for-basic-meta
169172 # A Vocabulary for Basic Meta-Data Annotations
170173 title : Optional [str ] = None
@@ -191,6 +194,11 @@ class Config:
191194 extra : str = "allow"
192195
193196
197+ # Ref: https://json-schema.org/draft/2020-12/json-schema-core.html#name-json-schema-documents
198+ # A JSON Schema MUST be an object or a boolean.
199+ SchemaOrBool = Union [Schema , bool ]
200+
201+
194202class Example (BaseModel ):
195203 summary : Optional [str ] = None
196204 description : Optional [str ] = None
0 commit comments