# NAME

WebService::Whistle::Pet::Tracker::API - Perl interface to access the Whistle Pet Tracker Web Service

# SYNOPSIS

    use WebService::Whistle::Pet::Tracker::API;
    my $ws   = WebService::Whistle::Pet::Tracker::API->new(email=>$email, password=>$password);
    my $pets = $ws->pets; #isa ARRAY of HASHes
    foreach my $pet (@$pets) {
      print Dumper($pet);
    }

# DESCRIPTION

Perl interface to access the Whistle Pet Tracker Web Service.  All methods return JSON payloads that are converted to Perl data structures.  Methods that require authentication will request a token and cache it for the duration of the object.

# CONSTRUCTORS

## new

     my $ws = WebService::Whistle::Pet::Tracker::API->new(email=>$email, password=>$password);
    

# PROPERTIES

## email

Sets and returns the registered whistle account email

## password

Sets and returns the registered whistle account password

# METHODS

## pets

Returns a list of pets as an array reference

    my $pets = $ws->pets;

## device

Returns device data for the given device id

    my $device        = $ws->device('WXX-ABC123');
    my $battery_level = $device->{'battery_level'}; #0-100 charge level

## pet\_dailies

Returns dailies for the given pet id

    my $pet_dailies = $ws->pet_dailies($pet_id);

## pet\_daily\_items

Returns the daily items for the given pet id and day number

    my $pet_daily_items = $ws->pet_daily_items($pet_id, $day_number);

## pet\_stats

Returns pet stats for the given pet id

    my $pet_stats = $ws->pet_stats(123456789);

## places

Returns registered places as an array reference

    my $places = $ws->places;

# METHODS (API)

## api

Returns the decoded JSON data from the given web service end point

    my $data = $ws->api('/end_point');

## login

Calls the login service, caches, and returns the response.

## auth\_token

Retrieves the authentication token from the login end point

# ACCESSORS

## ua

Returns an [HTTP::Tiny](https://metacpan.org/pod/HTTP::Tiny) web client user agent

# SEE ALSO

- Python - [https://github.com/RobertD502/whistleaio](https://github.com/RobertD502/whistleaio)
- NodeJS (old api) - [https://github.com/martzcodes/node-whistle](https://github.com/martzcodes/node-whistle)

# AUTHOR

Michael R. Davis

# COPYRIGHT AND LICENSE

MIT License

Copyright (c) 2023 Michael R. Davis