REST API

Ping Hostux.social REST API supports listing, creating, updating, pausing and deleting checks in user's account.

API Endpoints

Get list of existing checks GET https://ping.hostux.social/api/v1/checks/
Create a new check POST https://ping.hostux.social/api/v1/checks/
Update an existing check POST https://ping.hostux.social/api/v1/checks/<code>
Pause monitoring of a check POST https://ping.hostux.social/api/v1/checks/<code>/pause
Delete check DELETE https://ping.hostux.social/api/v1/checks/<code>

Authentication

Your requests to Ping Hostux.social REST API must authenticate using an API key. By default, an user account on Ping Hostux.social doesn't have an API key. You can create one in the Settings page.

The client can authenticate itself by sending an appropriate HTTP request header. The header's name should be X-Api-Key and its value should be your API key.

Alternatively, for POST requests with a JSON request body, the client can include an api_key field in the JSON document. See below the "Create a check" section for an example.

API Requests

For POST requests, the Ping Hostux.social API expects request body to be a JSON document (not a multipart/form-data encoded form data).

API Responses

Ping Hostux.social uses HTTP status codes wherever possible. In general, 2xx class indicates success, 4xx indicates an client error, and 5xx indicates a server error.

The response may contain a JSON document with additional data.

Get List of Existing Checks

GET https://ping.hostux.social/api/v1/checks/

Returns a list of checks belonging to the user, optionally filtered by one or more tags.

Query String Parameters

tag=<value>

Filters the checks, and returns only the checks that are tagged with the specified value.

This parameter can be repeated multiple times.

Example:

https://ping.hostux.social/api/v1/checks/?tag=foo&tag=bar

Example Request

curl --header "X-Api-Key: your-api-key" https://ping.hostux.social/api/v1/checks/

Example Response

{
  "checks": [
    {
      "last_ping": "2017-01-04T13:24:39.903464+00:00",
      "ping_url": "https://ping.hostux.info/ping/662ebe36-ecab-48db-afe3-e20029cb71e6",
      "next_ping": "2017-01-04T14:24:39.903464+00:00",
      "grace": 900,
      "name": "Api test 1",
      "n_pings": 1,
      "tags": "foo",
      "pause_url": "https://ping.hostux.social/api/v1/checks/662ebe36-ecab-48db-afe3-e20029cb71e6/pause",
      "timeout": 3600,
      "status": "up",
      "update_url": "https://ping.hostux.social/api/v1/checks/662ebe36-ecab-48db-afe3-e20029cb71e6"
    },
    {
      "last_ping": null,
      "ping_url": "https://ping.hostux.info/ping/9d17c61f-5c4f-4cab-b517-11e6b2679ced",
      "next_ping": null,
      "grace": 3600,
      "name": "Api test 2",
      "n_pings": 0,
      "tags": "bar baz",
      "pause_url": "https://ping.hostux.social/api/v1/checks/9d17c61f-5c4f-4cab-b517-11e6b2679ced/pause",
      "tz": "UTC",
      "schedule": "0/10 * * * *",
      "status": "new",
      "update_url": "https://ping.hostux.social/api/v1/checks/9d17c61f-5c4f-4cab-b517-11e6b2679ced"
    }
  ]
}

Create a Check

POST https://ping.hostux.social/api/v1/checks/

Creates a new check and returns its ping URL. All request parameters are optional and will use their default values if omitted.

This API call can be used to create both "simple" and "cron" checks. To create a "simple" check, specify the "timeout" parameter. To create a "cron" check, specify the "schedule" and "tz" parameters.

Request Parameters

name

string, optional, default value: ""

Name for the new check.

tags

string, optional, default value: ""

A space-delimited list of tags for the new check.

Example:

{"tags": "reports staging"}
timeout

number, optional, default value: 86400.

A number of seconds, the expected period of this check.

Minimum: 60 (one minute), maximum: 2592000 (30 days).

Example for 5 minute timeout:

{"kind": "simple", "timeout": 300}
grace

number, optional, default value: 3600.

A number of seconds, the grace period for this check.

Minimum: 60 (one minute), maximum: 2592000 (30 days).

schedule

string, optional, default value: "* * * * *".

A cron expression defining this check's schedule.

If you specify both "timeout" and "schedule" parameters, "timeout" will be ignored and "schedule" will be used.

Example for a check running every half-hour:

{"schedule": "0,30 * * * *"}
tz

string, optional, default value: "UTC".

Server's timezone. This setting only has effect in combination with the "schedule" paremeter.

Example:

{"tz": "Europe/Riga"}
channels

string, optional, default value: ""

By default, if a check is created through API, no notification channels are assigned to it. So, when the check goes up or down, no notifications would be sent. Set this field to a special value "*" to automatically assign all existing notification channels.

unique

array of string values, optional, default value: [].

Before creating a check, look for existing checks, filtered by fields listed in unique. If a matching check is found, return it with HTTP status code 200. If no matching check is found, proceed as normal: create a check and return it with HTTP status code 201.

The accepted values are: name, tags, timeout and grace.

Example:

{"name": "Backups", unique: ["name"]}

In this example, if a check named "Backups" exists, it will be returned. Otherwise, a new check will be created and returned.

Response Codes

201 Created Returned if the check was successfully created.
200 OK Returned if the unique parameter was used and an existing check was matched.
403 Forbidden Returned if the account's check limit has been reached. For free accounts, the limit is 20 checks per account.

Example Request

curl https://ping.hostux.social/api/v1/checks/ \
    --header "X-Api-Key: your-api-key" \
    --data '{"name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}'

Or, alternatively:

curl https://ping.hostux.social/api/v1/checks/ \
    --data '{"api_key": "your-api-key", "name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}'

Example Response

{
  "grace": 60,
  "last_ping": null,
  "n_pings": 0,
  "name": "Backups",
  "next_ping": null,
  "pause_url": "https://ping.hostux.social/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause",
  "ping_url": "https://ping.hostux.info/ping/f618072a-7bde-4eee-af63-71a77c5723bc",
  "status": "new",
  "tags": "prod www",
  "timeout": 3600,
  "update_url": "https://ping.hostux.social/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc",
}

Update an Existing Check

POST https://ping.hostux.social/api/v1/checks/<code>

Updates an existing check. All request parameters are optional. The check is updated only with the supplied request parameters. If any parameter is omitted, its value is left unchanged.

Request Parameters

name

string, optional.

Name for the check.

tags

string, optional.

A space-delimited list of tags for the check.

Example:

{"tags": "reports staging"}
timeout

number, optional.

A number of seconds, the expected period of this check.

Minimum: 60 (one minute), maximum: 2592000 (30 days).

Example for 5 minute timeout:

{"kind": "simple", "timeout": 300}
grace

number, optional.

A number of seconds, the grace period for this check.

Minimum: 60 (one minute), maximum: 2592000 (30 days).

schedule

string, optional.

A cron expression defining this check's schedule.

If you specify both "timeout" and "schedule" parameters, "timeout" will be ignored and "schedule" will be used.

Example for a check running every half-hour:

{"schedule": "0,30 * * * *"}
tz

string, optional.

Server's timezone. This setting only has effect in combination with the "schedule" paremeter.

Example:

{"tz": "Europe/Riga"}
channels

string, optional.

Set this field to a special value "*" to automatically assign all existing notification channels.

Set this field to a special value "" (empty string) to automatically unassign all notification channels.

Response Codes

200 OK Returned if the check was successfully updated.

Example Request

curl https://ping.hostux.social/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc \
    --header "X-Api-Key: your-api-key" \
    --data '{"name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}'

Or, alternatively:

curl https://ping.hostux.social/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc \
    --data '{"api_key": "your-api-key", "name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}'

Example Response

{
  "grace": 60,
  "last_ping": null,
  "n_pings": 0,
  "name": "Backups",
  "next_ping": null,
  "pause_url": "https://ping.hostux.social/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause",
  "ping_url": "https://ping.hostux.info/ping/f618072a-7bde-4eee-af63-71a77c5723bc",
  "status": "new",
  "tags": "prod www",
  "timeout": 3600,
  "update_url": "https://ping.hostux.social/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc",
}

Pause Monitoring of a Check

POST https://ping.hostux.social/api/v1/checks/<uuid>/pause

Disables monitoring for a check, without removing it. The check goes into a "paused" state. You can resume monitoring of the check by pinging it.

This API call has no request parameters.

Example Request

curl https://ping.hostux.social/api/v1/checks/0c8983c9-9d73-446f-adb5-0641fdacc9d4/pause \
    --request POST --header "X-Api-Key: your-api-key" --data ""

Note: the --data "" argument forces curl to send a Content-Length request header even though the request body is empty. For HTTP POST requests, the Content-Length header is sometimes required by some network proxies and web servers.

Example Response

{
  "grace": 60,
  "last_ping": null,
  "n_pings": 0,
  "name": "Backups",
  "next_ping": null,
  "pause_url": "https://ping.hostux.social/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause",
  "ping_url": "https://ping.hostux.info/ping/f618072a-7bde-4eee-af63-71a77c5723bc",
  "status": "paused",
  "tags": "prod www",
  "timeout": 3600,
  "update_url": "https://ping.hostux.social/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc"
}

Delete Check

DELETE https://ping.hostux.social/api/v1/checks/<uuid>

Permanently deletes the check from user's account. Returns JSON representation of the check that was just deleted.

This API call has no request parameters.

Example Request

curl https://ping.hostux.social/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc \
    --request DELETE --header "X-Api-Key: your-api-key"

Example Response

{
  "grace": 60,
  "last_ping": null,
  "n_pings": 0,
  "name": "Backups",
  "next_ping": null,
  "pause_url": "https://ping.hostux.social/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause",
  "ping_url": "https://ping.hostux.info/ping/f618072a-7bde-4eee-af63-71a77c5723bc",
  "status": "new",
  "tags": "prod www",
  "timeout": 3600,
  "update_url": "https://ping.hostux.social/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc",
}