. */ declare(strict_types=1); namespace App\ApiPlatform; use ApiPlatform\OpenApi\Factory\OpenApiFactoryInterface; use ApiPlatform\OpenApi\Model\SecurityScheme; use ApiPlatform\OpenApi\OpenApi; use Symfony\Component\DependencyInjection\Attribute\AsDecorator; #[AsDecorator('api_platform.openapi.factory')] class OpenApiFactoryDecorator implements OpenApiFactoryInterface { public function __construct(private readonly OpenApiFactoryInterface $decorated) { } public function __invoke(array $context = []): OpenApi { $openApi = $this->decorated->__invoke($context); $securitySchemes = $openApi->getComponents()->getSecuritySchemes() ?: new \ArrayObject(); $securitySchemes['access_token'] = new SecurityScheme( type: 'http', description: 'Use an API token to authenticate', name: 'Authorization', scheme: 'bearer', ); return $openApi; } }