workflowMapper = $workflowMapper; $this->workflowStorage = $workflowStorage; } public function handle(Request $request): Response { $workflowId = $request->getParam('id'); if (!is_int($workflowId)) { throw InvalidStateException::create(); } $existingWorkflow = $this->workflowStorage->getWorkflow($workflowId); if (!$existingWorkflow instanceof Workflow) { throw InvalidStateException::create(); } $duplicateId = $this->workflowStorage->duplicateWorkflow($existingWorkflow); $duplicate = $this->workflowStorage->getWorkflow($duplicateId); if (!$duplicate instanceof Workflow) { throw InvalidStateException::create(); } return new Response($this->workflowMapper->buildWorkflow($duplicate)); } public static function getRequestSchema(): array { return [ 'id' => Builder::integer()->required(), ]; } }