@ -0,0 +1,487 @@ | |||
<h1>API Reference</h1> | |||
<p>SITE_NAME REST API supports listing, creating, updating, pausing and deleting | |||
checks in user's account.</p> | |||
<h2>API Endpoints</h2> | |||
<table> | |||
<thead> | |||
<tr> | |||
<th>Endpoint Name</th> | |||
<th>Endpoint Address</th> | |||
</tr> | |||
</thead> | |||
<tbody> | |||
<tr> | |||
<td><a href="#list-checks">Get a list of existing checks</a></td> | |||
<td><code>GET SITE_ROOT/api/v1/checks/</code></td> | |||
</tr> | |||
<tr> | |||
<td><a href="#create-check">Create a new check</a></td> | |||
<td><code>POST SITE_ROOT/api/v1/checks/</code></td> | |||
</tr> | |||
<tr> | |||
<td><a href="#update-check">Update an existing check</a></td> | |||
<td><code>POST SITE_ROOT/api/v1/checks/<uuid></code></td> | |||
</tr> | |||
<tr> | |||
<td><a href="#pause-check">Pause monitoring of a check</a></td> | |||
<td><code>POST SITE_ROOT/api/v1/checks/<uuid>/pause</code></td> | |||
</tr> | |||
<tr> | |||
<td><a href="#delete-check">Delete check</a></td> | |||
<td><code>DELETE SITE_ROOT/api/v1/checks/<uuid></code></td> | |||
</tr> | |||
<tr> | |||
<td><a href="#list-channels">Get a list of existing integrations</a></td> | |||
<td><code>GET SITE_ROOT/api/v1/channels/</code></td> | |||
</tr> | |||
</tbody> | |||
</table> | |||
<h2>Authentication</h2> | |||
<p>Your requests to SITE_NAME REST API must authenticate using an | |||
API key. Each project in your SITE_NAME account has separate API keys. | |||
There are no account-wide API keys. By default, a project on SITE_NAME doesn't have | |||
an API key. You can create read-write and read-only API keys in the | |||
<strong>Project Settings</strong> page.</p> | |||
<table> | |||
<thead> | |||
<tr> | |||
<th>Key Type</th> | |||
<th>Description</th> | |||
</tr> | |||
</thead> | |||
<tbody> | |||
<tr> | |||
<td>Regular API key</td> | |||
<td>Have full access to all documented API endpoints.</td> | |||
</tr> | |||
<tr> | |||
<td>Read-only API key</td> | |||
<td>Only work with the <a href="#list-checks">Get a list of existing checks</a> endpoint. Some fields are omitted from the API responses.</td> | |||
</tr> | |||
</tbody> | |||
</table> | |||
<p>The client can authenticate itself by sending an appropriate HTTP | |||
request header. The header's name should be <code>X-Api-Key</code> and | |||
its value should be your API key.</p> | |||
<p>Alternatively, for POST requests with a JSON request body, | |||
the client can include an <code>api_key</code> field in the JSON document. | |||
See below the "Create a check" section for an example.</p> | |||
<h2>API Requests</h2> | |||
<p>For POST requests, the SITE_NAME API expects request body to be | |||
a JSON document (<em>not</em> a <code>multipart/form-data</code> encoded form data).</p> | |||
<h2>API Responses</h2> | |||
<p>SITE_NAME uses HTTP status codes wherever possible. | |||
In general, 2xx class indicates success, 4xx indicates an client error, | |||
and 5xx indicates a server error.</p> | |||
<p>The response may contain a JSON document with additional data.</p> | |||
<h2 class="rule" id="list-checks">Get a List of Existing Checks</h2> | |||
<p><code>GET SITE_ROOT/api/v1/checks/</code></p> | |||
<p>Returns a list of checks belonging to the user, optionally filtered by | |||
one or more tags.</p> | |||
<h3>Query String Parameters</h3> | |||
<dl> | |||
<dt>tag=<value></dt> | |||
<dd> | |||
<p>Filters the checks, and returns only the checks that are tagged with the | |||
specified value.</p> | |||
<p>This parameter can be repeated multiple times.</p> | |||
<p>Example:</p> | |||
<p><code>SITE_ROOT/api/v1/checks/?tag=foo&amp;tag=bar</code></p> | |||
</dd> | |||
</dl> | |||
<h3>Example Request</h3> | |||
<div class="highlight"><pre><span></span><code>curl --header <span class="s2">"X-Api-Key: your-api-key"</span> SITE_ROOT/api/v1/checks/ | |||
</code></pre></div> | |||
<h3>Example Response</h3> | |||
<div class="highlight"><pre><span></span><code><span class="p">{</span> | |||
<span class="nt">"checks"</span><span class="p">:</span> <span class="p">[</span> | |||
<span class="p">{</span> | |||
<span class="nt">"channels"</span><span class="p">:</span> <span class="s2">"4ec5a071-2d08-4baa-898a-eb4eb3cd6941,746a083e-f542-4554-be1a-707ce16d3acc"</span><span class="p">,</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">"Longer free-form description goes here"</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">900</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="s2">"2017-01-04T13:24:39.903464+00:00"</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Api test 1"</span><span class="p">,</span> | |||
<span class="nt">"next_ping"</span><span class="p">:</span> <span class="s2">"2017-01-04T14:24:39.903464+00:00"</span><span class="p">,</span> | |||
<span class="nt">"pause_url"</span><span class="p">:</span> <span class="s2">"SITE_ROOT/api/v1/checks/662ebe36-ecab-48db-afe3-e20029cb71e6/pause"</span><span class="p">,</span> | |||
<span class="nt">"ping_url"</span><span class="p">:</span> <span class="s2">"PING_ENDPOINT662ebe36-ecab-48db-afe3-e20029cb71e6"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"up"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"foo"</span><span class="p">,</span> | |||
<span class="nt">"timeout"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"update_url"</span><span class="p">:</span> <span class="s2">"SITE_ROOT/api/v1/checks/662ebe36-ecab-48db-afe3-e20029cb71e6"</span> | |||
<span class="p">},</span> | |||
<span class="p">{</span> | |||
<span class="nt">"channels"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Api test 2"</span><span class="p">,</span> | |||
<span class="nt">"next_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"pause_url"</span><span class="p">:</span> <span class="s2">"SITE_ROOT/api/v1/checks/9d17c61f-5c4f-4cab-b517-11e6b2679ced/pause"</span><span class="p">,</span> | |||
<span class="nt">"ping_url"</span><span class="p">:</span> <span class="s2">"PING_ENDPOINT9d17c61f-5c4f-4cab-b517-11e6b2679ced"</span><span class="p">,</span> | |||
<span class="nt">"schedule"</span><span class="p">:</span> <span class="s2">"0/10 * * * *"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"new"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"bar baz"</span><span class="p">,</span> | |||
<span class="nt">"tz"</span><span class="p">:</span> <span class="s2">"UTC"</span><span class="p">,</span> | |||
<span class="nt">"update_url"</span><span class="p">:</span> <span class="s2">"SITE_ROOT/api/v1/checks/9d17c61f-5c4f-4cab-b517-11e6b2679ced"</span> | |||
<span class="p">}</span> | |||
<span class="p">]</span> | |||
<span class="p">}</span> | |||
</code></pre></div> | |||
<p>When using the read-only API key, the following fields are omitted: | |||
<code>ping_url</code>, <code>update_url</code>, <code>pause_url</code>, <code>channels</code>. An extra <code>unique_key</code> field | |||
is added. This identifier is stable across API calls. Example:</p> | |||
<div class="highlight"><pre><span></span><code><span class="p">{</span> | |||
<span class="nt">"checks"</span><span class="p">:</span> <span class="p">[</span> | |||
<span class="p">{</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">"Longer free-form description goes here"</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">900</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="s2">"2017-01-04T13:24:39.903464+00:00"</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Api test 1"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"up"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"foo"</span><span class="p">,</span> | |||
<span class="nt">"timeout"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"unique_key"</span><span class="p">:</span> <span class="s2">"2872190d95224bad120f41d3c06aab94b8175bb6"</span> | |||
<span class="p">},</span> | |||
<span class="p">{</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Api test 2"</span><span class="p">,</span> | |||
<span class="nt">"next_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"schedule"</span><span class="p">:</span> <span class="s2">"0/10 * * * *"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"new"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"bar baz"</span><span class="p">,</span> | |||
<span class="nt">"tz"</span><span class="p">:</span> <span class="s2">"UTC"</span><span class="p">,</span> | |||
<span class="nt">"unique_key"</span><span class="p">:</span> <span class="s2">"9b5fc29129560ff2c5c1803803a7415e4f80cf7e"</span> | |||
<span class="p">}</span> | |||
<span class="p">]</span> | |||
<span class="p">}</span> | |||
</code></pre></div> | |||
<h2 class="rule" id="create-check">Create a Check</h2> | |||
<p><code>POST SITE_ROOT/api/v1/checks/</code></p> | |||
<p>Creates a new check and returns its ping URL. | |||
All request parameters are optional and will use their default | |||
values if omitted.</p> | |||
<p>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.</p> | |||
<h3>Request Parameters</h3> | |||
<dl> | |||
<dt>name</dt> | |||
<dd> | |||
<p>string, optional, default value: ""</p> | |||
<p>Name for the new check.</p> | |||
</dd> | |||
<dt>tags</dt> | |||
<dd> | |||
<p>string, optional, default value: ""</p> | |||
<p>A space-delimited list of tags for the new check. | |||
Example:</p> | |||
<p><pre>{"tags": "reports staging"}</pre></p> | |||
</dd> | |||
<dt>desc</dt> | |||
<dd> | |||
<p>string, optional.</p> | |||
<p>Description for the check.</p> | |||
</dd> | |||
<dt>timeout</dt> | |||
<dd> | |||
<p>number, optional, default value: {{ default_timeout }}.</p> | |||
<p>A number of seconds, the expected period of this check.</p> | |||
<p>Minimum: 60 (one minute), maximum: 2592000 (30 days).</p> | |||
<p>Example for 5 minute timeout:</p> | |||
<p><pre>{"kind": "simple", "timeout": 300}</pre></p> | |||
</dd> | |||
<dt>grace</dt> | |||
<dd> | |||
<p>number, optional, default value: {{ default_grace }}.</p> | |||
<p>A number of seconds, the grace period for this check.</p> | |||
<p>Minimum: 60 (one minute), maximum: 2592000 (30 days).</p> | |||
</dd> | |||
<dt>schedule</dt> | |||
<dd> | |||
<p>string, optional, default value: "<em> * </em> * *".</p> | |||
<p>A cron expression defining this check's schedule.</p> | |||
<p>If you specify both "timeout" and "schedule" parameters, "timeout" will be | |||
ignored and "schedule" will be used.</p> | |||
<p>Example for a check running every half-hour:</p> | |||
<p><pre>{"schedule": "0,30 * <em> * </em>"}</pre></p> | |||
</dd> | |||
<dt>tz</dt> | |||
<dd> | |||
<p>string, optional, default value: "UTC".</p> | |||
<p>Server's timezone. This setting only has effect in combination with the | |||
"schedule" paremeter.</p> | |||
<p>Example:</p> | |||
<p><pre>{"tz": "Europe/Riga"}</pre></p> | |||
</dd> | |||
<dt>channels</dt> | |||
<dd> | |||
<p>string, optional</p> | |||
<p>By default, if a check is created through API, no notification channels | |||
(integrations) are assigned to it. So, when the check goes up or down, no | |||
notifications will get sent.</p> | |||
<p>Set this field to a special value "*" to automatically assign all existing | |||
integrations.</p> | |||
<p>To assign specific integrations, use a comma-separated list of integration | |||
identifiers. Use the <a href="#list-channels">Get a List of Existing Integrations</a> call to | |||
look up integration identifiers.</p> | |||
</dd> | |||
<dt>unique</dt> | |||
<dd> | |||
<p>array of string values, optional, default value: [].</p> | |||
<p>Before creating a check, look for existing checks, filtered by fields listed | |||
in <code>unique</code>. 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.</p> | |||
<p>The accepted values are: <code>name</code>, <code>tags</code>, <code>timeout</code> and <code>grace</code>.</p> | |||
<p>Example:</p> | |||
<p><pre>{"name": "Backups", unique: ["name"]}</pre></p> | |||
<p>In this example, if a check named "Backups" exists, it will be returned. | |||
Otherwise, a new check will be created and returned.</p> | |||
</dd> | |||
</dl> | |||
<h3>Response Codes</h3> | |||
<dl> | |||
<dt>201 Created</dt> | |||
<dd>Returned if the check was successfully created.</dd> | |||
<dt>200 OK</dt> | |||
<dd>Returned if the <code>unique</code> parameter was used and an existing check was matched.</dd> | |||
<dt>403 Forbidden</dt> | |||
<dd>Returned if the account's check limit has been reached. For free accounts, | |||
the limit is 20 checks per account.</dd> | |||
</dl> | |||
<h3>Example Request</h3> | |||
<div class="highlight"><pre><span></span><code>curl SITE_ROOT/api/v1/checks/ <span class="se">\</span> | |||
--header <span class="s2">"X-Api-Key: your-api-key"</span> <span class="se">\</span> | |||
--data <span class="s1">'{"name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}'</span> | |||
</code></pre></div> | |||
<p>Or, alternatively:</p> | |||
<div class="highlight"><pre><span></span><code>curl SITE_ROOT/api/v1/checks/ <span class="se">\</span> | |||
--data <span class="s1">'{"api_key": "your-api-key", "name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}'</span> | |||
</code></pre></div> | |||
<h3>Example Response</h3> | |||
<div class="highlight"><pre><span></span><code><span class="p">{</span> | |||
<span class="nt">"channels"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">60</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Backups"</span><span class="p">,</span> | |||
<span class="nt">"next_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"pause_url"</span><span class="p">:</span> <span class="s2">"SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause"</span><span class="p">,</span> | |||
<span class="nt">"ping_url"</span><span class="p">:</span> <span class="s2">"PING_ENDPOINTf618072a-7bde-4eee-af63-71a77c5723bc"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"new"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"prod www"</span><span class="p">,</span> | |||
<span class="nt">"timeout"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"update_url"</span><span class="p">:</span> <span class="s2">"SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc"</span><span class="p">,</span> | |||
<span class="p">}</span> | |||
</code></pre></div> | |||
<h2 class="rule" id="update-check">Update an Existing Check</h2> | |||
<p><code>POST SITE_ROOT/api/v1/checks/<uuid></code></p> | |||
<p>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.</p> | |||
<h3>Request Parameters</h3> | |||
<dl> | |||
<dt>name</dt> | |||
<dd> | |||
<p>string, optional.</p> | |||
<p>Name for the check.</p> | |||
</dd> | |||
<dt>tags</dt> | |||
<dd> | |||
<p>string, optional.</p> | |||
<p>A space-delimited list of tags for the check.</p> | |||
<p>Example:</p> | |||
<p><pre>{"tags": "reports staging"}</pre></p> | |||
</dd> | |||
<dt>desc</dt> | |||
<dd> | |||
<p>string, optional.</p> | |||
<p>Description for the check.</p> | |||
</dd> | |||
<dt>timeout</dt> | |||
<dd> | |||
<p>number, optional.</p> | |||
<p>A number of seconds, the expected period of this check.</p> | |||
<p>Minimum: 60 (one minute), maximum: 2592000 (30 days).</p> | |||
<p>Example for 5 minute timeout:</p> | |||
<p><pre>{"kind": "simple", "timeout": 300}</pre></p> | |||
</dd> | |||
<dt>grace</dt> | |||
<dd> | |||
<p>number, optional.</p> | |||
<p>A number of seconds, the grace period for this check.</p> | |||
<p>Minimum: 60 (one minute), maximum: 2592000 (30 days).</p> | |||
</dd> | |||
<dt>schedule</dt> | |||
<dd> | |||
<p>string, optional.</p> | |||
<p>A cron expression defining this check's schedule.</p> | |||
<p>If you specify both "timeout" and "schedule" parameters, "timeout" will be | |||
ignored and "schedule" will be used.</p> | |||
<p>Example for a check running every half-hour:</p> | |||
<p><pre>{"schedule": "0,30 * <em> * </em>"}</pre></p> | |||
</dd> | |||
<dt>tz</dt> | |||
<dd> | |||
<p>string, optional.</p> | |||
<p>Server's timezone. This setting only has effect in combination with the | |||
"schedule" paremeter.</p> | |||
<p>Example:</p> | |||
<p><pre>{"tz": "Europe/Riga"}</pre></p> | |||
</dd> | |||
<dt>channels</dt> | |||
<dd> | |||
<p>string, optional.</p> | |||
<p>Set this field to a special value "*" to automatically assign all existing | |||
notification channels.</p> | |||
<p>Set this field to a special value "" (empty string) to automatically <em>unassign</em> | |||
all notification channels.</p> | |||
<p>Set this field to a comma-separated list of channel identifiers to assign | |||
specific notification channels.</p> | |||
<p>Example:</p> | |||
<p><pre>{"channels": "4ec5a071-2d08-4baa-898a-eb4eb3cd6941,746a083e-f542-4554-be1a-707ce16d3acc"}</pre></p> | |||
</dd> | |||
</dl> | |||
<h3>Response Codes</h3> | |||
<dl> | |||
<dt>200 OK</dt> | |||
<dd>Returned if the check was successfully updated.</dd> | |||
</dl> | |||
<h3>Example Request</h3> | |||
<div class="highlight"><pre><span></span><code>curl SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc <span class="se">\</span> | |||
--header <span class="s2">"X-Api-Key: your-api-key"</span> <span class="se">\</span> | |||
--data <span class="s1">'{"name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}'</span> | |||
</code></pre></div> | |||
<p>Or, alternatively:</p> | |||
<div class="highlight"><pre><span></span><code>curl SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc <span class="se">\</span> | |||
--data <span class="s1">'{"api_key": "your-api-key", "name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}'</span> | |||
</code></pre></div> | |||
<h3>Example Response</h3> | |||
<div class="highlight"><pre><span></span><code><span class="p">{</span> | |||
<span class="nt">"channels"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">60</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Backups"</span><span class="p">,</span> | |||
<span class="nt">"next_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"pause_url"</span><span class="p">:</span> <span class="s2">"SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause"</span><span class="p">,</span> | |||
<span class="nt">"ping_url"</span><span class="p">:</span> <span class="s2">"PING_ENDPOINTf618072a-7bde-4eee-af63-71a77c5723bc"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"new"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"prod www"</span><span class="p">,</span> | |||
<span class="nt">"timeout"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"update_url"</span><span class="p">:</span> <span class="s2">"SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc"</span><span class="p">,</span> | |||
<span class="p">}</span> | |||
</code></pre></div> | |||
<h2 class="rule" id="pause-check">Pause Monitoring of a Check</h2> | |||
<p><code>POST SITE_ROOT/api/v1/checks/<uuid>/pause</code></p> | |||
<p>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.</p> | |||
<p>This API call has no request parameters.</p> | |||
<h3>Example Request</h3> | |||
<div class="highlight"><pre><span></span><code>curl SITE_ROOT/api/v1/checks/0c8983c9-9d73-446f-adb5-0641fdacc9d4/pause <span class="se">\</span> | |||
--request POST --header <span class="s2">"X-Api-Key: your-api-key"</span> --data <span class="s2">""</span> | |||
</code></pre></div> | |||
<p>Note: the <code>--data ""</code> argument forces curl to send a <code>Content-Length</code> request header | |||
even though the request body is empty. For HTTP POST requests, the <code>Content-Length</code> | |||
header is sometimes required by some network proxies and web servers.</p> | |||
<h3>Example Response</h3> | |||
<div class="highlight"><pre><span></span><code><span class="p">{</span> | |||
<span class="nt">"channels"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">60</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Backups"</span><span class="p">,</span> | |||
<span class="nt">"next_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"pause_url"</span><span class="p">:</span> <span class="s2">"SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause"</span><span class="p">,</span> | |||
<span class="nt">"ping_url"</span><span class="p">:</span> <span class="s2">"PING_ENDPOINTf618072a-7bde-4eee-af63-71a77c5723bc"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"paused"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"prod www"</span><span class="p">,</span> | |||
<span class="nt">"timeout"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"update_url"</span><span class="p">:</span> <span class="s2">"SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc"</span> | |||
<span class="p">}</span> | |||
</code></pre></div> | |||
<h2 class="rule" id="delete-check">Delete Check</h2> | |||
<p><code>DELETE SITE_ROOT/api/v1/checks/<uuid></code></p> | |||
<p>Permanently deletes the check from user's account. Returns JSON representation of the | |||
check that was just deleted.</p> | |||
<p>This API call has no request parameters.</p> | |||
<h3>Example Request</h3> | |||
<div class="highlight"><pre><span></span><code>curl SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc <span class="se">\</span> | |||
--request DELETE --header <span class="s2">"X-Api-Key: your-api-key"</span> | |||
</code></pre></div> | |||
<h3>Example Response</h3> | |||
<div class="highlight"><pre><span></span><code><span class="p">{</span> | |||
<span class="nt">"channels"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">60</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Backups"</span><span class="p">,</span> | |||
<span class="nt">"next_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"pause_url"</span><span class="p">:</span> <span class="s2">"SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause"</span><span class="p">,</span> | |||
<span class="nt">"ping_url"</span><span class="p">:</span> <span class="s2">"PING_ENDPOINTf618072a-7bde-4eee-af63-71a77c5723bc"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"new"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"prod www"</span><span class="p">,</span> | |||
<span class="nt">"timeout"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"update_url"</span><span class="p">:</span> <span class="s2">"SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc"</span><span class="p">,</span> | |||
<span class="p">}</span> | |||
</code></pre></div> | |||
<h2 class="rule" id="list-channels">Get a List of Existing Integrations</h2> | |||
<p><code>GET SITE_ROOT/api/v1/channels/</code></p> | |||
<p>Returns a list of integrations belonging to the user.</p> | |||
<h3>Example Request</h3> | |||
<div class="highlight"><pre><span></span><code>curl --header <span class="s2">"X-Api-Key: your-api-key"</span> SITE_ROOT/api/v1/channels/ | |||
</code></pre></div> | |||
<h3>Example Response</h3> | |||
<div class="highlight"><pre><span></span><code><span class="p">{</span> | |||
<span class="nt">"channels"</span><span class="p">:</span> <span class="p">[</span> | |||
<span class="p">{</span> | |||
<span class="nt">"id"</span><span class="p">:</span> <span class="s2">"4ec5a071-2d08-4baa-898a-eb4eb3cd6941"</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"My Work Email"</span><span class="p">,</span> | |||
<span class="nt">"kind"</span><span class="p">:</span> <span class="s2">"email"</span> | |||
<span class="p">},</span> | |||
<span class="p">{</span> | |||
<span class="nt">"id"</span><span class="p">:</span> <span class="s2">"746a083e-f542-4554-be1a-707ce16d3acc"</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"My Phone"</span><span class="p">,</span> | |||
<span class="nt">"kind"</span><span class="p">:</span> <span class="s2">"sms"</span> | |||
<span class="p">}</span> | |||
<span class="p">]</span> | |||
<span class="p">}</span> | |||
</code></pre></div> |
@ -0,0 +1,533 @@ | |||
# API Reference | |||
SITE_NAME REST API supports listing, creating, updating, pausing and deleting | |||
checks in user's account. | |||
## API Endpoints | |||
Endpoint Name | Endpoint Address | |||
------------------------------------------------------|------- | |||
[Get a list of existing checks](#list-checks) | `GET SITE_ROOT/api/v1/checks/` | |||
[Create a new check](#create-check) | `POST SITE_ROOT/api/v1/checks/` | |||
[Update an existing check](#update-check) | `POST SITE_ROOT/api/v1/checks/<uuid>` | |||
[Pause monitoring of a check](#pause-check) | `POST SITE_ROOT/api/v1/checks/<uuid>/pause` | |||
[Delete check](#delete-check) | `DELETE SITE_ROOT/api/v1/checks/<uuid>` | |||
[Get a list of existing integrations](#list-channels) | `GET SITE_ROOT/api/v1/channels/` | |||
## Authentication | |||
Your requests to SITE_NAME REST API must authenticate using an | |||
API key. Each project in your SITE_NAME account has separate API keys. | |||
There are no account-wide API keys. By default, a project on SITE_NAME doesn't have | |||
an API key. You can create read-write and read-only API keys in the | |||
**Project Settings** page. | |||
Key Type | Description | |||
-------------------|------------ | |||
Regular API key | Have full access to all documented API endpoints. | |||
Read-only API key | Only work with the [Get a list of existing checks](#list-checks) endpoint. Some fields are omitted from the API responses. | |||
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 SITE_NAME API expects request body to be | |||
a JSON document (*not* a `multipart/form-data` encoded form data). | |||
## API Responses | |||
SITE_NAME 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 a List of Existing Checks {: #list-checks .rule } | |||
`GET SITE_ROOT/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: | |||
`SITE_ROOT/api/v1/checks/?tag=foo&tag=bar` | |||
### Example Request | |||
```bash | |||
curl --header "X-Api-Key: your-api-key" SITE_ROOT/api/v1/checks/ | |||
``` | |||
### Example Response | |||
```json | |||
{ | |||
"checks": [ | |||
{ | |||
"channels": "4ec5a071-2d08-4baa-898a-eb4eb3cd6941,746a083e-f542-4554-be1a-707ce16d3acc", | |||
"desc": "Longer free-form description goes here", | |||
"grace": 900, | |||
"last_ping": "2017-01-04T13:24:39.903464+00:00", | |||
"n_pings": 1, | |||
"name": "Api test 1", | |||
"next_ping": "2017-01-04T14:24:39.903464+00:00", | |||
"pause_url": "SITE_ROOT/api/v1/checks/662ebe36-ecab-48db-afe3-e20029cb71e6/pause", | |||
"ping_url": "PING_ENDPOINT662ebe36-ecab-48db-afe3-e20029cb71e6", | |||
"status": "up", | |||
"tags": "foo", | |||
"timeout": 3600, | |||
"update_url": "SITE_ROOT/api/v1/checks/662ebe36-ecab-48db-afe3-e20029cb71e6" | |||
}, | |||
{ | |||
"channels": "", | |||
"desc": "", | |||
"grace": 3600, | |||
"last_ping": null, | |||
"n_pings": 0, | |||
"name": "Api test 2", | |||
"next_ping": null, | |||
"pause_url": "SITE_ROOT/api/v1/checks/9d17c61f-5c4f-4cab-b517-11e6b2679ced/pause", | |||
"ping_url": "PING_ENDPOINT9d17c61f-5c4f-4cab-b517-11e6b2679ced", | |||
"schedule": "0/10 * * * *", | |||
"status": "new", | |||
"tags": "bar baz", | |||
"tz": "UTC", | |||
"update_url": "SITE_ROOT/api/v1/checks/9d17c61f-5c4f-4cab-b517-11e6b2679ced" | |||
} | |||
] | |||
} | |||
``` | |||
When using the read-only API key, the following fields are omitted: | |||
`ping_url`, `update_url`, `pause_url`, `channels`. An extra `unique_key` field | |||
is added. This identifier is stable across API calls. Example: | |||
```json | |||
{ | |||
"checks": [ | |||
{ | |||
"desc": "Longer free-form description goes here", | |||
"grace": 900, | |||
"last_ping": "2017-01-04T13:24:39.903464+00:00", | |||
"n_pings": 1, | |||
"name": "Api test 1", | |||
"status": "up", | |||
"tags": "foo", | |||
"timeout": 3600, | |||
"unique_key": "2872190d95224bad120f41d3c06aab94b8175bb6" | |||
}, | |||
{ | |||
"desc": "", | |||
"grace": 3600, | |||
"last_ping": null, | |||
"n_pings": 0, | |||
"name": "Api test 2", | |||
"next_ping": null, | |||
"schedule": "0/10 * * * *", | |||
"status": "new", | |||
"tags": "bar baz", | |||
"tz": "UTC", | |||
"unique_key": "9b5fc29129560ff2c5c1803803a7415e4f80cf7e" | |||
} | |||
] | |||
} | |||
``` | |||
## Create a Check {: #create-check .rule } | |||
`POST SITE_ROOT/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: | |||
<pre>{"tags": "reports staging"}</pre> | |||
desc | |||
: string, optional. | |||
Description for the check. | |||
timeout | |||
: number, optional, default value: {{ default_timeout }}. | |||
A number of seconds, the expected period of this check. | |||
Minimum: 60 (one minute), maximum: 2592000 (30 days). | |||
Example for 5 minute timeout: | |||
<pre>{"kind": "simple", "timeout": 300}</pre> | |||
grace | |||
: number, optional, default value: {{ default_grace }}. | |||
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: | |||
<pre>{"schedule": "0,30 * * * *"}</pre> | |||
tz | |||
: string, optional, default value: "UTC". | |||
Server's timezone. This setting only has effect in combination with the | |||
"schedule" paremeter. | |||
Example: | |||
<pre>{"tz": "Europe/Riga"}</pre> | |||
channels | |||
: string, optional | |||
By default, if a check is created through API, no notification channels | |||
(integrations) are assigned to it. So, when the check goes up or down, no | |||
notifications will get sent. | |||
Set this field to a special value "*" to automatically assign all existing | |||
integrations. | |||
To assign specific integrations, use a comma-separated list of integration | |||
identifiers. Use the [Get a List of Existing Integrations](#list-channels) call to | |||
look up integration identifiers. | |||
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: | |||
<pre>{"name": "Backups", unique: ["name"]}</pre> | |||
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 | |||
```bash | |||
curl SITE_ROOT/api/v1/checks/ \ | |||
--header "X-Api-Key: your-api-key" \ | |||
--data '{"name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}' | |||
``` | |||
Or, alternatively: | |||
```bash | |||
curl SITE_ROOT/api/v1/checks/ \ | |||
--data '{"api_key": "your-api-key", "name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}' | |||
``` | |||
### Example Response | |||
```json | |||
{ | |||
"channels": "", | |||
"desc": "", | |||
"grace": 60, | |||
"last_ping": null, | |||
"n_pings": 0, | |||
"name": "Backups", | |||
"next_ping": null, | |||
"pause_url": "SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause", | |||
"ping_url": "PING_ENDPOINTf618072a-7bde-4eee-af63-71a77c5723bc", | |||
"status": "new", | |||
"tags": "prod www", | |||
"timeout": 3600, | |||
"update_url": "SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc", | |||
} | |||
``` | |||
## Update an Existing Check {: #update-check .rule } | |||
`POST SITE_ROOT/api/v1/checks/<uuid>` | |||
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: | |||
<pre>{"tags": "reports staging"}</pre> | |||
desc | |||
: string, optional. | |||
Description for the check. | |||
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: | |||
<pre>{"kind": "simple", "timeout": 300}</pre> | |||
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: | |||
<pre>{"schedule": "0,30 * * * *"}</pre> | |||
tz | |||
: string, optional. | |||
Server's timezone. This setting only has effect in combination with the | |||
"schedule" paremeter. | |||
Example: | |||
<pre>{"tz": "Europe/Riga"}</pre> | |||
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. | |||
Set this field to a comma-separated list of channel identifiers to assign | |||
specific notification channels. | |||
Example: | |||
<pre>{"channels": "4ec5a071-2d08-4baa-898a-eb4eb3cd6941,746a083e-f542-4554-be1a-707ce16d3acc"}</pre> | |||
### Response Codes | |||
200 OK | |||
: Returned if the check was successfully updated. | |||
### Example Request | |||
```bash | |||
curl SITE_ROOT/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: | |||
```bash | |||
curl SITE_ROOT/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 | |||
```json | |||
{ | |||
"channels": "", | |||
"desc": "", | |||
"grace": 60, | |||
"last_ping": null, | |||
"n_pings": 0, | |||
"name": "Backups", | |||
"next_ping": null, | |||
"pause_url": "SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause", | |||
"ping_url": "PING_ENDPOINTf618072a-7bde-4eee-af63-71a77c5723bc", | |||
"status": "new", | |||
"tags": "prod www", | |||
"timeout": 3600, | |||
"update_url": "SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc", | |||
} | |||
``` | |||
## Pause Monitoring of a Check {: #pause-check .rule } | |||
`POST SITE_ROOT/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 | |||
```bash | |||
curl SITE_ROOT/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 | |||
```json | |||
{ | |||
"channels": "", | |||
"desc": "", | |||
"grace": 60, | |||
"last_ping": null, | |||
"n_pings": 0, | |||
"name": "Backups", | |||
"next_ping": null, | |||
"pause_url": "SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause", | |||
"ping_url": "PING_ENDPOINTf618072a-7bde-4eee-af63-71a77c5723bc", | |||
"status": "paused", | |||
"tags": "prod www", | |||
"timeout": 3600, | |||
"update_url": "SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc" | |||
} | |||
``` | |||
## Delete Check {: #delete-check .rule } | |||
`DELETE SITE_ROOT/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 | |||
```bash | |||
curl SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc \ | |||
--request DELETE --header "X-Api-Key: your-api-key" | |||
``` | |||
### Example Response | |||
```json | |||
{ | |||
"channels": "", | |||
"desc": "", | |||
"grace": 60, | |||
"last_ping": null, | |||
"n_pings": 0, | |||
"name": "Backups", | |||
"next_ping": null, | |||
"pause_url": "SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause", | |||
"ping_url": "PING_ENDPOINTf618072a-7bde-4eee-af63-71a77c5723bc", | |||
"status": "new", | |||
"tags": "prod www", | |||
"timeout": 3600, | |||
"update_url": "SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc", | |||
} | |||
``` | |||
## Get a List of Existing Integrations {: #list-channels .rule } | |||
`GET SITE_ROOT/api/v1/channels/` | |||
Returns a list of integrations belonging to the user. | |||
### Example Request | |||
```bash | |||
curl --header "X-Api-Key: your-api-key" SITE_ROOT/api/v1/channels/ | |||
``` | |||
### Example Response | |||
```json | |||
{ | |||
"channels": [ | |||
{ | |||
"id": "4ec5a071-2d08-4baa-898a-eb4eb3cd6941", | |||
"name": "My Work Email", | |||
"kind": "email" | |||
}, | |||
{ | |||
"id": "746a083e-f542-4554-be1a-707ce16d3acc", | |||
"name": "My Phone", | |||
"kind": "sms" | |||
} | |||
] | |||
} | |||
``` |
@ -1,500 +0,0 @@ | |||
{% extends "front/base_docs.html" %} | |||
{% load compress static hc_extras %} | |||
{% block title %}API Reference - {% site_name %}{% endblock %} | |||
{% block description %} | |||
<meta name="description" content="Build advanced integrations and custom dashboards using {% site_name %} REST API calls."> | |||
{% endblock %} | |||
{% block docs_content %} | |||
<h2>API Reference</h2> | |||
<p>{% site_name %} REST API supports listing, creating, | |||
updating, pausing and deleting checks in user's account. | |||
</p> | |||
<h2>API Endpoints</h2> | |||
<table class="table table-bordered"> | |||
<tr> | |||
<td><a href="#list-checks">Get a list of existing checks</a></td> | |||
<td> | |||
<code>GET {{ SITE_ROOT }}/api/v1/checks/</code> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td><a href="#create-check">Create a new check</a></td> | |||
<td> | |||
<code>POST {{ SITE_ROOT }}/api/v1/checks/</code> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td><a href="#update-check">Update an existing check</a></td> | |||
<td> | |||
<code>POST {{ SITE_ROOT }}/api/v1/checks/<code></code> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td><a href="#pause-check">Pause monitoring of a check</a></td> | |||
<td> | |||
<code>POST {{ SITE_ROOT }}/api/v1/checks/<code>/pause</code> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td><a href="#delete-check">Delete check</a></td> | |||
<td> | |||
<code>DELETE {{ SITE_ROOT }}/api/v1/checks/<code></code> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td><a href="#list-channels">Get a list of existing integrations</a></td> | |||
<td> | |||
<code>GET {{ SITE_ROOT }}/api/v1/channels/</code> | |||
</td> | |||
</tr> | |||
</table> | |||
<h2>Authentication</h2> | |||
<p>Your requests to {% site_name %} REST API must authenticate using an | |||
API key. Each project in your {% site_name %} account has separate API keys. | |||
There are no account-wide API keys. By default, a project on {% site_name %} doesn't have | |||
an API key. You can create read-write and read-only API keys in the | |||
<b>Project Settings</b> page. | |||
</p> | |||
<table class="table table-bordered"> | |||
<tr> | |||
<td>Regular API keys</td> | |||
<td>Have full access to all documented API endpoints.</td> | |||
</tr> | |||
<tr> | |||
<td>Read-only API keys</td> | |||
<td>Only work with the | |||
<a href="#list-checks">Get a list of existing checks</a> | |||
endpoint. Some fields are omitted from the API responses.</td> | |||
</tr> | |||
</table> | |||
<p>The client can authenticate itself by sending an appropriate HTTP | |||
request header. The header's name should be <code>X-Api-Key</code> and | |||
its value should be your API key. | |||
</p> | |||
<p> Alternatively, for POST requests with a JSON request body, | |||
the client can include an <code>api_key</code> field in the JSON document. | |||
See below the "Create a check" section for an example. | |||
</p> | |||
<h2>API Requests</h2> | |||
<p> | |||
For POST requests, the {% site_name %} API expects request body to be | |||
a JSON document (<em>not</em> a <code>multipart/form-data</code> encoded | |||
form data). | |||
</p> | |||
<h2>API Responses</h2> | |||
<p> | |||
{% site_name %} uses HTTP status codes wherever possible. | |||
In general, 2xx class indicates success, 4xx indicates an client error, | |||
and 5xx indicates a server error. | |||
</p> | |||
<p> | |||
The response may contain a JSON document with additional data. | |||
</p> | |||
<!-- ********************************************************************** /--> | |||
<a class="section" name="list-checks"> | |||
<h2 class="rule">Get a List of Existing Checks</h2> | |||
</a> | |||
<div class="api-path">GET {{ SITE_ROOT }}/api/v1/checks/</div> | |||
<p>Returns a list of checks belonging to the user, optionally filtered by | |||
one or more tags.</p> | |||
<h3 class="api-section">Query String Parameters</h3> | |||
<table class="table"> | |||
<tr> | |||
<th>tag=<value></th> | |||
<td> | |||
<p> | |||
Filters the checks, and returns only the checks that | |||
are tagged with the specified value. | |||
</p> | |||
<p> | |||
This parameter can be repeated multiple times. | |||
</p> | |||
<p>Example:</p> | |||
<pre>{{ SITE_ROOT }}/api/v1/checks/?tag=foo&tag=bar</pre> | |||
</td> | |||
</tr> | |||
</table> | |||
<h3 class="api-section">Example Request</h3> | |||
{% include "front/snippets/list_checks_request.html" %} | |||
<h3 class="api-section">Example Response</h3> | |||
{% include "front/snippets/list_checks_response.html" %} | |||
<p>When using the read-only API key, the following fields are omitted: | |||
<code>ping_url</code>, <code>update_url</code>, <code>pause_url</code>, | |||
<code>channels</code>. An extra <code>unique_key</code> field is added. | |||
This identifier is stable across API calls. Example: | |||
</p> | |||
{% include "front/snippets/list_checks_response_readonly.html" %} | |||
<!-- ********************************************************************** /--> | |||
<a class="section" name="create-check"> | |||
<h2 class="rule">Create a Check</h2> | |||
</a> | |||
<div class="api-path">POST {{ SITE_ROOT }}/api/v1/checks/</div> | |||
<strong></strong> | |||
<p> | |||
Creates a new check and returns its ping URL. | |||
All request parameters are optional and will use their default | |||
values if omitted. | |||
</p> | |||
<p>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. | |||
</p> | |||
<h3 class="api-section">Request Parameters</h3> | |||
<table class="table"> | |||
<tr> | |||
<th>name</th> | |||
<td> | |||
<p>string, optional, default value: ""</p> | |||
<p>Name for the new check.</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>tags</th> | |||
<td> | |||
<p>string, optional, default value: ""</p> | |||
<p>A space-delimited list of tags for the new check.</p> | |||
<p>Example:</p> | |||
<pre>{"tags": "reports staging"}</pre> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>desc</th> | |||
<td> | |||
<p>string, optional.</p> | |||
<p>Description for the check.</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>timeout</th> | |||
<td> | |||
<p>number, optional, default value: {{ default_timeout }}.</p> | |||
<p>A number of seconds, the expected period of this check.</p> | |||
<p>Minimum: 60 (one minute), maximum: 2592000 (30 days).</p> | |||
<p>Example for 5 minute timeout:</p> | |||
<pre>{"kind": "simple", "timeout": 300}</pre> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>grace</th> | |||
<td> | |||
<p>number, optional, default value: {{ default_grace }}.</p> | |||
<p>A number of seconds, the grace period for this check.</p> | |||
<p>Minimum: 60 (one minute), maximum: 2592000 (30 days).</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>schedule</th> | |||
<td> | |||
<p>string, optional, default value: "* * * * *".</p> | |||
<p>A cron expression defining this check's schedule.</p> | |||
<p>If you specify both "timeout" and "schedule" parameters, | |||
"timeout" will be ignored and "schedule" will be used.</p> | |||
<p>Example for a check running every half-hour:</p> | |||
<pre>{"schedule": "0,30 * * * *"}</pre> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>tz</th> | |||
<td> | |||
<p>string, optional, default value: "UTC".</p> | |||
<p>Server's timezone. This setting only has effect in combination | |||
with the "schedule" paremeter.</p> | |||
<p>Example:</p> | |||
<pre>{"tz": "Europe/Riga"}</pre> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>channels</th> | |||
<td> | |||
<p>string, optional</p> | |||
<p>By default, if a check is created through API, no notification | |||
channels (integrations) are assigned to it. | |||
So, when the check goes up or down, no notifications will get | |||
sent.</p> | |||
<p>Set this field to a special value "*" | |||
to automatically assign all existing integrations.</p> | |||
<p>To assign specific integrations, use a comma-separated | |||
list of integration identifiers. Use the | |||
<a href="#list-channels">Get a List of Existing Integrations</a> | |||
call to look up integration identifiers. | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>unique</th> | |||
<td> | |||
<p>array of string values, optional, default value: [].</p> | |||
<p>Before creating a check, look for existing checks, filtered | |||
by fields listed in <code>unique</code>. 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.</p> | |||
<p>The accepted values are: <code>name</code>, | |||
<code>tags</code>, <code>timeout</code> and <code>grace</code>.</p> | |||
<p>Example:</p> | |||
<pre>{"name": "Backups", unique: ["name"]}</pre> | |||
<p>In this example, if a check named "Backups" exists, it will | |||
be returned. Otherwise, a new check will be created and | |||
returned.</p> | |||
</td> | |||
</tr> | |||
</table> | |||
<h3 class="api-section">Response Codes</h3> | |||
<table class="table"> | |||
<tr> | |||
<th>201 Created</th> | |||
<td>Returned if the check was successfully created.</td> | |||
</tr> | |||
<tr> | |||
<th>200 OK</th> | |||
<td>Returned if the <code>unique</code> parameter was used and an | |||
existing check was matched.</td> | |||
</tr> | |||
<tr> | |||
<th>403 Forbidden</th> | |||
<td>Returned if the account's check limit has been reached. | |||
For free accounts, the limit is 20 checks per account.</td> | |||
</tr> | |||
</table> | |||
<h3 class="api-section">Example Request</h3> | |||
{% include "front/snippets/create_check_request_a.html" %} | |||
<br> | |||
<p>Or, alternatively:</p> | |||
{% include "front/snippets/create_check_request_b.html" %} | |||
<h3 class="api-section">Example Response</h3> | |||
{% include "front/snippets/create_check_response.html" %} | |||
<!-- ********************************************************************** /--> | |||
<a class="section" name="update-check"> | |||
<h2 class="rule">Update an Existing Check</h2> | |||
</a> | |||
<div class="api-path">POST {{ SITE_ROOT }}/api/v1/checks/<code></div> | |||
<strong></strong> | |||
<p> | |||
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. | |||
</p> | |||
<h3 class="api-section">Request Parameters</h3> | |||
<table class="table"> | |||
<tr> | |||
<th>name</th> | |||
<td> | |||
<p>string, optional.</p> | |||
<p>Name for the check.</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>tags</th> | |||
<td> | |||
<p>string, optional.</p> | |||
<p>A space-delimited list of tags for the check.</p> | |||
<p>Example:</p> | |||
<pre>{"tags": "reports staging"}</pre> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>desc</th> | |||
<td> | |||
<p>string, optional.</p> | |||
<p>Description for the check.</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>timeout</th> | |||
<td> | |||
<p>number, optional.</p> | |||
<p>A number of seconds, the expected period of this check.</p> | |||
<p>Minimum: 60 (one minute), maximum: 2592000 (30 days).</p> | |||
<p>Example for 5 minute timeout:</p> | |||
<pre>{"kind": "simple", "timeout": 300}</pre> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>grace</th> | |||
<td> | |||
<p>number, optional.</p> | |||
<p>A number of seconds, the grace period for this check.</p> | |||
<p>Minimum: 60 (one minute), maximum: 2592000 (30 days).</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>schedule</th> | |||
<td> | |||
<p>string, optional.</p> | |||
<p>A cron expression defining this check's schedule.</p> | |||
<p>If you specify both "timeout" and "schedule" parameters, | |||
"timeout" will be ignored and "schedule" will be used.</p> | |||
<p>Example for a check running every half-hour:</p> | |||
<pre>{"schedule": "0,30 * * * *"}</pre> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>tz</th> | |||
<td> | |||
<p>string, optional.</p> | |||
<p>Server's timezone. This setting only has effect in combination | |||
with the "schedule" paremeter.</p> | |||
<p>Example:</p> | |||
<pre>{"tz": "Europe/Riga"}</pre> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th>channels</th> | |||
<td> | |||
<p>string, optional.</p> | |||
<p>Set this field to a special value "*" | |||
to automatically assign all existing notification channels. | |||
</p> | |||
<p>Set this field to a special value "" (empty string) | |||
to automatically <em>unassign</em> all notification channels. | |||
</p> | |||
<p>Set this field to a comma-separated list of channel identifiers | |||
to assign specific notification channels. | |||
</p> | |||
<p>Example:</p> | |||
<pre>{"channels": "4ec5a071-2d08-4baa-898a-eb4eb3cd6941,746a083e-f542-4554-be1a-707ce16d3acc"}</pre> | |||
</td> | |||
</tr> | |||
</table> | |||
<h3 class="api-section">Response Codes</h3> | |||
<table class="table"> | |||
<tr> | |||
<th>200 OK</th> | |||
<td>Returned if the check was successfully updated.</td> | |||
</tr> | |||
</table> | |||
<h3 class="api-section">Example Request</h3> | |||
{% include "front/snippets/update_check_request_a.html" %} | |||
<br> | |||
<p>Or, alternatively:</p> | |||
{% include "front/snippets/update_check_request_b.html" %} | |||
<h3 class="api-section">Example Response</h3> | |||
{% include "front/snippets/create_check_response.html" %} | |||
<!-- ********************************************************************** /--> | |||
<a class="section" name="pause-check"> | |||
<h2 class="rule">Pause Monitoring of a Check</h2> | |||
</a> | |||
<div class="api-path">POST {{ SITE_ROOT }}/api/v1/checks/<uuid>/pause</div> | |||
<p> | |||
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. | |||
</p> | |||
<p> | |||
This API call has no request parameters. | |||
</p> | |||
<h3 class="api-section">Example Request</h3> | |||
{% include "front/snippets/pause_check_request.html" %} | |||
<p>Note: the <code>--data ""</code> argument forces curl to send a | |||
<code>Content-Length</code> request header even though the request body | |||
is empty. For HTTP POST requests, the <code>Content-Length</code> header | |||
is sometimes required by some network proxies and web servers. | |||
</p> | |||
<h3 class="api-section">Example Response</h3> | |||
{% include "front/snippets/pause_check_response.html" %} | |||
<!-- ********************************************************************** /--> | |||
<a class="section" name="delete-check"> | |||
<h2 class="rule">Delete Check</h2> | |||
</a> | |||
<div class="api-path">DELETE {{ SITE_ROOT }}/api/v1/checks/<uuid></div> | |||
<p> | |||
Permanently deletes the check from user's account. Returns JSON | |||
representation of the check that was just deleted. | |||
</p> | |||
<p> | |||
This API call has no request parameters. | |||
</p> | |||
<h3 class="api-section">Example Request</h3> | |||
{% include "front/snippets/delete_check_request.html" %} | |||
<h3 class="api-section">Example Response</h3> | |||
{% include "front/snippets/create_check_response.html" %} | |||
<!-- ********************************************************************** /--> | |||
<a class="section" name="list-channels"> | |||
<h2 class="rule">Get a List of Existing Integrations</h2> | |||
</a> | |||
<div class="api-path">GET {{ SITE_ROOT }}/api/v1/channels/</div> | |||
<p>Returns a list of integrations belonging to the user.</p> | |||
<h3 class="api-section">Example Request</h3> | |||
{% include "front/snippets/list_channels_request.html" %} | |||
<h3 class="api-section">Example Response</h3> | |||
{% include "front/snippets/list_channels_response.html" %} | |||
{% endblock %} | |||
{% block scripts %} | |||
{% compress js %} | |||
<script src="{% static 'js/jquery-2.1.4.min.js' %}"></script> | |||
<script src="{% static 'js/bootstrap.min.js' %}"></script> | |||
<script src="{% static 'js/clipboard.min.js' %}"></script> | |||
<script src="{% static 'js/snippet-copy.js' %}"></script> | |||
{% endcompress %} | |||
{% endblock %} |
@ -1,4 +0,0 @@ | |||
<div class="highlight"><pre><span></span>curl {{ SITE_ROOT }}/api/v1/checks/ <span class="se">\</span> | |||
--header <span class="s2">"X-Api-Key: your-api-key"</span> <span class="se">\</span> | |||
--data <span class="s1">'{"name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}'</span> | |||
</pre></div> |
@ -1,3 +0,0 @@ | |||
curl SITE_ROOT/api/v1/checks/ \ | |||
--header "X-Api-Key: your-api-key" \ | |||
--data '{"name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}' |
@ -1,3 +0,0 @@ | |||
<div class="highlight"><pre><span></span>curl {{ SITE_ROOT }}/api/v1/checks/ <span class="se">\</span> | |||
--data <span class="s1">'{"api_key": "your-api-key", "name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}'</span> | |||
</pre></div> |
@ -1,2 +0,0 @@ | |||
curl SITE_ROOT/api/v1/checks/ \ | |||
--data '{"api_key": "your-api-key", "name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}' |
@ -1,16 +0,0 @@ | |||
<div class="highlight"><pre><span></span><span class="p">{</span> | |||
<span class="nt">"channels"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">60</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Backups"</span><span class="p">,</span> | |||
<span class="nt">"next_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"pause_url"</span><span class="p">:</span> <span class="s2">"{{ SITE_ROOT }}/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause"</span><span class="p">,</span> | |||
<span class="nt">"ping_url"</span><span class="p">:</span> <span class="s2">"{{ PING_ENDPOINT }}f618072a-7bde-4eee-af63-71a77c5723bc"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"new"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"prod www"</span><span class="p">,</span> | |||
<span class="nt">"timeout"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"update_url"</span><span class="p">:</span> <span class="s2">"{{ SITE_ROOT }}/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc"</span><span class="p">,</span> | |||
<span class="p">}</span> | |||
</pre></div> |
@ -1,15 +0,0 @@ | |||
{ | |||
"channels": "", | |||
"desc": "", | |||
"grace": 60, | |||
"last_ping": null, | |||
"n_pings": 0, | |||
"name": "Backups", | |||
"next_ping": null, | |||
"pause_url": "SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause", | |||
"ping_url": "PING_ENDPOINTf618072a-7bde-4eee-af63-71a77c5723bc", | |||
"status": "new", | |||
"tags": "prod www", | |||
"timeout": 3600, | |||
"update_url": "SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc", | |||
} |
@ -1,3 +0,0 @@ | |||
<div class="highlight"><pre><span></span>curl {{ SITE_ROOT }}/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc <span class="se">\</span> | |||
--request DELETE --header <span class="s2">"X-Api-Key: your-api-key"</span> | |||
</pre></div> |
@ -1,2 +0,0 @@ | |||
curl SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc \ | |||
--request DELETE --header "X-Api-Key: your-api-key" |
@ -1,2 +0,0 @@ | |||
<div class="highlight"><pre><span></span>curl --header <span class="s2">"X-Api-Key: your-api-key"</span> {{ SITE_ROOT }}/api/v1/channels/ | |||
</pre></div> |
@ -1 +0,0 @@ | |||
curl --header "X-Api-Key: your-api-key" SITE_ROOT/api/v1/channels/ |
@ -1,15 +0,0 @@ | |||
<div class="highlight"><pre><span></span><span class="p">{</span> | |||
<span class="nt">"channels"</span><span class="p">:</span> <span class="p">[</span> | |||
<span class="p">{</span> | |||
<span class="nt">"id"</span><span class="p">:</span> <span class="s2">"4ec5a071-2d08-4baa-898a-eb4eb3cd6941"</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"My Work Email"</span><span class="p">,</span> | |||
<span class="nt">"kind"</span><span class="p">:</span> <span class="s2">"email"</span> | |||
<span class="p">},</span> | |||
<span class="p">{</span> | |||
<span class="nt">"id"</span><span class="p">:</span> <span class="s2">"746a083e-f542-4554-be1a-707ce16d3acc"</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"My Phone"</span><span class="p">,</span> | |||
<span class="nt">"kind"</span><span class="p">:</span> <span class="s2">"sms"</span> | |||
<span class="p">}</span> | |||
<span class="p">]</span> | |||
<span class="p">}</span> | |||
</pre></div> |
@ -1,14 +0,0 @@ | |||
{ | |||
"channels": [ | |||
{ | |||
"id": "4ec5a071-2d08-4baa-898a-eb4eb3cd6941", | |||
"name": "My Work Email", | |||
"kind": "email" | |||
}, | |||
{ | |||
"id": "746a083e-f542-4554-be1a-707ce16d3acc", | |||
"name": "My Phone", | |||
"kind": "sms" | |||
} | |||
] | |||
} |
@ -1,2 +0,0 @@ | |||
<div class="highlight"><pre><span></span>curl --header <span class="s2">"X-Api-Key: your-api-key"</span> {{ SITE_ROOT }}/api/v1/checks/ | |||
</pre></div> |
@ -1 +0,0 @@ | |||
curl --header "X-Api-Key: your-api-key" SITE_ROOT/api/v1/checks/ |
@ -1,36 +0,0 @@ | |||
<div class="highlight"><pre><span></span><span class="p">{</span> | |||
<span class="nt">"checks"</span><span class="p">:</span> <span class="p">[</span> | |||
<span class="p">{</span> | |||
<span class="nt">"channels"</span><span class="p">:</span> <span class="s2">"4ec5a071-2d08-4baa-898a-eb4eb3cd6941,746a083e-f542-4554-be1a-707ce16d3acc"</span><span class="p">,</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">"Longer free-form description goes here"</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">900</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="s2">"2017-01-04T13:24:39.903464+00:00"</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Api test 1"</span><span class="p">,</span> | |||
<span class="nt">"next_ping"</span><span class="p">:</span> <span class="s2">"2017-01-04T14:24:39.903464+00:00"</span><span class="p">,</span> | |||
<span class="nt">"pause_url"</span><span class="p">:</span> <span class="s2">"{{ SITE_ROOT }}/api/v1/checks/662ebe36-ecab-48db-afe3-e20029cb71e6/pause"</span><span class="p">,</span> | |||
<span class="nt">"ping_url"</span><span class="p">:</span> <span class="s2">"{{ PING_ENDPOINT }}662ebe36-ecab-48db-afe3-e20029cb71e6"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"up"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"foo"</span><span class="p">,</span> | |||
<span class="nt">"timeout"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"update_url"</span><span class="p">:</span> <span class="s2">"{{ SITE_ROOT }}/api/v1/checks/662ebe36-ecab-48db-afe3-e20029cb71e6"</span> | |||
<span class="p">},</span> | |||
<span class="p">{</span> | |||
<span class="nt">"channels"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Api test 2"</span><span class="p">,</span> | |||
<span class="nt">"next_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"pause_url"</span><span class="p">:</span> <span class="s2">"{{ SITE_ROOT }}/api/v1/checks/9d17c61f-5c4f-4cab-b517-11e6b2679ced/pause"</span><span class="p">,</span> | |||
<span class="nt">"ping_url"</span><span class="p">:</span> <span class="s2">"{{ PING_ENDPOINT }}9d17c61f-5c4f-4cab-b517-11e6b2679ced"</span><span class="p">,</span> | |||
<span class="nt">"schedule"</span><span class="p">:</span> <span class="s2">"0/10 * * * *"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"new"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"bar baz"</span><span class="p">,</span> | |||
<span class="nt">"tz"</span><span class="p">:</span> <span class="s2">"UTC"</span><span class="p">,</span> | |||
<span class="nt">"update_url"</span><span class="p">:</span> <span class="s2">"{{ SITE_ROOT }}/api/v1/checks/9d17c61f-5c4f-4cab-b517-11e6b2679ced"</span> | |||
<span class="p">}</span> | |||
<span class="p">]</span> | |||
<span class="p">}</span> | |||
</pre></div> |
@ -1,35 +0,0 @@ | |||
{ | |||
"checks": [ | |||
{ | |||
"channels": "4ec5a071-2d08-4baa-898a-eb4eb3cd6941,746a083e-f542-4554-be1a-707ce16d3acc", | |||
"desc": "Longer free-form description goes here", | |||
"grace": 900, | |||
"last_ping": "2017-01-04T13:24:39.903464+00:00", | |||
"n_pings": 1, | |||
"name": "Api test 1", | |||
"next_ping": "2017-01-04T14:24:39.903464+00:00", | |||
"pause_url": "SITE_ROOT/api/v1/checks/662ebe36-ecab-48db-afe3-e20029cb71e6/pause", | |||
"ping_url": "PING_ENDPOINT662ebe36-ecab-48db-afe3-e20029cb71e6", | |||
"status": "up", | |||
"tags": "foo", | |||
"timeout": 3600, | |||
"update_url": "SITE_ROOT/api/v1/checks/662ebe36-ecab-48db-afe3-e20029cb71e6" | |||
}, | |||
{ | |||
"channels": "", | |||
"desc": "", | |||
"grace": 3600, | |||
"last_ping": null, | |||
"n_pings": 0, | |||
"name": "Api test 2", | |||
"next_ping": null, | |||
"pause_url": "SITE_ROOT/api/v1/checks/9d17c61f-5c4f-4cab-b517-11e6b2679ced/pause", | |||
"ping_url": "PING_ENDPOINT9d17c61f-5c4f-4cab-b517-11e6b2679ced", | |||
"schedule": "0/10 * * * *", | |||
"status": "new", | |||
"tags": "bar baz", | |||
"tz": "UTC", | |||
"update_url": "SITE_ROOT/api/v1/checks/9d17c61f-5c4f-4cab-b517-11e6b2679ced" | |||
} | |||
] | |||
} |
@ -1,29 +0,0 @@ | |||
<div class="highlight"><pre><span></span><span class="p">{</span> | |||
<span class="nt">"checks"</span><span class="p">:</span> <span class="p">[</span> | |||
<span class="p">{</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">"Longer free-form description goes here"</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">900</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="s2">"2017-01-04T13:24:39.903464+00:00"</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Api test 1"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"up"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"foo"</span><span class="p">,</span> | |||
<span class="nt">"timeout"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"unique_key"</span><span class="p">:</span> <span class="s2">"2872190d95224bad120f41d3c06aab94b8175bb6"</span> | |||
<span class="p">},</span> | |||
<span class="p">{</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Api test 2"</span><span class="p">,</span> | |||
<span class="nt">"next_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"schedule"</span><span class="p">:</span> <span class="s2">"0/10 * * * *"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"new"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"bar baz"</span><span class="p">,</span> | |||
<span class="nt">"tz"</span><span class="p">:</span> <span class="s2">"UTC"</span><span class="p">,</span> | |||
<span class="nt">"unique_key"</span><span class="p">:</span> <span class="s2">"9b5fc29129560ff2c5c1803803a7415e4f80cf7e"</span> | |||
<span class="p">}</span> | |||
<span class="p">]</span> | |||
<span class="p">}</span> | |||
</pre></div> |
@ -1,28 +0,0 @@ | |||
{ | |||
"checks": [ | |||
{ | |||
"desc": "Longer free-form description goes here", | |||
"grace": 900, | |||
"last_ping": "2017-01-04T13:24:39.903464+00:00", | |||
"n_pings": 1, | |||
"name": "Api test 1", | |||
"status": "up", | |||
"tags": "foo", | |||
"timeout": 3600, | |||
"unique_key": "2872190d95224bad120f41d3c06aab94b8175bb6" | |||
}, | |||
{ | |||
"desc": "", | |||
"grace": 3600, | |||
"last_ping": null, | |||
"n_pings": 0, | |||
"name": "Api test 2", | |||
"next_ping": null, | |||
"schedule": "0/10 * * * *", | |||
"status": "new", | |||
"tags": "bar baz", | |||
"tz": "UTC", | |||
"unique_key": "9b5fc29129560ff2c5c1803803a7415e4f80cf7e" | |||
} | |||
] | |||
} |
@ -1,3 +0,0 @@ | |||
<div class="highlight"><pre><span></span>curl {{ SITE_ROOT }}/api/v1/checks/0c8983c9-9d73-446f-adb5-0641fdacc9d4/pause <span class="se">\</span> | |||
--request POST --header <span class="s2">"X-Api-Key: your-api-key"</span> --data <span class="s2">""</span> | |||
</pre></div> |
@ -1,2 +0,0 @@ | |||
curl SITE_ROOT/api/v1/checks/0c8983c9-9d73-446f-adb5-0641fdacc9d4/pause \ | |||
--request POST --header "X-Api-Key: your-api-key" --data "" |
@ -1,16 +0,0 @@ | |||
<div class="highlight"><pre><span></span><span class="p">{</span> | |||
<span class="nt">"channels"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"desc"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> | |||
<span class="nt">"grace"</span><span class="p">:</span> <span class="mi">60</span><span class="p">,</span> | |||
<span class="nt">"last_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"n_pings"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> | |||
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Backups"</span><span class="p">,</span> | |||
<span class="nt">"next_ping"</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> | |||
<span class="nt">"pause_url"</span><span class="p">:</span> <span class="s2">"{{ SITE_ROOT }}/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause"</span><span class="p">,</span> | |||
<span class="nt">"ping_url"</span><span class="p">:</span> <span class="s2">"{{ PING_ENDPOINT }}f618072a-7bde-4eee-af63-71a77c5723bc"</span><span class="p">,</span> | |||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"paused"</span><span class="p">,</span> | |||
<span class="nt">"tags"</span><span class="p">:</span> <span class="s2">"prod www"</span><span class="p">,</span> | |||
<span class="nt">"timeout"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span> | |||
<span class="nt">"update_url"</span><span class="p">:</span> <span class="s2">"{{ SITE_ROOT }}/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc"</span> | |||
<span class="p">}</span> | |||
</pre></div> |
@ -1,15 +0,0 @@ | |||
{ | |||
"channels": "", | |||
"desc": "", | |||
"grace": 60, | |||
"last_ping": null, | |||
"n_pings": 0, | |||
"name": "Backups", | |||
"next_ping": null, | |||
"pause_url": "SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc/pause", | |||
"ping_url": "PING_ENDPOINTf618072a-7bde-4eee-af63-71a77c5723bc", | |||
"status": "paused", | |||
"tags": "prod www", | |||
"timeout": 3600, | |||
"update_url": "SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc" | |||
} |
@ -1,4 +0,0 @@ | |||
<div class="highlight"><pre><span></span>curl {{ SITE_ROOT }}/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc <span class="se">\</span> | |||
--header <span class="s2">"X-Api-Key: your-api-key"</span> <span class="se">\</span> | |||
--data <span class="s1">'{"name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}'</span> | |||
</pre></div> |
@ -1,3 +0,0 @@ | |||
curl SITE_ROOT/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}' |
@ -1,3 +0,0 @@ | |||
<div class="highlight"><pre><span></span>curl {{ SITE_ROOT }}/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc <span class="se">\</span> | |||
--data <span class="s1">'{"api_key": "your-api-key", "name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}'</span> | |||
</pre></div> |
@ -1,2 +0,0 @@ | |||
curl SITE_ROOT/api/v1/checks/f618072a-7bde-4eee-af63-71a77c5723bc \ | |||
--data '{"api_key": "your-api-key", "name": "Backups", "tags": "prod www", "timeout": 3600, "grace": 60}' |