=head2 get_ticket_list User function to get ticket list, requres department and status =cut =head2 ticket_list_respnse ticket list response object Object storage for Kayako3::StaffAPI::Response::TicketList Stores the XML response from $self->_do_ticket_list as a Moose Object =cut has 'ticket_list_response' => ( is => 'rw', isa => 'Kayako3::StaffAPI::Response::TicketList::Kayako_staffapi', lazy => 1, builder => '_do_ticket_list', handles => qr/^(?:_.*|ticket_list|get.*)/, ); =head2 _ticket_list_request_parameters Parameters set prior to calling $self->get_ticket_list to enable correct parameters are passed to function * I believe this is part of the problem =cut has '_ticket_list_request_parameters' => ( is => 'rw', isa => 'HashRef', lazy => 1, # trigger => \&_do_ticket_list, default => sub { {} }, ); =head2 get_ticket_list User function to get ticket list, requres department and status =cut sub get_ticket_list { my $self = shift; my $department = shift; my $status = shift; my ($department_id, $status_id) = ($department, $status); $self->_ticket_list_request_parameters( { sessionid => $self->_session_id, departmentid => $department_id, } ); $self->_ticket_list_request_parameters->{statusid} = $status_id if $status_id; } =head2 _do_ticket_list Performs the parsing of XML and initialization of "Ticket List Response" Object =cut sub _do_ticket_list { my $self = shift; # loads options from $self->_ticket_list_request_parameters my $response = $self->_get_ticket_list; my $unzipped_content = $self->_unzip($response->content); my $loader = XML::Toolkit::App->new( xmlns => { '' => 'Kayako3::StaffAPI::Response::TicketList' } )->loader; $loader->parse_string( $unzipped_content ); shift $loader->filter->objects; } =head2 _get_ticket_list Performs the _get_ticket_list API call =cut sub _get_ticket_list { my $self = shift; my $response = $self->ua->post( $self->_api_ticket_list, $self->_ticket_list_request_parameters, ); }