validate([ 'ticket_id' => ['required_without:ticket_key', 'prohibits:ticket_key', 'integer'], 'ticket_key' => ['required_without:ticket_id', 'prohibits:ticket_id', 'string', 'regex:/^[A-Z0-9]+-[1-9][0-9]*$/'], ]); $user = $this->kanbanGitMcp->user($request); $ticket = isset($validated['ticket_id']) ? $this->kanbanGitMcp->ticketForRead($user, (int) $validated['ticket_id']) : $this->kanbanGitMcp->ticketForKey($user, $validated['ticket_key']); return Response::structured([ 'data' => $this->kanbanGitMcp->ticketPayload($ticket), ]); } /** * @return array */ public function schema(JsonSchema $schema): array { return [ 'ticket_id' => $schema->integer() ->description('Ticket ID. Supply exactly one of ticket_id or ticket_key.'), 'ticket_key' => $schema->string()->description('Exact full ticket key, e.g. KAN-67. Supply exactly one of ticket_id or ticket_key.'), ]; } }