Getting Started

UptimeSharp is a C#.NET class library that integrates the UptimeRobot API.

The wrapper consists of 2 parts:

  • Get and modify monitors
  • Get and modify alert contacts

Install using NuGet

Install-Package UptimeSharp

nuget.org/packages/UptimeSharp

Usage Example

Get your API Key UptimeRobot (left section under "API Information")

Include the UptimeSharp namespace and it's associated models:

using UptimeSharp;
using UptimeSharp.Models;

Initialize UptimeClient with:

UptimeClient _client = new UptimeClient("[YOUR_API_KEY]");

Do a simple request - e.g. get all your monitors:

_client.GetMonitors().ForEach(
    item => Console.WriteLine(item.Name + " | " + item.Type)
);

Which will output:

frontendplay | HTTP
google | Keyword
localhost | Ping
...

Constructor

UptimeClient(string apiKey)

Get your API Key UptimeRobot (left section under "API Information")

Release History

  • 2013-08-28 v0.2.0 Request Validation
  • 2013-08-26 v0.1.1 Adding a Port monitor works now
  • 2013-08-25 v0.1.0 Monitor and Alert APIs

Dependencies

Contributors

twitter/artistandsocial   Tobias Klika @ceee

License

MIT License

Retrieve

Get list of all monitors:

List<Monitor> items = _client.GetMonitors();

Get monitors by ID - or a single monitor:

List<Monitor> items = _client.GetMonitors(new int[]{ 12891, 98711 });
// or
Monitor item = _client.GetMonitor(12891);

Provide additional params for more data:

List<Monitor> items = _client.GetMonitors(
    monitorIDs: new int[]{ 12891, 98711 },
    customUptimeRatio: new float[] { 7, 30, 45 },
    showLog: true,
    showAlerts: true
);

monitorIDs: You can remove this parameter if you want to retrieve all monitors (default: null)
customUptimeRatio: the number of days to calculate the uptime ratio(s) for (default: null)
showLog: include log, if true (default: false)
showAlerts: include alerts, if true (default: true)

Add

Adds/creates a new monitor.

bool AddMonitor(
    string name,
    string uri,
    Type type = Type.HTTP,
    Subtype subtype = Subtype.Unknown,
    int? port = null,
    string keywordValue = null,
    KeywordType keywordType = KeywordType.Unknown,
    int[] alerts = null,
    string HTTPUsername = null,
    string HTTPPassword = null
)

Example - Watch an SMTP Server:

bool isSuccess = _client.AddMonitor(
    name: "cee",
    uri: "127.0.0.1",
    type: Type.Port,
    subtype: Subtype.SMTP
);

name: A friendly name for the new monitor
uri: The URI or IP to watch
type: The type of the monitor (see # Monitor Types)
subtype: The subtype of the monitor (only for Type.Port) (see # Monitor Types)
port: The port (only for Subtype.Custom)
keywordValue: The keyword value (for Type.Keyword)
keywordType: Type of the keyword (for Type.Keyword)
alerts: An ID list of existing alerts to notify
HTTPUsername: The HTTP username
HTTPPassword: The HTTP password

As you can see, a lot of these parameters are only available if you've specified the correct Type.
If you've selected Type.Port for example, UptimeSharp will ignore the keywordValue and keywordType parameters, even if you submitted valid ones.

Modify

In order to modify an existing monitor, just alter the properties of the Monitor instance and call the ModifyMonitor method:

// Monitor myMonitor = ...
myMonitor.Name = "my new name :-)";
bool isSuccess = _client.ModifyMonitor(myMonitor);

Important: It is not possible to alter the Type of a monitor after its creation! In case you want to do this, you have to delete the monitor and create a new one with the changed type.

Modify Alerts

Retrieve all alerts:

List<Alert> items = _client.GetAlerts();

Retrieve alerts by IDs:

List<Alert> items = _client.GetAlerts(new string[]{ "12897", "98711" });

Retrieve a specific alert:

Alert item = _client.GetAlert("12897");

Adds an alert (Due to UptimeRobot API limitations SMS and Twitter alert contact types are not supported yet):

bool isSuccess = _client.AddAlert(AlertType.Email, "uptimesharp@outlook.com");

Adds an alert from instance:

// Alert myAlert = ...
bool isSuccess = _client.AddAlert(myAlert);

Deletes an alert:

bool isSuccess = _client.DeleteAlert("12897");

Deletes an alert from instance:

// Alert myAlert = ...
bool isSuccess = _client.DeleteAlert(myAlert);

Delete

Delete a monitor by ID:

bool isSuccess = _client.DeleteMonitor("12891");

Delete a monitor by a Monitor instance:

// Monitor myMonitor = ...
bool isSuccess = _client.DeleteMonitor(myMonitor);