Geen overeenkomende secties.
Host-Tracker REST API v1
Een stabiele, token-geauthenticeerde HTTP-API voor het beheren van website-monitoringtaken, contacten, meldings-/rapportageabonnementen en het uitlezen van statistieken, uitval en incidenten.
Basis-URL
Elk pad in dit document is relatief ten opzichte van een basis-URL. Twee toegangspunten bedienen dezelfde API:
| Toegangspunt | Basis-URL (BASE_URL) | Opmerkingen |
|---|---|---|
| Direct | https://api1.host-tracker.com/ | Aanbevolen voor server-naar-server-integraties. |
| Via de hoofdsite | https://www.host-tracker.com/api/web/v1/ | Reverse-proxied naar dezelfde service. Handig wanneer u al met www.host-tracker.com communiceert. |
In deze referentie betekent een aanroep geschreven als GET tasks
GET BASE_URL/tasks — bijvoorbeeld https://api1.host-tracker.com/tasks
of https://www.host-tracker.com/api/web/v1/tasks.
Content type & HTTP-methoden
Requests en responses zijn standaard application/json (zie
Conventies voor XML). De API gebruikt standaard HTTP-methoden:
- GET — entiteiten lezen (taken, contacten, abonnementen, statistieken, uitval, incidenten, agents).
- POST — een entiteit aanmaken of een actie starten.
- PUT — bestaande entiteiten bijwerken.
- DELETE — entiteiten verwijderen.
- PATCH — gedeeltelijke updates (gebruikt om een bevestigingscode voor een contact opnieuw te versturen).
Override van de HTTP-methode
Als uw client geen PUT, DELETE of
PATCH kan versturen, stuur dan een POST en voeg een
X-HTTP-Method-Override-header toe met daarin het bedoelde werkwoord. Om
bijvoorbeeld taken bij te werken, doet u een POST naar tasks met
X-HTTP-Method-Override: PUT.
Conventies
JSON-serialisatie
JSON gebruikt camelCase-eigenschapsnamen. Null-velden worden weggelaten uit responses (lege arrays
worden nog altijd als [] teruggegeven). De volgorde van eigenschappen is
stabiel: eerst identifier en adres/url, dan geërfde velden, dan type-specifieke velden.
Datum & tijd
Responses van het aanmaken/lezen van taken bevatten tijdstempels als ISO-8601 UTC-strings (bijvoorbeeld
2024-06-21T22:26:23Z). De endpoints voor statistieken, uitval, incidenten en
resultaten gebruiken daarnaast een dubbele representatie: elke tijd verschijnt zowel als een
Unix-seconden-integerveld (achtervoegsel Unix) als een leesbare string,
geformatteerd volgens het datumformaat en de tijdzone van het accountprofiel. Requestfilters accepteren
Unix-seconden en/of geformatteerde strings, afhankelijk van het endpoint (per endpoint hieronder
gedocumenteerd). Alle Unix-tijdstempels zijn seconden sinds
1970-01-01T00:00:00Z.
XML content negotiation
Alle endpoints kunnen ook XML teruggeven. Stuur Accept: application/xml om een
XML-body te ontvangen in plaats van JSON; de response gebruikt de klassieke .NET-XmlSerializer-representatie
van dezelfde objectgraaf. JSON is het standaard- en aanbevolen formaat.
CORS
Cross-origin requests zijn toegestaan. Gewone (niet-credentialed) requests worden van elke origin
geaccepteerd (Access-Control-Allow-Origin: *). Requests die cookies/credentials
meesturen worden alleen geaccepteerd van *.host-tracker.com-origins.
Token-gebaseerde aanroepers (die de Authorization-header gebruiken, zoals hier
gedocumenteerd) ondervinden geen hinder van de beperking op credentialed origins.
Authenticatie
Elk endpoint behalve POST users/token en de anonieme agent-lijst-endpoints
vereist authenticatie. Twee schema's worden geaccepteerd:
- Bearer-token — verkregen via
POST users/token, verstuurd alsAuthorization: bearer <token>. Dit is het primaire schema. - HTTP Basic —
Authorization: Basic <base64(login:password)>. Credentials worden gedecodeerd als ISO-8859-1. Handig voor snelle tests; voor automatisering heeft het bearer-token de voorkeur.
POST users/token anoniem
Wissel een login en wachtwoord in voor een bearer-token. Het token is 48 uur geldig.
Requestbody
{
"login": "your-login",
"password": "your-password"
}
| Veld | Type | Beschrijving |
|---|---|---|
login | string | Accountlogin. Verplicht. Het e-mailadres van het account wordt ook geaccepteerd. |
password | string | Accountwachtwoord. Verplicht. |
forLogin | string | Optioneel. De login van het hoofdaccount namens wie wordt opgetreden (subaccount-impersonatie — zie hieronder). |
Response — 200 OK
{
"ticket": "<bearer token>",
"expirationTime": "2024-06-23T22:26:23Z",
"expirationUnixTime": 1719181583
}
Bij een mislukte aanroep is de response 401 met machinecode
IncorrectLoginOrPassword (of AccessDenied als
API-toegang voor het account is uitgeschakeld) en een WWW-Authenticate: Bearer-header.
Het token gebruiken
GET BASE_URL/tasks HTTP/1.1
Host: api1.host-tracker.com
Accept: application/json
Authorization: bearer 3DD135...5EE510417
Subaccount-impersonatie (forLogin)
Als een hoofdaccount uw subaccount toegang tot zijn gegevens heeft verleend, logt u in als het subaccount
maar geeft u de login van het hoofdaccount door in forLogin. Het geretourneerde
token laat u vervolgens het hoofdaccount beheren precies alsof de endpoints voor uw eigen account werden
aangeroepen, met inachtneming van de rechten die het hoofdaccount heeft verleend. Als bijvoorbeeld
alleen-lezen toegang tot monitoringtaken is verleend, slagen GET-aanroepen wel maar worden POST/PUT/PATCH/DELETE
op taken geweigerd.
# 1. Obtain an impersonation token
POST BASE_URL/users/token HTTP/1.1
Content-Type: application/json
{
"login": "subaccount-login",
"password": "subaccount-password",
"forLogin": "superaccount-login"
}
# 2. Use the returned ticket to read the SUPER-account's tasks
GET BASE_URL/tasks HTTP/1.1
Authorization: bearer <ticket from step 1>
curl
# fetch a token and store it
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)
# call an authenticated endpoint
curl -s https://api1.host-tracker.com/tasks \
-H "Authorization: bearer $TOKEN"
Fouten & machinecodes
Fouten geven een standaard HTTP-statuscode plus een korte machineleesbare code terug waarop uw integratie kan vertakken. De body is een platte-tekst Engelse beschrijving (geen JSON), bedoeld voor mensen/logs.
De machinecode wordt op twee manieren geleverd:
X-HT-Reasonresponse-header — bevat de code bij elke response en elke HTTP-versie. Dit is de aanbevolen manier om het foutentype te detecteren.- HTTP/1.1 reason phrase — de statusregel luidt bijvoorbeeld
HTTP/1.1 400 SimilarExists. Behouden voor achterwaartse compatibiliteit, maar let op dat HTTP/2 en HTTP/3 reason phrases uit het protocol hebben verwijderd, dus dit veld kan leeg zijn wanneer de verbinding HTTP/2+ onderhandelt. Geef de voorkeur aanX-HT-Reason.
HTTP/1.1 400 SimilarExists
X-HT-Reason: SimilarExists
Content-Type: text/plain; charset=utf-8
Same task allready exists
401
terug met WWW-Authenticate: Bearer en een van
AccessDenied, WrongTicket,
TicketExpired of IncorrectLoginOrPassword.
Overzicht foutcodes
Elke machinecode die de API kan teruggeven, gegroepeerd per gebied, met de gebruikelijke HTTP-status. Tenzij
anders vermeld zijn fouten 400 Bad Request.
Authenticatie
| Code | Status | Betekenis |
|---|---|---|
AccessDenied | 401 | API-toegang is uitgeschakeld voor dit account, of de aanroeper heeft niet de vereiste rechten. |
IncorrectLoginOrPassword | 401 | Login/wachtwoord geweigerd bij users/token. |
WrongTicket | 401 | Het bearer-token is misvormd / onleesbaar. |
TicketExpired | 401 | Het bearer-token is verlopen — vraag een nieuw token aan. |
RequestThrottled | 429 | Rate limit overschreden (zie Rate limits). Bevat Retry-After. |
Taken
| Code | Status | Betekenis |
|---|---|---|
NotFound | 404 | De opgevraagde taak bestaat niet. |
SimilarExists | 400 | Er bestaat al een taak met hetzelfde type en dezelfde sleutel (tenzij het account gelijksoortige taken toestaat). |
EmptyTaskData | 400 | Geen taakgegevens meegegeven. |
UncomplitedData | 400 | De taakgegevens zijn onvolledig. |
NoIdInTaskData | 400 | Er is een update gevraagd maar het taak-id ontbreekt. |
WrongEditableTaskDataType | 400 | Het type van de bewerkings-payload komt niet overeen met het type van de doeltaak. |
WrongTaskType | 400 | Onbekend taaktype. |
WrongTaskStatus | 400 | Niet-ondersteunde status-waarde (verwacht wordt Enabled/Disabled). |
WrongInterval | 400 | Het monitoringinterval is niet een van de geaccepteerde waarden (zie tasks/intervals). |
EmptyUrl | 400 | Geen URL/host meegegeven voor een taak die er een vereist. |
WrongUrl | 400 | De URL is ongeldig. |
WrongSchema | 400 | Niet-ondersteund URL-schema. |
BadIP | 400 | De URL verwijst naar een geweigerd of misvormd IP-adres. |
UrlInBlackList | 400 | De URL staat op een interne blokkeerlijst. |
WrongHttpMethod | 400 | Niet-ondersteunde HTTP-methode voor een HTTP-taak (toegestaan: Get, Post, Head). |
WrongKeywordMode | 400 | Niet-ondersteunde keyword-modus. |
WrongPort | 400 | Ongeldige poort voor een porttaak. |
WrongAgentPool | 400 | Een of meer opgevraagde agent pools bestaan niet. Het bericht vermeldt de foutieve en beschikbare pools. |
SelectMoreAgents | 400 | De geselecteerde agent pools bevatten niet genoeg agents (7 vereist). Het bericht vermeldt de aantallen per pool. |
ApiFullLogNotAllowed | 400 | fullLog is alleen beschikbaar bij geavanceerde pakketten. |
WrongExpectedSLA | 400 | expectedSLA moet tussen 0 en 100 liggen. |
WrongDate | 400 | Ongeldige start-/einddatum in een filter. |
WrongDateFormat | 400 | Een datumstring kwam niet overeen met het vereiste formaat (vermeld in het bericht). |
EndDateIsGreaterThanStartDate | 400 | De startdatum moet ≤ de einddatum zijn. |
StartEndIntervalIsTooBig | 400 | Een resultatenquery zou meer dan 10 000 rijen teruggeven. Het bericht bevat het toegestane interval (zie GET tasks). |
WrongSubscription | 400 | Een inline abonnement op de taakbody is ongeldig (de code/het bericht van het onderliggende abonnement wordt doorgegeven). |
EmptyFilter | 400 | Een bulk-DELETE tasks is verstuurd met een leeg filter (geweigerd om te voorkomen dat het hele account wordt verwijderd). |
Contacten
| Code | Status | Betekenis |
|---|---|---|
NotFound | 404 | Het opgevraagde contact bestaat niet. |
SimilarExists | 400 | Er bestaat al een contact met hetzelfde type, dezelfde gateway, hetzelfde adres en dezelfde meldingsvertraging. |
EmptyContactData | 400 | Geen contactgegevens meegegeven. |
UncomplitedData | 400 | De contactgegevens zijn onvolledig. |
NoIdInContactData | 400 | Er is een update gevraagd maar het contact-id ontbreekt. |
EmptyAddress | 400 | Geen adres meegegeven bij het aanmaken van een contact. |
WrongContactType | 400 | Onbekend contacttype (ook geretourneerd voor het uitgefaseerde IM-aanmaak-/updatepad). |
WrongEditableContactDataType | 400 | Het type van de bewerkings-payload komt niet overeen met het type van het doelcontact. |
WrongEmailFormat | 400 | Ongeldig e-mailadres, of een niet-ondersteund e-mailrapportformaat. |
WrongPhoneFormat | 400 | Een telefoonnummer mag alleen cijfers bevatten (een voorloop-+ is toegestaan). |
WrongSmsGateway | 400 | Onbekende sms-gateway. |
WrongIMGateway | 400 | Onbekende IM-gateway. |
WrongAlertDelay | 400 | alertDelay is niet een van de geaccepteerde waarden (zie contacts/delays). |
WrongActivePeriodInterval | 400 | Ongeldige start/einde van de actieve periode. |
WrongActiveDay | 400 | Niet-ondersteunde naam voor een actieve dag. |
EmptyFilter | 400 | Een bulk-DELETE contacts is verstuurd met een leeg filter (geweigerd). |
Abonnementen
| Code | Status | Betekenis |
|---|---|---|
AlertsAndReportsAreEmpty | 400 | Een abonnementregel geeft noch meldingtypen noch rapportagetypen op. |
UnknownAlertType | 400 | Een meldingtype is niet een van Up, Down, RepeatedlyDown. |
UnknownReportType | 400 | Een rapportagetype is niet een van Day, Week, Month, Quarter, Year. |
Rate limits
Requests zijn per client en per endpoint aan een rate limit gebonden. Het overschrijden van een limiet geeft
429 terug met machinecode RequestThrottled en een
Retry-After-header (seconden).
| Bereik | Limiet |
|---|---|
| Algemene endpoints, per account + endpoint | 6 requests/seconde en 120 requests/minuut |
Bevestigingscode-endpoints (contacts/{id}/code), per account + endpoint | 1 request/seconde en 2 requests/minuut |
| Anonieme endpoints | Dezelfde 6/s + 120/min, gesleuteld per client-IP-adres |
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."
Monitoringtaken
GET tasks/types
Geeft de array van taaktype-namen terug die het systeem kent:
["API","CntCheck","Counter","DNSBL","Database","DomainExp","Http",
"Ping","Port","RusRegBL","SSLExp","Snmp","Tran","Waterfall","WebRisk"]
tasks/http, tasks/ping,
tasks/port, tasks/rusbl).
GET tasks/intervals
Geeft de array van monitoringintervallen (in minuten) terug die voor uw account zijn toegestaan, bijvoorbeeld
[1,5,15,30,60]. Gebruik een van deze waarden voor het veld
interval bij het aanmaken van een taak; elke andere waarde levert
WrongInterval op.
GET tasks
Lijst van monitoringtaken. Alle queryparameters zijn optioneel; zonder parameters worden alle taken van het
account teruggegeven. Herhaal een parameter om een array door te geven, bijvoorbeeld
?ids=guid1&ids=guid2.
De parameter info
Vraagt extra gegevens op die in elke taak worden ingebed. Combineer waarden met komma's
(?info=stats,subscriptions) of geef het equivalente bitmask-integer door:
| Waarde | Bit | Effect |
|---|---|---|
subscriptions | 1 | Neem de meldings-/rapportageabonnementen van de taak op in subscriptions. |
stats | 2 | Neem dagelijkse/maandelijkse/jaarlijkse/totale uptime op in stats. |
results | 4 | Neem controleresultaten voor het venster sdtu…edtu op in results (laatste resultaat als het venster wordt weggelaten). |
attachedResults | — | Neem de laatste resultaten van gekoppelde controles (certificaat, domeinverloop, DNSBL) op in attached. Vereist de bijbehorende check…-vlaggen op de taak. |
?info=stats,subscriptions,results is gelijk aan ?info=7.
Filterparameters
| Parameter | Type | Beschrijving |
|---|---|---|
ids | guid[] | Geef alleen deze taak-id's terug. Gebruik voor één id bij voorkeur GET tasks/{id}. |
excludeIds | bool | Samen met ids: geef alles terug behalve die id's. |
taskType / taskTypes | string / string[] | Filteren op taaktype (hoofdlettergevoelig), bijvoorbeeld Http. |
excludeTaskTypes | bool | Keer het typefilter om. |
status | string | Enabled of Disabled (door de gebruiker uitgeschakeld). Bijvoorbeeld ?status=Disabled. |
url / urls | string / string[] | Filteren op URL. Waarden in urls moeten URL-gecodeerd zijn. |
urlSearchLike | bool | Samen met url (niet urls): deelstring-match in plaats van exacte match. |
excludeUrls | bool | Keer het URL-filter om. |
name / names | string / string[] | Filteren op taaknaam. name/names gecombineerd met id/ids is een OR; gecombineerd met andere filters is het een AND. |
nameSearchLike | bool | Samen met name: deelstring-match. |
excludeNames | bool | Keer het naamfilter om. |
interval / intervals | int / int[] | Filteren op monitoringinterval (minuten). |
excludeIntervals | bool | Keer het intervalfilter om. |
openStat | bool | Openbare taken (openbare statistieken/gebeurtenislog). |
lastState | bool | true = momenteel up, false = momenteel down. |
tags | string[] | Filteren op tag. |
overlimited | bool | Taken met (true) of zonder (false) een billing-overlimit. |
active | bool | true = actief, false = systeemmatig uitgeschakeld (overlimit, laag saldo, …). Gebruik voor door de gebruiker uitgeschakelde taken status. |
sdtu / edtu | int64 | Unix-seconden (UTC) van start/einde van een venster. Alleen gebruikt wanneer info=results is ingesteld; geef beide op. edtu moet > sdtu zijn. |
(edtu − sdtu) × (#taken) / (gem. interval)
niet meer dan 10 000 bedragen. Anders is de response 400 StartEndIntervalIsTooBig,
waarvan het bericht het grootste passende interval bevat. Deze limiet geldt alleen voor het lezen van taakresultaten.
Response — 200 OK
Een array van taakobjecten. De exacte velden hangen af van het taaktype; de gemeenschappelijke basis omvat
id, name, taskType,
enabled, interval,
lastState, creationTime,
tags, agentPools, en (indien opgevraagd via
info) subscriptions,
stats, results en
attached. Wanneer resultaten worden opgenomen, bevat elk resultaat ten minste
timestamp (Unix-seconden UTC) en eventNumber; de
overige velden zijn taaktype-specifiek (zie de create-response hieronder voor de HTTP-vorm).
GET BASE_URL/tasks?info=stats,subscriptions&taskType=Http HTTP/1.1
Accept: application/json
Authorization: bearer <token>
GET tasks/{id:guid}
Haal één taak op via id. Accepteert dezelfde parameter info (en
sdtu/edtu wanneer info=results).
Geeft het taakobject terug, of 404 NotFound als het niet bestaat.
POST tasks/http · tasks/ping · tasks/port · tasks/rusbl
Maak een monitoringtaak van het opgegeven type aan. Bij succes wordt 201 Created
teruggegeven, samen met een relatieve Location: /tasks/{id}-header en het
volledige aangemaakte taakobject.
Requestbody — HTTP-taak
{
// HTTP-specific fields
"url": "https://www.example.com", // REQUIRED
"httpMethod": "Get", // Get | Post | Head (default Get)
"userAgent": "MyMonitor",
"referer": "https://www.google.com",
"acceptHeader": "application/json",
"followRedirect": false,
"treat300AsError": false, // if set, followRedirect is ignored
"checkDnsbl": false, // check domain against DNS block lists
"checkDomainExpiration": false, // monitor domain expiry (valid domains only)
"checkCertificateExpiration": false, // monitor TLS cert expiry (https only)
"checkRussianBlackLists": false,
"checkWebRisk": false,
"timeout": 40000, // ms before a check fails
"keywords": ["error", "maintenance"],
"keywordMode": "ReverseAny", // see keyword modes below
"userName": "basic-auth-user", // credentials for the monitored resource
"password": "basic-auth-pass",
"postParameters": "a=1\r\nb=2", // only with httpMethod=Post
"ignoredStatuses": [404, 500],
// fields common to every task type
"interval": 5, // minutes; must be an accepted interval
"enabled": true,
"fullLog": false, // advanced packages only
"openStat": true,
"name": "My website",
"tags": ["production", "web"],
"agentPools": ["westeurope", "asia"], // see notes below
"subscriptions": [ /* inline subscriptions, see below */ ]
}
| Keyword-modus | De taak is OK wanneer… |
|---|---|
PresentAny | elk keyword aanwezig is in de response. |
PresentAll | alle keywords aanwezig zijn. |
ReverseAny | alle keywords afwezig zijn. |
ReverseAll | enig keyword afwezig is. |
ReverseWithResult | alle keywords afwezig zijn; het foutbericht bevat de rest van de responseregel waarin het eerste keyword voorkwam (de eerste 100 tekens van elke geanalyseerde regel). |
agentPools selecteert de monitoringlocaties. Dit veld is optioneel (anders
wordt de profielstandaard gebruikt). Indien opgegeven, moeten de pools samen ten minste 7 agents bevatten,
anders mislukt de request met SelectMoreAgents. Onbekende pool-id's mislukken met
WrongAgentPool. Pool-id's komen uit GET agents/pools.
Inline abonnementen
De array subscriptions abonneert contacten op de meldingen/rapportages van deze
taak op het moment van aanmaken. Elke regel gebruikt de abonnementsvorm; stel
taskIds niet in (dit staat vast op de nieuwe taak). Als
contactIds wordt weggelaten, worden al uw bevestigde contacten geabonneerd.
Rapportage-abonnementen worden alleen toegepast op e-mailcontacten.
Andere taaktypen
tasks/ping— body bevathostplus de gemeenschappelijke velden.tasks/port— body bevathostenportplus de gemeenschappelijke velden.tasks/rusbl— controle op de Russische registerblokkeerlijst; body bevaturl, plusignoreWarnings,doNotSendMsgOnWarnings,prefixMatchen de gemeenschappelijke velden.
Response — 201 Created (HTTP-taak)
{
"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 & typegebonden varianten
Taken bijwerken. Twee vormen:
- Op id —
PUT tasks/{id}(alleen gemeenschappelijke velden), of de typegebondenPUT tasks/http/{id},tasks/ping/{id},tasks/port/{id},tasks/rusbl/{id}(ook type-specifieke velden). De body heeft dezelfde bewerkbare vorm als bij het aanmaken; alleen de velden die u meestuurt worden gewijzigd. - Op filter —
PUT tasks?<filter>(alleen gemeenschappelijke velden) of de typegebondenPUT tasks/{type}?<filter>(die het filter aan dat type bindt). Gebruikt dezelfde filterparameters als GET tasks. Geeft de bijgewerkte taken/taak terug.
De ongetypeerde PUT tasks / PUT tasks/{id} kan alleen
velden raken die alle taaktypen gemeen hebben — gebruik een typegebonden endpoint om type-specifieke
instellingen te wijzigen.
DELETE tasks/{id:guid} & tasks
DELETE tasks/{id}— verwijder één taak; geeft de verwijderde taak terug.DELETE tasks?<filter>— bulkverwijdering via het taakfilter (een filter mag ook in de requestbody worden meegegeven). Geeft de verwijderde taken terug.
DELETE tasks zonder selectief
filter geeft 400 EmptyFilter terug in plaats van uw hele account te verwijderen.
Om alles opzettelijk te verwijderen, itereert u expliciet.
POST tasks/$batch · task/$batch
Voer meerdere taakbewerkingen uit in één request. De body is een JSON-array van subrequests; de response is
een JSON-array van subresponses in dezelfde volgorde. De subbewerking wordt gekozen op basis van het
laatste segment van relativeUrl (bijvoorbeeld http
→ POST tasks/http). De requestbody moet JSON zijn
(Content-Type: application/json). Hetzelfde mechanisme bestaat voor contacten
op contacts/$batch / contact/$batch.
| Requestveld | Type | Beschrijving |
|---|---|---|
method | string | HTTP-methode van de subrequest (POST, PUT, DELETE…). |
relativeUrl | string | Subresource; het laatste segment selecteert de bewerking (http, ping, port, rusbl…). |
contentType | string | Content type van content, meestal application/json. |
content | string | De subrequest-body, als JSON-string. |
| Responseveld | Type | Beschrijving |
|---|---|---|
code | int | HTTP-statuscode van de subresponse (bijvoorbeeld 201, 400). |
status | string | Reden-/statustekst (bevat de machinecode bij fouten). |
headers | object | Responseheaders van de subbewerking (bijvoorbeeld Location). |
body | string | De subresponse-body. |
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... }" }
]
Contacten
Contacten zijn de bestemmingen die meldingen en rapportages ontvangen (e-mailadressen, telefoonnummers voor sms/spraak). Contact-id's worden gebruikt bij het aanmaken van abonnementen.
GET contacts/types · contacts/delays · contacts/sms/gateways · contacts/im/gateways
Statische opsommingen die door de contact-endpoints worden gebruikt:
| Endpoint | Geeft terug |
|---|---|
contacts/types | ["Email","IM","SMS","VoiceCall"] — de contacttypen die deze API opsomt. Aanmaakbare typen zijn Email, SMS en VoiceCall (IM is uitgefaseerd — zie hieronder). |
contacts/delays | De geaccepteerde alertDelay-waarden (minuten): [0,5,15,30,60,180,720,360,1440,3]. |
contacts/sms/gateways | Sms-gateway-id's: ["clickatell","clickatella","infobip","skype","twiliosms"]. De standaard is twiliosms; overige items zijn legacy en mogelijk inactief. |
contacts/im/gateways | IM-gateway-id's: ["GTalk","SkypeChat"]. Alleen vermeld voor compatibiliteit — IM-contacten kunnen niet meer worden aangemaakt (zie hieronder). |
GET contacts/im/gateways geeft nog steeds
de gateway-lijst terug, maar POST contacts/im en
PUT contacts/im geven nu 400 WrongContactType
terug. Bestaande IM-contacten kunnen niet via deze API worden aangemaakt.
GET contacts & contacts/{id:guid}
Lijst van contacten (optioneel gefilterd) of één contact ophalen via id. Voeg
?info=subscriptions toe om de abonnementen van elk contact in te bedden. Zonder
filter worden alle contacten van het account teruggegeven.
| Filterparameter | Type | Beschrijving |
|---|---|---|
ids / excludeIds | guid[] / bool | Selecteren of uitsluiten op id. |
contactType / contactTypes | string / string[] | Filteren op type (Email, SMS, VoiceCall…). |
excludeContactTypes | bool | Keer het typefilter om. |
confirmed | bool | Bevestigde versus onbevestigde contacten. |
overlimited | bool | Contacten die de pakketlimiet overschrijden. |
acceptBillingNotifications | bool | Contacten die worden gebruikt voor factureringsmeldingen. |
name / names / nameSearchLike / excludeNames | string(s) / bool | Filteren op naam (exact, lijst, deelstring, of uitgesloten). |
address / addresses / addressSearchLike / excludeAddresses | string(s) / bool | Filteren op adres. |
Contactobject
Gemeenschappelijke velden: id, confirmed,
contactType, name,
address, alertDelay,
activePeriodStart/activePeriodEnd (HH:mm),
activeDays, sendCost. E-mailcontacten voegen
reportFormat (Text/ShortText),
sendNews, sendBillingNotifications toe; sms-/IM-contacten
voegen gateway toe.
POST contacts/email · contacts/sms · contacts/voice
Maak een contact aan. Geeft 201 Created terug, een relatieve
Location: /contacts/{id}, en een ContactOperationResult
({ contact, status }) waarvan status de uitkomst van
de bevestiging meldt.
{
"address": "ops@@example.com", // REQUIRED
"name": "Ops mailbox",
"alertDelay": 0, // minutes; one of contacts/delays
"reportFormat": "Text", // Text | ShortText (email only)
"activePeriodStart": "00:00", // optional quiet-hours window (HH:mm)
"activePeriodEnd": "23:59",
"activeDays": ["Monday", "Tuesday"], // optional; default all days
"subscriptions": [ /* optional inline subscriptions */ ]
}
| Veld | Van toepassing op | Opmerkingen |
|---|---|---|
address | alle | E-mailadres, of telefoonnummer (cijfers, optionele voorloop-+) voor sms/spraak. Verplicht bij aanmaken. |
alertDelay | alle | Minuten wachten voordat wordt gealarmeerd. Moet een van contacts/delays zijn. |
activePeriodStart / activePeriodEnd | alle | HH:mm; het venster waarbinnen meldingen worden afgeleverd. |
activeDays | alle | Elke dag van Sunday…Saturday; standaard is elke dag. |
reportFormat, sendNews, sendBillingNotifications | E-mailopties. | |
gateway | sms | Een van contacts/sms/gateways; standaard twiliosms. |
Sms- en spraakcontacten gebruiken standaard de gateways twiliosms /
twiliovoice, krijgen een standaardprijs per bericht, en slaan het nummer op met
een voorloop-+. Het wijzigen van het adres of de gateway van een contact zet de
bevestigde status terug.
Waarden van de bevestigingsstatus
Het veld status van het resultaat meldt de uitkomst van het versturen van de
bevestigingscode:
| Status | Betekenis |
|---|---|
Confirmed | Contact aangemaakt en al bevestigd (geen code nodig). |
CodeSent | Er is een bevestigingscode verstuurd; het contact wordt actief zodra het is bevestigd. |
CodeSentEarlier | Er is recent al een code verstuurd en deze is nog geldig. |
CodeFail | Contact aangemaakt maar het versturen van de code is mislukt; probeer het later opnieuw. |
LowSmsBalance | De code kon niet worden verstuurd omdat het accountsaldo te laag is. |
Overlimited | Het contact overschrijdt de pakketlimiet. |
PUT contacts & typegebonden varianten
- Op id —
PUT contacts/{id}(gemeenschappelijke velden), of de typegebondenPUT contacts/email/{id},contacts/sms/{id},contacts/voice/{id}. Alleen de velden die u meestuurt worden gewijzigd. - Op filter —
PUT contacts?<filter>of de typegebondenPUT contacts/{type}?<filter>(die het filter aan dat type bindt), met het contactfilter.
PUT contacts/im (beide vormen) geeft 400 WrongContactType terug.
DELETE contacts/{id:guid} & contacts
Verwijder één contact via id, of bulkverwijdering via het contactfilter. Net als
bij taken wordt een bulkverwijdering met een leeg filter geweigerd met 400 EmptyFilter.
Bevestigingscodes
Onbevestigde contacten moeten hun eigendom bevestigen met een korte code die naar het contactadres wordt afgeleverd.
PATCH contacts/{id}/code— geef opnieuw een bevestigingscode uit en verstuur deze. Geeft eenContactOperationResultterug met een status zoalsCodeSent.POST contacts/{id}/code— bevestig het contact door de code in te dienen. Body:{ "code": "12345" }. Bij succes wordt het contact bevestigd.
Meldingen & abonnementen
Een abonnement koppelt een of meer taken en contacten aan een set meldings- en/of rapportagetypen. Eén abonnementregel kruist zijn taken en contacten, wat één melding/rapportage per (taak, contact, type) oplevert.
Vorm van een abonnement
{
"alertTypes": ["Up", "Down"], // any of Up, Down, RepeatedlyDown
"reportTypes": ["Day", "Month"], // any of Day, Week, Month, Quarter, Year
"taskIds": ["<task guid>"],
"contactIds": ["<contact guid>"]
}
- Ten minste een van
alertTypes/reportTypesis verplicht, andersAlertsAndReportsAreEmpty. - Het weglaten van
taskIdsvalt terug op al uw taken; het weglaten vancontactIdsvalt terug op al uw contacten. Een expliciete lege array betekent "geen". - Rapportage-abonnementen zijn alleen van toepassing op e-mailcontacten — rapportagetypen op niet-e-mailcontacten worden stilzwijgend genegeerd (hun meldingsabonnementen worden nog wel aangemaakt).
- Id's die u niet bezit worden genegeerd.
GET subscriptions/alertTypes · subscriptions/reportTypes
| Endpoint | Geeft terug |
|---|---|
subscriptions/alertTypes | ["Up","Down","RepeatedlyDown"] |
subscriptions/reportTypes | ["Day","Week","Month","Quarter","Year"] |
GET subscriptions
Lijst van abonnementen. Geeft één regel per gevonden meldings- of rapportageabonnement terug (nooit samengevoegd). Optionele filters:
| Parameter | Type | Beschrijving |
|---|---|---|
taskId | guid | Alleen abonnementen voor deze taak. |
contactId | guid | Alleen abonnementen voor dit contact. |
types | string[] | Alleen deze meldings-/rapportagetypen. Onherkende namen worden hier genegeerd (in tegenstelling tot POST/DELETE, die ze weigeren). |
POST subscriptions · DELETE subscriptions
Beide nemen een JSON-array van abonnementregels in de body. POST voegt de beschreven abonnementen toe
(alleen nieuwe rijen worden ingevoegd); DELETE verwijdert de abonnementen die bestaan. Beide geven
200 OK terug met een lege body. Onbekende meldings-/rapportagetypen worden
geweigerd met 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>"]}]'
Statistieken & resultaten
GET stats
Uptime-/downtime-aggregaten per taak over een tijdvenster. Accepteert het taakfilter om taken te selecteren, plus:
| Parameter | Type | Beschrijving |
|---|---|---|
statsStartUnix / statsEndUnix | int64 | Start/einde van het venster als Unix-seconden (UTC). |
statsStart / statsEnd | string | Start/einde van het venster als een profiel-geformatteerde datumstring (alternatief voor de Unix-velden). |
expectedSLA | double | 0–100. Indien ingesteld, meldt elk resultaat slaExpectationSucceeded. |
fullTask | bool | Neem het volledige taakobject op in plaats van alleen de referentie ernaartoe. |
Response
Een Stats-object met het opgeloste venster (dubbele datumvelden) en een array
stats. Elke regel bevat de taakreferentie en:
uptimeInMinutes/uptimeSpan,
downtimeInMinutes/downtimeSpan,
onderhoudsuptime/-downtime, totalTimeInMinutes, de aantallen controles per
bucket, en uptimePercent/downtimePercent.
uptime% = (uptime + maintenanceUptime) / (totalTime − maintenanceDowntime).
Als de totale tijd gelijk is aan de onderhoudsdowntime is het percentage null (ongedefinieerd).
slaExpectationSucceeded is uptime% ≥ expectedSLA.
GET outages
Downtime-periodes per taak. Accepteert het taakfilter plus:
| Parameter | Type | Beschrijving |
|---|---|---|
startTimeUnix / endTimeUnix | int64 | Venster als Unix-seconden (UTC). |
startTime / endTime | string | Venster als profiel-geformatteerde strings. |
getInUtcTimeZone | int | Indien ingesteld, zijn geformatteerde tijden UTC in plaats van de profieltijdzone. |
fullTask | bool | Neem het volledige taakobject op. |
Response: een Outages-object met het opgeloste venster en een array
taskOutages; elk element koppelt een taak aan zijn
outages-periodes (startTime/endTime
+ Unix-varianten, gebeurtenisnummers, optioneel commentaar).
GET incident
Lijst van incidenten (storingsgebeurtenissen) per taak. Accepteert het taakfilter plus dezelfde venster-/tijdzoneparameters als bij uitval, en:
| Parameter | Type | Beschrijving |
|---|---|---|
startTimeUnix / endTimeUnix / startTime / endTime | int64 / string | Venster (Unix en/of geformatteerd). |
getInUtcTimeZone | int | Formatteer tijden in UTC. |
fullTask | bool | Neem het volledige taakobject op. |
fullLog | bool | Neem het gedetailleerde per-agent hercontrole-log op. Vereist een geavanceerd pakket, anders ApiFullLogNotAllowed. |
Response: een Incidents-object met een array
taskIncidents. Elk incident bevat taskId,
checkId, start-/eindtijd in Unix, de falende
location, de error,
hasSnapshot, en (met fullLog) een blok
recheck met de OK-locaties en de falende locaties per fout.
GET incident/snapshot
Haal de opgeslagen response-snapshot op die voor een incident is vastgelegd. Parameters:
| Parameter | Type | Beschrijving |
|---|---|---|
taskId | guid | De taak. Verplicht. |
checkId | int64 | De controle-/gebeurtenis-id. |
timestampUnixUtc | int64 | Het tijdstip van het incident (Unix-seconden UTC). |
Geeft de snapshot terug (een tijdstip plus de vastgelegde bytes) indien aanwezig, of
null als er geen snapshot voor het opgegeven incident bestaat.
GET results/http
Geaggregeerde HTTP-timingmetingen per taak. Dwingt taaktype Http af. Accepteert
het taakfilter plus:
| Parameter | Type | Beschrijving |
|---|---|---|
resultStartUnix / resultEndUnix | int64 | Venster als Unix-seconden (UTC). |
resultStart / resultEnd | string | Venster als profiel-geformatteerde strings. |
fullTask | bool | Neem het volledige taakobject op. |
Response: een AggregatedHttpResults-object; elke regel in
taskResults meldt de taakreferentie en de gemiddelde
responseTime, dnsTime,
headTime, dataTime (milliseconden).
GET cr/httpResponseTime
Reeks HTTP-responstijden per taak. Accepteert het taakfilter plus
startDate, endDate en
groupBy. Geeft een kale array van reeksobjecten terug:
[
{
"id": "ef10cd12-93f9-e311-bec5-dc85de1f0bc2",
"rawUrl": "https://www.example.com",
"name": "My website",
"results": [ [1719181583, 142], [1719177983, 138] ] // [unixSeconds, responseTimeMs], newest first
}
]
Agents
Agents zijn de geografisch verspreide monitoringlocaties. De hier teruggegeven pool-id's zijn de waarden die
u doorgeeft in de agentPools van een taak.
GET agents
Lijst van monitoringagents. Optionele queryparameter:
| Parameter | Type | Beschrijving |
|---|---|---|
touched | int | Alleen agents die zich binnen de laatste N minuten hebben gemeld. Waarden ≤ 0 (of afwezig) betekenen geen filter; anders wordt afgekapt tot het bereik 1–10. |
Elke agent bevat id, upFrom,
datacenter (naam/stad/land/staat),
company (naam/url), ip,
version, lon/lat, en
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
Lijst van de openbare agent pools (geografische regio's). Elke pool bevat id,
desc, zijn agents,
childPools, en hidden. Gebruik de
pool-id-waarden in de agentPools van een taak.
GET agents/ips anoniem
Geeft de huidige IP-adressen van de monitoringagents terug — handig om Host-Tracker op een firewall
whitelisten. Dit endpoint vereist geen authenticatie. Standaard geeft het text/plain
terug, één IP per regel; stuur Accept: application/json om in plaats daarvan een
JSON-array te ontvangen.
203.0.113.10
203.0.113.11
198.51.100.7
["203.0.113.10", "203.0.113.11", "198.51.100.7"]