Dokumentacja
Pobieranie incydentu
GET /api/v1/incidents/{id}
Jeden potwierdzony incydent według id z listy incydentów. Incydent innego zespołu albo podejrzenie, które nigdy nie zostało potwierdzone, zwraca 404.
Przykład
cURL
curl http://pulsekeeper.io/api/v1/incidents/3f9a1c0e7b2d4a58 \
-H "Authorization: Bearer $PULSEKEEPER_TOKEN"
PHP
<?php
// composer require guzzlehttp/guzzle
$client = new GuzzleHttp\Client([
'base_uri' => 'http://pulsekeeper.io/api/v1/',
'headers' => ['Authorization' => 'Bearer '.getenv('PULSEKEEPER_TOKEN')],
]);
$incident = json_decode($client->get('incidents/3f9a1c0e7b2d4a58')->getBody(), true)['data'];
JavaScript
const response = await fetch('http://pulsekeeper.io/api/v1/incidents/3f9a1c0e7b2d4a58', {
headers: { Authorization: `Bearer ${process.env.PULSEKEEPER_TOKEN}` },
});
const { data: incident } = await response.json();
Go
req, _ := http.NewRequest("GET", "http://pulsekeeper.io/api/v1/incidents/3f9a1c0e7b2d4a58", 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()
var body struct {
Data map[string]any `json:"data"`
}
json.NewDecoder(res.Body).Decode(&body)
Odpowiedź
{
"data": {
"id": "3f9a1c0e7b2d4a58",
"type": "downtime",
"title": "Site unreachable",
"severity": "critical",
"state": "resolved",
"monitor": { "id": "a81c27e05f3d9b64", "type": "http", "name": "HTTP", "target": "shop.example.com" },
"client": { "id": "c4e0b9a17d2f6385", "name": "Example Shop" },
"started_at": "2026-09-30T21:14:05Z",
"confirmed_at": "2026-09-30T21:14:41Z",
"acknowledged_at": null,
"resolved_at": "2026-09-30T21:42:10Z",
"duration_seconds": 1685,
"excluded_from_sla": false,
"affected_locations": ["fra", "lon"],
"error": { "code": "http_5xx", "detail": "HTTP 502" },
"cause": { "text": "Outage at the hosting provider", "in_report": true }
}
}
Pola
| Pole | Znaczenie |
|---|---|
type |
Co się stało: downtime, timeout, blocked (zapora blokuje nasze sprawdzenia), auth (strona wymaga hasła), ssl_expiring, ssl_invalid, domain_expiring, tag_missing (kod śledzący zniknął ze strony), health_regressed (lista kontrolna strony się pogorszyła, np. noindex), heartbeat_missed i inne. title mówi to samo słowami. |
severity |
critical (awaria), warning lub info. |
state |
confirmed, acknowledged (ktoś z Twojego zespołu go przejął), resolved lub suppressed. Suppressed oznacza, że wydarzył się w trakcie okna serwisowego: jest prawdziwy, ale nie obniża dostępności. |
monitor |
Monitor, na którym wystąpił. target to nazwa hosta; null dla heartbeatów. |
client |
Klient, do którego należy cel; null dla heartbeatów. |
started_at |
Pierwsze nieudane sprawdzenie. |
confirmed_at |
Kiedy potwierdziła go druga lokalizacja. Od tego momentu liczy się przestój. |
resolved_at |
Pierwsze udane sprawdzenie po nim; null, dopóki trwa. |
duration_seconds |
Ustawiane po rozwiązaniu. Dla otwartego incydentu wynosi null: licz od started_at do potrzebnego Ci momentu. |
excluded_from_sla |
true, gdy nie obniża dostępności, na przykład w trakcie prac serwisowych. |
affected_locations |
Lokalizacje, które zobaczyły błąd. |
error |
Pierwszy błąd: kod, np. http_5xx, timeout lub dns_fail, oraz jego szczegóły. |
cause |
To, co Twój zespół wpisał w Dodaj przyczynę. Przy in_report: false przyczyna została oznaczona jako wewnętrzna: pomiń ją we wszystkim, co widzi Twój klient. |