The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use WebService::DataDog;
use Try::Tiny;
use Data::Dumper;

my $datadog = WebService::DataDog->new(
	api_key         => 'YOUR_API_KEY',
	application_key => 'YOUR_APP_KEY',
#	verbose         => 1,
);

my $alert = $datadog->build('Alert');
my $alert_list;

try
{
	# Find all alerts 
	$alert_list = $alert->retrieve_all();
}
catch
{
	print "FAILED - Couldn't retrieve alerts because: @_ \n";
};

print "Alert list:\n", Dumper($alert_list);


# Grab first alert from list returned
my $one_alert = $alert_list->[0]->{'id'};

# Alert details
my $alert_details = $alert->retrieve( id => $one_alert );
print "Details of alert >$one_alert<: ", Dumper($alert_details);

# Create new alert
my $new_alert_id = $alert->create(
	query    => "sum(last_1d):sum:system.net.bytes_rcvd{host:host0} > 100",
	name     => "Bytes received on host0",
	message  => "Message goes here",
	silenced => 1,
);
print "Created new alert >$new_alert_id<\n";

# Change name of existing alert
$alert->update(
	id    => $new_alert_id,
	query    => "sum(last_1d):sum:system.net.bytes_rcvd{host:host0} > 100",
	name  => "Bits received on host0",
);


# Mute all alerts
$alert->mute_all();

# Unmute all alerts
$alert->unmute_all();