diff --git a/net_api_generator/middleware_generator/MiddlewareLoader.py b/net_api_generator/middleware_generator/MiddlewareLoader.py
index e86895a0e49e194a24d73699cfcedb15260ff8f6..dd54dd4e616877b7e5a5fc313ed9bc2e31a68a8c 100644
--- a/net_api_generator/middleware_generator/MiddlewareLoader.py
+++ b/net_api_generator/middleware_generator/MiddlewareLoader.py
@@ -100,17 +100,28 @@ class MiddlewareLoader:
             raise ValueError('Unexpected structure of Open API Component')
 
     def determine_api_object_loading_order(self, components: dict):
+        def find_reference_dependencies(dictionary: dict)->list[str]:
+            if "$ref" in dictionary:
+                return [dictionary['$ref'].split('/')[-1]]
+            else:
+                dependencies = []
+                for value in  dictionary.values():
+                    if isinstance(value, dict):
+                        if (found := find_reference_dependencies(value)) is not None:
+                            dependencies.extend(found)
+                    elif isinstance(value, list):
+                        for list_item in value:
+                            if isinstance(list_item, dict):
+                                if (found := find_reference_dependencies(list_item)) is not None:
+                                    dependencies.extend(found)
+
+                return dependencies
+
         ts = TopologicalSorter()
         for component_key, component in components.items():
-            if 'properties' in component:
-                for component_property in component['properties'].values():
-                    if '$ref' in component_property:
-                        referer = component_property['$ref'].split('/')[-1]
-                        ts.add(component_key, referer)
-                    else:
-                        ts.add(component_key)
-            else:
-                ts.add(component_key)
+            references = find_reference_dependencies(component)
+            for reference in references:
+                ts.add(component_key, reference)
         result = list(ts.static_order())
         return result