diff --git a/src/Metadata/Extractor/XmlResourceExtractor.php b/src/Metadata/Extractor/XmlResourceExtractor.php index faf3be7ca8..2455404454 100644 --- a/src/Metadata/Extractor/XmlResourceExtractor.php +++ b/src/Metadata/Extractor/XmlResourceExtractor.php @@ -25,6 +25,7 @@ use ApiPlatform\OpenApi\Model\Operation as OpenApiOperation; use ApiPlatform\OpenApi\Model\Parameter as OpenApiParameter; use ApiPlatform\OpenApi\Model\RequestBody; +use ApiPlatform\OpenApi\Model\Response; use ApiPlatform\State\OptionsInterface; use Symfony\Component\Config\Util\XmlUtils; use Symfony\Component\WebLink\Link; @@ -204,12 +205,12 @@ private function buildOpenapi(\SimpleXMLElement $resource): bool|OpenApiOperatio if (isset($openapi->responses->response)) { foreach ($openapi->responses->response as $response) { - $data['responses'][(string) $response->attributes()->status] = [ - 'description' => $this->phpize($response, 'description', 'string'), - 'content' => isset($response->content->values) ? $this->buildValues($response->content->values) : null, - 'headers' => isset($response->headers->values) ? $this->buildValues($response->headers->values) : null, - 'links' => isset($response->links->values) ? $this->buildValues($response->links->values) : null, - ]; + $data['responses'][(string) $response->attributes()->status] = new Response( + description: $this->phpize($response, 'description', 'string'), + content: isset($response->content->values) ? new \ArrayObject($this->buildValues($response->content->values)) : null, + headers: isset($response->headers->values) ? new \ArrayObject($this->buildValues($response->headers->values)) : null, + links: isset($response->links->values) ? new \ArrayObject($this->buildValues($response->links->values)) : null, + ); } } diff --git a/src/Metadata/Extractor/YamlResourceExtractor.php b/src/Metadata/Extractor/YamlResourceExtractor.php index bc9861071b..f5b07d5c28 100644 --- a/src/Metadata/Extractor/YamlResourceExtractor.php +++ b/src/Metadata/Extractor/YamlResourceExtractor.php @@ -25,6 +25,7 @@ use ApiPlatform\OpenApi\Model\Operation as OpenApiOperation; use ApiPlatform\OpenApi\Model\Parameter; use ApiPlatform\OpenApi\Model\RequestBody; +use ApiPlatform\OpenApi\Model\Response; use ApiPlatform\State\OptionsInterface; use Symfony\Component\WebLink\Link; use Symfony\Component\Yaml\Exception\ParseException; @@ -235,6 +236,12 @@ private function buildOpenapi(array $resource): bool|OpenApiOperation|null 'externalDocs' => new ExternalDocumentation(description: $value['description'] ?? '', url: $value['url'] ?? ''), 'requestBody' => new RequestBody(description: $value['description'] ?? '', content: isset($value['content']) ? new \ArrayObject($value['content'] ?? []) : null, required: $value['required'] ?? false), 'callbacks' => new \ArrayObject($value ?? []), + 'responses' => array_map(fn (array $response): Response => new Response( + description: $response['description'] ?? '', + headers: isset($response['headers']) ? new \ArrayObject($response['headers']) : null, + content: isset($response['content']) ? new \ArrayObject($response['content']) : null, + links: isset($response['links']) ? new \ArrayObject($response['links']) : null + ), $value), default => $value, };