Over the years, NodePing has offered an API to manage most aspects of your monitoring. Today, we are introducing our new Python 2/3 library to interface with this API. Instead of reinventing the wheel in your code to interact with our API, drop this library into your project and with a few lines you can easily manage your checks and various other aspects of your account. With the Python library at your disposal, you can:

List, create, update, and delete checks

Manage contacts

Manage contact groups

Manage schedules

Get check results and uptime

Get notification information

Get probe information

This means that the Python library has feature parity with our API. You can get the code from our GitHub repository or install it from Pypi via pip. There is also some documentation written to help you by providing snippets of what your code might look like when querying the API with Python.

In this post, we will share a brief introduction to getting started with using the Python library and how it can be used to manage your account. You can use your installer of choice, but in this introduction I will use pip to install the library:

pip install nodeping-api

You may have to specify Python2 or 3 for your pip version, depending on your system. To start using the library, you will need to provide your API token as a variable, and an optional subaccount ID to start managing your checks.

This is only a snippet of what the library can do, and the documentation is detailed to get you started on your journey. Give it a try and see how you can improve your uptime monitoring in your Python projects. This code is free and available to download. We encourage pull requests for new features so if you make changes or have requests, feel free to share.

If you aren’t using NodePing yet, you can sign up for a free, 15-day trial and test out monitoring your services today and take advantage of our API in your own Python projects.

At NodePing we interact with our own API quite a bit from the command line. Most of that is from bash on Linux, because that’s where we live most of our lives. But the API works well from just about any scripting environment. Since our documentation examples all use curl with bash syntax, it seemed like it might be a good idea to also write up some examples of using other tools. Here, as the first installment of that effort, is a handful of examples of using PowerShell with the NodePing API.

Full disclosure: PowerShell is not an environment we spend a lot of time working with. There are likely ways to do some of this better. We’ve tested the example calls in this post. Hopefully it is enough to get you started if you work with PowerShell.

Basic GET Calls

Basic calls are quite simple to make using Invoke-RestMethod. If you have the check ID, getting a check is quite easy:

Note that “parameters” is another hash. You can refer to the fields in the check as properties of the returned object, including properties that are hashes themselves. So, for example, this will give you the check check threshold, which is part of “parameters”.

API Authentication

PowerShell doesn’t easily support basic authentication. Since the NodePing API supports passing the token as a parameter, the easiest approach is to include it in the query string, as I did in the example above. In most cases I prefer to pass it in the Body, as I’ll show in examples below. If you’re working with a script its usually easiest to set a $token variable and use that throughout your script. If you’re just sending a URL as I did in the simple GET calls above, actually putting in the query string works fine.

If you’re using the API in scripts that make several calls to the API, you might want a more reusable way to pass the token that keeps it out of your Body. You can do this by manually building the headers. That requires base64 encoding the credentials and then setting that using the -Headers argument. That looks something like this:

Then set the -Header argument to @{Authorization=(“Basic {0}” -f $hash)}

Or, if you are doing this several times, you will probably want to set this to a variable you can reuse.

Some sites suggest that you create a credential object using ConvertTo-SecureString and Management.Automation.PSCredential, and pass that using the -Credential argument. However, this won’t work with the NodePing API, since the -Credential option waits for the challenge to send the authorization header. The API is stateless, and expects the header on each request.

Put and Post Calls

We recommend that you use JSON to set fields for our API in most environments. However, PowerShell does not automatically handle sending the body as JSON. For POST calls, this isn’t a big deal, and you can just POST the body as it is and Invoke-RestMethod sends the data as if it were a form. PUT and DELETE calls don’t work that way. For those, you have to convert to JSON, or include all of your parameters in a query string.

Note that since we’re updating a check, we need to include the check ID. As with the Post call, the Put call returns the updated check object.

Working with Lists of Checks

Working with a list of checks is slightly trickier. The call returns a JSON object with a list of checks using the ID as the key. For PowerShell, this is a hash table of hashes. So to list checks, you would do something like this:

Profit!

That’s the basics of using PowerShell to interact with the NodePing API. With the API you can add checks, remove checks, get your results and uptime, manage contacts and notifications, and add and manage subaccounts. Our customers use the API both for programmed integrations, and from the command line using quick scripts like the ones I demonstrated here to make quick changes to several (or lots) of checks at once.

If you’re doing interesting things with PowerShell and the NodePing API, we’d like to hear about it! Please email support and let us know. That’s also a great place to ask us questions. We’re happy to help people interact with our service.

You can obtain the current status of your checks using /api/1/results/current. This returns a list of checks that currently have an “event,” which means that the check is currently disabled or is listed as “down.” The information returned will include a timestamp when the event started. Checks not listed in the results for this call are currently “up.”

We’re also adding a couple of convenience tweaks. When you are getting a list of checks, you can add a “current” parameter in order to have any current events added to the check information. This basically mixes the information from the “current” call mentioned above in with the list of checks.

Additionally, when you are getting a single check, you can add a “lastresult” parameter to the request and get the most recent result for that check along with the check information.

All three of these changes are included in our API Reference documenation. Hopefully these minor enhancements will be of help. Feedback is welcome here or at support@nodeping.com.

Recently we have been working on some of our reports. As a part of that process, we are releasing a new uptime report. The report allows you to see uptime statistics for an individual monitor grouped by days or months. This allows you to get accurate reporting for any check for any given month for which data is in our database.

You can set arbitrary date ranges for the report. This report is publicly available if you have public reporting turned on for the check. As with our other reports, it is available in a web page, as JSON, or CSV format. The report is described in more detail in our report documentation.

NodePing

NodePing is an Internet web site and server monitoring service at an amazing price, allowing you to check all your website and servers as frequently as every minute, for as little as $8 a month. Our low prices include unlimited international SMS, slack, and email notifications. The 'Provider' plan also includes unlimited voice notifications.