core icon indicating copy to clipboard operation
core copied to clipboard

Hide OpenApi default responses on custom operations

Open laurent-bientz opened this issue 2 years ago • 0 comments

API Platform version(s) affected: 3.2.12

How to reproduce

#[ApiResource(
    operations: [
        new Post(routeName: 'api_user_activate',
            openapi: new Operation(
                responses: [
                    '204' => new Response(
                        description: 'User activated',
                    ),
                    '400' => new Response(
                        description: 'Invalid input',
                    ),
                    '401' => new Response(
                        description: 'Invalid request token',
                    ),
                    '403' => new Response(
                        description: 'Request token expired',
                    ),
                ],
                summary: 'Activate the user',
                parameters: [
                    [
                        'name' => 'id',
                        'description' => 'User identifier',
                        'in' => 'path',
                        'schema' => [
                            'type' => 'string',
                        ],
                        'required' => true,
                    ],
                ],
                requestBody: new RequestBody(
                    content: new \ArrayObject([
                        'application/json' => [
                            'schema' => [
                                'type' => 'object',
                                'properties' => [
                                    'requestToken' => [
                                        'name' => 'Code',
                                        'type' => 'int',
                                        'required' => true,
                                    ],
                                ]
                            ],
                            'example' => [
                                'requestToken' => '123456',
                            ],
                        ]
                    ])
                ),
            )
        ),
		// ...
	]
)]

Description

Default responses codes (201 & 422) are automatically added to the openapi documentation even though they are not defined in the attributes.

image

It seems that default responses are merged with custom ones defined with no way to disable them.

Possible Solution

Allow to set to null on specific response code.

openapi: new Operation(
	responses: [
		'201' => null,
		'204' => new Response(
			description: 'User activated',
		),
		'400' => new Response(
			description: 'Invalid input',
		),
		'401' => new Response(
			description: 'Invalid request token',
		),
		'403' => new Response(
			description: 'Request token expired',
		),
		'422' => null,
	],
	// ...
)

Already tried without any effect.

Additional Context

None.

laurent-bientz avatar Feb 08 '24 15:02 laurent-bientz