validate([ 'description' => ['nullable', 'string', new VisualTicketDescription], 'ticket_id' => ['required', 'integer'], ]); $user = $this->kanbanGitMcp->user($request); $ticket = $this->kanbanGitMcp->ticketForWrite($user, (int) $validated['ticket_id']); $payload = [ ...$this->kanbanGitMcp->updatePayload($ticket), ...(Arr::exists($validated, 'description') ? ['description' => Arr::get($validated, 'description')] : []), ]; $wasUpdated = $this->updateProjectTicket->handle($ticket, $user, $payload); return Response::structured([ 'data' => $this->kanbanGitMcp->ticketPayload($ticket->fresh()), 'meta' => [ 'message' => $wasUpdated ? "{$ticket->ticket_key} description was updated." : 'No ticket changes were detected.', ], ]); } /** * @return array */ public function schema(JsonSchema $schema): array { return [ 'description' => $schema->string() ->nullable() ->description('New ticket description. Omit to preserve; pass null to clear it. '.TicketDescriptionFormat::instructions()), 'ticket_id' => $schema->integer() ->description('Ticket ID.') ->required(), ]; } }