@@ -344,12 +344,25 @@ def get_params_for_endpoint(self, endpoint):
344344
345345 def get_required_params_from_swagger (self , swagger , definition , prefix = "" ):
346346 params = {}
347- for requiredProperty in swagger ["definitions" ][definition ]["required" ]:
348- if "$ref" in swagger ["definitions" ][definition ]["properties" ][requiredProperty ].keys ():
349- sub_definition = swagger ["definitions" ][definition ]["properties" ][requiredProperty ]["$ref" ].replace ("#/definitions/" , "" )
347+ use_paths = False
348+ if "definitions" in swagger .keys ():
349+ schema = swagger ["definitions" ][definition ]
350+ elif "paths" in swagger .keys ():
351+ schema = swagger ["paths" ][definition ]
352+ use_paths = True
353+ else :
354+ self .logger .critical (f"Swagger contains neither `definitions` nor `paths` - check that the Swagger is valid." )
355+
356+ for requiredProperty in schema ["required" ]:
357+ if "$ref" in schema ["properties" ][requiredProperty ].keys ():
358+ sub_definition = schema ["properties" ][requiredProperty ]["$ref" ]
359+ if use_paths :
360+ sub_definition = sub_definition .replace ("#/paths/" , "" )
361+ else :
362+ sub_definition = sub_definition .replace ("#/definitions/" , "" )
350363 sub_params = self .get_required_params_from_swagger (swagger , sub_definition , prefix = requiredProperty + "." )
351364 for k ,v in sub_params .items ():
352365 params [k ] = v
353- elif swagger [ "definitions" ][ definition ] ["properties" ][requiredProperty ]["type" ]!= "array" :
366+ elif schema ["properties" ][requiredProperty ]["type" ]!= "array" :
354367 params [requiredProperty ] = prefix + requiredProperty
355368 return params
0 commit comments