Dokumentacija

Razpoložljivost monitorja

GET /api/v1/monitors/{id}/uptime

Razpoložljivost enega monitorja v obdobju: ista številka kot v aplikaciji in v poročilih za stranke.

Parametri

Parameter Pomen
from, to Obdobje. Brez njiju zadnjih 30 dni.

Primer

September v časovnem pasu stranke (srednjeevropski poletni čas, +02:00):

cURL

curl -G http://pulsekeeper.io/api/v1/monitors/a81c27e05f3d9b64/uptime \
  -H "Authorization: Bearer $PULSEKEEPER_TOKEN" \
  --data-urlencode "from=2026-09-01T00:00:00+02:00" \
  --data-urlencode "to=2026-10-01T00:00:00+02:00"

PHP

<?php

// composer require guzzlehttp/guzzle
$client = new GuzzleHttp\Client([
    'base_uri' => 'http://pulsekeeper.io/api/v1/',
    'headers' => ['Authorization' => 'Bearer '.getenv('PULSEKEEPER_TOKEN')],
]);

$timezone = new DateTimeZone('Europe/Ljubljana');
$from = new DateTimeImmutable('first day of last month midnight', $timezone);

$uptime = json_decode($client->get('monitors/a81c27e05f3d9b64/uptime', ['query' => [
    'from' => $from->format(DATE_ATOM),
    'to' => $from->modify('+1 month')->format(DATE_ATOM),
]])->getBody(), true)['data'];

JavaScript

const query = new URLSearchParams({
  from: '2026-09-01T00:00:00+02:00',
  to: '2026-10-01T00:00:00+02:00',
});

const response = await fetch(`http://pulsekeeper.io/api/v1/monitors/a81c27e05f3d9b64/uptime?${query}`, {
  headers: { Authorization: `Bearer ${process.env.PULSEKEEPER_TOKEN}` },
});

const { data: uptime } = await response.json();

Go

loc, _ := time.LoadLocation("Europe/Ljubljana")
from := time.Date(2026, time.September, 1, 0, 0, 0, 0, loc)

query := url.Values{}
query.Set("from", from.Format(time.RFC3339))
query.Set("to", from.AddDate(0, 1, 0).Format(time.RFC3339))

req, _ := http.NewRequest("GET", "http://pulsekeeper.io/api/v1/monitors/a81c27e05f3d9b64/uptime?"+query.Encode(), nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("PULSEKEEPER_TOKEN"))

res, err := http.DefaultClient.Do(req)
if err != nil {
	log.Fatal(err)
}
defer res.Body.Close()

Odgovor

{
  "data": {
    "monitor": "a81c27e05f3d9b64",
    "from": "2026-08-31T22:00:00Z",
    "to": "2026-09-30T22:00:00Z",
    "uptime": 99.961,
    "downtime_seconds": 1012,
    "observed_seconds": 2592000
  }
}

Kaj se šteje

  • uptime je odstotek s tremi decimalkami: čas brez potrjenega izpada, deljen s časom, ko smo nadzirali. Neuspelo preverjanje z ene lokacije, ki ga nihče ni potrdil, ga ne zniža.
  • Izpadi se štejejo od confirmed_at do resolved_at vsakega incidenta. Incidenti med oknom vzdrževanja se ne štejejo.
  • Čas pred prvim uspešnim preverjanjem se ne šteje ne v korist ne v škodo, zato se monitor, dodan sredi meseca, meri od tistega dne: observed_seconds je tedaj krajši od obdobja.
  • Monitor, ki se še nikoli ni odzval, nima razpoložljivosti: uptime, downtime_seconds in observed_seconds so null, nikoli 0.