Žá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ů.
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í bod | Zá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ý jakoAuthorization: bearer <token>. Toto je primární schéma. - HTTP Basic —
Authorization: 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
{
"login": "your-login",
"password": "your-password"
}
| Pole | Typ | Popis |
|---|---|---|
login | string | Přihlašovací jméno účtu. Povinné. Akceptován je i e-mail účtu. |
password | string | Heslo účtu. Povinné. |
forLogin | string | Volitelné. 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
{
"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
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.
# 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
# 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ěteX-HT-Reason.
HTTP/1.1 400 SimilarExists
X-HT-Reason: SimilarExists
Content-Type: text/plain; charset=utf-8
Same task allready exists
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ód | Stav | Význam |
|---|---|---|
AccessDenied | 401 | Přístup k API je pro tento účet zakázán, nebo volající nemá potřebná práva. |
IncorrectLoginOrPassword | 401 | Přihlašovací jméno/heslo odmítnuto na users/token. |
WrongTicket | 401 | Bearer token je poškozený / nečitelný. |
TicketExpired | 401 | Platnost bearer tokenu vypršela — získejte nový. |
RequestThrottled | 429 | Překročeno omezení počtu požadavků (viz Omezení počtu požadavků). Obsahuje Retry-After. |
Úlohy
| Kód | Stav | Význam |
|---|---|---|
NotFound | 404 | Požadovaná úloha neexistuje. |
SimilarExists | 400 | Úloha se stejným typem a klíčem již existuje (pokud účet nepovoluje podobné úlohy). |
EmptyTaskData | 400 | Nebyla dodána žádná data úlohy. |
UncomplitedData | 400 | Data úlohy jsou neúplná. |
NoIdInTaskData | 400 | Byla požadována aktualizace, ale chybí id úlohy. |
WrongEditableTaskDataType | 400 | Typ dat v požadavku na úpravu neodpovídá typu cílové úlohy. |
WrongTaskType | 400 | Neznámý typ úlohy. |
WrongTaskStatus | 400 | Nepodporovaná hodnota status (očekáváno Enabled/Disabled). |
WrongInterval | 400 | Monitorovací interval není jednou z přijímaných hodnot (viz tasks/intervals). |
EmptyUrl | 400 | Nebyla dodána URL/host pro úlohu, která ji vyžaduje. |
WrongUrl | 400 | URL je neplatná. |
WrongSchema | 400 | Nepodporované schéma URL. |
BadIP | 400 | URL se překládá na zakázanou nebo neplatnou IP adresu. |
UrlInBlackList | 400 | URL je na interním blokovacím seznamu. |
WrongHttpMethod | 400 | Nepodporovaná HTTP metoda pro HTTP úlohu (povoleno: Get, Post, Head). |
WrongKeywordMode | 400 | Nepodporovaný režim klíčových slov. |
WrongPort | 400 | Neplatný port pro úlohu typu port. |
WrongAgentPool | 400 | Jedna nebo více požadovaných skupin agentů (pools) neexistuje. Zpráva uvádí neplatné i dostupné skupiny. |
SelectMoreAgents | 400 | Vybrané skupiny agentů neobsahují dostatek agentů (vyžadováno 7). Zpráva uvádí počty za jednotlivé skupiny. |
ApiFullLogNotAllowed | 400 | fullLog je dostupné pouze u pokročilých balíčků. |
WrongExpectedSLA | 400 | expectedSLA musí být mezi 0 a 100. |
WrongDate | 400 | Neplatné počáteční/koncové datum ve filtru. |
WrongDateFormat | 400 | Řetězec data neodpovídal požadovanému formátu (uvedenému ve zprávě). |
EndDateIsGreaterThanStartDate | 400 | Počáteční datum musí být ≤ koncové datum. |
StartEndIntervalIsTooBig | 400 | Dotaz 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). |
WrongSubscription | 400 | Vložený (inline) odběr v těle úlohy je neplatný (vnitřní kód/zpráva odběru je předána dál). |
EmptyFilter | 400 | Hromadné DELETE tasks bylo odesláno s prázdným filtrem (odmítnuto, aby se zabránilo smazání celého účtu). |
Kontakty
| Kód | Stav | Význam |
|---|---|---|
NotFound | 404 | Požadovaný kontakt neexistuje. |
SimilarExists | 400 | Kontakt se stejným typem, gatewayí, adresou a zpožděním upozornění již existuje. |
EmptyContactData | 400 | Nebyla dodána žádná data kontaktu. |
UncomplitedData | 400 | Data kontaktu jsou neúplná. |
NoIdInContactData | 400 | Byla požadována aktualizace, ale chybí id kontaktu. |
EmptyAddress | 400 | Při vytváření kontaktu nebyla dodána žádná adresa. |
WrongContactType | 400 | Neznámý typ kontaktu (vraceno i pro zrušenou cestu vytvoření/aktualizace IM). |
WrongEditableContactDataType | 400 | Typ dat v požadavku na úpravu neodpovídá typu cílového kontaktu. |
WrongEmailFormat | 400 | Neplatná e-mailová adresa nebo nepodporovaný formát e-mailových reportů. |
WrongPhoneFormat | 400 | Telefonní číslo smí obsahovat pouze číslice (úvodní + je povoleno). |
WrongSmsGateway | 400 | Neznámá SMS gateway. |
WrongIMGateway | 400 | Neznámá IM gateway. |
WrongAlertDelay | 400 | alertDelay není jednou z přijímaných hodnot (viz contacts/delays). |
WrongActivePeriodInterval | 400 | Neplatný začátek/konec aktivního období. |
WrongActiveDay | 400 | Nepodporovaný název aktivního dne. |
EmptyFilter | 400 | Hromadné DELETE contacts bylo odesláno s prázdným filtrem (odmítnuto). |
Odběry
| Kód | Stav | Význam |
|---|---|---|
AlertsAndReportsAreEmpty | 400 | Položka odběru neuvádí ani typy upozornění, ani typy reportů. |
UnknownAlertType | 400 | Typ upozornění není žádný z Up, Down, RepeatedlyDown. |
UnknownReportType | 400 | Typ 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).
| Rozsah | Limit |
|---|---|
| Běžné endpointy, na účet + endpoint | 6 požadavků / sekundu a 120 požadavků / minutu |
Endpointy potvrzovacích kódů (contacts/{id}/code), na účet + endpoint | 1 požadavek / sekundu a 2 požadavky / minutu |
| Anonymní endpointy | Stejné limity 6/s + 120/min, počítáno na IP adresu klienta |
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á:
["API","CntCheck","Counter","DNSBL","Database","DomainExp","Http",
"Ping","Port","RusRegBL","SSLExp","Snmp","Tran","Waterfall","WebRisk"]
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:
| Hodnota | Bit | Efekt |
|---|---|---|
subscriptions | 1 | Zahrne odběry upozornění/reportů úlohy v poli subscriptions. |
stats | 2 | Zahrne denní/měsíční/roční/celkovou dostupnost (uptime) v poli stats. |
results | 4 | Zahrne výsledky kontrol pro okno sdtu…edtu v poli results (poslední výsledek, pokud okno není zadáno). |
attachedResults | — | Zahrne 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
| Parametr | Typ | Popis |
|---|---|---|
ids | guid[] | Vrátí pouze tato id úloh. Pro jedno id upřednostněte GET tasks/{id}. |
excludeIds | bool | Spolu s ids: vrátí vše kromě těchto id. |
taskType / taskTypes | string / string[] | Filtr podle typu úlohy (rozlišuje velikost písmen), např. Http. |
excludeTaskTypes | bool | Invertuje filtr typu. |
status | string | Enabled nebo Disabled (vypnutí uživatelem). Např. ?status=Disabled. |
url / urls | string / string[] | Filtr podle URL. Hodnoty v urls musí být URL-kódované. |
urlSearchLike | bool | Spolu s url (nikoli urls): hledání podřetězce místo přesné shody. |
excludeUrls | bool | Invertuje filtr URL. |
name / names | string / string[] | Filtr podle názvu úlohy. Kombinace name/names s id/ids je OR; kombinace s dalšími filtry je AND. |
nameSearchLike | bool | Spolu s name: hledání podřetězce. |
excludeNames | bool | Invertuje filtr názvu. |
interval / intervals | int / int[] | Filtr podle monitorovacího intervalu (v minutách). |
excludeIntervals | bool | Invertuje filtr intervalu. |
openStat | bool | Veřejné úlohy (veřejná statistika/log událostí). |
lastState | bool | true = aktuálně dostupné, false = aktuálně nedostupné. |
tags | string[] | Filtr podle štítku (tagu). |
overlimited | bool | Úlohy s (true) nebo bez (false) překročeného fakturačního limitu. |
active | bool | true = aktivní, false = vypnuto systémem (překročení limitu, nízký zůstatek, …). Pro vypnutí uživatelem použijte status. |
sdtu / edtu | int64 | Unixové sekundy (UTC) začátku/konce okna. Použito pouze, je-li nastaveno info=results; zadejte obě hodnoty. edtu musí být > sdtu. |
(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).
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
{
// 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ž… |
|---|---|
PresentAny | v odpovědi je přítomno alespoň jedno klíčové slovo. |
PresentAll | jsou přítomna všechna klíčová slova. |
ReverseAny | chybí všechna klíčová slova. |
ReverseAll | chybí alespoň jedno klíčové slovo. |
ReverseWithResult | chybí 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 nesehostplus společná pole.tasks/port— tělo nesehostaportplus společná pole.tasks/rusbl— kontrola ruského registru blokovacích seznamů; tělo neseurl, dáleignoreWarnings,doNotSendMsgOnWarnings,prefixMatcha společná pole.
Odpověď — 201 Created (HTTP úloha)
{
"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
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 id —
PUT 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 filtru —
PUT 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.
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ř. http →
POST 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žadavku | Typ | Popis |
|---|---|---|
method | string | HTTP metoda dílčího požadavku (POST, PUT, DELETE…). |
relativeUrl | string | Dílčí zdroj; poslední segment určuje operaci (http, ping, port, rusbl…). |
contentType | string | Typ obsahu pole content, obvykle application/json. |
content | string | Tělo dílčího požadavku jako řetězec JSON. |
| Pole odpovědi | Typ | Popis |
|---|---|---|
code | int | HTTP stavový kód dílčí odpovědi (např. 201, 400). |
status | string | Text důvodu/stavu (u chyb nese strojový kód). |
headers | object | Hlavičky odpovědi dílčí operace (např. Location). |
body | string | Tělo dílčí odpovědi. |
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\"}"
}
]
[
{ "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:
| Endpoint | Vrací |
|---|---|
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/delays | Přijímané hodnoty alertDelay (v minutách): [0,5,15,30,60,180,720,360,1440,3]. |
contacts/sms/gateways | Id 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/gateways | Id IM gatewayí: ["GTalk","SkypeChat"]. Uvedeno pouze pro zpětnou kompatibilitu — kontakty IM již nelze vytvářet (viz níže). |
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 filtru | Typ | Popis |
|---|---|---|
ids / excludeIds | guid[] / bool | Vybere nebo vyloučí podle id. |
contactType / contactTypes | string / string[] | Filtr podle typu (Email, SMS, VoiceCall…). |
excludeContactTypes | bool | Invertuje filtr typu. |
confirmed | bool | Potvrzené vs. nepotvrzené kontakty. |
overlimited | bool | Kontakty označené jako překračující limit balíčku. |
acceptBillingNotifications | bool | Kontakty používané pro fakturační upozornění. |
name / names / nameSearchLike / excludeNames | string(s) / bool | Filtr podle názvu (přesný, seznam, podřetězec nebo vyloučení). |
address / addresses / addressSearchLike / excludeAddresses | string(s) / bool | Filtr 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í.
{
"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 */ ]
}
| Pole | Platí pro | Poznámky |
|---|---|---|
address | vše | E-mailová adresa, nebo telefonní číslo (číslice, volitelně úvodní +) pro SMS/hlas. Povinné při vytváření. |
alertDelay | vše | Minuty čekání před upozorněním. Musí být jedna z hodnot contacts/delays. |
activePeriodStart / activePeriodEnd | vše | HH:mm; okno, během kterého jsou upozornění doručována. |
activeDays | vše | Libovolné dny z Sunday…Saturday; výchozí je každý den. |
reportFormat, sendNews, sendBillingNotifications | Nastavení e-mailu. | |
gateway | sms | Jedna 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:
| Stav | Význam |
|---|---|
Confirmed | Kontakt byl vytvořen již potvrzený (kód nebyl potřeba). |
CodeSent | Byl odeslán potvrzovací kód; kontakt se stane aktivním po potvrzení. |
CodeSentEarlier | Kód již byl odeslán nedávno a je stále platný. |
CodeFail | Kontakt byl vytvořen, ale odeslání kódu selhalo; zkuste to později znovu. |
LowSmsBalance | Kód nebylo možné odeslat, protože zůstatek na účtu je příliš nízký. |
Overlimited | Kontakt překračuje limit balíčku. |
PUT contacts & typizované varianty
- Podle id —
PUT 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 filtru —
PUT 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íContactOperationResultse stavem, jako jeCodeSent.POST contacts/{id}/code— potvrzení kontaktu odesláním kódu. Tělo:{ "code": "12345" }. Při úspěchu se kontakt stane potvrzeným.
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
{
"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, jinakAlertsAndReportsAreEmpty. - Vynechání
taskIdsznamená výchozí hodnotu všechny vaše úlohy; vynechánícontactIdsznamená 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
| Endpoint | Vrací |
|---|---|
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:
| Parametr | Typ | Popis |
|---|---|---|
taskId | guid | Pouze odběry pro tuto úlohu. |
contactId | guid | Pouze odběry pro tento kontakt. |
types | string[] | 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.
[
{ "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 -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:
| Parametr | Typ | Popis |
|---|---|---|
statsStartUnix / statsEndUnix | int64 | Začátek/konec okna jako unixové sekundy (UTC). |
statsStart / statsEnd | string | Začátek/konec okna jako řetězec formátovaný podle profilu (alternativa k unixovým polím). |
expectedSLA | double | 0–100. Je-li nastaveno, každý výsledek uvádí slaExpectationSucceeded. |
fullTask | bool | Zahrne 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.
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:
| Parametr | Typ | Popis |
|---|---|---|
startTimeUnix / endTimeUnix | int64 | Okno jako unixové sekundy (UTC). |
startTime / endTime | string | Okno jako řetězce formátované podle profilu. |
getInUtcTimeZone | int | Je-li nastaveno, formátované časy jsou v UTC místo časového pásma profilu. |
fullTask | bool | Zahrne 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:
| Parametr | Typ | Popis |
|---|---|---|
startTimeUnix / endTimeUnix / startTime / endTime | int64 / string | Okno (unixové a/nebo formátované). |
getInUtcTimeZone | int | Formátovat časy v UTC. |
fullTask | bool | Zahrne celý objekt úlohy. |
fullLog | bool | Zahrne 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:
| Parametr | Typ | Popis |
|---|---|---|
taskId | guid | Úloha. Povinné. |
checkId | int64 | Id kontroly/události. |
timestampUnixUtc | int64 | Č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:
| Parametr | Typ | Popis |
|---|---|---|
resultStartUnix / resultEndUnix | int64 | Okno jako unixové sekundy (UTC). |
resultStart / resultEnd | string | Okno jako řetězce formátované podle profilu. |
fullTask | bool | Zahrne 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:
[
{
"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:
| Parametr | Typ | Popis |
|---|---|---|
touched | int | Pouze 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.
[
{
"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.
203.0.113.10
203.0.113.11
198.51.100.7
["203.0.113.10", "203.0.113.11", "198.51.100.7"]