@@ -301,12 +301,25 @@ def get_params_for_endpoint(self, endpoint):
301301
302302 def get_required_params_from_swagger (self , swagger , definition , prefix = "" ):
303303 params = {}
304- for requiredProperty in swagger ["definitions" ][definition ]["required" ]:
305- if "$ref" in swagger ["definitions" ][definition ]["properties" ][requiredProperty ].keys ():
306- sub_definition = swagger ["definitions" ][definition ]["properties" ][requiredProperty ]["$ref" ].replace ("#/definitions/" , "" )
304+ use_definitions = False
305+ if "definitions" in swagger .keys ():
306+ schema = swagger ["definitions" ][definition ]
307+ use_definitions = True
308+ elif "components" in swagger .keys () and "schemas" in swagger ["components" ].keys ():
309+ schema = swagger ["components" ]["schemas" ][definition ]
310+ else :
311+ self .logger .critical (f"Swagger contains neither `definitions` nor `components.schemas` - check that the Swagger is valid." )
312+
313+ for requiredProperty in schema ["required" ]:
314+ if "$ref" in schema ["properties" ][requiredProperty ].keys ():
315+ sub_definition = schema ["properties" ][requiredProperty ]["$ref" ]
316+ if use_definitions :
317+ sub_definition = sub_definition .replace ("#/definitions/" , "" )
318+ else :
319+ sub_definition = sub_definition .replace ("#/components/schemas/" , "" )
307320 sub_params = self .get_required_params_from_swagger (swagger , sub_definition , prefix = requiredProperty + "." )
308321 for k ,v in sub_params .items ():
309322 params [k ] = v
310- elif swagger [ "definitions" ][ definition ] ["properties" ][requiredProperty ]["type" ]!= "array" :
323+ elif schema ["properties" ][requiredProperty ]["type" ]!= "array" :
311324 params [requiredProperty ] = prefix + requiredProperty
312325 return params
0 commit comments