%command.name% command allows you to disable an existing API key. If no arguments are provided, you will be prompted to select one of the existing non-disabled API keys. %command.full_name% You can optionally pass the API key name to be disabled: %command.full_name% the_key_name HELP, )] class DisableKeyCommand extends Command { public const string NAME = 'api-key:disable'; public function __construct(private readonly ApiKeyServiceInterface $apiKeyService) { parent::__construct(); } protected function interact(InputInterface $input, OutputInterface $output): void { $name = $input->getArgument('name'); if ($name === null) { $apiKeys = $this->apiKeyService->listKeys(enabledOnly: true); $name = new SymfonyStyle($input, $output)->choice( 'What API key do you want to disable?', map($apiKeys, static fn (ApiKey $apiKey) => $apiKey->name), ); $input->setArgument('name', $name); } } public function __invoke( SymfonyStyle $io, #[Argument('The name of the API key to disable.')] string|null $name = null, ): int { if ($name === null) { $io->warning('An API key name was not provided.'); return Command::INVALID; } try { $this->apiKeyService->disableByName($name); $io->success(sprintf('API key "%s" properly disabled', $name)); return Command::SUCCESS; } catch (InvalidArgumentException $e) { $io->error($e->getMessage()); return Command::FAILURE; } } }