Žádné odpovídající sekce.

Host-Tracker REST API v1

Stabilní HTTP API s autentizací pomocí tokenu pro správu monitorovacích úloh webů, kontaktů, odběrů upozornění/reportů a čtení statistik, výpadků a incidentů.

Toto je API v1. Nespouští okamžité kontroly (instant checks) a používá jiné schéma autentizace než API v2 — obě API nejsou vzájemně zaměnitelná. Pro automatizované okamžité kontroly použijte místo toho API v2.

Základní URL

Každá cesta v tomto dokumentu je relativní vůči základní URL (base URL). Stejné API obsluhují dva vstupní body:

Vstupní bodZákladní URL (BASE_URL)Poznámky
Přímý https://api1.host-tracker.com/ Doporučeno pro integrace typu server-server.
Přes hlavní web https://www.host-tracker.com/api/web/v1/ Přesměrováno (reverse proxy) na tutéž službu. Vhodné, pokud už komunikujete s www.host-tracker.com.

V celém tomto dokumentu volání zapsané jako GET tasks znamená GET BASE_URL/tasks — tedy např. https://api1.host-tracker.com/tasks nebo https://www.host-tracker.com/api/web/v1/tasks.

Typ obsahu a HTTP metody

Požadavky a odpovědi jsou standardně ve formátu application/json (viz Konvence ohledně XML). API používá standardní HTTP metody:

  • GET — čtení entit (úlohy, kontakty, odběry, statistiky, výpadky, incidenty, agenti).
  • POST — vytvoření entity nebo spuštění akce.
  • PUT — aktualizace existujících entit.
  • DELETE — odstranění entit.
  • PATCH — částečné aktualizace (použito pro opětovné odeslání potvrzovacího kódu kontaktu).

Přepsání HTTP metody

Pokud váš klient neumí odeslat PUT, DELETE ani PATCH, odešlete POST a přidejte hlavičku X-HTTP-Method-Override s názvem zamýšlené metody. Například pro aktualizaci úloh odešlete POST na tasks s hlavičkou X-HTTP-Method-Override: PUT.

Konvence

Serializace JSON

JSON používá názvy vlastností ve stylu camelCase. Prázdná (null) pole jsou v odpovědích vynechána (prázdná pole/array se naopak vždy vrací jako []). Pořadí vlastností je stabilní: nejprve identifikátor a adresa/url, poté zděděná pole, následně pole specifická pro daný typ.

Datum a čas

Odpovědi na vytvoření/čtení úloh nesou časová razítka jako řetězce ISO-8601 UTC (např. 2024-06-21T22:26:23Z). Endpointy pro statistiky, výpadky, incidenty a výsledky navíc používají dvojí reprezentaci: každý čas se objevuje jak jako celočíselné pole v unixových sekundách (přípona Unix), tak jako čitelný řetězec formátovaný podle formátu data a časového pásma z profilu účtu. Filtry v požadavcích přijímají unixové sekundy a/nebo formátované řetězce v závislosti na konkrétním endpointu (dokumentováno u každého endpointu níže). Všechna unixová razítka jsou sekundy od 1970-01-01T00:00:00Z.

Vyjednávání obsahu XML

Všechny endpointy mohou vracet i XML. Odešlete Accept: application/xml pro získání těla odpovědi ve formátu XML místo JSON; odpověď používá klasickou reprezentaci grafu objektů pomocí .NET XmlSerializer. Výchozím a doporučeným formátem je JSON.

CORS

Cross-origin požadavky jsou povoleny. Běžné (bez pověření/cookies) požadavky jsou přijímány z libovolného zdroje (Access-Control-Allow-Origin: *). Požadavky odesílající cookies/pověření jsou přijímány pouze z domén *.host-tracker.com. Volající používající autentizaci tokenem (přes hlavičku Authorization, jak je zde dokumentováno) tímto omezením pro pověřené zdroje nejsou nijak ovlivněni.

Autentizace

Každý endpoint kromě POST users/token a anonymních endpointů se seznamem agentů vyžaduje autentizaci. Jsou přijímána dvě schémata:

  • Bearer token — získaný z POST users/token, odesílaný jako Authorization: bearer <token>. Toto je primární schéma.
  • HTTP BasicAuthorization: Basic <base64(login:heslo)>. Přihlašovací údaje jsou dekódovány jako ISO-8859-1. Vhodné pro rychlé testy; pro automatizaci je upřednostňován bearer token.

POST users/token anonymní

Výměna přihlašovacího jména a hesla za bearer token. Token je platný 48 hodin.

Tělo požadavku

application/json
{
  "login": "your-login",
  "password": "your-password"
}
PoleTypPopis
loginstringPřihlašovací jméno účtu. Povinné. Akceptován je i e-mail účtu.
passwordstringHeslo účtu. Povinné.
forLoginstringVolitelné. Přihlašovací jméno hlavního účtu (super-account), za který se má jednat (zastupování podúčtu — viz níže).

Odpověď — 200 OK

application/json
{
  "ticket": "<bearer token>",
  "expirationTime": "2024-06-23T22:26:23Z",
  "expirationUnixTime": 1719181583
}

Při selhání je odpovědí 401 se strojovým kódem IncorrectLoginOrPassword (nebo AccessDenied, pokud je pro účet zakázán přístup k API) a hlavičkou WWW-Authenticate: Bearer.

Použití tokenu

HTTP
GET BASE_URL/tasks HTTP/1.1
Host: api1.host-tracker.com
Accept: application/json
Authorization: bearer 3DD135...5EE510417

Zastupování podúčtu (forLogin)

Pokud hlavní účet udělil vašemu podúčtu přístup ke svým datům, přihlaste se jako podúčet, ale předejte přihlašovací jméno hlavního účtu v parametru forLogin. Vrácený token vám pak umožní spravovat hlavní účet, jako by byly endpointy volány pro váš vlastní účet, v mezích práv, která hlavní účet udělil. Pokud například udělil pouze právo číst monitorovací úlohy, volání GET uspějí, ale POST/PUT/PATCH/DELETE na úlohách jsou odmítnuty.

kompletní příklad end-to-end
# 1. Získání tokenu pro zastupování
POST BASE_URL/users/token HTTP/1.1
Content-Type: application/json

{
  "login": "subaccount-login",
  "password": "subaccount-password",
  "forLogin": "superaccount-login"
}

# 2. Použití vráceného ticketu ke čtení úloh HLAVNÍHO účtu
GET BASE_URL/tasks HTTP/1.1
Authorization: bearer <ticket ze kroku 1>

curl

bash
# získání tokenu a jeho uložení
TOKEN=$(curl -s -X POST https://api1.host-tracker.com/users/token \
  -H "Content-Type: application/json" \
  -d '{"login":"your-login","password":"your-password"}' \
  | grep -o '"ticket":"[^"]*"' | cut -d'"' -f4)

# volání autentizovaného endpointu
curl -s https://api1.host-tracker.com/tasks \
  -H "Authorization: bearer $TOKEN"

Chyby a strojové kódy

Chyby vrací standardní stavový kód HTTP a k tomu krátký strojově čitelný kód, podle kterého může vaše integrace větvit chování. Tělo odpovědi je prostý anglický text (nikoli JSON), určený pro lidi/logy.

Strojový kód je doručen dvěma způsoby:

  • hlavička odpovědi X-HT-Reason — nese kód u každé odpovědi a v každé verzi HTTP. Toto je doporučený způsob zjištění typu chyby.
  • důvodová fráze HTTP/1.1 (reason phrase) — řádek stavu zní např. HTTP/1.1 400 SimilarExists. Zachováno kvůli zpětné kompatibilitě, ale pozor: HTTP/2 a HTTP/3 odstranily důvodové fráze z protokolu, takže toto místo může být prázdné, pokud spojení vyjedná HTTP/2+. Upřednostněte X-HT-Reason.
příklad chybové odpovědi
HTTP/1.1 400 SimilarExists
X-HT-Reason: SimilarExists
Content-Type: text/plain; charset=utf-8

Same task allready exists
Autentizační výzvy. Chybějící nebo neplatný token vrací 401 s WWW-Authenticate: Bearer a jedním z kódů AccessDenied, WrongTicket, TicketExpired nebo IncorrectLoginOrPassword.

Přehled chybových kódů

Všechny strojové kódy, které může API vracet, seskupené podle oblasti, s typickým stavem HTTP. Není-li uvedeno jinak, chyby mají stav 400 Bad Request.

Autentizace

KódStavVýznam
AccessDenied401Přístup k API je pro tento účet zakázán, nebo volající nemá potřebná práva.
IncorrectLoginOrPassword401Přihlašovací jméno/heslo odmítnuto na users/token.
WrongTicket401Bearer token je poškozený / nečitelný.
TicketExpired401Platnost bearer tokenu vypršela — získejte nový.
RequestThrottled429Překročeno omezení počtu požadavků (viz Omezení počtu požadavků). Obsahuje Retry-After.

Úlohy

KódStavVýznam
NotFound404Požadovaná úloha neexistuje.
SimilarExists400Úloha se stejným typem a klíčem již existuje (pokud účet nepovoluje podobné úlohy).
EmptyTaskData400Nebyla dodána žádná data úlohy.
UncomplitedData400Data úlohy jsou neúplná.
NoIdInTaskData400Byla požadována aktualizace, ale chybí id úlohy.
WrongEditableTaskDataType400Typ dat v požadavku na úpravu neodpovídá typu cílové úlohy.
WrongTaskType400Neznámý typ úlohy.
WrongTaskStatus400Nepodporovaná hodnota status (očekáváno Enabled/Disabled).
WrongInterval400Monitorovací interval není jednou z přijímaných hodnot (viz tasks/intervals).
EmptyUrl400Nebyla dodána URL/host pro úlohu, která ji vyžaduje.
WrongUrl400URL je neplatná.
WrongSchema400Nepodporované schéma URL.
BadIP400URL se překládá na zakázanou nebo neplatnou IP adresu.
UrlInBlackList400URL je na interním blokovacím seznamu.
WrongHttpMethod400Nepodporovaná HTTP metoda pro HTTP úlohu (povoleno: Get, Post, Head).
WrongKeywordMode400Nepodporovaný režim klíčových slov.
WrongPort400Neplatný port pro úlohu typu port.
WrongAgentPool400Jedna nebo více požadovaných skupin agentů (pools) neexistuje. Zpráva uvádí neplatné i dostupné skupiny.
SelectMoreAgents400Vybrané skupiny agentů neobsahují dostatek agentů (vyžadováno 7). Zpráva uvádí počty za jednotlivé skupiny.
ApiFullLogNotAllowed400fullLog je dostupné pouze u pokročilých balíčků.
WrongExpectedSLA400expectedSLA musí být mezi 0 a 100.
WrongDate400Neplatné počáteční/koncové datum ve filtru.
WrongDateFormat400Řetězec data neodpovídal požadovanému formátu (uvedenému ve zprávě).
EndDateIsGreaterThanStartDate400Počáteční datum musí být ≤ koncové datum.
StartEndIntervalIsTooBig400Dotaz na výsledky by vrátil více než 10 000 řádků. Zpráva obsahuje maximální interval, který by se vešel (viz GET tasks).
WrongSubscription400Vložený (inline) odběr v těle úlohy je neplatný (vnitřní kód/zpráva odběru je předána dál).
EmptyFilter400Hromadné DELETE tasks bylo odesláno s prázdným filtrem (odmítnuto, aby se zabránilo smazání celého účtu).

Kontakty

KódStavVýznam
NotFound404Požadovaný kontakt neexistuje.
SimilarExists400Kontakt se stejným typem, gatewayí, adresou a zpožděním upozornění již existuje.
EmptyContactData400Nebyla dodána žádná data kontaktu.
UncomplitedData400Data kontaktu jsou neúplná.
NoIdInContactData400Byla požadována aktualizace, ale chybí id kontaktu.
EmptyAddress400Při vytváření kontaktu nebyla dodána žádná adresa.
WrongContactType400Neznámý typ kontaktu (vraceno i pro zrušenou cestu vytvoření/aktualizace IM).
WrongEditableContactDataType400Typ dat v požadavku na úpravu neodpovídá typu cílového kontaktu.
WrongEmailFormat400Neplatná e-mailová adresa nebo nepodporovaný formát e-mailových reportů.
WrongPhoneFormat400Telefonní číslo smí obsahovat pouze číslice (úvodní + je povoleno).
WrongSmsGateway400Neznámá SMS gateway.
WrongIMGateway400Neznámá IM gateway.
WrongAlertDelay400alertDelay není jednou z přijímaných hodnot (viz contacts/delays).
WrongActivePeriodInterval400Neplatný začátek/konec aktivního období.
WrongActiveDay400Nepodporovaný název aktivního dne.
EmptyFilter400Hromadné DELETE contacts bylo odesláno s prázdným filtrem (odmítnuto).

Odběry

KódStavVýznam
AlertsAndReportsAreEmpty400Položka odběru neuvádí ani typy upozornění, ani typy reportů.
UnknownAlertType400Typ upozornění není žádný z Up, Down, RepeatedlyDown.
UnknownReportType400Typ reportu není žádný z Day, Week, Month, Quarter, Year.

Omezení počtu požadavků

Požadavky jsou omezeny (rate-limited) na klienta a endpoint. Překročení limitu vrací 429 se strojovým kódem RequestThrottled a hlavičkou Retry-After (v sekundách).

RozsahLimit
Běžné endpointy, na účet + endpoint6 požadavků / sekundu a 120 požadavků / minutu
Endpointy potvrzovacích kódů (contacts/{id}/code), na účet + endpoint1 požadavek / sekundu a 2 požadavky / minutu
Anonymní endpointyStejné limity 6/s + 120/min, počítáno na IP adresu klienta
odpověď 429
HTTP/1.1 429 RequestThrottled
X-HT-Reason: RequestThrottled
Retry-After: 1
Content-Type: application/json; charset=utf-8

"API calls quota exceeded! maximum admitted 6 per s."

Monitorovací úlohy

GET tasks/types

Vrací pole názvů typů úloh, které systém zná:

200 OK
["API","CntCheck","Counter","DNSBL","Database","DomainExp","Http",
 "Ping","Port","RusRegBL","SSLExp","Snmp","Tran","Waterfall","WebRisk"]
Existující úlohy jakéhokoli z těchto typů lze přes toto API číst. Vytvářet/aktualizovat lze úlohy přes typizované endpointy jen pro čtyři typy: Http Ping Port RusRegBL (vytváří se na tasks/http, tasks/ping, tasks/port, resp. tasks/rusbl).

GET tasks/intervals

Vrací pole monitorovacích intervalů (v minutách) přijímaných pro váš účet, např. [1,5,15,30,60]. Při vytváření úlohy použijte pro pole interval jednu z těchto hodnot; jakákoli jiná hodnota vede k chybě WrongInterval.

GET tasks

Seznam monitorovacích úloh. Všechny parametry dotazu jsou volitelné; bez nich se vrátí všechny úlohy daného účtu. Zopakováním parametru předáte pole hodnot, např. ?ids=guid1&ids=guid2.

Parametr info

Vyžádá si dodatečná data vložená do každé úlohy. Hodnoty kombinujte čárkami (?info=stats,subscriptions) nebo předejte odpovídající celočíselnou bitovou masku:

HodnotaBitEfekt
subscriptions1Zahrne odběry upozornění/reportů úlohy v poli subscriptions.
stats2Zahrne denní/měsíční/roční/celkovou dostupnost (uptime) v poli stats.
results4Zahrne výsledky kontrol pro okno sdtuedtu v poli results (poslední výsledek, pokud okno není zadáno).
attachedResultsZahrne nejnovější výsledky přidružených kontrol (certifikát, expirace domény, DNSBL) v poli attached. Vyžaduje odpovídající příznaky check… na úloze.

?info=stats,subscriptions,results je ekvivalentní ?info=7.

Parametry filtru

ParametrTypPopis
idsguid[]Vrátí pouze tato id úloh. Pro jedno id upřednostněte GET tasks/{id}.
excludeIdsboolSpolu s ids: vrátí vše kromě těchto id.
taskType / taskTypesstring / string[]Filtr podle typu úlohy (rozlišuje velikost písmen), např. Http.
excludeTaskTypesboolInvertuje filtr typu.
statusstringEnabled nebo Disabled (vypnutí uživatelem). Např. ?status=Disabled.
url / urlsstring / string[]Filtr podle URL. Hodnoty v urls musí být URL-kódované.
urlSearchLikeboolSpolu s url (nikoli urls): hledání podřetězce místo přesné shody.
excludeUrlsboolInvertuje filtr URL.
name / namesstring / string[]Filtr podle názvu úlohy. Kombinace name/names s id/ids je OR; kombinace s dalšími filtry je AND.
nameSearchLikeboolSpolu s name: hledání podřetězce.
excludeNamesboolInvertuje filtr názvu.
interval / intervalsint / int[]Filtr podle monitorovacího intervalu (v minutách).
excludeIntervalsboolInvertuje filtr intervalu.
openStatboolVeřejné úlohy (veřejná statistika/log událostí).
lastStatebooltrue = aktuálně dostupné, false = aktuálně nedostupné.
tagsstring[]Filtr podle štítku (tagu).
overlimitedboolÚlohy s (true) nebo bez (false) překročeného fakturačního limitu.
activebooltrue = aktivní, false = vypnuto systémem (překročení limitu, nízký zůstatek, …). Pro vypnutí uživatelem použijte status.
sdtu / edtuint64Unixové sekundy (UTC) začátku/konce okna. Použito pouze, je-li nastaveno info=results; zadejte obě hodnoty. edtu musí být > sdtu.
Limit počtu řádků výsledků. Při dotazu na výsledky nesmí odhadovaný počet řádků (edtu − sdtu) × (#úloh) / (průměrný interval) přesáhnout 10 000. Jinak je odpovědí 400 StartEndIntervalIsTooBig, jehož zpráva obsahuje největší interval, který by se vešel. Tento limit platí pouze pro čtení výsledků úloh.

Odpověď — 200 OK

Pole objektů úloh. Přesná pole závisí na typu úlohy; společný základ obsahuje id, name, taskType, enabled, interval, lastState, creationTime, tags, agentPools a (je-li vyžádáno přes info) subscriptions, stats, results a attached. Jsou-li zahrnuty výsledky, každý výsledek nese přinejmenším timestamp (unixové sekundy UTC) a eventNumber; zbývající pole jsou specifická pro daný typ úlohy (tvar pro HTTP viz odpověď při vytvoření níže).

příklad požadavku
GET BASE_URL/tasks?info=stats,subscriptions&taskType=Http HTTP/1.1
Accept: application/json
Authorization: bearer <token>

GET tasks/{id:guid}

Načtení jedné úlohy podle id. Přijímá stejný parametr info (a sdtu/edtu, je-li nastaveno info=results). Vrací objekt úlohy, nebo 404 NotFound, pokud neexistuje.

POST tasks/http · tasks/ping · tasks/port · tasks/rusbl

Vytvoření monitorovací úlohy daného typu. Při úspěchu vrací 201 Created, relativní hlavičku Location: /tasks/{id} a celý vytvořený objekt úlohy.

Tělo požadavku — HTTP úloha

POST tasks/http · application/json
{
  // pole specifická pro HTTP
  "url": "https://www.example.com",        // POVINNÉ
  "httpMethod": "Get",                       // Get | Post | Head (výchozí Get)
  "userAgent": "MyMonitor",
  "referer": "https://www.google.com",
  "acceptHeader": "application/json",
  "followRedirect": false,
  "treat300AsError": false,                // je-li nastaveno, followRedirect se ignoruje
  "checkDnsbl": false,                       // kontrola domény proti DNS blokovacím seznamům
  "checkDomainExpiration": false,            // sledování expirace domény (pouze platné domény)
  "checkCertificateExpiration": false,       // sledování expirace TLS certifikátu (pouze https)
  "checkRussianBlackLists": false,
  "checkWebRisk": false,
  "timeout": 40000,                          // ms, po kterých kontrola selže
  "keywords": ["error", "maintenance"],
  "keywordMode": "ReverseAny",             // viz režimy klíčových slov níže
  "userName": "basic-auth-user",          // přihlašovací údaje pro sledovaný zdroj
  "password": "basic-auth-pass",
  "postParameters": "a=1\r\nb=2",          // pouze s httpMethod=Post
  "ignoredStatuses": [404, 500],

  // pole společná pro všechny typy úloh
  "interval": 5,                             // minuty; musí být přijímaný interval
  "enabled": true,
  "fullLog": false,                          // pouze pokročilé balíčky
  "openStat": true,
  "name": "My website",
  "tags": ["production", "web"],
  "agentPools": ["westeurope", "asia"],  // viz poznámky níže
  "subscriptions": [ /* vložené odběry, viz níže */ ]
}
Režim klíčových slovÚloha je OK, když…
PresentAnyv odpovědi je přítomno alespoň jedno klíčové slovo.
PresentAlljsou přítomna všechna klíčová slova.
ReverseAnychybí všechna klíčová slova.
ReverseAllchybí alespoň jedno klíčové slovo.
ReverseWithResultchybí všechna klíčová slova; chybová zpráva obsahuje zbytek řádku odpovědi, kde se objevilo první klíčové slovo (analyzováno prvních 100 znaků každého řádku).
agentPools vybírá monitorovací lokality. Je volitelné (jinak se použije výchozí nastavení z profilu). Pokud je zadáno, musí zvolené skupiny agentů dohromady obsahovat alespoň 7 agentů, jinak požadavek selže s SelectMoreAgents. Neznámá id skupin selžou s WrongAgentPool. Id skupin pocházejí z GET agents/pools.

Vložené (inline) odběry

Pole subscriptions přihlásí kontakty k upozorněním/reportům této úlohy již při jejím vytvoření. Každá položka používá tvar odběru; nenastavujte taskIds (je pevně nastaveno na novou úlohu). Pokud je contactIds vynecháno, přihlásí se všechny vaše potvrzené kontakty. Odběry reportů se aplikují pouze na kontakty typu Email.

Ostatní typy úloh

  • tasks/ping — tělo nese host plus společná pole.
  • tasks/port — tělo nese host a port plus společná pole.
  • tasks/rusbl — kontrola ruského registru blokovacích seznamů; tělo nese url, dále ignoreWarnings, doNotSendMsgOnWarnings, prefixMatch a společná pole.

Odpověď — 201 Created (HTTP úloha)

application/json
{
  "id": "ef10cd12-93f9-e311-bec5-dc85de1f0bc2",
  "url": "https://www.example.com",
  "rawUrl": "https://www.example.com",
  "name": "My website",
  "creationTime": "2024-06-21T22:26:23Z",
  "taskType": "Http",
  "enabled": true,
  "interval": 5,
  "lastState": true,
  "openStatEnabled": true,
  "fullLogEnabled": false,
  "tags": ["production", "web"],
  "agentPools": ["westeurope", "asia"],
  "subscriptions": [
    { "alertTypes": ["Up"],   "taskIds": ["ef10cd12-...-0bc2"], "contactIds": ["4cedf037-...-0bc2"] },
    { "alertTypes": ["Down"], "taskIds": ["ef10cd12-...-0bc2"], "contactIds": ["4cedf037-...-0bc2"] },
    { "reportTypes": ["Month"], "taskIds": ["ef10cd12-...-0bc2"], "contactIds": ["4cedf037-...-0bc2"] }
  ],
  "httpMethod": "Get",
  "keywords": ["error"],
  "keywordMode": "ReverseAny",
  "timeout": 40000
}

curl

bash
curl -s -X POST https://api1.host-tracker.com/tasks/http \
  -H "Authorization: bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.example.com","interval":5,"name":"My website"}'

PUT tasks & typizované varianty

Aktualizace úloh. Dva způsoby:

  • Podle idPUT tasks/{id} (pouze společná pole), nebo typizované PUT tasks/http/{id}, tasks/ping/{id}, tasks/port/{id}, tasks/rusbl/{id} (i pole specifická pro typ). Tělo má stejný upravitelný tvar jako při vytváření; mění se pouze pole, která zahrnete.
  • Podle filtruPUT tasks?<filtr> (pouze společná pole) nebo typizované PUT tasks/{type}?<filtr> (které filtr napevno svazuje s daným typem). Používá stejné parametry filtru jako GET tasks. Vrací aktualizovanou úlohu/úlohy.

Netypizované PUT tasks / PUT tasks/{id} mohou měnit pouze pole společná všem typům úloh — pro změnu nastavení specifických pro daný typ použijte typizovaný endpoint.

DELETE tasks/{id:guid} & tasks

  • DELETE tasks/{id} — smazání jedné úlohy; vrací smazanou úlohu.
  • DELETE tasks?<filtr> — hromadné mazání podle filtru úloh (filtr lze také dodat v těle požadavku). Vrací smazané úlohy.
Prázdný filtr je odmítnut. Hromadné DELETE tasks bez selektivního filtru vrací 400 EmptyFilter namísto smazání celého vašeho účtu. Chcete-li smazat vše záměrně, iterujte explicitně.

POST tasks/$batch · task/$batch

Spuštění více operací nad úlohami v jednom požadavku. Tělo je pole JSON s dílčími požadavky; odpovědí je pole JSON s dílčími odpověďmi ve stejném pořadí. Dílčí operace se volí podle posledního segmentu pole relativeUrl (např. httpPOST tasks/http). Tělo požadavku musí být JSON (Content-Type: application/json). Stejný mechanismus existuje pro kontakty na contacts/$batch / contact/$batch.

Pole požadavkuTypPopis
methodstringHTTP metoda dílčího požadavku (POST, PUT, DELETE…).
relativeUrlstringDílčí zdroj; poslední segment určuje operaci (http, ping, port, rusbl…).
contentTypestringTyp obsahu pole content, obvykle application/json.
contentstringTělo dílčího požadavku jako řetězec JSON.
Pole odpovědiTypPopis
codeintHTTP stavový kód dílčí odpovědi (např. 201, 400).
statusstringText důvodu/stavu (u chyb nese strojový kód).
headersobjectHlavičky odpovědi dílčí operace (např. Location).
bodystringTělo dílčí odpovědi.
požadavek · POST tasks/$batch
POST BASE_URL/tasks/$batch HTTP/1.1
Authorization: bearer <token>
Content-Type: application/json

[
  {
    "method": "POST",
    "relativeUrl": "http",
    "contentType": "application/json",
    "content": "{\"url\":\"https://a.example.com\",\"interval\":5}"
  },
  {
    "method": "POST",
    "relativeUrl": "ping",
    "contentType": "application/json",
    "content": "{\"host\":\"b.example.com\"}"
  }
]
odpověď · 200 OK
[
  { "code": 201, "status": "Created",
    "headers": { "Location": "/tasks/ef10cd12-...-0bc2" },
    "body": "{ ...created http task... }" },
  { "code": 201, "status": "Created",
    "headers": { "Location": "/tasks/7a20de34-...-1cd3" },
    "body": "{ ...created ping task... }" }
]

Kontakty

Kontakty jsou cíle, na které jsou doručována upozornění a reporty (e-mailové adresy, telefonní čísla pro SMS/hlasová volání). Id kontaktů se používají při vytváření odběrů.

GET contacts/types · contacts/delays · contacts/sms/gateways · contacts/im/gateways

Statické výčty používané endpointy pro kontakty:

EndpointVrací
contacts/types["Email","IM","SMS","VoiceCall"] — typy kontaktů, které toto API vyjmenovává. Vytvořitelné typy jsou Email, SMS a VoiceCall (IM je zrušeno — viz níže).
contacts/delaysPřijímané hodnoty alertDelay (v minutách): [0,5,15,30,60,180,720,360,1440,3].
contacts/sms/gatewaysId SMS gatewayí: ["clickatell","clickatella","infobip","skype","twiliosms"]. Výchozí je twiliosms; ostatní položky jsou zděděné (legacy) a mohou být neaktivní.
contacts/im/gatewaysId IM gatewayí: ["GTalk","SkypeChat"]. Uvedeno pouze pro zpětnou kompatibilitu — kontakty IM již nelze vytvářet (viz níže).
Kontakty IM jsou zrušeny. GET contacts/im/gateways stále vrací seznam gatewayí, ale POST contacts/im a PUT contacts/im nyní vrací 400 WrongContactType. Existující kontakty IM nelze přes toto API vytvářet.

GET contacts & contacts/{id:guid}

Seznam kontaktů (volitelně filtrovaný) nebo načtení jednoho podle id. Přidejte ?info=subscriptions pro vložení odběrů každého kontaktu. Bez filtru se vrátí všechny kontakty daného účtu.

Parametr filtruTypPopis
ids / excludeIdsguid[] / boolVybere nebo vyloučí podle id.
contactType / contactTypesstring / string[]Filtr podle typu (Email, SMS, VoiceCall…).
excludeContactTypesboolInvertuje filtr typu.
confirmedboolPotvrzené vs. nepotvrzené kontakty.
overlimitedboolKontakty označené jako překračující limit balíčku.
acceptBillingNotificationsboolKontakty používané pro fakturační upozornění.
name / names / nameSearchLike / excludeNamesstring(s) / boolFiltr podle názvu (přesný, seznam, podřetězec nebo vyloučení).
address / addresses / addressSearchLike / excludeAddressesstring(s) / boolFiltr podle adresy.

Objekt kontaktu

Společná pole: id, confirmed, contactType, name, address, alertDelay, activePeriodStart/activePeriodEnd (HH:mm), activeDays, sendCost. Kontakty typu Email přidávají reportFormat (Text/ShortText), sendNews, sendBillingNotifications; kontakty SMS/IM přidávají gateway.

POST contacts/email · contacts/sms · contacts/voice

Vytvoření kontaktu. Vrací 201 Created, relativní hlavičku Location: /contacts/{id} a objekt ContactOperationResult ({ contact, status }), jehož status uvádí výsledek potvrzení.

POST contacts/email · application/json
{
  "address": "ops@@example.com",          // POVINNÉ
  "name": "Ops mailbox",
  "alertDelay": 0,                        // minuty; jedna z hodnot contacts/delays
  "reportFormat": "Text",               // Text | ShortText (pouze email)
  "activePeriodStart": "00:00",        // volitelné okno klidu (HH:mm)
  "activePeriodEnd": "23:59",
  "activeDays": ["Monday", "Tuesday"],   // volitelné; výchozí všechny dny
  "subscriptions": [ /* volitelné vložené odběry */ ]
}
PolePlatí proPoznámky
addressvšeE-mailová adresa, nebo telefonní číslo (číslice, volitelně úvodní +) pro SMS/hlas. Povinné při vytváření.
alertDelayvšeMinuty čekání před upozorněním. Musí být jedna z hodnot contacts/delays.
activePeriodStart / activePeriodEndvšeHH:mm; okno, během kterého jsou upozornění doručována.
activeDaysvšeLibovolné dny z SundaySaturday; výchozí je každý den.
reportFormat, sendNews, sendBillingNotificationsemailNastavení e-mailu.
gatewaysmsJedna z hodnot contacts/sms/gateways; výchozí twiliosms.

Kontakty typu SMS a hlasové volání standardně používají gateway twiliosms / twiliovoice, dostanou výchozí cenu za zprávu a číslo se ukládá s úvodním +. Změna adresy nebo gatewaye kontaktu resetuje jeho stav potvrzení.

Hodnoty stavu potvrzení

Pole status ve výsledku uvádí výsledek odeslání potvrzovacího kódu:

StavVýznam
ConfirmedKontakt byl vytvořen již potvrzený (kód nebyl potřeba).
CodeSentByl odeslán potvrzovací kód; kontakt se stane aktivním po potvrzení.
CodeSentEarlierKód již byl odeslán nedávno a je stále platný.
CodeFailKontakt byl vytvořen, ale odeslání kódu selhalo; zkuste to později znovu.
LowSmsBalanceKód nebylo možné odeslat, protože zůstatek na účtu je příliš nízký.
OverlimitedKontakt překračuje limit balíčku.

PUT contacts & typizované varianty

  • Podle idPUT contacts/{id} (společná pole), nebo typizované PUT contacts/email/{id}, contacts/sms/{id}, contacts/voice/{id}. Mění se pouze pole, která odešlete.
  • Podle filtruPUT contacts?<filtr> nebo typizované PUT contacts/{type}?<filtr> (filtr napevno svazuje s daným typem), s použitím filtru kontaktů.

PUT contacts/im (oba tvary) vrací 400 WrongContactType.

DELETE contacts/{id:guid} & contacts

Smazání jednoho kontaktu podle id, nebo hromadné mazání podle filtru kontaktů. Stejně jako u úloh je hromadné mazání s prázdným filtrem odmítnuto s 400 EmptyFilter.

Potvrzovací kódy

Nepotvrzené kontakty musí potvrdit vlastnictví krátkým kódem doručeným na adresu kontaktu.

  • PATCH contacts/{id}/code — (opětovné) vydání a odeslání potvrzovacího kódu. Vrací ContactOperationResult se stavem, jako je CodeSent.
  • POST contacts/{id}/code — potvrzení kontaktu odesláním kódu. Tělo: { "code": "12345" }. Při úspěchu se kontakt stane potvrzeným.
Tyto endpointy mají přísnější omezení počtu požadavků: 1 požadavek/sekundu a 2 požadavky/minutu.

Upozornění a odběry

Odběr propojuje jednu nebo více úloh a kontaktů se sadou typů upozornění a/nebo reportů. Jedna položka odběru vytvoří kartézský součin (cross-join) svých úloh a kontaktů, čímž vznikne jedno upozornění/report pro každou dvojici (úloha, kontakt, typ).

Tvar odběru

položka odběru
{
  "alertTypes": ["Up", "Down"],       // libovolné z Up, Down, RepeatedlyDown
  "reportTypes": ["Day", "Month"],     // libovolné z Day, Week, Month, Quarter, Year
  "taskIds": ["<task guid>"],
  "contactIds": ["<contact guid>"]
}
  • Je vyžadováno alespoň jedno z alertTypes / reportTypes, jinak AlertsAndReportsAreEmpty.
  • Vynechání taskIds znamená výchozí hodnotu všechny vaše úlohy; vynechání contactIds znamená všechny vaše kontakty. Explicitně prázdné pole znamená „žádné".
  • Odběry reportů platí pouze pro kontakty typu Email — typy reportů u kontaktů, které nejsou Email, jsou tiše ignorovány (jejich odběry upozornění se přesto vytvoří).
  • Id, která nevlastníte, jsou ignorována.

GET subscriptions/alertTypes · subscriptions/reportTypes

EndpointVrací
subscriptions/alertTypes["Up","Down","RepeatedlyDown"]
subscriptions/reportTypes["Day","Week","Month","Quarter","Year"]

GET subscriptions

Seznam odběrů. Vrací jednu položku za každý shodný odběr upozornění nebo reportu (nikdy sloučené). Volitelné filtry:

ParametrTypPopis
taskIdguidPouze odběry pro tuto úlohu.
contactIdguidPouze odběry pro tento kontakt.
typesstring[]Pouze tyto typy upozornění/reportů. Nerozpoznané názvy jsou zde ignorovány (na rozdíl od POST/DELETE, které je odmítají).

POST subscriptions · DELETE subscriptions

Obě metody přijímají v těle pole JSON s položkami odběrů. POST přidá popsané odběry (vloží se pouze nové řádky); DELETE odstraní ty, které existují. Obě vrací 200 OK s prázdným tělem. Neznámé typy upozornění/reportů jsou odmítnuty s UnknownAlertType / UnknownReportType.

POST subscriptions · tělo
[
  { "alertTypes": ["Up", "Down"],
    "taskIds": ["7ee87894-b8a9-e311-beb2-dc85de1f0bc2"],
    "contactIds": ["4cedf037-d1d9-e311-bebc-dc85de1f0bc2"] },
  { "reportTypes": ["Month"],
    "taskIds": ["7ee87894-b8a9-e311-beb2-dc85de1f0bc2"],
    "contactIds": ["4cedf037-d1d9-e311-bebc-dc85de1f0bc2"] }
]
curl
curl -s -X POST https://api1.host-tracker.com/subscriptions \
  -H "Authorization: bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '[{"alertTypes":["Up","Down"],"taskIds":["<task>"],"contactIds":["<contact>"]}]'

Statistiky a výsledky

GET stats

Agregáty dostupnosti/nedostupnosti za úlohu v daném časovém okně. Přijímá filtr úloh pro výběr úloh, plus:

ParametrTypPopis
statsStartUnix / statsEndUnixint64Začátek/konec okna jako unixové sekundy (UTC).
statsStart / statsEndstringZačátek/konec okna jako řetězec formátovaný podle profilu (alternativa k unixovým polím).
expectedSLAdouble0–100. Je-li nastaveno, každý výsledek uvádí slaExpectationSucceeded.
fullTaskboolZahrne celý objekt úlohy místo pouze jejího odkazu.

Odpověď

Objekt Stats s vyřešeným oknem (dvojice datových polí) a polem stats. Každá položka nese odkaz na úlohu a: uptimeInMinutes/uptimeSpan, downtimeInMinutes/downtimeSpan, časy servisní (maintenance) dostupnosti/nedostupnosti, totalTimeInMinutes, počty kontrol po dávkách a uptimePercent/downtimePercent.

Procento dostupnosti: uptime% = (uptime + maintenanceUptime) / (totalTime − maintenanceDowntime). Pokud se celkový čas rovná servisní nedostupnosti, je procento null (nedefinováno). slaExpectationSucceeded je uptime% ≥ expectedSLA.

GET outages

Úseky nedostupnosti za úlohu. Přijímá filtr úloh plus:

ParametrTypPopis
startTimeUnix / endTimeUnixint64Okno jako unixové sekundy (UTC).
startTime / endTimestringOkno jako řetězce formátované podle profilu.
getInUtcTimeZoneintJe-li nastaveno, formátované časy jsou v UTC místo časového pásma profilu.
fullTaskboolZahrne celý objekt úlohy.

Odpověď: objekt Outages s vyřešeným oknem a polem taskOutages; každý prvek páruje úlohu s jejími úseky outages (startTime/endTime + unixové varianty, čísla událostí, volitelný komentář).

GET incident

Seznam incidentů (výpadkových událostí) za úlohu. Přijímá filtr úloh plus stejné parametry okna/časového pásma jako outages a dále:

ParametrTypPopis
startTimeUnix / endTimeUnix / startTime / endTimeint64 / stringOkno (unixové a/nebo formátované).
getInUtcTimeZoneintFormátovat časy v UTC.
fullTaskboolZahrne celý objekt úlohy.
fullLogboolZahrne podrobný log opakovaných kontrol po jednotlivých agentech. Vyžaduje pokročilý balíček, jinak ApiFullLogNotAllowed.

Odpověď: objekt Incidents s polem taskIncidents. Každý incident nese taskId, checkId, unixové časy začátku/konce, selhávající location, error, hasSnapshot a (spolu s fullLog) blok recheck se seznamem lokalit OK a selhávajících lokalit po jednotlivých chybách.

GET incident/snapshot

Získání uloženého snímku odpovědi zachyceného pro daný incident. Parametry:

ParametrTypPopis
taskIdguidÚloha. Povinné.
checkIdint64Id kontroly/události.
timestampUnixUtcint64Časové razítko incidentu (unixové sekundy UTC).

Vrací snímek (časové razítko plus zachycená data), pokud existuje, nebo null, pokud pro daný incident žádný snímek neexistuje.

GET results/http

Agregované metriky časování HTTP za úlohu. Vynucuje typ úlohy Http. Přijímá filtr úloh plus:

ParametrTypPopis
resultStartUnix / resultEndUnixint64Okno jako unixové sekundy (UTC).
resultStart / resultEndstringOkno jako řetězce formátované podle profilu.
fullTaskboolZahrne celý objekt úlohy.

Odpověď: objekt AggregatedHttpResults; každá položka taskResults uvádí odkaz na úlohu a průměrné hodnoty responseTime, dnsTime, headTime, dataTime (v milisekundách).

GET cr/httpResponseTime

Časová řada dob odezvy HTTP za úlohu. Přijímá filtr úloh plus startDate, endDate a groupBy. Vrací holé pole objektů řad:

200 OK
[
  {
    "id": "ef10cd12-93f9-e311-bec5-dc85de1f0bc2",
    "rawUrl": "https://www.example.com",
    "name": "My website",
    "results": [ [1719181583, 142], [1719177983, 138] ]   // [unixSeconds, responseTimeMs], nejnovější první
  }
]

Agenti

Agenti jsou geograficky rozmístěné monitorovací lokality. Id skupin (pools) vrácená zde jsou hodnoty, které předáváte v poli úlohy agentPools.

GET agents

Seznam monitorovacích agentů. Volitelný parametr dotazu:

ParametrTypPopis
touchedintPouze agenti, kteří se hlásili během posledních N minut. Hodnoty ≤ 0 (nebo chybějící) znamenají žádný filtr; jinak jsou omezeny na rozsah 1–10.

Každý agent nese id, upFrom, datacenter (název/město/země/stát), company (název/url), ip, version, lon/lat a pools.

200 OK
[
  {
    "id": "a1b2c3d4-...-0001",
    "upFrom": "2024-06-20T08:00:00Z",
    "datacenter": { "name": "Example Hosting", "city": "Frankfurt", "country": "DE", "state": "" },
    "company": { "name": "Example Hosting", "url": "https://example-hosting.com" },
    "ip": "203.0.113.10",
    "version": "1.4.2",
    "lon": 8.68, "lat": 50.11,
    "pools": []
  }
]

GET agents/pools

Seznam veřejných skupin agentů (geografických regionů). Každá skupina nese id, desc, své agents, childPools a hidden. Použijte hodnoty id skupiny v poli úlohy agentPools.

GET agents/ips anonymní

Vrátí aktuální IP adresy monitorovacích agentů — užitečné pro zařazení Host-Tracker do bílé listiny firewallu. Tento endpoint nevyžaduje autentizaci. Standardně vrací text/plain, jednu IP na řádek; pošlete Accept: application/json pro získání pole JSON místo toho.

text/plain (výchozí)
203.0.113.10
203.0.113.11
198.51.100.7
s Accept: application/json
["203.0.113.10", "203.0.113.11", "198.51.100.7"]
Host-Tracker REST API v1 — host-tracker.com. Strojově čitelný Swagger/OpenAPI je dostupný na BASE_URL/docs/v1 s interaktivním sandboxem na BASE_URL/sandbox.