NAV
Ruby Python Node.js Perl PHP C# Java cURL

Introduction

This document describes the Pulseway REST API v2 usage.

The REST API accepts JSON as input. The output matches the Accept header and defaults to JSON if the Accept header is not present.

We use built-in HTTP features, like HTTP authentication and HTTP verbs, which can be understood by off-the-shelf HTTP clients.

Authentication

BASIC Authentication

class PublishResource < ActiveResource::Base
    self.site = ENDPOINT
    self.user = USERNAME
    self.password = PASSWORD
    self.timeout = 30
    self.include_format_in_path = false 
end
requests.post(ENDPOINT + 'publish', publish, auth=(USERNAME, PASSWORD), headers={"content-type":"application/json"})
var Client = require('node-rest-client').Client;
var options_auth = {user: USERNAME, password: PASSWORD};
var client = new Client(options_auth);
my $client = HTTP::Request->new( 'GET', $url);
$client->authorization_basic("$username", "$password");
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($request, CURLOPT_USERPWD, USERNAME.":".PASSWORD);
using (var client = new HttpClient())
{
    client.BaseAddress = new Uri(ENDPOINT);
    const string auth = USERNAME + ":" + PASSWORD;
    byte[] authBytes = Encoding.ASCII.GetBytes(auth);
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(authBytes));
}
HttpPost post = new HttpPost(ENDPOINT + "publish");
String auth = Base64.encodeBase64String((USERNAME + ":" + PASSWORD).getBytes());
post.setHeader("Authorization", "Basic " + auth);
curl https://api.pulseway.com/v2/systems \
     -u username:password
# If you host your own Pulseway Enterprise Server, use:
# curl https://<server_name>/api/v2/systems \

Make sure to replace USERNAME and PASSWORD with your own credentials.

Pulseway REST API uses Basic Authentication for all requests. All requests must be via HTTPS otherwise the request will fail.

Basic Authentication requires an Authorization header with the username and API token in the username:password format encoded as Base64.

Systems

Publish

require 'rubygems'
require 'active_rest_client'
require 'openssl'

silence_warnings do
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
end

INSTANCE_ID    = "production_website_1"
INSTANCE_NAME  = "Production Web Site"
INSTANCE_GROUP = "Web Sites"

class System < ActiveRestClient::Base
    request_body_type :json

    base_url 'https://api.pulseway.com/v2/'
    username 'username'
    password 'password' 

    post :publish, "/systems"
end

begin   
    puts "Publish..."   

    @result = System.publish(
        "instance_id": "production_website_1",
        "name": "Production Web Site",
        "group": "Web Sites",
        "description": "Running on ip.91.71.60.196.us-west-2.compute.internal",
        "contents": [
            {
                "name": "Status",
                "contents": [
                    {
                        "icon": "error",
                        "type": "label",
                        "title": "Could not connect to the database.",
                        "subtitle": "Database Connection"
                    },
                    {
                        "icon": "information",
                        "type": "label",
                        "title": "5 hours, 39 minutes",
                        "subtitle": "Uptime"
                    }
                ]
            },
            {
                "name": "Commands",
                "contents": [
                    {
                        "callback_url": "https://admin.revoproject.com/api.php?key=d41d8cd98&action=reset_config",
                        "type": "webhook_command",
                        "title": "Reload Configuration",
                        "subtitle": "Reads configuration from file"
                    }
                ]
            }
        ],          
        "next_refresh_interval_minutes": 5,
        "notify_when_offline": "false"
    )

    puts @result.meta['response_code']

rescue Exception => e       
    puts e.message      
end
import slumber

ENDPOINT = "https://api.pulseway.com/v2/"
USERNAME = "username"
PASSWORD = "password"

try:        
    api = slumber.API(ENDPOINT, auth=(USERNAME, PASSWORD))  
    result = api.systems.post(
    {
        "instance_id": "production_website_1",
        "name": "Production Web Site",
        "group": "Web Sites",
        "description": "Running on ip.91.71.60.196.us-west-2.compute.internal",
        "contents": [
            {
                "name": "Status",
                "contents": [
                    {
                        "icon": "error",
                        "type": "label",
                        "title": "Could not connect to the database.",
                        "subtitle": "Database Connection"
                    },
                    {
                        "icon": "information",
                        "type": "label",
                        "title": "5 hours, 39 minutes",
                        "subtitle": "Uptime"
                    }
                ]
            },
            {
                "name": "Commands",
                "contents": [
                    {
                        "callback_url": "https://admin.revoproject.com/api.php?key=d41d8cd98&action=reset_config",
                        "type": "webhook_command",
                        "title": "Reload Configuration",
                        "subtitle": "Reads configuration from file"
                    }
                ]
            }
        ],
        "next_refresh_interval_minutes": 5,
        "notify_when_offline": "false"
    });

    print (result)

except Exception as e:
    print('Publish raised an exception.')
    print(e.strerror)
var endpoint       = "https://api.pulseway.com/v2/";
var username       = "username";
var password       = "password";
var instance_id    = "production_website_1";
var instance_name  = "Production Web Site";
var instance_group = "Web Sites";

var Client = require('node-rest-client').Client;
var auth = { user: username, password: password };

var client = new Client(auth);

var args = {    
    // use limit & offset parameters
    // parameters: { limit: "2", offset: "0" }
    data: {
        instance_id: instance_id,
        name: instance_name,
        group: instance_group,
        description: "Running on ip.91.71.60.196.us-west-2.compute.internal",
        contents: [
        {
            name: "Status",
            contents: [
            {
                icon: "error",
                type: "label",
                title: "Could not connect to the database.",
                subtitle: "Database Connection"
            },
            {
                icon: "information",
                type: "label",
                title: "5 hours, 39 minutes",
                subtitle: "Uptime"
            }
            ]
        },
        {
            name: "Commands",
            contents: [
            {
                callback_url: "https://admin.revoproject.com/api.php?key=d41d8cd98&action=reset_config",
                type: "webhook_command",
                title: "Reload Configuration",
                subtitle: "Reads configuration from file"
            }]
        }],
        next_refresh_interval_minutes: 5,
        notify_when_offline: "false"
    },
    headers: {"Content-Type": "application/json"}
}

client.registerMethod("publish", endpoint + "systems", "POST");

client.methods.publish(args, function (data, response) {    
    console.log(data);  
});
#!/usr/bin #!/usr/bin/perl

package main;
use strict;
use REST::Client;
use JSON -support_by_pp;
use URI;
use Data::Dumper;
use MIME::Base64;   

my $endpoint = 'https://api.pulseway.com/v2/';
my $query_object = 'systems';

my $uri = URI->new($endpoint.$query_object);

my $username = "username";
my $password = "password";

my $instance_id = "production_website_1";
my $instance_name = "Production Web Site";
my $instance_group = "Web Sites";

my $publish = {
    'instance_id' => $instance_id,
    'name' => $instance_name,
    'group' => $instance_group,
    'description' => "Running on ip.91.71.60.196.us-west-2.compute.internal",
    'contents' => [
    {
        'name' => "Status",
        'contents' => 
        [
            {
                'icon' => "error",
                'type' => "label",
                'title' => "Could not connect to the database.",
                'subtitle' => "Database Connection"
            },
            {
                'icon' => "information",
                'type' => "label",
                'title'=> "5 hours, 39 minutes",
                'subtitle' => "Uptime"
            }
        ]
    },
    {
        'name' => "Commands",
        'contents' =>
        [
            {
                'callback_url' => "https://admin.revoproject.com/api.php?key=d41d8cd98&action=reset_config",
                'type' => "webhook_command",
                'title' => "Reload Configuration",
                'subtitle' => "Reads configuration from file"
            }
        ]
    }],
    'next_refresh_interval_minutes' => "5",
    'notify_when_offline' => "false"
};  

my $json = new JSON;
my $data = $json->allow_nonref->pretty->utf8->relaxed->escape_slash->loose->allow_singlequote->allow_barekey->encode($publish);

my $client = HTTP::Request->new( 'POST', $uri);

$client->header('Content-Type' => 'application/json' );
$client->authorization_basic("$username", "$password");
$client->content($data);

my $response = LWP::UserAgent->new->request($client);

if ($response->is_success) {
    my $jsonobj = JSON::decode_json($response->decoded_content);

    # Data::Dumper makes it easy to see what the JSON returned actually looks like 
    # when converted into Perl data structures.

    print Dumper($jsonobj->{'meta'});
    print Dumper($jsonobj->{'data'});
} else {
    die $response->status_line;
}
<?php
const ENDPOINT       = "https://api.pulseway.com/v2/";
const USERNAME       = "username";
const PASSWORD       = "password";
const INSTANCE_ID    = "rest";
const INSTANCE_NAME  = "Production Web Site";
const INSTANCE_GROUP = "Web Sites";

const options = array(
    'object' => 'systems'       
);

$publishRequest = array(
    "instance_id" => INSTANCE_ID,
    "name" => INSTANCE_NAME,
    "group" => INSTANCE_GROUP,
    "description" => "Running on ip.91.71.60.196.us-west-2.compute.internal",
    "contents" => array(
        array(
            "name" => "Status",
            "contents" => array(
                array(
                    "icon" => "error",
                    "type" => "label",
                    "title" => "Could not connect to the database.",
                    "subtitle" => "Database Connection"
                ),
                array(
                    "icon" => "information",
                    "type" => "label",
                    "title" => "5 hours, 39 minutes",
                    "subtitle" => "Uptime"
                )
            )
        ),
        array(
            "name" => "Commands",
            "contents" => array(
                array(
                    "callback_url" => "https://admin.revoproject.com/api.php?key=d41d8cd98&action=reset_config",
                    "type" => "webhook_command",
                    "title" => "Reload Configuration",
                    "subtitle" => "Reads configuration from file"
                )
            )
        )
    ),
    "next_refresh_interval_minutes" => 5,
    "notify_when_offline" => "false"
);

function request($opt, $data) {
    $request = curl_init();
    $data_string = json_encode($data);
    $headers = array(
        'Content-Type: application/json',
        'Content-Length: '.strlen($data_string)
    );

    $url = ENDPOINT . $opt['object'];

    curl_setopt($request, CURLOPT_URL, $url);
    curl_setopt($request, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($request, CURLOPT_POST, TRUE);
    curl_setopt($request, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($request, CURLOPT_USERPWD, USERNAME.":".PASSWORD);

    $response = curl_exec($request);
    if ($response == FALSE) {
        die('<p>Curl failed: '.curl_error($request).'</p>');
    }

    return $response;
}

try {
    echo "<p>Publish</p>";
    $publishResponse = request(options, $publishRequest);
    echo "<p>".$publishResponse."</p></br></br>";
}
catch (Exception $e) {
    echo "<p>'Publish' exception: ", $e.getMessage(), "</p></br></br>";
}
?> 
using Newtonsoft.Json;
using RestSharp;
using RestSharp.Authenticators;

namespace ConsoleApplication2
{
    class Program
    {
        private const string ENDPOINT = "https://api.pulseway.com/v2/";
        private const string USERNAME = "username";
        private const string PASSWORD = "password";
        private const string INSTANCE_ID = "production_website_1";
        private const string INSTANCE_NAME = "Production Web Site";
        private const string INSTANCE_GROUP = "Web Sites";

        static void Main(string[] args)
        {
            var client = new RestClient(ENDPOINT);
            client.Authenticator = new HttpBasicAuthenticator(USERNAME, PASSWORD);

            var request = new RestRequest("systems", Method.POST);            
            request.RequestFormat = DataFormat.Json;
            request.AddBody(GetPublishRequest());

            var response = client.Execute(request) as RestResponse;
            var content = response.Content;
            dynamic result = JsonConvert.DeserializeObject(content);
        }

        private static PublishRequest GetPublishRequest()
        {
            PublishRequest publishRequest = new PublishRequest();
            publishRequest.instance_id = INSTANCE_ID;
            publishRequest.name = INSTANCE_NAME;
            publishRequest.group = INSTANCE_GROUP;
            publishRequest.description = "Running on ip.91.71.60.196.us-west-2.compute.internal";
            publishRequest.groups = new Group[2];
            publishRequest.next_refresh_interval_minutes = 5;
            publishRequest.notify_when_offline = false;

            // Status Group
            Group status = new Group();
            status.name = "Status";
            Item label1 = new Item
            {
                icon = "error",
                title = "Cannot connect to the database.",
                subtitle = "Database Connection",
                type = "label"
            };
            Item label2 = new Item
            {
                icon = "information",
                title = "5 hours, 39 minutes",
                subtitle = "Uptime",
                type = "label"
            };
            status.contents = new[] { label1, label2 };
            // Commands Group
            Group commands = new Group();
            commands.name = "Commands";
            Item webhook1 = new Item();
            webhook1.callback_url = "https://admin.revoproject.com/api.php?key=d41d8cd98&action=reset_config";
            webhook1.title = "Reload Configuration";
            webhook1.subtitle = "Reads configuration from file";
            webhook1.type = "webhook_command";
            commands.contents = new[] { webhook1 };

            publishRequest.groups = new[] { status, commands };
            return publishRequest;
        }

        public class PublishRequest
        {
            public string instance_id { get; set; }
            public string name { get; set; }
            public string group { get; set; }
            public string description { get; set; }
            public Group[] groups { get; set; }
            public int? next_refresh_interval_minutes { get; set; }
            public bool notify_when_offline { get; set; }
        }
        public class Group
        {
            public string name { get; set; }
            public Item[] contents { get; set; }
        }
        public class Item
        {            
            public string icon { get; set; }            
            public string type { get; set; }
            public string title { get; set; }
            public string subtitle { get; set; }            
            public string callback_url { get; set; }
        }       
    }
}
package com.pulseway.client;

import java.io.StringReader;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.*;
import org.apache.http.util.EntityUtils;
import com.google.gson.Gson;

public class Publish 
{ 
    private static final String ENDPOINT = "api.pulseway.com/v2/";
    private static final String USERNAME = "username";
    private static final String APITOKEN = "password";
    private static final String INSTANCE_ID = "production_website_1";
    private static final String INSTANCE_NAME = "Production Web Site";
    private static final String INSTANCE_GROUP = "Web Sites";

    private static PublishRequest getPublishRequest()
    {     
        PublishRequest request = new PublishRequest();

        request.setInstanceId(INSTANCE_ID);
        request.setName(INSTANCE_NAME);
        request.setGroup(INSTANCE_GROUP);
        request.setDescription("Running on ip.91.71.60.196.us-west-2.compute.internal");
        request.setNextRefreshIntervalMinutes(5);
        request.notifyWhenOffline(false);

        // Status Group
        Group status = new Group();
        status.setName("Status");      
        Item label1 = new Item();
        label1.setIcon("error");
        label1.setTitle("Cannot connect to the database");
        label1.setSubtitle("Database Connection");
        label1.setType("label");      
        Item label2 = new Item();
        label2.setIcon("information");
        label2.setTitle("5 hours, 39 minutes");
        label2.setSubtitle("Uptime");
        label2.setType("label");
        status.setContents(new Item[]{label1, label2});

        // Commands Group
        Group commands = new Group();
        commands.setName("Commands");
        Item webhook1 = new Item();
        webhook1.setCallbackUrl("https://admin.revoproject.com/api.php?key=d41d8cd98&action=reset_config");
        webhook1.setTitle("Reload Configuration");
        webhook1.setSubtitle("Reads configuration from file.");
        webhook1.setType("webhook_command");
        commands.setContents(new Item[]{webhook1});

        request.setContents(new Group[]{status, commands});

        return request;
    }

    public static void main(String[] args) 
    {
        try 
        {                   
            URIBuilder builder = new URIBuilder();
            builder.setScheme("https").setHost(ENDPOINT).setPath("/systems");             
            URI uri = builder.build();

            HttpPost request = new HttpPost(uri);         
            request.setHeader("Content-Type", "application/json");

            String auth = new String(Base64.encodeBase64((USERNAME + ":" + APITOKEN).getBytes()), StandardCharsets.UTF_8.toString());
            request.setHeader("Authorization", "Basic " + auth);

            Gson gson = new Gson();

            PublishRequest notifyRequest = getPublishRequest();
            StringEntity notifyJson = new StringEntity(gson.toJson(notifyRequest));

            request.setEntity(notifyJson);

            HttpClient httpClient = HttpClients.createDefault();
            HttpResponse response = httpClient.execute(request);

            HttpEntity httpEntity = response.getEntity();
            String apiOutput = EntityUtils.toString(httpEntity);

            Response resp = gson.fromJson(new StringReader(apiOutput), Response.class);

            System.out.println(resp.meta.response_code);
        }
        catch (Exception ex) 
        {
            System.out.println("An exception has occurred: " +  ex.getMessage());
        }
    }  
    public static class Response
    {     
        public Meta meta;           

        public Response() {}      
    }   
    public static class Meta
    {
        public String response_code;
        public String error_message;               

        public Meta() {}      
    } 
    public static class PublishRequest
    {
        public String instance_id;
        public String name;
        public String group;
        public String description;
        public Group[] contents;
        public int next_refresh_interval_minutes;
        public boolean notify_when_offline;

        public PublishRequest() {} 

        public void setInstanceId(String instance_id)
        {
            this.instance_id = instance_id;
        }
        public void setName(String name)
        {
            this.name = name;
        }
        public void setGroup(String group)
        {
            this.group = group;
        }
        public void setDescription(String description)
        {
            this.description = description;
        }
        public void setContents(Group[] contents)
        {
            this.contents = contents;
        }
        public void setNextRefreshIntervalMinutes(int next_refresh_interval_minutes)
        {
            this.next_refresh_interval_minutes = next_refresh_interval_minutes;
        }
        public void notifyWhenOffline(boolean notify_when_offline)
        {
            this.notify_when_offline = notify_when_offline;
        }
    }
    public static class Group
    {
        public String name;
        public Item[] contents;

        public Group() {} 

        public void setName(String name)
        {
            this.name = name;
        }
        public void setContents(Item[] contents)
        {
            this.contents = contents;
        }
    }

    public static class Item
    {
        public String icon;
        public String type;
        public String title;
        public String subtitle;
        public String callback_url;

        public Item() {} 

        public void setIcon(String icon)
        {
            this.icon = icon;
        }
        public void setType(String type)
        {
            this.type = type;
        }
        public void setTitle(String title)
        {
            this.title = title;
        }
        public void setSubtitle(String subtitle)
        {
            this.subtitle = subtitle;
        }
        public void setCallbackUrl(String callback_url)
        {
            this.callback_url = callback_url;
        }
    }
}   
curl https://api.pulseway.com/v2/systems \
     -u username:password \
     -X POST \
     -H "Content-Type: application/json" \
     -d '{"instance_id":"production_website_1","name":"Production Web Site","group":"Web Sites","description":"Running on ip.91.71.60.196.us-west-2.compute.internal","contents":[{"name":"Status","contents":[{"icon":"error","type":"label","title":"Could not connect to the database.","subtitle":"Database Connection"},{"icon":"information","type":"label","title":"5 hours, 39 minutes","subtitle":"Uptime"}]},{"name":"Commands","contents":[{"callback_url":"https://admin.revoproject.com/api.php?key=d41d8cd98&action=reset_config","type":"webhook_command","title":"Reload Configuration","subtitle":"Reads configuration from file"}]}],"next_refresh_interval_minutes":5,"notify_when_offline":"false"}'

The above command returns JSON structured like this:

{
    "meta": {
        "response_code": 200,
        "error_message": null
    }
}   
{
    "meta": {
        "response_code": 200,
        "error_message": null
    }
}   
{
    "meta": {
        "response_code": 200,
        "error_message": null
    }
}   
{
    "meta": {
        "response_code": 200,
        "error_message": null
    }
}    
{
    "meta": {
        "response_code": 200,
        "error_message": null
    }
}   
{
    "meta": {
        "response_code": 200,
        "error_message": null
    }
}   
{
    "meta": {
        "response_code": 200,
        "error_message": null
    }
}   
{
    "meta": {
        "response_code": 200,
        "error_message": null
    }
}   

Publish registers or updates a Pulseway system instance.

HTTP Request

https://api.pulseway.com/v2/systems

HTTP Verb

POST

Fields

Name Value Required Description
instance_id string yes Unique instance identifier. (maximum 100 characters)
name string yes Name of the instance. (maximum 100 characters)
group string no Group of the instance. Defaults to ‘Default’. (maximum 100 characters)
description string no Instance description. Shows under the instance name. (maximum 255 characters)
contents array no Data used to create the details view. See Group.
next_refresh_interval_minutes string no Marks the instance as offline if the Publish method is not called again after the specified interval. Zero disables the offline counter.
notify_when_offline string no If the next refresh interval was specified, a notification will be sent if the instance goes offline for an extended period of time.

Group

Name Value Required Description
name string yes Name of the group.
contents array no An array of items of type Label or Web Hook Commands that are part of the group. See Label and Web Hook Command.

Label

Name Value Required Description
type string yes Type of the object. Must be set to label.
title string yes Title of the label. Appears on the first line of the label.
subtitle string no Subtitle of the label. Appears on the second line of the label.
icon string no Appears to the left of the text. Possible values: information, warning and error.

Web Hook Command

Name Value Required Description
type string yes Type of the object. Must be set to webhook_command.
callback_url string yes Url that gets invoked when the command triggers.
title string yes Title of the command. Appears on the first line of the button.
subtitle string no Subtitle of the command. Appears on the second line of the button.

Get All Systems

require 'rubygems'
require 'active_rest_client'
require 'openssl'

silence_warnings do
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
end

class System < ActiveRestClient::Base
  # use limit & offset parameters    
  before_request do |name, request|
    request.get_params[:limit] = "50"
    request.get_params[:offset] = "0"
  end

  base_url 'https://api.pulseway.com/v2/'
  username 'username'
  password 'password'   

  get :all, "/systems"
end

begin   
    puts "Get Systems..."       
    @result = System.all
    puts @result.data.to_json

rescue Exception => e       
    puts e.message      
end
import slumber

ENDPOINT = "https://api.pulseway.com/v2/"
USERNAME = "username"
PASSWORD = "password"

try:        
    api = slumber.API(ENDPOINT, auth=(USERNAME, PASSWORD))  
    # use limit & offset parameters
    result = api.systems.get(limit='50', offset='0')
    print (result)

except Exception as e:
    print('Publish raised an exception.')
    print(e.strerror)   
var endpoint       = "https://api.pulseway.com/v2/";
var username       = "username";
var password       = "password";

var Client = require('node-rest-client').Client;
var auth = { user: username, password: password };

var client = new Client(auth);

var args = {    
    // use limit & offset parameters
    parameters: { limit: "50", offset: "0" }
}

client.registerMethod("getSystems", endpoint + "systems", "GET");

client.methods.getSystems(args, function (data, response) { 
    console.log(data);  
});
#!/usr/bin #!/usr/bin/perl

package main;
use strict;
use REST::Client;
use JSON;
use URI;
use Data::Dumper;
use MIME::Base64;   

my $endpoint = 'https://api.pulseway.com/v2/';
my $query_object = 'systems';

my $uri = URI->new($endpoint.$query_object);
# use limit & offset parameters
$uri->query_form('limit'  => '50', 'offset' => '0');

my $username = "username";
my $password = "password";

my $client = HTTP::Request->new( 'GET', $uri);

$client->header('Content-Type' => 'application/json' );
$client->authorization_basic("$username", "$password");

my $response = LWP::UserAgent->new->request($client);

if ($response->is_success) {
    my $jsonobj = JSON::decode_json($response->decoded_content);

    # Data::Dumper makes it easy to see what the JSON returned actually looks like 
    # when converted into Perl data structures.

    print Dumper($jsonobj->{'meta'});
    print Dumper($jsonobj->{'data'});
} else {
    die $response->status_line;
}
 <?php

const ENDPOINT       = "https://api.pulseway.com/v2/";
const USERNAME       = "username";
const PASSWORD       = "password";

const options = array(
    'object' => 'systems'       
);

// use limit & offset parameters
const params = array (
    'limit' => '50',
    'offset' => '0'
);

function request($opt, $params) {
    $request = curl_init();
    $headers = array(
        'Content-Type: application/json'        
    );

    $url = ENDPOINT . $opt['object'];

    $parameters = '';
    if (isset($params['limit']) || isset($params['offset']))
        foreach($params as $key=>$value)
            $parameters .= $key.'='.$value.'&';

    $parameters = trim($parameters, '&');

    curl_setopt($request, CURLOPT_URL, (isset($params['limit']) || isset($params['offset'])) ? $url.'?'.$parameters : $url);
    curl_setopt($request, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($request, CURLOPT_USERPWD, USERNAME.":".PASSWORD);

    $response = curl_exec($request);
    if ($response == FALSE) {
        die('<p>Curl failed: '.curl_error($request).'</p>');
    }

    return $response;
}

try {
    echo "<p>Get Systems</p>";
    $publishResponse = request(options, params);
    echo "<p>".$publishResponse."</p></br></br>";
}
catch (Exception $e) {
    echo "<p>'Get Systems' exception: ", $e.getMessage(), "</p></br></br>";
}
?> 
using Newtonsoft.Json;
using RestSharp;
using RestSharp.Authenticators;
using System;

namespace Program
{
    class GetSystems
    {
        private const string ENDPOINT = "https://api.pulseway.com/v2/";
        private const string USERNAME = "username";
        private const string PASSWORD = "password";

        static void Main1(string[] args)
        {
            var client = new RestClient(ENDPOINT);
            client.Authenticator = new HttpBasicAuthenticator(USERNAME, PASSWORD);

            var request = new RestRequest("systems", Method.GET);

            request.AddParameter("limit", "50");
            request.AddParameter("offset", "0");

            var response = client.Execute(request) as RestResponse;
            var content = response.Content;
            dynamic result = JsonConvert.DeserializeObject(content);            
        }
    }
}  
package com.pulseway.client;

import java.io.StringReader;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.*;
import org.apache.http.util.EntityUtils;
import com.google.gson.Gson;

public class GetSystems {
    private static final String ENDPOINT = "api.pulseway.com/v2/";
    private static final String USERNAME = "username";
    private static final String PASSWORD = "password";

    public static void main(String[] args) 
    {
        try 
        {                   
            URIBuilder builder = new URIBuilder();
            builder.setScheme("https").setHost(ENDPOINT).setPath("/systems")
                .setParameter("limit", "50")
                .setParameter("offset", "0");
            URI uri = builder.build();

            HttpGet request = new HttpGet(uri);       
            request.setHeader("Content-Type", "application/json");
            String auth = new String(Base64.encodeBase64((USERNAME + ":" + PASSWORD).getBytes()), StandardCharsets.UTF_8.toString());
            request.setHeader("Authorization", "Basic " + auth);

            HttpClient httpClient = HttpClients.createDefault();
            HttpResponse response = httpClient.execute(request);

            HttpEntity httpEntity = response.getEntity();
            String apiOutput = EntityUtils.toString(httpEntity);

            Gson gson = new Gson();
            Response resp = gson.fromJson(new StringReader(apiOutput), Response.class);

            System.out.println(resp.data[0].identifier);
        }
        catch (Exception ex) 
        {
            System.out.println("An exception has occurred: " +  ex.getMessage());
        }
    }    
    public class Response
    {
        public Systems[] data;
        public Meta meta;                          
    }    
    public class Systems
    {
        public String identifier;
        public String name;
        public String group;
    }    
    public class Meta
    {
        public String response_code;
        public String error_message;      
    }  
}
curl https://https://api.pulseway.com/v2/systems \
     -u username:password 

# If you want to use limit & offset parameters, append
# "?&limit=50&offset=0" to the url

The above command returns JSON structured like this:

[
    {
        "identifier":"11111111-2222-3333-9B2F-016B8D621AB5",
        "name":" Computer1",
        "group":"Group1"
    },
    {
        "identifier":"66666666-7777-8888-9B2F-016B8D621AB5",
        "name":" Computer2",
        "group":"Group1"
    }
]   
   [
    {
        "identifier":"11111111-2222-3333-9B2F-016B8D621AB5",
        "name":" Computer1",
        "group":"Group1"
    },
    {
        "identifier":"66666666-7777-8888-9B2F-016B8D621AB5",
        "name":" Computer2",
        "group":"Group1"
    }
]
[
    {
        "identifier":"11111111-2222-3333-9B2F-016B8D621AB5",
        "name":" Computer1",
        "group":"Group1"
    },
    {
        "identifier":"66666666-7777-8888-9B2F-016B8D621AB5",
        "name":" Computer2",
        "group":"Group1"
    }
]   
[
    {
        "identifier":"11111111-2222-3333-9B2F-016B8D621AB5",
        "name":" Computer1",
        "group":"Group1"
    },
    {
        "identifier":"66666666-7777-8888-9B2F-016B8D621AB5",
        "name":" Computer2",
        "group":"Group1"
    }
]   
[
    {
        "identifier":"11111111-2222-3333-9B2F-016B8D621AB5",
        "name":" Computer1",
        "group":"Group1"
    },
    {
        "identifier":"66666666-7777-8888-9B2F-016B8D621AB5",
        "name":" Computer2",
        "group":"Group1"
    }
]   
[
    {
        "identifier":"11111111-2222-3333-9B2F-016B8D621AB5",
        "name":" Computer1",
        "group":"Group1"
    },
    {
        "identifier":"66666666-7777-8888-9B2F-016B8D621AB5",
        "name":" Computer2",
        "group":"Group1"
    }
]  
[
    {
        "identifier":"11111111-2222-3333-9B2F-016B8D621AB5",
        "name":" Computer1",
        "group":"Group1"
    },
    {
        "identifier":"66666666-7777-8888-9B2F-016B8D621AB5",
        "name":" Computer2",
        "group":"Group1"
    }
]  
[
    {
        "identifier":"11111111-2222-3333-9B2F-016B8D621AB5",
        "name":" Computer1",
        "group":"Group1"
    },
    {
        "identifier":"66666666-7777-8888-9B2F-016B8D621AB5",
        "name":" Computer2",
        "group":"Group1"
    }
]  

Returns a list of systems.

HTTP Request

https://api.pulseway.com/v2/systems

HTTP Verb

GET

Query Parameters

Parameter Value Required Description
limit string no maximum number of items to return, limited to 100
offset string no starting position

Get a Specific System

require 'rubygems'
require 'active_rest_client'
require 'openssl'

silence_warnings do
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
end

class System < ActiveRestClient::Base
    base_url 'https://api.pulseway.com/v2/'
    username 'username'
    password 'password'     

    get :find, "/systems/:id"
end

begin   
    puts "Get System..."        
    @result = System.find('28440dda-f385-4ec8-a5c3-d1e6074113bb')
    puts @result.data.to_json

rescue Exception => e       
    puts e.message      
end   
import slumber

ENDPOINT = "https://api.pulseway.com/v2/"
USERNAME = "username"
PASSWORD = "password"

try:        
    api = slumber.API(ENDPOINT, auth=(USERNAME, PASSWORD))
    # result = api.systems.get();
    result = api.systems("28440dda-f385-4ec8-a5c3-d1e6074113bb").get()
    print (result)

except Exception as e:
    print('Publish raised an exception.')
    print(e.strerror)   
var endpoint       = "https://api.pulseway.com/v2/";
var username       = "username";
var password       = "password";

var Client = require('node-rest-client').Client;
var auth = { user: username, password: password };

var client = new Client(auth);

var args = {    
    path: { "id": '28440dda-f385-4ec8-a5c3-d1e6074113bb' },
}

client.registerMethod("getSystem", endpoint + "systems/${id}", "GET");

client.methods.getSystems(args, function (data, response) {
    console.log(data);  
});   
#!/usr/bin/perl

package main;
use strict;
use REST::Client;
use JSON;
use Data::Dumper;
use MIME::Base64;   

my $endpoint = "https://api.pulseway.com/v2/";
my $username = "username";
my $password = "password";
my $id = "28440dda-f385-4ec8-a5c3-d1e6074113bb";

my $client = HTTP::Request->new( 'GET', $endpoint .'systems'.'/'.$id);

$client->header('Content-Type' => 'application/json' );
$client->authorization_basic("$username", "$password");

my $response = LWP::UserAgent->new->request($client);

if ($response->is_success) {
    my $jsonobj = JSON::decode_json($response->decoded_content);

    # Data::Dumper makes it easy to see what the JSON returned actually looks like 
    # when converted into Perl data structures.

    print Dumper($jsonobj->{'meta'});
    print Dumper($jsonobj->{'data'});
} else {
    die $response->status_line;
}   
<?php
const ENDPOINT = "https://api.pulseway.com/v2/";
const USERNAME = "username";
const PASSWORD = "password";

const options = array(
    'object' => 'systems',
    'id' => '28440dda-f385-4ec8-a5c3-d1e6074113bb'
);

function request($opt) {
    $request = curl_init();
    $headers = array(
        'Content-Type: application/json'        
    );

    $url = ENDPOINT . $opt['object'];
    if (isset($opt['id']))
        $url = ENDPOINT . $opt['object'] . '/' . $opt["id"];

    curl_setopt($request, CURLOPT_URL, $url);
    curl_setopt($request, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($request, CURLOPT_USERPWD, USERNAME.":".PASSWORD);

    $response = curl_exec($request);
    if ($response == FALSE) {
        die('<p>Curl failed: '.curl_error($request).'</p>');
    }

    return $response;
}

try {
    echo "<p>Get System</p>";
    $publishResponse = request(options);
    echo "<p>".$publishResponse."</p></br></br>";
}
catch (Exception $e) {
    echo "<p>'Get System' exception: ", $e.getMessage(), "</p></br></br>";
}
?>  
using Newtonsoft.Json;
using RestSharp;
using RestSharp.Authenticators;

namespace ConsoleApplication2
{
    class GetSystem
    {
        private const string ENDPOINT = "https://api.pulseway.com/v2/";
        private const string USERNAME = "username";
        private const string PASSWORD = "password";

        static void Main1(string[] args)
        {
            var client = new RestClient(ENDPOINT);
            client.Authenticator = new HttpBasicAuthenticator(USERNAME, PASSWORD);

            var request = new RestRequest("systems/{id}", Method.GET);
            request.AddUrlSegment("id", "28440dda-f385-4ec8-a5c3-d1e6074113bb"); 

            var response = client.Execute(request) as RestResponse;
            var content = response.Content;
            dynamic result = JsonConvert.DeserializeObject(content);
        }
    }
}  
package com.pulseway.client;

import java.io.StringReader;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.*;
import org.apache.http.util.EntityUtils;
import com.google.gson.Gson;

public class GetSystem { 
    private static final String ENDPOINT = "api.pulseway.com/v2/";
    private static final String USERNAME = "username";
    private static final String APITOKEN = "password";
    private static final String ID = "28440dda-f385-4ec8-a5c3-d1e6074113bb";

    public static void main(String[] args) 
    {
        try 
        {                   
            URIBuilder builder = new URIBuilder();
            builder.setScheme("https").setHost(ENDPOINT).setPath("/systems/"+ ID);            
            URI uri = builder.build();

            HttpGet request = new HttpGet(uri);       
            request.setHeader("Content-Type", "application/json");
            String auth = new String(Base64.encodeBase64((USERNAME + ":" + APITOKEN).getBytes()), StandardCharsets.UTF_8.toString());
            request.setHeader("Authorization", "Basic " + auth);

            HttpClient httpClient = HttpClients.createDefault();
            HttpResponse response = httpClient.execute(request);

            HttpEntity httpEntity = response.getEntity();
            String apiOutput = EntityUtils.toString(httpEntity);

            Gson gson = new Gson();
            Response resp = gson.fromJson(new StringReader(apiOutput), Response.class);

            System.out.println(resp.data.description);
        }
        catch (Exception ex) 
        {
            System.out.println("An exception has occurred: " +  ex.getMessage());
        }
    }  

    public class Response
    {
        public SystemDetails data;
        public Meta meta;                          
    }    
    public class SystemDetails
    {
        public String identifier;
        public String name;
        public String group;
        public String description;
        public String external_ip_address;
        public String uptime;
        public boolean is_online;
        public String computer_type;
        public String client_version;
        public boolean in_maintenance;
        public int critical_notifications;
        public int elevated_notifications;
        public int normal_notifications;
        public int low_notifications;
    }    
    public class Meta
    {
        public String response_code;
        public String error_message;      
    }  
}  
curl https://api.pulseway.com/v2/systems/28440dda-f385-4ec8-a5c3-d1e6074113bb \
     -u username:password    

The above command returns JSON structured like this:

{
    "data":
    {
        "description":"Windows 10 Enterprise",
        "uptime":"Offline since 63 days ago",
        "is_online":false,
        "computer_type":"windows",
        "in_maintenance":false,
        "external_ip_address":"1.2.3.4",
        "critical_notifications":0,
        "elevated_notifications":0,
        "normal_notifications":0,
        "low_notifications":0,
        "client_version":"4.8.5",
        "identifier":"28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "name":"MyPC",
        "group":"Home"
    },
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}   
{
    "data":
    {
        "description":"Windows 10 Enterprise",
        "uptime":"Offline since 63 days ago",
        "is_online":false,
        "computer_type":"windows",
        "in_maintenance":false,
        "external_ip_address":"1.2.3.4",
        "critical_notifications":0,
        "elevated_notifications":0,
        "normal_notifications":0,
        "low_notifications":0,
        "client_version":"4.8.5",
        "identifier":"28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "name":"MyPC",
        "group":"Home"
    },
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}    
{
    "data":
    {
        "description":"Windows 10 Enterprise",
        "uptime":"Offline since 63 days ago",
        "is_online":false,
        "computer_type":"windows",
        "in_maintenance":false,
        "external_ip_address":"1.2.3.4",
        "critical_notifications":0,
        "elevated_notifications":0,
        "normal_notifications":0,
        "low_notifications":0,
        "client_version":"4.8.5",
        "identifier":"28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "name":"MyPC",
        "group":"Home"
    },
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}    
{
    "data":
    {
        "description":"Windows 10 Enterprise",
        "uptime":"Offline since 63 days ago",
        "is_online":false,
        "computer_type":"windows",
        "in_maintenance":false,
        "external_ip_address":"1.2.3.4",
        "critical_notifications":0,
        "elevated_notifications":0,
        "normal_notifications":0,
        "low_notifications":0,
        "client_version":"4.8.5",
        "identifier":"28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "name":"MyPC",
        "group":"Home"
    },
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}    
{
    "data":
    {
        "description":"Windows 10 Enterprise",
        "uptime":"Offline since 63 days ago",
        "is_online":false,
        "computer_type":"windows",
        "in_maintenance":false,
        "external_ip_address":"1.2.3.4",
        "critical_notifications":0,
        "elevated_notifications":0,
        "normal_notifications":0,
        "low_notifications":0,
        "client_version":"4.8.5",
        "identifier":"28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "name":"MyPC",
        "group":"Home"
    },
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}   
{
    "data":
    {
        "description":"Windows 10 Enterprise",
        "uptime":"Offline since 63 days ago",
        "is_online":false,
        "computer_type":"windows",
        "in_maintenance":false,
        "external_ip_address":"1.2.3.4",
        "critical_notifications":0,
        "elevated_notifications":0,
        "normal_notifications":0,
        "low_notifications":0,
        "client_version":"4.8.5",
        "identifier":"28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "name":"MyPC",
        "group":"Home"
    },
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}   
{
    "data":
    {
        "description":"Windows 10 Enterprise",
        "uptime":"Offline since 63 days ago",
        "is_online":false,
        "computer_type":"windows",
        "in_maintenance":false,
        "external_ip_address":"1.2.3.4",
        "critical_notifications":0,
        "elevated_notifications":0,
        "normal_notifications":0,
        "low_notifications":0,
        "client_version":"4.8.5",
        "identifier":"28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "name":"MyPC",
        "group":"Home"
    },
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}   
{
    "data":
    {
        "description":"Windows 10 Enterprise",
        "uptime":"Offline since 63 days ago",
        "is_online":false,
        "computer_type":"windows",
        "in_maintenance":false,
        "external_ip_address":"1.2.3.4",
        "critical_notifications":0,
        "elevated_notifications":0,
        "normal_notifications":0,
        "low_notifications":0,
        "client_version":"4.8.5",
        "identifier":"28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "name":"MyPC",
        "group":"Home"
    },
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}   

Returns the system details.

HTTP Request

https://api.pulseway.com/v2/systems/:id

HTTP Verb

GET

URL Parameters

Parameter Value Required Description
id string yes the value of the system identifier

Get System Notifications

require 'rubygems'
require 'active_rest_client'
require 'openssl'

silence_warnings do
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
end

class System < ActiveRestClient::Base
    # use limit & offset parameters  
    before_request do |name, request|
        request.get_params[:limit] = "50"
        request.get_params[:offset] = "0"
    end

    base_url 'https://api.pulseway.com/v2/'
    username 'username'
    password 'password' 

  get :notifications, "/systems/:id/notifications" 
end

begin   
    puts "Get System Notifications..."      
    @result = System.notifications('28440dda-f385-4ec8-a5c3-d1e6074113bb')
    puts @result.data.to_json

rescue Exception => e       
    puts e.message      
end
import slumber

ENDPOINT = "https://api.pulseway.com/v2/"
USERNAME = "username"
PASSWORD = "password"

try:        
    api = slumber.API(ENDPOINT, auth=(USERNAME, PASSWORD))
    # result = api.systems.get();
    result = api.systems("28440dda-f385-4ec8-a5c3-d1e6074113bb").notifications.get()
    print (result)

except Exception as e:
    print('Publish raised an exception.')
    print(e.strerror)
var endpoint       = "https://api.pulseway.com/v2/";
var username       = "username";
var password       = "password";

var Client = require('node-rest-client').Client;
var auth = { user: username, password: password };

var client = new Client(auth);

var args = {    
    path: { "id": '28440dda-f385-4ec8-a5c3-d1e6074113bb' },
}

client.registerMethod("getSystemNotifications", endpoint + "systems/${id}/notifications", "GET");

client.methods.getSystemNotifications(args, function (data, response) { 
    console.log(data);  
});   
##!/usr/bin #!/usr/bin/perl

package main;
use strict;
use REST::Client;
use JSON;
use URI;
use Data::Dumper;
use MIME::Base64;   

my $endpoint = 'https://api.pulseway.com/v2/';
$endpoint->query_form('limit'  => '50', 'offset' => '0');
my $username = "username";
my $password = "password";
my $id = "28440dda-f385-4ec8-a5c3-d1e6074113bb";

my $uri = URI->new('systems/'.$id.'/notifications')->abs($endpoint);

my $client = HTTP::Request->new( 'GET', $uri);

$client->header('Content-Type' => 'application/json' );
$client->authorization_basic("$username", "$password");

my $response = LWP::UserAgent->new->request($client);

if ($response->is_success) {
    my $jsonobj = JSON::decode_json($response->decoded_content);

    # Data::Dumper makes it easy to see what the JSON returned actually looks like 
    # when converted into Perl data structures.

    print Dumper($jsonobj->{'meta'});
    print Dumper($jsonobj->{'data'});
} else {
    die $response->status_line;
}   
 <?php
const ENDPOINT       = "https://api.pulseway.com/v2/";
const USERNAME       = "username";
const PASSWORD       = "password";

const options = array(
    'object' => 'systems',
    'id' => '28440dda-f385-4ec8-a5c3-d1e6074113bb'
);

// use limit & offset parameters
const params = array (
    'limit' => '50',
    'offset' => '0'
);

function request($opt, $params) {
    $request = curl_init();
    $headers = array(
    'Content-Type: application/json'        
);

$url = ENDPOINT . $opt['object'];
if (isset($opt['id']))
    $url = ENDPOINT . $opt['object'] . '/' . $opt["id"].'/'.'notifications';

    $parameters = '';
    if (isset($params['limit']) || isset($params['offset']))
    foreach($params as $key=>$value)
        $parameters .= $key.'='.$value.'&';

    $parameters = trim($parameters, '&');

    curl_setopt($request, CURLOPT_URL, (isset($params['limit']) || isset($params['offset'])) ? $url.'?'.$parameters : $url);
    curl_setopt($request, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($request, CURLOPT_USERPWD, USERNAME.":".PASSWORD);

    $response = curl_exec($request);
    if ($response == FALSE) {
        die('<p>Curl failed: '.curl_error($request).'</p>');
    }

    return $response;
}

try {
    echo "<p>Get System Notifications</p>";
    $publishResponse = request(options, params);
    echo "<p>".$publishResponse."</p></br></br>";
}
catch (Exception $e) {
    echo "<p>'Get System Notifications' exception: ", $e.getMessage(), "</p></br></br>";
}
?>  
using Newtonsoft.Json;
using RestSharp;
using RestSharp.Authenticators;

namespace ConsoleApplication2
{
    class GetSystemNotifications
    {
        private const string ENDPOINT = "https://api.pulseway.com/v2/";
        private const string USERNAME = "username";
        private const string PASSWORD = "password";

        static void Main1(string[] args)
        {
            var client = new RestClient(ENDPOINT);
            client.Authenticator = new HttpBasicAuthenticator(USERNAME, PASSWORD);

            var request = new RestRequest("systems/{id}/notifications", Method.GET);
            request.AddUrlSegment("id", "28440dda-f385-4ec8-a5c3-d1e6074113bb"); 

            var response = client.Execute(request) as RestResponse;
            var content = response.Content;
            dynamic result = JsonConvert.DeserializeObject(content);
        }
    }
}  
package com.pulseway.client;

import java.io.StringReader;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.*;
import org.apache.http.util.EntityUtils;
import com.google.gson.Gson;

public class GetSystemNotifications {
    private static final String ENDPOINT = "api.pulseway.com/v2/";  
    private static final String USERNAME = "username";
    private static final String APITOKEN = "password";
    private static final String ID = "28440dda-f385-4ec8-a5c3-d1e6074113bb";

    public static void main(String[] args) 
    {
        try 
        {                   
            URIBuilder builder = new URIBuilder();
            builder.setScheme("https").setHost(ENDPOINT).setPath("/systems/"+ ID + "/notifications")
                .setParameter("limit", "50")
                .setParameter("offset", "0");             
            URI uri = builder.build();

            HttpGet request = new HttpGet(uri);       
            request.setHeader("Content-Type", "application/json");
            String auth = new String(Base64.encodeBase64((USERNAME + ":" + APITOKEN).getBytes()), StandardCharsets.UTF_8.toString());
            request.setHeader("Authorization", "Basic " + auth);

            HttpClient httpClient = HttpClients.createDefault();
            HttpResponse response = httpClient.execute(request);

            HttpEntity httpEntity = response.getEntity();
            String apiOutput = EntityUtils.toString(httpEntity);

            Gson gson = new Gson();

            Response resp = gson.fromJson(new StringReader(apiOutput), Response.class);

            System.out.println(resp.data.length);
        }
        catch (Exception ex) 
        {
            System.out.println("An exception has occurred: " +  ex.getMessage());
        }
    }  

    public class Response
    {
        public Notification[] data;
        public Meta meta;                          
    }    
    public class Notification
    {
        public int id;
        public String message;
        public int date_time;
        public String priority;      
    }    
    public class Meta
    {
        public String response_code;
        public String error_message;      
    }  
}  
curl https://https://api.pulseway.com/v2/systems/28440dda-f385-4ec8-a5c3-d1e6074113bb/notifications \
     -u username:password 

# If you want to use limit & offset parameters, append
# "?&limit=50&offset=0" to the url

The above command returns JSON structured like this:

{
    "data":
    [
        {
            "id":2733,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388894,
            "priority":"critical"
        },
        {
            "id":2732,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388888,
            "priority":"critical"
        }
    ],
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}   
{
    "data":
    [
        {
            "id":2733,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388894,
            "priority":"critical"
        },
        {
            "id":2732,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388888,
            "priority":"critical"
        }
    ],
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}      
{
    "data":
    [
        {
            "id":2733,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388894,
            "priority":"critical"
        },
        {
            "id":2732,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388888,
            "priority":"critical"
        }
    ],
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}      
{
    "data":
    [
        {
            "id":2733,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388894,
            "priority":"critical"
        },
        {
            "id":2732,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388888,
            "priority":"critical"
        }
    ],
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}      
{
    "data":
    [
        {
            "id":2733,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388894,
            "priority":"critical"
        },
        {
            "id":2732,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388888,
            "priority":"critical"
        }
    ],
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}       
{
    "data":
    [
        {
            "id":2733,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388894,
            "priority":"critical"
        },
        {
            "id":2732,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388888,
            "priority":"critical"
        }
    ],
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}     
{
    "data":
    [
        {
            "id":2733,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388894,
            "priority":"critical"
        },
        {
            "id":2732,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388888,
            "priority":"critical"
        }
    ],
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}     
{
    "data":
    [
        {
            "id":2733,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388894,
            "priority":"critical"
        },
        {
            "id":2732,
            "message":"Production Web Site Instance in group Web Sites cannot connect to the database.",
            "date_time":1463388888,
            "priority":"critical"
        }
    ],
    "meta":
    {
        "response_code":200,
        "error_message":null
    }
}       

Return the system notifications.

HTTP Request

https://api.pulseway.com/v2/systems/:id/notifications

HTTP Verb

GET

URL Parameters

Parameter Value Required Description
id string yes the value of the system identifier

Query Parameters

Parameter Value Required Description
limit string no maximum number of items to return, limited to 100
offset string no starting position

Notifications

Notify

require 'rubygems'
require 'active_rest_client'
require 'openssl'

silence_warnings do
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
end

INSTANCE_ID    = "production_website_1"
INSTANCE_NAME  = "Production Web Site"
INSTANCE_GROUP = "Web Sites"

class Notification < ActiveRestClient::Base
  request_body_type :json

  base_url 'https://api.pulseway.com/v2/'
  username 'username'
  password 'password'   

  post :notify, "/notifications"
end

begin   
    puts "Notify..."    

    @result = Notification.notify(
        "instance_id": "production_website_1",
        "title": "Runtime error",
        "message": "Cannot connect to the database.",
        "priority": "critical"
    )

    puts @result.meta['response_code']

rescue Exception => e       
    puts e.message      
end
import slumber

ENDPOINT = "https://api.pulseway.com/v2/"
USERNAME = "username"
PASSWORD = "password"

try:        
    api = slumber.API(ENDPOINT, auth=(USERNAME, PASSWORD))  
    result = api.notifications.post(
        {
          "instance_id": "production_website_1",
          "title": "Runtime error",
          "message": "Cannot connect to the database.",
          "priority": "critical"
        }
    );

    print (result)

except Exception as e:
    print('Publish raised an exception.')
    print(e.strerror)
var endpoint       = "https://api.pulseway.com/v2/";
var username       = "username";
var password       = "password";
var instance_id    = "production_website_1";
var instance_name  = "Production Web Site";
var instance_group = "Web Sites";

var Client = require('node-rest-client').Client;
var auth = { user: username, password: password };

var client = new Client(auth);

var args = {    
    // use limit & offset parameters
    // parameters: { limit: "2", offset: "0" }
    data: {
        instance_id: instance_id,
        title: "Database Connection Error",
        message: instance_name + " Instance in group " + instance_group + " cannot connect to the database",
        priority: "critical"
    },
    headers: {"Content-Type": "application/json"}
}

client.registerMethod("notify", endpoint + "notifications", "POST");

client.methods.notify(args, function (data, response) {
    console.log(data);  
});   
#!/usr/bin #!/usr/bin/perl

package main;
use strict;
use REST::Client;
use JSON -support_by_pp;
use URI;
use Data::Dumper;
use MIME::Base64;   

my $endpoint = 'https://api.pulseway.com/v2/';
my $query_object = 'notifications';

my $uri = URI->new($endpoint.$query_object);

my $username = "username";
my $password = "password";

my $instance_id = "production_website_1";
my $instance_name = "Production Web Site";
my $instance_group = "Web Sites";

my $notify = {
    'instance_id' => $instance_id,  
    'title' => "Cannot connect to the database",
    'message' => "Database Connection Error",
    'priority' => "critical"
}; 

my $json = new JSON;

my $data = $json->allow_nonref->pretty->utf8->relaxed->escape_slash->loose->allow_singlequote->allow_barekey->encode($notify);

my $client = HTTP::Request->new( 'POST', $uri);

$client->header('Content-Type' => 'application/json' );
$client->authorization_basic("$username", "$password");
$client->content($data);

my $response = LWP::UserAgent->new->request($client);

if ($response->is_success) {
    my $jsonobj = JSON::decode_json($response->decoded_content);

    # Data::Dumper makes it easy to see what the JSON returned actually looks like 
    # when converted into Perl data structures.

    print Dumper($jsonobj->{'meta'});
    print Dumper($jsonobj->{'data'});
} else {
    die $response->status_line;
}   
 <?php
const ENDPOINT       = "https://api.pulseway.com/v2/";
const USERNAME       = "username";
const PASSWORD       = "password";
const INSTANCE_ID    = "rest";
const INSTANCE_NAME  = "Production Web Site";
const INSTANCE_GROUP = "Web Sites";

const options = array(
    'object' => 'notifications'     
);

$notifyRequest = array(
    "instance_id" => INSTANCE_ID,
    "title" => "Database Connection Error",
    "message" => INSTANCE_NAME." Instance in group ".INSTANCE_GROUP." cannot connect to the database.",
    "priority" => "critical"
);

function request($opt, $data) {
    $request = curl_init();
    $data_string = json_encode($data);
    $headers = array(
        'Content-Type: application/json',
        'Content-Length: '.strlen($data_string)
    );

    $url = ENDPOINT . $opt['object'];

    curl_setopt($request, CURLOPT_URL, $url);
    curl_setopt($request, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($request, CURLOPT_POST, TRUE);
    curl_setopt($request, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($request, CURLOPT_USERPWD, USERNAME.":".PASSWORD);

    $response = curl_exec($request);
    if ($response == FALSE) {
        die('<p>Curl failed: '.curl_error($request).'</p>');
    }

    return $response;
}

try {
    echo "<p>Publish</p>";
    $publishResponse = request(options, $notifyRequest);
    echo "<p>".$publishResponse."</p></br></br>";
}
catch (Exception $e) {
    echo "<p>'Publish' exception: ", $e.getMessage(), "</p></br></br>";
}
?>  

package com.pulseway.client;

import java.io.StringReader;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.*;
import org.apache.http.util.EntityUtils;
import com.google.gson.Gson;

public class Notify { 
    private static final String ENDPOINT = "api.pulseway.com/v2/";
    private static final String USERNAME = "username";
    private static final String APITOKEN = "password";
    private static final String INSTANCE_ID = "production_website_1";

    private static NotifyRequest getNotifyRequest() 
    {
        NotifyRequest request = new NotifyRequest();
        request.setInstanceId(INSTANCE_ID);
        request.setTitle("Could not connect to the database.");
        request.setMessage("Database Connection Error");
        request.setPriority("critical");
        return request;
    }

    public static void main(String[] args) 
    {
        try 
        {                   
            URIBuilder builder = new URIBuilder();
            builder.setScheme("https").setHost(ENDPOINT).setPath("/notifications");           
            URI uri = builder.build();

            HttpPost request = new HttpPost(uri);         
            request.setHeader("Content-Type", "application/json");

            String auth = new String(Base64.encodeBase64((USERNAME + ":" + APITOKEN).getBytes()), StandardCharsets.UTF_8.toString());
            request.setHeader("Authorization", "Basic " + auth);

            Gson gson = new Gson();

            NotifyRequest notifyRequest = getNotifyRequest();
            StringEntity notifyJson = new StringEntity(gson.toJson(notifyRequest));

            request.setEntity(notifyJson);

            HttpClient httpClient = HttpClients.createDefault();
            HttpResponse response = httpClient.execute(request);

            HttpEntity httpEntity = response.getEntity();
            String apiOutput = EntityUtils.toString(httpEntity);

            Response resp = gson.fromJson(new StringReader(apiOutput), Response.class);

            System.out.println(resp.meta.response_code);
        }
        catch (Exception ex) 
        {
            System.out.println("An exception has occurred: " +  ex.getMessage());
        }
    }    
    public static class Response
    {     
        public Meta meta;   
    }   
    public static class Meta
    {
        public String response_code;
        public String error_message;     
    } 
    public static class NotifyRequest
    {
        public String instance_id;
        public String title;
        public String message;
        public String priority;     

        public void setInstanceId(String instance_id)
        {
            this.instance_id = instance_id;
        }
        public void setTitle(String title)
        {
            this.title = title;
        }
        public void setMessage(String message)
        {
            this.message = message;
        }
        public void setPriority(String priority)
        {
            this.priority = priority;
        }      
    }
}  
curl https://api.pulseway.com/v2/notifications \
    -u username:apitoken \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"instance_id":"production_website_1","title":"Runtime error","message":"Cannot connect to the database.","priority":"critical"}'

The above command returns JSON structured like this:

{
    "meta": [ 
        {
            "response_code": 200,
            "error_message": null 
        }
    ]
}   
{
    "meta": [ 
        {
            "response_code": 200,
            "error_message": null 
        }
    ]
}   
{
    "meta": [ 
        {
            "response_code": 200,
            "error_message": null 
        }
    ]
}   
{
    "meta": [ 
        {
            "response_code": 200,
            "error_message": null 
        }
    ]
} 
{
    "meta": [ 
        {
            "response_code": 200,
            "error_message": null 
        }
    ]
}   
{
    "meta": [ 
        {
            "response_code": 200,
            "error_message": null 
        }
    ]
}
{
    "meta": [ 
        {
            "response_code": 200,
            "error_message": null 
        }
    ]
}
{
    "meta": [ 
        {
            "response_code": 200,
            "error_message": null 
        }
    ]
}   

Creates a system notification.

HTTP Request

https://api.pulseway.com/v2/notifications

HTTP Verb

POST

Query Parameters

Parameter Value Required Description
limit string no maximum number of items to return, limited to 100
offset string no starting position

Fields

Name Value Required Description
instance_id string yes Identifier of the instance that triggered the notification. (maximum 100 characters)
title string yes Notification title that is displayed in the PUSH notification.
message string no Notification message appears in the Notification Detail view. Defaults to the title field. (maximum 5000 characters)
priority string no Possible values: low, normal, elevated, critical. Defaults to normal.

Get All Notifications

require 'rubygems'
require 'active_rest_client'
require 'openssl'

silence_warnings do
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
end

class Notification < ActiveRestClient::Base
# use limit & offset parameters  
    before_request do |name, request|
        request.get_params[:limit] = "2"
        request.get_params[:offset] = "0"
    end

    base_url 'https://api.pulseway.com/v2/'
    username 'username'
    password 'password' 

  get :all, "/notifications"
end

begin   
    puts "Get Notifications..."     
    @result = Notification.all
    puts @result.data.to_json

rescue Exception => e       
    puts e.message      
end
import slumber

ENDPOINT = "https://api.pulseway.com/v2/"
USERNAME = "username"
PASSWORD = "password"

try:        
    api = slumber.API(ENDPOINT, auth=(USERNAME, PASSWORD))  
    # use limit & offset parameters
    result = api.notifications.get(limit='2', offset='0')
    print (result)

except Exception as e:
    print('Publish raised an exception.')
    print(e.strerror)
)
var endpoint       = "https://api.pulseway.com/v2/";
var username       = "username";
var password       = "password";

var Client = require('node-rest-client').Client;
var auth = { user: username, password: password };

var client = new Client(auth);

var args = {    
    // use limit & offset parameters
    parameters: { limit: "2", offset: "0" }
}

client.registerMethod("getNotifications", endpoint + "notifications", "GET");

client.methods.getNotifications(args, function (data, response) {   
    console.log(data);  
});   
#!/usr/bin #!/usr/bin/perl

package main;
use strict;
use REST::Client;
use JSON;
use URI;
use Data::Dumper;
use MIME::Base64;   

my $endpoint = 'https://api.pulseway.com/v2/';
my $username = "username";
my $password = "password";

my $uri = URI->new($endpoint.'notifications');
$uri->query_form('limit'  => '2', 'offset' => '0');

my $client = HTTP::Request->new( 'GET', $uri);

$client->header('Content-Type' => 'application/json' );
$client->authorization_basic("$username", "$password");

my $response = LWP::UserAgent->new->request($client);

if ($response->is_success) {
    my $jsonobj = JSON::decode_json($response->decoded_content);

    # Data::Dumper makes it easy to see what the JSON returned actually looks like 
    # when converted into Perl data structures.

    print Dumper($jsonobj->{'meta'});
    print Dumper($jsonobj->{'data'});
} else {
    die $response->status_line;
}   
 <?php
const ENDPOINT       = "https://api.pulseway.com/v2/";
const USERNAME       = "username";
const PASSWORD       = "password";

const options = array(
    'object' => 'notifications'     
);

// use limit & offset parameters
const params = array (
    'limit' => '2',
    'offset' => '0'
);

function request($opt, $params) {
    $request = curl_init();
    $headers = array(
        'Content-Type: application/json'        
    );

    $url = ENDPOINT . $opt['object'];

    $parameters = '';
    if (isset($params['limit']) || isset($params['offset']))
        foreach($params as $key=>$value)
                $parameters .= $key.'='.$value.'&';

    $parameters = trim($parameters, '&');

    curl_setopt($request, CURLOPT_URL, (isset($params['limit']) || isset($params['offset'])) ? $url.'?'.$parameters : $url);
    curl_setopt($request, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($request, CURLOPT_USERPWD, USERNAME.":".PASSWORD);

    $response = curl_exec($request);
    if ($response == FALSE) {
        die('<p>Curl failed: '.curl_error($request).'</p>');
    }

    return $response;
}

try {
    echo "<p>Get Notifications</p>";
    $publishResponse = request(options, params);
    echo "<p>".$publishResponse."</p></br></br>";
}
catch (Exception $e) {
    echo "<p>'Get Notifications' exception: ", $e.getMessage(), "</p></br></br>";
}
?>  
using Newtonsoft.Json;
using RestSharp;
using RestSharp.Authenticators;

namespace ConsoleApplication2
{
    class GetNotifications
    {
        private const string ENDPOINT = "https://api.pulseway.com/v2/";
        private const string USERNAME = "username";
        private const string PASSWORD = "password";

        static void Main1(string[] args)
        {
            var client = new RestClient(ENDPOINT);
            client.Authenticator = new HttpBasicAuthenticator(USERNAME, PASSWORD);

            var request = new RestRequest("notifications", Method.GET);

            request.AddParameter("limit", "2");
            request.AddParameter("offset", "0");

            var response = client.Execute(request) as RestResponse;
            var content = response.Content;
            dynamic result = JsonConvert.DeserializeObject(content);
        }
    }
}  
package com.pulseway.client;

import java.io.StringReader;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.*;
import org.apache.http.util.EntityUtils;
import com.google.gson.Gson;

public class GetNotifications { 
    private static final String ENDPOINT = "api.pulseway.com/v2/";
    private static final String USERNAME = "username";
    private static final String APITOKEN = "password";

    public static void main(String[] args) 
    {
        try 
        {                   
            URIBuilder builder = new URIBuilder();
            builder.setScheme("https").setHost(ENDPOINT).setPath("/notifications")
                .setParameter("limit", "5")
                .setParameter("offset", "0");
            URI uri = builder.build();

            HttpGet request = new HttpGet(uri);       
            request.setHeader("Content-Type", "application/json");
            String auth = new String(Base64.encodeBase64((USERNAME + ":" + APITOKEN).getBytes()), StandardCharsets.UTF_8.toString());
            request.setHeader("Authorization", "Basic " + auth);

            HttpClient httpClient = HttpClients.createDefault();
            HttpResponse response = httpClient.execute(request);

            HttpEntity httpEntity = response.getEntity();
            String apiOutput = EntityUtils.toString(httpEntity);

            Gson gson = new Gson();

            Response resp = gson.fromJson(new StringReader(apiOutput), Response.class);

            System.out.println(resp.data.length);
        }
        catch (Exception ex) 
        {
            System.out.println("An exception has occurred: " +  ex.getMessage());
        }
    }    
    public class Response
    {
        public Notification[] data; 
        public Meta meta;           
    }    
    public class Notification
    {
        public int id;
        public String message;
        public int date_time;
        public String priority;    
    }    
    public class Meta
    {
        public String response_code;
        public String error_message;      
    }  
}
curl https://https://api.pulseway.com/v2/notifications \
     -u username:password 

# If you want to use limit & offset parameters, append
# "?&limit=2&offset=0" to the url  

The above command returns JSON structured like this:

{ 
    "data": [
        {
            "id": 2750,
            "message": 'Production Web Site Instance in group Web Sites cannot connect to the database',
            "date_time": 1463473104,
            "priority": 'critical' 
        },
        {
            "id": 2749,
            "message": 'Cannot connect to the database.',           
            "date_time": 1463473083,
            "priority": 'critical' 
        }
    ],
    "meta": 
    {
        "response_code": 200, 
        "error_message": null 
    }
}    
{ 
    "data": [
        {
            "id": 2750,
            "message": 'Production Web Site Instance in group Web Sites cannot connect to the database',
            "date_time": 1463473104,
            "priority": 'critical' 
        },
        {
            "id": 2749,
            "message": 'Cannot connect to the database.',           
            "date_time": 1463473083,
            "priority": 'critical' 
        }
    ],
    "meta": 
    {
        "response_code": 200, 
        "error_message": null 
    }
}    
{ 
    "data": [
        {
            "id": 2750,
            "message": 'Production Web Site Instance in group Web Sites cannot connect to the database',
            "date_time": 1463473104,
            "priority": 'critical' 
        },
        {
            "id": 2749,
            "message": 'Cannot connect to the database.',           
            "date_time": 1463473083,
            "priority": 'critical' 
        }
    ],
    "meta": 
    {
        "response_code": 200, 
        "error_message": null 
    }
}    
{ 
    "data": [
        {
            "id": 2750,
            "message": 'Production Web Site Instance in group Web Sites cannot connect to the database',
            "date_time": 1463473104,
            "priority": 'critical' 
        },
        {
            "id": 2749,
            "message": 'Cannot connect to the database.',           
            "date_time": 1463473083,
            "priority": 'critical' 
        }
    ],
    "meta": 
    {
        "response_code": 200, 
        "error_message": null 
    }
}    
{ 
    "data": [
        {
            "id": 2750,
            "message": 'Production Web Site Instance in group Web Sites cannot connect to the database',
            "date_time": 1463473104,
            "priority": 'critical' 
        },
        {
            "id": 2749,
            "message": 'Cannot connect to the database.',           
            "date_time": 1463473083,
            "priority": 'critical' 
        }
    ],
    "meta": 
    {
        "response_code": 200, 
        "error_message": null 
    }
}   
{ 
    "data": [
        {
            "id": 2750,
            "message": 'Production Web Site Instance in group Web Sites cannot connect to the database',
            "date_time": 1463473104,
            "priority": 'critical' 
        },
        {
            "id": 2749,
            "message": 'Cannot connect to the database.',           
            "date_time": 1463473083,
            "priority": 'critical' 
        }
    ],
    "meta": 
    {
        "response_code": 200, 
        "error_message": null 
    }
}   
{ 
    "data": [
        {
            "id": 2750,
            "message": 'Production Web Site Instance in group Web Sites cannot connect to the database',
            "date_time": 1463473104,
            "priority": 'critical' 
        },
        {
            "id": 2749,
            "message": 'Cannot connect to the database.',           
            "date_time": 1463473083,
            "priority": 'critical' 
        }
    ],
    "meta": 
    {
        "response_code": 200, 
        "error_message": null 
    }
}   
{ 
    "data": [
        {
            "id": 2750,
            "message": 'Production Web Site Instance in group Web Sites cannot connect to the database',
            "date_time": 1463473104,
            "priority": 'critical' 
        },
        {
            "id": 2749,
            "message": 'Cannot connect to the database.',           
            "date_time": 1463473083,
            "priority": 'critical' 
        }
    ],
    "meta": 
    {
        "response_code": 200, 
        "error_message": null 
    }
}     

Returns the system notifications.

HTTP Request

https://api.pulseway.com/v2/notifications

HTTP Verb

GET

Query Parameters

Parameter Value Required Description
limit string no maximum number of items to return, limited to 100
offset string no starting position

Get a Specific Notification

require 'rubygems'
require 'active_rest_client'
require 'openssl'

silence_warnings do
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
end

class Notification < ActiveRestClient::Base  
  base_url 'https://api.pulseway.com/v2/'
  username 'username'
  password 'password'   

  get :find, "/notifications/:id"
end

begin   
    puts "Get Notification..."      
    @result = Notification.find(2643)
    puts @result.data.to_json

rescue Exception => e       
    puts e.message      
end   
import slumber

ENDPOINT = "https://api.pulseway.com/v2/"
USERNAME = "username"
PASSWORD = "password"

try:        
    api = slumber.API(ENDPOINT, auth=(USERNAME, PASSWORD))  
    result = api.notifications(2643).get()
    print (result)

except Exception as e:
    print('Publish raised an exception.')
    print(e.strerror)   
var endpoint       = "https://api.pulseway.com/v2/";
var username       = "username";
var password       = "password";

var Client = require('node-rest-client').Client;
var auth = { user: username, password: password };

var client = new Client(auth);

var args = {    
    path: { "id": 2643 },
}

client.registerMethod("getNotification", endpoint + "notifications/${id}", "GET");

client.methods.getNotification(args, function (data, response) {
    console.log(data);  
});   
#!/usr/bin #!/usr/bin/perl

package main;
use strict;
use REST::Client;
use JSON;
use URI;
use Data::Dumper;
use MIME::Base64;   

my $endpoint = 'https://api.pulseway.com/v2/';
my $username = "username";
my $password = "password";
my $id = 2643;

my $uri = URI->new($endpoint.'notifications'.'/'.$id);

my $client = HTTP::Request->new( 'GET', $uri);

$client->header('Content-Type' => 'application/json' );
$client->authorization_basic("$username", "$password");

my $response = LWP::UserAgent->new->request($client);

if ($response->is_success) {
    my $jsonobj = JSON::decode_json($response->decoded_content);

    # Data::Dumper makes it easy to see what the JSON returned actually looks like 
    # when converted into Perl data structures.

    print Dumper($jsonobj->{'meta'});
    print Dumper($jsonobj->{'data'});
} else {
    die $response->status_line;
}   
 <?php
const ENDPOINT       = "https://api.pulseway.com/v2/";
const USERNAME       = "username";
const PASSWORD       = "password";

const options = array(
    'object' => 'notifications',
    'id' => 2643
);

function request($opt) {
    $request = curl_init();
    $headers = array(
        'Content-Type: application/json'        
    );

    $url = ENDPOINT . $opt['object'];
    if (isset($opt['id']))
        $url = ENDPOINT . $opt['object'] . '/' . $opt["id"];

    curl_setopt($request, CURLOPT_URL, $url);
    curl_setopt($request, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($request, CURLOPT_USERPWD, USERNAME.":".PASSWORD);

    $response = curl_exec($request);
    if ($response == FALSE) {
        die('<p>Curl failed: '.curl_error($request).'</p>');
    }

    return $response;
}

try {
    echo "<p>Get Notification</p>";
    $publishResponse = request(options);
    echo "<p>".$publishResponse."</p></br></br>";
}
catch (Exception $e) {
    echo "<p>'Get Notification' exception: ", $e.getMessage(), "</p></br></br>";
}
?>  
using Newtonsoft.Json;
using RestSharp;
using RestSharp.Authenticators;

namespace ConsoleApplication2
{
    class GetNotification
    {
        private const string ENDPOINT = "https://api.pulseway.com/v2/";
        private const string USERNAME = "username";
        private const string PASSWORD = "password";

        static void Main1(string[] args)
        {
            var client = new RestClient(ENDPOINT);
            client.Authenticator = new HttpBasicAuthenticator(USERNAME, PASSWORD);

            var request = new RestRequest("notifications/{id}", Method.GET);
            request.AddUrlSegment("id", "2643"); 

            var response = client.Execute(request) as RestResponse;
            var content = response.Content;
            dynamic result = JsonConvert.DeserializeObject(content);
        }
    }
}  
package com.pulseway.client;

import java.io.StringReader;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.*;
import org.apache.http.util.EntityUtils;
import com.google.gson.Gson;

public class GetNotification {
    private static final String ENDPOINT = "api.pulseway.com/v2/";
    private static final String USERNAME = "username";
    private static final String APITOKEN = "password";
    private static final int ID = 2643;

    public static void main(String[] args) 
    {
        try 
        {                   
            URIBuilder builder = new URIBuilder();
            builder.setScheme("https").setHost(ENDPOINT).setPath("/notifications/"+ ID);              
            URI uri = builder.build();

            HttpGet request = new HttpGet(uri);       
            request.setHeader("Content-Type", "application/json");
            String auth = new String(Base64.encodeBase64((USERNAME + ":" + APITOKEN).getBytes()), StandardCharsets.UTF_8.toString());
            request.setHeader("Authorization", "Basic " + auth);

            HttpClient httpClient = HttpClients.createDefault();
            HttpResponse response = httpClient.execute(request);

            HttpEntity httpEntity = response.getEntity();
            String apiOutput = EntityUtils.toString(httpEntity);

            Gson gson = new Gson();

            Response resp = gson.fromJson(new StringReader(apiOutput), Response.class);

            System.out.println(resp.data.computer_identifier);
        }
        catch (Exception ex) 
        {
            System.out.println("An exception has occurred: " +  ex.getMessage());
        }
    }  

    public class Response
    {
        public NotificationDetails data;
        public Meta meta;                   
    }    
    public class NotificationDetails
    {
        public int id;
        public String message;
        public int date_time;
        public String priority;
        public String computer_identifier;
        public boolean read;
    }    
    public class Meta
    {
        public String response_code;
        public String error_message;    
    }  
}  
curl https://https://api.pulseway.com/v2/notifications/2643 \
     -u username:password 

The above command returns JSON structured like this:

{   
    "data": 
    {
        "computer_identifier": "28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "read": false,
        "id": 2643,
        "message": "Production Web Site Instance in group Web Sites cannot connect to the database",
        "date_time": 1463473104,
        "priority": "critical"
    },
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}       
{   
    "data": 
    {
        "computer_identifier": "28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "read": false,
        "id": 2643,
        "message": "Production Web Site Instance in group Web Sites cannot connect to the database",
        "date_time": 1463473104,
        "priority": "critical"
    },
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}          
{   
    "data": 
    {
        "computer_identifier": "28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "read": false,
        "id": 2643,
        "message": "Production Web Site Instance in group Web Sites cannot connect to the database",
        "date_time": 1463473104,
        "priority": "critical"
    },
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}          
{   
    "data": 
    {
        "computer_identifier": "28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "read": false,
        "id": 2643,
        "message": "Production Web Site Instance in group Web Sites cannot connect to the database",
        "date_time": 1463473104,
        "priority": "critical"
    },
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}          
{   
    "data": 
    {
        "computer_identifier": "28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "read": false,
        "id": 2643,
        "message": "Production Web Site Instance in group Web Sites cannot connect to the database",
        "date_time": 1463473104,
        "priority": "critical"
    },
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}           
{   
    "data": 
    {
        "computer_identifier": "28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "read": false,
        "id": 2643,
        "message": "Production Web Site Instance in group Web Sites cannot connect to the database",
        "date_time": 1463473104,
        "priority": "critical"
    },
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}         
{   
    "data": 
    {
        "computer_identifier": "28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "read": false,
        "id": 2643,
        "message": "Production Web Site Instance in group Web Sites cannot connect to the database",
        "date_time": 1463473104,
        "priority": "critical"
    },
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}         
{   
    "data": 
    {
        "computer_identifier": "28440dda-f385-4ec8-a5c3-d1e6074113bb",
        "read": false,
        "id": 2643,
        "message": "Production Web Site Instance in group Web Sites cannot connect to the database",
        "date_time": 1463473104,
        "priority": "critical"
    },
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}         

Returns the notification details.

HTTP Request

https://api.pulseway.com/v2/notifications/:id

HTTP Verb

GET

URL Parameters

Parameter Value Required Description
id string yes the value of the notification identifier

Delete a Specific Notification

require 'rubygems'
require 'active_rest_client'
require 'openssl'

silence_warnings do
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
end

class Notification < ActiveRestClient::Base
    base_url 'https://api.pulseway.com/v2/'
    username 'username'
    password 'password' 

    delete :del, "/notifications/:id"
end

begin   
    puts "Delete Notification..."       
    @result = Notification.del(2643)
    puts @result.meta.to_json

rescue Exception => e       
    puts e.message      
end   
import slumber

ENDPOINT = "https://api.pulseway.com/v2/"
USERNAME = "username"
PASSWORD = "password"

try:        
    api = slumber.API(ENDPOINT, auth=(USERNAME, PASSWORD))  
    result = api.notifications(2643).delete()
    print (result)

except Exception as e:
    print('Publish raised an exception.')
    print(e.strerror)
var endpoint       = "https://api.pulseway.com/v2/";
var username       = "username";
var password       = "password";

var Client = require('node-rest-client').Client;
var auth = { user: username, password: password };

var client = new Client(auth);

var args = {    
    path: { "id": 2643 },
}

client.registerMethod("deleteNotification", endpoint + "notifications/${id}", "DELETE");

client.methods.deleteNotification(args, function (data, response) {
    console.log(data);  
});   
#!/usr/bin #!/usr/bin/perl

package main;
use strict;
use REST::Client;
use JSON;
use URI;
use Data::Dumper;
use MIME::Base64;   

my $endpoint = 'https://api.pulseway.com/v2/';
my $username = "username";
my $password = "password";
my $id = 2643;

my $uri = URI->new($endpoint.'notifications'.'/'.$id);

my $client = HTTP::Request->new( 'DELETE', $uri);

$client->header('Content-Type' => 'application/json' );
$client->authorization_basic("$username", "$password");

my $response = LWP::UserAgent->new->request($client);

if ($response->is_success) {
    my $jsonobj = JSON::decode_json($response->decoded_content);

    # Data::Dumper makes it easy to see what the JSON returned actually looks like 
    # when converted into Perl data structures.

    print Dumper($jsonobj->{'meta'});
    print Dumper($jsonobj->{'data'});
} else {
    die $response->status_line;
}   
 <?php
const ENDPOINT       = "https://api.pulseway.com/v2/";
const USERNAME       = "username";
const PASSWORD       = "password";

const options = array(
    'object' => 'notifications',
    'id' => 2643
);

function request($opt) {
    $request = curl_init();
    $headers = array(
        'Content-Type: application/json'        
    );

    $url = ENDPOINT . $opt['object'];
    if (isset($opt['id']))
        $url = ENDPOINT . $opt['object'] . '/' . $opt["id"];

    curl_setopt($request, CURLOPT_URL, $url);
    curl_setopt($request, CURLOPT_CUSTOMREQUEST, "DELETE");
    curl_setopt($request, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($request, CURLOPT_USERPWD, USERNAME.":".PASSWORD);

    $response = curl_exec($request);
    if ($response == FALSE) {
        die('<p>Curl failed: '.curl_error($request).'</p>');
    }

    return $response;
}

try {
    echo "<p>Get Notification</p>";
    $publishResponse = request(options);
    echo "<p>".$publishResponse."</p></br></br>";
}
catch (Exception $e) {
    echo "<p>'Get Notification' exception: ", $e.getMessage(), "</p></br></br>";
}
?>  
using Newtonsoft.Json;
using RestSharp;
using RestSharp.Authenticators;

namespace ConsoleApplication2
{
    class DeleteNotification
    {
        private const string ENDPOINT = "https://api.pulseway.com/v2/";
        private const string USERNAME = "username";
        private const string PASSWORD = "password";

        static void Main1(string[] args)
        {
            var client = new RestClient(ENDPOINT);
            client.Authenticator = new HttpBasicAuthenticator(USERNAME, PASSWORD);

            var request = new RestRequest("notifications/{id}", Method.DELETE);
            request.AddUrlSegment("id", "2643"); 

            var response = client.Execute(request) as RestResponse;
            var content = response.Content;
            dynamic result = JsonConvert.DeserializeObject(content);
        }
    }
}

package com.pulseway.client;

import java.io.StringReader;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.*;
import org.apache.http.util.EntityUtils;
import com.google.gson.Gson;

public class DeleteNotification { 
    private static final String ENDPOINT = "api.pulseway.com/v2/";
    private static final String USERNAME = "username";
    private static final String APITOKEN = "password";
    private static final int ID = 2643;

    public static void main(String[] args) 
    {
        try 
        {                   
            URIBuilder builder = new URIBuilder();
            builder.setScheme("https").setHost(ENDPOINT).setPath("/notifications/"+ ID);              
            URI uri = builder.build();

            HttpDelete request = new HttpDelete(uri);         
            request.setHeader("Content-Type", "application/json");
            String auth = new String(Base64.encodeBase64((USERNAME + ":" + APITOKEN).getBytes()), StandardCharsets.UTF_8.toString());
            request.setHeader("Authorization", "Basic " + auth);

            HttpClient httpClient = HttpClients.createDefault();
            HttpResponse response = httpClient.execute(request);

            HttpEntity httpEntity = response.getEntity();
            String apiOutput = EntityUtils.toString(httpEntity);

            Gson gson = new Gson();

            Response resp = gson.fromJson(new StringReader(apiOutput), Response.class);

            System.out.println(resp.meta.response_code);
        }
        catch (Exception ex) 
        {
            System.out.println("An exception has occurred: " +  ex.getMessage());
        }
    }    
    public class Response
    {       
        public Meta meta;                          
    }          
    public class Meta
    {
        public String response_code;
        public String error_message;      
    }  
}  
curl -X DELETE https://https://api.pulseway.com/v2/notifications/2643 \
     -u username:password 

The above command returns JSON structured like this:

{
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}   
{
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}      
{
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}      
{
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}      
{
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}       
{
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}     
{
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}     
{
    "meta": {
        "response_code": 200,
        "error_message": null 
    }
}       

Deletes a specific notification.

HTTP Request

https://api.pulseway.com/v2/notifications/:id

HTTP Verb

DELETE

URL Parameters

Parameter Value Required Description
id string yes the value of the notification identifier

Errors

Pulseway REST API uses conventional HTTP response codes to indicate success or failure of an API request.

In general, codes in the 2xx range indicate success, codes in the 4xx range indicate a validation error that resulted from provided information (e.g. a required parameter was missing, invalid characters used, etc.), and codes in the 5xx range indicate an error with Pulseway’s servers.

Error Code Meaning
200 OK
400 Bad Request
401 Unauthorized
403 Request Failed
404 Not Found
500 Internal Error
502 Internal Error
503 Internal Error
504 Internal Errors