validate([ 'assignee_user_id' => ['present', 'nullable', 'integer', 'exists:users,id'], 'ticket_id' => ['required', 'integer'], ]); $user = $this->kanbanGitMcp->user($request); $ticket = $this->kanbanGitMcp->ticketForWrite($user, (int) $validated['ticket_id']); $payload = [ ...$this->kanbanGitMcp->updatePayload($ticket), 'assignee_user_id' => $validated['assignee_user_id'] ?? null, ]; $wasUpdated = $this->updateProjectTicket->handle($ticket, $user, $payload); return Response::structured([ 'data' => $this->kanbanGitMcp->ticketPayload($ticket->fresh()), 'meta' => [ 'message' => $wasUpdated ? "{$ticket->ticket_key} assignee was updated." : 'No ticket changes were detected.', ], ]); } /** * @return array */ public function schema(JsonSchema $schema): array { return [ 'assignee_user_id' => $schema->integer() ->nullable() ->description('User ID to assign. Pass null to unassign.') ->required(), 'ticket_id' => $schema->integer() ->description('Ticket ID.') ->required(), ]; } }