Browse Source

Merge pull request #600 from Floppy012/openapi-array-objects

OpenAPI: Set properties of objects nested in arrays
Shalvah 2 years ago
parent
commit
a97f7ae9be
1 changed files with 9 additions and 1 deletions
  1. 9 1
      src/Writing/OpenAPISpecWriter.php

+ 9 - 1
src/Writing/OpenAPISpecWriter.php

@@ -560,8 +560,16 @@ class OpenAPISpecWriter
             $spec['description'] = $endpoint->responseFields[$key]->description;
         }
         if ($spec['type'] === 'array' && !empty($value)) {
-            $spec['items']['type'] = $this->convertScribeOrPHPTypeToOpenAPIType(gettype($value[0]));
+            $handle = $value[0];
+            $type = $this->convertScribeOrPHPTypeToOpenAPIType(gettype($handle));
+            $spec['items']['type'] = $type;
             $spec['example'] = json_decode(json_encode($spec['example']), true);//Convert stdClass to array
+
+            if ($type === 'object') {
+                $spec['items']['properties'] = collect($handle)->mapWithKeys(function ($v, $k) use ($endpoint) {
+                    return $this->generateObjectPropertiesResponseSpec($v, $endpoint, $k);
+                })->toArray();
+            }
         }
 
         return [