package WebService::TFL::TubeStatus::Response::Line; use Moo; use Types::Standard -all; use WebService::TFL::TubeStatus::Response::LineStatus; use namespace::clean; has id => ( is => 'ro', isa => Str, required => 1, ); has name => ( is => 'ro', isa => Str, required => 1, ); has status => ( is => 'ro', isa => InstanceOf['WebService::TFL::TubeStatus::Response::LineStatus'], required => 1, ); sub new_from_response { my ($class,$response_data) = @_; return $class->new({ id => $response_data->{id}, name => $response_data->{name}, status => WebService::TFL::TubeStatus::Response::LineStatus->new_from_response( $response_data->{lineStatuses}[0], ), }); } 1;