Eşleşen bölüm yok.
Host-Tracker REST API v1
Web sitesi izleme görevlerini, kişileri, uyarı/rapor aboneliklerini yönetmek ve istatistikleri, kesintileri ve olayları okumak için token tabanlı, kararlı bir HTTP API'si.
Temel URL
Bu belgedeki her yol, bir temel URL'ye göredir. Aynı API'ye hizmet veren iki giriş noktası vardır:
| Giriş noktası | Temel URL (BASE_URL) | Notlar |
|---|---|---|
| Doğrudan | https://api1.host-tracker.com/ | Sunucudan sunucuya entegrasyonlar için önerilir. |
| Ana site üzerinden | https://www.host-tracker.com/api/web/v1/ | Aynı servise ters proxy ile yönlendirilir. www.host-tracker.com ile zaten konuşuyorsanız kullanışlıdır. |
Bu referans boyunca, GET tasks şeklinde yazılan bir çağrı
GET BASE_URL/tasks anlamına gelir — örn. https://api1.host-tracker.com/tasks
veya https://www.host-tracker.com/api/web/v1/tasks.
İçerik türü ve HTTP metotları
İstekler ve yanıtlar varsayılan olarak application/json'dır (XML için
Kurallar bölümüne bakın). API standart HTTP metotlarını kullanır:
- GET — varlıkları okur (görevler, kişiler, abonelikler, istatistikler, kesintiler, olaylar, ajanlar).
- POST — bir varlık oluşturur veya bir eylem başlatır.
- PUT — mevcut varlıkları günceller.
- DELETE — varlıkları kaldırır.
- PATCH — kısmi güncellemeler (bir kişinin onay kodunu yeniden göndermek için kullanılır).
HTTP metot geçersiz kılma (override)
İstemciniz PUT, DELETE veya
PATCH gönderemiyorsa, bir POST gönderin ve amaçlanan fiili belirten bir
X-HTTP-Method-Override başlığı ekleyin. Örneğin, görevleri güncellemek için,
X-HTTP-Method-Override: PUT başlığıyla tasks'a POST yapın.
Kurallar
JSON serileştirme
JSON, camelCase özellik adları kullanır. Null alanlar yanıtlardan çıkarılır (boş diziler yine de
[] olarak gönderilir). Özellik sıralaması sabittir: önce tanımlayıcı ve adres/url,
ardından kalıtılan alanlar, ardından türe özgü alanlar.
Tarih ve saat
Görev oluşturma/okuma yanıtları, zaman damgalarını ISO-8601 UTC dizeleri olarak taşır (örn.
2024-06-21T22:26:23Z). İstatistik, kesinti, olay ve sonuç endpoint'leri
ayrıca çift bir gösterim kullanır: her zaman, hem bir Unix-saniye tamsayı alanı (
Unix son eki) hem de hesabın profil tarih biçimine ve zaman dilimine göre
biçimlendirilmiş, okunabilir bir dize olarak görünür. İstek filtreleri, endpoint'e bağlı olarak
Unix-saniye ve/veya biçimlendirilmiş dizeleri kabul eder (aşağıda her endpoint için ayrı ayrı
belgelenmiştir). Tüm Unix zaman damgaları
1970-01-01T00:00:00Z'den bu yana geçen saniyedir.
XML içerik anlaşması (content negotiation)
Tüm endpoint'ler XML de döndürebilir. JSON yerine bir XML gövdesi almak için Accept: application/xml gönderin;
yanıt, aynı nesne grafiğinin klasik .NET XmlSerializer
gösterimini kullanır. JSON varsayılan ve önerilen biçimdir.
CORS
Kaynaklar arası (cross-origin) isteklere izin verilir. Düz (kimlik bilgisi taşımayan) istekler herhangi bir kaynaktan kabul edilir
(Access-Control-Allow-Origin: *). Çerez/kimlik bilgisi gönderen istekler yalnızca
*.host-tracker.com kaynaklarından kabul edilir. Token tabanlı çağıranlar (burada belgelendiği gibi
Authorization başlığını kullanan) kimlik-bilgili-kaynak kısıtlamasından
etkilenmez.
Kimlik doğrulama
POST users/token ve anonim ajan-listesi endpoint'leri dışındaki her endpoint
kimlik doğrulama gerektirir. İki şema kabul edilir:
- Bearer token —
POST users/token'dan alınır,Authorization: bearer <token>olarak gönderilir. Bu, birincil şemadır. - HTTP Basic —
Authorization: Basic <base64(login:password)>. Kimlik bilgileri ISO-8859-1 olarak çözülür. Hızlı testler için kullanışlıdır; otomasyon için bearer token tercih edilir.
POST users/token anonim
Bir login ve şifreyi bir bearer token ile değiştirin. Token 48 saat boyunca geçerlidir.
İstek gövdesi
{
"login": "your-login",
"password": "your-password"
}
| Alan | Tür | Açıklama |
|---|---|---|
login | string | Hesap login'i. Zorunlu. Hesap e-postası da kabul edilir. |
password | string | Hesap şifresi. Zorunlu. |
forLogin | string | İsteğe bağlı. Adına işlem yapılacak üst hesabın (super-account) login'i (alt hesap kimliğine bürünme — aşağıya bakın). |
Yanıt — 200 OK
{
"ticket": "<bearer token>",
"expirationTime": "2024-06-23T22:26:23Z",
"expirationUnixTime": 1719181583
}
Başarısızlık durumunda yanıt, IncorrectLoginOrPassword makine koduyla (hesap
için API erişimi devre dışıysa AccessDenied ile) 401
olur ve bir WWW-Authenticate: Bearer başlığı içerir.
Token'ı kullanma
GET BASE_URL/tasks HTTP/1.1
Host: api1.host-tracker.com
Accept: application/json
Authorization: bearer 3DD135...5EE510417
Alt hesap kimliğine bürünme (forLogin)
Bir üst hesap (super-account), alt hesabınıza kendi verilerine erişim izni verdiyse, alt hesap olarak
oturum açın ancak forLogin alanında üst hesabın login bilgisini iletin.
Döndürülen token, üst hesabın verdiği haklarla sınırlı olmak üzere, endpoint'ler sanki kendi hesabınız
için çağrılıyormuş gibi üst hesabı yönetmenizi sağlar. Örneğin, izleme görevlerine yalnızca okuma erişimi
verilmişse, GET çağrıları başarılı olur ancak görevler üzerinde POST/PUT/PATCH/DELETE reddedilir.
# 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"
Hatalar ve makine kodları
Hatalar, standart bir HTTP durum kodunun yanında entegrasyonunuzun dallanma kararı verebileceği kısa, makine tarafından okunabilir bir kod döndürür. Gövde, (JSON değil) düz metin İngilizce bir açıklamadır ve insanlar/log kayıtları için tasarlanmıştır.
Makine kodu iki şekilde iletilir:
X-HT-Reasonyanıt başlığı — kodu her yanıtta ve her HTTP sürümünde taşır. Hata türünü tespit etmenin önerilen yolu budur.- HTTP/1.1 reason phrase — durum satırı örn.
HTTP/1.1 400 SimilarExistsşeklinde okunur. Geriye dönük uyumluluk için korunmuştur, ancak HTTP/2 ve HTTP/3'ün reason phrase'leri protokolden kaldırdığını unutmayın; bu nedenle bağlantı HTTP/2+ üzerinden anlaşırsa bu alan boş olabilir.X-HT-Reason'ı tercih edin.
HTTP/1.1 400 SimilarExists
X-HT-Reason: SimilarExists
Content-Type: text/plain; charset=utf-8
Same task allready exists
WWW-Authenticate: Bearer başlığıyla birlikte 401
döner ve AccessDenied, WrongTicket,
TicketExpired veya IncorrectLoginOrPassword
kodlarından birini içerir.
Hata kodu referansı
API'nin döndürebileceği her makine kodu, alana göre gruplanmış olarak, tipik HTTP durumuyla birlikte
listelenmiştir. Aksi belirtilmedikçe hatalar 400 Bad Request'tir.
Kimlik doğrulama
| Kod | Durum | Anlam |
|---|---|---|
AccessDenied | 401 | Bu hesap için API erişimi devre dışı veya çağıran gerekli haklara sahip değil. |
IncorrectLoginOrPassword | 401 | users/token'da login/şifre reddedildi. |
WrongTicket | 401 | Bearer token hatalı biçimlendirilmiş / okunamıyor. |
TicketExpired | 401 | Bearer token'ın süresi dolmuş — yeni bir tane alın. |
RequestThrottled | 429 | Hız sınırı aşıldı (bkz. Hız sınırları). Retry-After başlığını içerir. |
Görevler
| Kod | Durum | Anlam |
|---|---|---|
NotFound | 404 | İstenen görev mevcut değil. |
SimilarExists | 400 | Aynı tür ve anahtara sahip bir görev zaten mevcut (hesap benzer görevlere izin vermiyorsa). |
EmptyTaskData | 400 | Görev verisi sağlanmadı. |
UncomplitedData | 400 | Görev verisi eksik. |
NoIdInTaskData | 400 | Güncelleme istendi ancak görev id'si eksik. |
WrongEditableTaskDataType | 400 | Düzenleme yükünün (payload) türü, hedef görevin türüyle eşleşmiyor. |
WrongTaskType | 400 | Bilinmeyen görev türü. |
WrongTaskStatus | 400 | Desteklenmeyen status değeri (Enabled/Disabled bekleniyordu). |
WrongInterval | 400 | İzleme aralığı kabul edilen değerlerden biri değil (bkz. tasks/intervals). |
EmptyUrl | 400 | Buna ihtiyaç duyan bir görev için URL/host sağlanmadı. |
WrongUrl | 400 | URL geçersiz. |
WrongSchema | 400 | Desteklenmeyen URL şeması. |
BadIP | 400 | URL, reddedilen veya hatalı biçimlendirilmiş bir IP adresine çözümleniyor. |
UrlInBlackList | 400 | URL, dahili bir engel listesinde. |
WrongHttpMethod | 400 | Bir HTTP görevi için desteklenmeyen HTTP metodu (izin verilenler: Get, Post, Head). |
WrongKeywordMode | 400 | Desteklenmeyen anahtar kelime modu. |
WrongPort | 400 | Bir port görevi için geçersiz port. |
WrongAgentPool | 400 | İstenen ajan havuzlarından bir veya daha fazlası mevcut değil. Mesaj, hatalı ve mevcut havuzları listeler. |
SelectMoreAgents | 400 | Seçilen ajan havuzları yeterli sayıda ajan içermiyor (7 gerekli). Mesaj, havuz başına sayıları listeler. |
ApiFullLogNotAllowed | 400 | fullLog yalnızca gelişmiş paketlerde kullanılabilir. |
WrongExpectedSLA | 400 | expectedSLA 0 ile 100 arasında olmalıdır. |
WrongDate | 400 | Bir filtrede geçersiz başlangıç/bitiş tarihi. |
WrongDateFormat | 400 | Bir tarih dizesi gerekli biçimle eşleşmedi (biçim mesajda belirtilir). |
EndDateIsGreaterThanStartDate | 400 | Başlangıç tarihi ≤ bitiş tarihi olmalıdır. |
StartEndIntervalIsTooBig | 400 | Bir sonuç sorgusu 10 000'den fazla satır döndürecektir. Mesaj, izin verilen aralığı içerir (bkz. GET tasks). |
WrongSubscription | 400 | Görev gövdesindeki satır içi (inline) bir abonelik geçersiz (iç abonelik kodu/mesajı olduğu gibi aktarılır). |
EmptyFilter | 400 | Boş bir filtreyle toplu bir DELETE tasks gönderildi (tüm hesabın silinmesini önlemek için reddedildi). |
Kişiler
| Kod | Durum | Anlam |
|---|---|---|
NotFound | 404 | İstenen kişi mevcut değil. |
SimilarExists | 400 | Aynı tür, gateway, adres ve uyarı gecikmesine sahip bir kişi zaten mevcut. |
EmptyContactData | 400 | Kişi verisi sağlanmadı. |
UncomplitedData | 400 | Kişi verisi eksik. |
NoIdInContactData | 400 | Güncelleme istendi ancak kişi id'si eksik. |
EmptyAddress | 400 | Bir kişi oluşturulurken adres sağlanmadı. |
WrongContactType | 400 | Bilinmeyen kişi türü (kullanımdan kaldırılmış IM oluşturma/güncelleme yolu için de döndürülür). |
WrongEditableContactDataType | 400 | Düzenleme yükünün türü, hedef kişinin türüyle eşleşmiyor. |
WrongEmailFormat | 400 | Geçersiz e-posta adresi veya desteklenmeyen bir e-posta rapor biçimi. |
WrongPhoneFormat | 400 | Bir telefon numarası yalnızca rakam içermelidir (başında + işaretine izin verilir). |
WrongSmsGateway | 400 | Bilinmeyen SMS gateway'i. |
WrongIMGateway | 400 | Bilinmeyen IM gateway'i. |
WrongAlertDelay | 400 | alertDelay kabul edilen değerlerden biri değil (bkz. contacts/delays). |
WrongActivePeriodInterval | 400 | Geçersiz aktif dönem başlangıç/bitiş. |
WrongActiveDay | 400 | Desteklenmeyen aktif gün adı. |
EmptyFilter | 400 | Boş bir filtreyle toplu bir DELETE contacts gönderildi (reddedildi). |
Abonelikler
| Kod | Durum | Anlam |
|---|---|---|
AlertsAndReportsAreEmpty | 400 | Bir abonelik girdisi ne uyarı türü ne de rapor türü belirtiyor. |
UnknownAlertType | 400 | Bir uyarı türü Up, Down, RepeatedlyDown değerlerinden biri değil. |
UnknownReportType | 400 | Bir rapor türü Day, Week, Month, Quarter, Year değerlerinden biri değil. |
Hız sınırları
İstekler, istemci başına ve endpoint başına hız sınırlamasına tabidir. Bir sınırı aşmak,
429 ile birlikte RequestThrottled makine kodunu ve
bir Retry-After başlığını (saniye) döndürür.
| Kapsam | Sınır |
|---|---|
| Genel endpoint'ler, hesap + endpoint başına | saniyede 6 istek ve dakikada 120 istek |
Onay kodu endpoint'leri (contacts/{id}/code), hesap + endpoint başına | saniyede 1 istek ve dakikada 2 istek |
| Anonim endpoint'ler | Aynı 6/s + 120/dk, istemci IP adresi başına anahtarlanır |
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."
İzleme görevleri
GET tasks/types
Sistemin bildiği görev türü adlarının dizisini döndürür:
["API","CntCheck","Counter","DNSBL","Database","DomainExp","Http",
"Ping","Port","RusRegBL","SSLExp","Snmp","Tran","Waterfall","WebRisk"]
tasks/http, tasks/ping,
tasks/port, tasks/rusbl adreslerinde oluşturulur).
GET tasks/intervals
Hesabınız için kabul edilen izleme aralıklarının (dakika cinsinden) dizisini döndürür, örn.
[1,5,15,30,60]. Bir görev oluştururken interval
alanı için bu değerlerden birini kullanın; başka herhangi bir değer WrongInterval
ile sonuçlanır.
GET tasks
İzleme görevlerini listeler. Tüm sorgu parametreleri isteğe bağlıdır; hiçbiri verilmezse hesabın tüm
görevleri döndürülür. Bir diziyi geçmek için parametreyi tekrarlayın, örn. ?ids=guid1&ids=guid2.
Parametre olarak info
Her göreve gömülü ek veri talep eder. Değerleri virgülle birleştirin
(?info=stats,subscriptions) veya eşdeğer bit maskesi tamsayısını geçirin:
| Değer | Bit | Etki |
|---|---|---|
subscriptions | 1 | Görevin uyarı/rapor aboneliklerini subscriptions içinde ekler. |
stats | 2 | Günlük/aylık/yıllık/toplam çalışma süresini stats içinde ekler. |
results | 4 | sdtu…edtu penceresi için kontrol sonuçlarını results içinde ekler (pencere belirtilmemişse son sonuç). |
attachedResults | — | En son ek kontrol (attached-check) sonuçlarını (sertifika, alan adı süresi dolumu, DNSBL) attached içinde ekler. Görevde ilgili check… bayraklarını gerektirir. |
?info=stats,subscriptions,results, ?info=7 ile eşdeğerdir.
Filtre parametreleri
| Parametre | Tür | Açıklama |
|---|---|---|
ids | guid[] | Yalnızca bu görev id'lerini döndürür. Tek bir id için GET tasks/{id}'yi tercih edin. |
excludeIds | bool | ids ile birlikte: bu id'ler dışındaki her şeyi döndürür. |
taskType / taskTypes | string / string[] | Görev türüne göre filtreler (büyük/küçük harfe duyarlı), örn. Http. |
excludeTaskTypes | bool | Tür filtresini tersine çevirir. |
status | string | Enabled veya Disabled (kullanıcı tarafından devre dışı bırakma). Örn. ?status=Disabled. |
url / urls | string / string[] | URL'ye göre filtreler. urls içindeki değerler URL kodlu olmalıdır. |
urlSearchLike | bool | url ile birlikte (urls değil): tam eşleşme yerine alt dize eşleşmesi. |
excludeUrls | bool | URL filtresini tersine çevirir. |
name / names | string / string[] | Görev adına göre filtreler. name/names, id/ids ile birleştirildiğinde VEYA (OR); diğer filtrelerle birleştirildiğinde VE (AND) olur. |
nameSearchLike | bool | name ile birlikte: alt dize eşleşmesi. |
excludeNames | bool | Ad filtresini tersine çevirir. |
interval / intervals | int / int[] | İzleme aralığına göre filtreler (dakika). |
excludeIntervals | bool | Aralık filtresini tersine çevirir. |
openStat | bool | Genel görevler (herkese açık istatistik/olay kaydı). |
lastState | bool | true = şu anda çalışıyor, false = şu anda çalışmıyor. |
tags | string[] | Etikete göre filtreler. |
overlimited | bool | Faturalandırma limitini aşan (true) veya aşmayan (false) görevler. |
active | bool | true = aktif, false = sistem tarafından devre dışı (limit aşımı, düşük bakiye, …). Kullanıcı tarafından devre dışı bırakma için status kullanın. |
sdtu / edtu | int64 | Bir pencerenin Unix-saniye (UTC) başlangıç/bitişi. Yalnızca info=results ayarlandığında kullanılır; ikisini de sağlayın. edtu, sdtu'dan büyük olmalıdır. |
(edtu − sdtu) × (#tasks) / (avg interval)
10 000'i aşmamalıdır. Aksi takdirde yanıt 400 StartEndIntervalIsTooBig
olur ve mesajı sığabilecek en büyük aralığı içerir. Bu sınır yalnızca görev sonucu okumaları için geçerlidir.
Yanıt — 200 OK
Görev nesnelerinden oluşan bir dizi. Kesin alanlar görev türüne bağlıdır; ortak temel
id, name, taskType,
enabled, interval,
lastState, creationTime,
tags, agentPools içerir ve (
info ile talep edildiğinde) subscriptions,
stats, results ve
attached içerir. Sonuçlar dahil edildiğinde, her sonuç en az
timestamp (Unix-saniye UTC) ve eventNumber
taşır; geri kalan alanlar göreve özgüdür (HTTP biçimi için aşağıdaki oluşturma yanıtına bakın).
GET BASE_URL/tasks?info=stats,subscriptions&taskType=Http HTTP/1.1
Accept: application/json
Authorization: bearer <token>
GET tasks/{id:guid}
Id'ye göre tek bir görevi getirir. Aynı info parametresini kabul eder (ve
info=results olduğunda sdtu/edtu'yu).
Görev nesnesini veya mevcut değilse 404 NotFound döndürür.
POST tasks/http · tasks/ping · tasks/port · tasks/rusbl
Belirtilen türde bir izleme görevi oluşturur. Başarı durumunda 201 Created, göreceli bir
Location: /tasks/{id} başlığı ve oluşturulan görevin tam nesnesini döndürür.
İstek gövdesi — HTTP görevi
{
// 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 */ ]
}
| Anahtar kelime modu | Görev şu durumda OK sayılır… |
|---|---|
PresentAny | yanıtta herhangi bir anahtar kelime bulunuyorsa. |
PresentAll | tüm anahtar kelimeler bulunuyorsa. |
ReverseAny | tüm anahtar kelimeler bulunmuyorsa. |
ReverseAll | herhangi bir anahtar kelime bulunmuyorsa. |
ReverseWithResult | tüm anahtar kelimeler bulunmuyorsa; hata mesajı, ilk anahtar kelimenin göründüğü yanıt satırının geri kalanını içerir (her satırın ilk 100 karakteri analiz edilir). |
agentPools izleme konumlarını seçer. İsteğe bağlıdır (aksi takdirde
profil varsayılanı kullanılır). Belirtilirse, havuzların toplamda en az 7 ajan içermesi gerekir, aksi
halde istek SelectMoreAgents ile başarısız olur. Bilinmeyen havuz id'leri
WrongAgentPool ile başarısız olur. Havuz id'leri GET agents/pools'tan gelir.
Satır içi (inline) abonelikler
subscriptions dizisi, oluşturma sırasında kişileri bu görevin
uyarılarına/raporlarına abone eder. Her girdi abonelik biçimini kullanır;
taskIds ayarlamayın (yeni göreve sabittir). contactIds
atlanırsa, onaylanmış tüm kişileriniz abone edilir. Rapor abonelikleri yalnızca
Email kişilerine uygulanır.
Diğer görev türleri
tasks/ping— gövde, ortak alanlara ek olarakhosttaşır.tasks/port— gövde, ortak alanlara ek olarakhostveporttaşır.tasks/rusbl— Rus siciline (Russian-registry) dayalı engel listesi kontrolü; gövde, ortak alanlara ek olarakurl, ayrıcaignoreWarnings,doNotSendMsgOnWarnings,prefixMatchtaşır.
Yanıt — 201 Created (HTTP görevi)
{
"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 & tipli varyantlar
Görevleri günceller. İki biçim vardır:
- Id'ye göre —
PUT tasks/{id}(yalnızca ortak alanlar), veya tipliPUT tasks/http/{id},tasks/ping/{id},tasks/port/{id},tasks/rusbl/{id}(türe özgü alanlar da dahil). Gövde, oluşturma ile aynı düzenlenebilir biçimdedir; yalnızca dahil ettiğiniz alanlar değiştirilir. - Filtreye göre —
PUT tasks?<filter>(yalnızca ortak alanlar) veya filtreyi o türe sabitleyen tipliPUT tasks/{type}?<filter>. GET tasks ile aynı filtre parametrelerini kullanır. Güncellenen görev(ler)i döndürür.
Tipsiz PUT tasks / PUT tasks/{id} yalnızca tüm görev
türlerinde ortak olan alanlara dokunabilir — türe özgü ayarları değiştirmek için tipli bir
endpoint kullanın.
DELETE tasks/{id:guid} & tasks
DELETE tasks/{id}— tek bir görevi siler; silinen görevi döndürür.DELETE tasks?<filter>— görev filtresine göre toplu silme (bir filtre istek gövdesinde de sağlanabilir). Silinen görevleri döndürür.
DELETE tasks,
tüm hesabınızı silmek yerine 400 EmptyFilter döndürür. Her şeyi bilerek
silmek için açıkça yineleyin.
POST tasks/$batch · task/$batch
Tek bir istekte birden çok görev işlemi çalıştırır. Gövde, alt isteklerden oluşan bir JSON dizisidir;
yanıt, aynı sırada alt yanıtlardan oluşan bir JSON dizisidir. Alt işlem, relativeUrl'nin
son segmenti ile seçilir (örn. http →
POST tasks/http). İstek gövdesi JSON olmalıdır
(Content-Type: application/json). Aynı mekanizma kişiler için de
contacts/$batch / contact/$batch adresinde mevcuttur.
| İstek alanı | Tür | Açıklama |
|---|---|---|
method | string | Alt isteğin HTTP metodu (POST, PUT, DELETE…). |
relativeUrl | string | Alt kaynak; son segment işlemi seçer (http, ping, port, rusbl…). |
contentType | string | content'in içerik türü, genellikle application/json. |
content | string | Alt istek gövdesi, bir JSON dizesi olarak. |
| Yanıt alanı | Tür | Açıklama |
|---|---|---|
code | int | Alt yanıtın HTTP durum kodu (örn. 201, 400). |
status | string | Sebep/durum metni (hatalarda makine kodunu taşır). |
headers | object | Alt işlemin yanıt başlıkları (örn. Location). |
body | string | Alt yanıt gövdesi. |
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... }" }
]
Kişiler
Kişiler, uyarıları ve raporları alan hedeflerdir (e-posta adresleri, SMS/sesli arama için telefon numaraları). Kişi id'leri abonelik oluşturulurken kullanılır.
GET contacts/types · contacts/delays · contacts/sms/gateways · contacts/im/gateways
Kişi endpoint'leri tarafından kullanılan sabit numaralandırmalar (enum):
| Endpoint | Döndürür |
|---|---|
contacts/types | ["Email","IM","SMS","VoiceCall"] — bu API'nin numaralandırdığı kişi türleri. Oluşturulabilir türler Email, SMS ve VoiceCall'dır (IM kullanımdan kaldırılmıştır — aşağıya bakın). |
contacts/delays | Kabul edilen alertDelay değerleri (dakika): [0,5,15,30,60,180,720,360,1440,3]. |
contacts/sms/gateways | SMS gateway id'leri: ["clickatell","clickatella","infobip","skype","twiliosms"]. Varsayılan twiliosms'dir; diğer girdiler eski (legacy) olup etkin olmayabilir. |
contacts/im/gateways | IM gateway id'leri: ["GTalk","SkypeChat"]. Yalnızca uyumluluk için listelenmiştir — IM kişileri artık oluşturulamaz (aşağıya bakın). |
GET contacts/im/gateways hâlâ
gateway listesini döndürür, ancak POST contacts/im ve
PUT contacts/im artık 400 WrongContactType
döndürür. Mevcut IM kişileri bu API üzerinden oluşturulamaz.
GET contacts & contacts/{id:guid}
Kişileri listeler (isteğe bağlı olarak filtrelenmiş) veya id'ye göre birini getirir.
?info=subscriptions ekleyerek her kişinin aboneliklerini dahil edin. Filtre
olmadan, hesabın tüm kişileri döndürülür.
| Filtre parametresi | Tür | Açıklama |
|---|---|---|
ids / excludeIds | guid[] / bool | Id'ye göre seçer veya hariç tutar. |
contactType / contactTypes | string / string[] | Türe göre filtreler (Email, SMS, VoiceCall…). |
excludeContactTypes | bool | Tür filtresini tersine çevirir. |
confirmed | bool | Onaylanmış / onaylanmamış kişiler. |
overlimited | bool | Paket limitini aşan olarak işaretlenmiş kişiler. |
acceptBillingNotifications | bool | Faturalandırma bildirimleri için kullanılan kişiler. |
name / names / nameSearchLike / excludeNames | string(s) / bool | Ada göre filtreler (tam eşleşme, liste, alt dize veya hariç tutma). |
address / addresses / addressSearchLike / excludeAddresses | string(s) / bool | Adrese göre filtreler. |
Kişi nesnesi
Ortak alanlar: id, confirmed,
contactType, name,
address, alertDelay,
activePeriodStart/activePeriodEnd (HH:mm),
activeDays, sendCost. Email kişileri
reportFormat (Text/ShortText),
sendNews, sendBillingNotifications ekler; SMS/IM
kişileri gateway ekler.
POST contacts/email · contacts/sms · contacts/voice
Bir kişi oluşturur. 201 Created, göreceli bir
Location: /contacts/{id} ve status alanı onay
sonucunu bildiren bir ContactOperationResult
({ contact, status }) döndürür.
{
"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 */ ]
}
| Alan | Uygulandığı | Notlar |
|---|---|---|
address | tümü | E-posta adresi veya SMS/sesli arama için telefon numarası (rakamlar, başında isteğe bağlı +). Oluşturmada zorunlu. |
alertDelay | tümü | Uyarı vermeden önce beklenecek dakika. contacts/delays değerlerinden biri olmalıdır. |
activePeriodStart / activePeriodEnd | tümü | HH:mm; uyarıların iletildiği zaman penceresi. |
activeDays | tümü | Sunday…Saturday değerlerinden herhangi biri; varsayılan her gündür. |
reportFormat, sendNews, sendBillingNotifications | E-posta seçenekleri. | |
gateway | sms | contacts/sms/gateways değerlerinden biri; varsayılan twiliosms. |
SMS ve sesli arama kişileri varsayılan olarak twiliosms /
twiliovoice gateway'lerini kullanır, varsayılan mesaj başına bir fiyat alır
ve numarayı başında + ile saklar. Bir kişinin adresini veya gateway'ini
değiştirmek, onay durumunu sıfırlar.
Onay durumu değerleri
Sonucun status alanı, onay kodu gönderme sonucunu bildirir:
| Durum | Anlam |
|---|---|
Confirmed | Kişi zaten onaylanmış olarak oluşturuldu (kod gerekmedi). |
CodeSent | Bir onay kodu gönderildi; kişi onaylandığında etkin hale gelir. |
CodeSentEarlier | Yakın zamanda zaten bir kod gönderildi ve hâlâ geçerli. |
CodeFail | Kişi oluşturuldu ancak kodun gönderilmesi başarısız oldu; daha sonra tekrar deneyin. |
LowSmsBalance | Hesap bakiyesi çok düşük olduğu için kod gönderilemedi. |
Overlimited | Kişi, paket limitinin üzerinde. |
PUT contacts & tipli varyantlar
- Id'ye göre —
PUT contacts/{id}(ortak alanlar), veya tipliPUT contacts/email/{id},contacts/sms/{id},contacts/voice/{id}. Yalnızca gönderdiğiniz alanlar değiştirilir. - Filtreye göre —
PUT contacts?<filter>veya filtreyi o türe sabitleyen tipliPUT contacts/{type}?<filter>, kişi filtresini kullanarak.
PUT contacts/im (her iki biçim de) 400 WrongContactType
döndürür.
DELETE contacts/{id:guid} & contacts
Id'ye göre tek bir kişiyi siler veya kişi filtresine göre toplu siler.
Görevlerde olduğu gibi, boş filtreyle yapılan toplu silme 400 EmptyFilter
ile reddedilir.
Onay kodları
Onaylanmamış kişiler, kişi adresine iletilen kısa bir kodla sahipliği onaylamalıdır.
PATCH contacts/{id}/code— onay kodunu (yeniden) oluşturur ve gönderir.CodeSentgibi bir status içeren birContactOperationResultdöndürür.POST contacts/{id}/code— kodu göndererek kişiyi onaylar. Gövde:{ "code": "12345" }. Başarı durumunda kişi onaylanmış olur.
Uyarılar ve abonelikler
Bir abonelik, bir veya daha fazla görevi ve kişiyi bir dizi uyarı ve/veya rapor türüne bağlar. Tek bir abonelik girdisi, görevlerini ve kişilerini çapraz birleştirerek her (task, contact, type) için bir uyarı/rapor üretir.
Abonelik biçimi
{
"alertTypes": ["Up", "Down"], // any of Up, Down, RepeatedlyDown
"reportTypes": ["Day", "Month"], // any of Day, Week, Month, Quarter, Year
"taskIds": ["<task guid>"],
"contactIds": ["<contact guid>"]
}
alertTypes/reportTypes'dan en az biri gereklidir, aksi haldeAlertsAndReportsAreEmptyoluşur.taskIdsatlanırsa varsayılan olarak tüm görevleriniz kullanılır;contactIdsatlanırsa varsayılan olarak tüm kişileriniz kullanılır. Açıkça boş bir dizi "hiçbiri" anlamına gelir.- Rapor abonelikleri yalnızca Email kişilerine uygulanır — Email olmayan kişilerdeki rapor türleri sessizce yok sayılır (uyarı abonelikleri yine de oluşturulur).
- Sahibi olmadığınız id'ler yok sayılır.
GET subscriptions/alertTypes · subscriptions/reportTypes
| Endpoint | Döndürür |
|---|---|
subscriptions/alertTypes | ["Up","Down","RepeatedlyDown"] |
subscriptions/reportTypes | ["Day","Week","Month","Quarter","Year"] |
GET subscriptions
Abonelikleri listeler. Eşleşen her uyarı veya rapor aboneliği için bir girdi döndürür (asla birleştirilmez). İsteğe bağlı filtreler:
| Parametre | Tür | Açıklama |
|---|---|---|
taskId | guid | Yalnızca bu görev için abonelikler. |
contactId | guid | Yalnızca bu kişi için abonelikler. |
types | string[] | Yalnızca bu uyarı/rapor türleri. Tanınmayan adlar burada yok sayılır (bunları reddeden POST/DELETE'in aksine). |
POST subscriptions · DELETE subscriptions
İkisi de gövdede abonelik girdilerinden oluşan bir JSON dizisi alır. POST tanımlanan abonelikleri
ekler (yalnızca yeni satırlar eklenir); DELETE mevcut olanları kaldırır. İkisi de boş bir
gövdeyle 200 OK döndürür. Bilinmeyen uyarı/rapor türleri
UnknownAlertType / UnknownReportType ile
reddedilir.
[
{ "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>"]}]'
İstatistikler ve sonuçlar
GET stats
Bir zaman penceresi boyunca görev başına çalışma süresi/kesinti süresi toplamları. Görevleri seçmek için görev filtresini kabul eder, ayrıca:
| Parametre | Tür | Açıklama |
|---|---|---|
statsStartUnix / statsEndUnix | int64 | Pencere başlangıç/bitişi Unix-saniye (UTC) olarak. |
statsStart / statsEnd | string | Pencere başlangıç/bitişi profil biçimli bir tarih dizesi olarak (Unix alanlarına alternatif). |
expectedSLA | double | 0–100. Ayarlandığında, her sonuç slaExpectationSucceeded bildirir. |
fullTask | bool | Yalnızca referansı yerine tam görev nesnesini içerir. |
Yanıt
Çözümlenmiş pencereyi (çift tarih alanları) ve bir stats dizisini içeren bir
Stats nesnesi. Her girdi, görev referansını ve şunları taşır:
uptimeInMinutes/uptimeSpan,
downtimeInMinutes/downtimeSpan, bakım
(maintenance) çalışma/kesinti süreleri, totalTimeInMinutes, sepet (bucket)
başına kontrol sayıları ve uptimePercent/downtimePercent.
uptime% = (uptime + maintenanceUptime) / (totalTime − maintenanceDowntime).
Toplam süre bakım kesinti süresine eşit olduğunda yüzde null'dur (tanımsız).
slaExpectationSucceeded, uptime% ≥ expectedSLA demektir.
GET outages
Görev başına kesinti (down-time) aralıkları. Görev filtresini ve ek olarak şunları kabul eder:
| Parametre | Tür | Açıklama |
|---|---|---|
startTimeUnix / endTimeUnix | int64 | Pencere, Unix-saniye (UTC) olarak. |
startTime / endTime | string | Pencere, profil biçimli dizeler olarak. |
getInUtcTimeZone | int | Ayarlandığında, biçimlendirilmiş zamanlar profil zaman dilimi yerine UTC olur. |
fullTask | bool | Tam görev nesnesini içerir. |
Yanıt: çözümlenmiş pencereyi ve bir taskOutages dizisini içeren bir
Outages nesnesi; her öğe bir görevi
outages aralıklarıyla (startTime/endTime
+ Unix varyantları, olay numaraları, isteğe bağlı yorum) eşleştirir.
GET incident
Görev başına olay (hata olayı) listesi. Görev filtresini ve kesintilerle aynı pencere/zaman dilimi parametrelerini kabul eder, ayrıca:
| Parametre | Tür | Açıklama |
|---|---|---|
startTimeUnix / endTimeUnix / startTime / endTime | int64 / string | Pencere (Unix ve/veya biçimlendirilmiş). |
getInUtcTimeZone | int | Zamanları UTC olarak biçimlendirir. |
fullTask | bool | Tam görev nesnesini içerir. |
fullLog | bool | Ajan başına ayrıntılı yeniden kontrol (recheck) kaydını içerir. Gelişmiş bir paket gerektirir, aksi halde ApiFullLogNotAllowed. |
Yanıt: bir taskIncidents dizisini içeren bir
Incidents nesnesi. Her olay taskId,
checkId, başlangıç/bitiş Unix zamanlarını, hatalı olan
location'ı, error'ı,
hasSnapshot'ı ve (fullLog ile) OK konumları ve
hata başına hatalı konumları listeleyen bir recheck bloğunu taşır.
GET incident/snapshot
Bir olay için yakalanan saklı yanıt anlık görüntüsünü (snapshot) getirir. Parametreler:
| Parametre | Tür | Açıklama |
|---|---|---|
taskId | guid | Görev. Zorunlu. |
checkId | int64 | Kontrol/olay id'si. |
timestampUnixUtc | int64 | Olay zaman damgası (Unix-saniye UTC). |
Bir tane mevcutsa anlık görüntüyü (bir zaman damgası artı yakalanan baytlar) döndürür, verilen olay için
anlık görüntü yoksa null döndürür.
GET results/http
Görev başına toplu HTTP zamanlama ölçümleri. Görev türünü Http olarak
zorunlu kılar. Görev filtresini ve ek olarak şunları kabul eder:
| Parametre | Tür | Açıklama |
|---|---|---|
resultStartUnix / resultEndUnix | int64 | Pencere, Unix-saniye (UTC) olarak. |
resultStart / resultEnd | string | Pencere, profil biçimli dizeler olarak. |
fullTask | bool | Tam görev nesnesini içerir. |
Yanıt: bir AggregatedHttpResults nesnesi; her
taskResults girdisi görev referansını ve ortalama
responseTime, dnsTime,
headTime, dataTime (milisaniye) değerlerini
bildirir.
GET cr/httpResponseTime
Görev başına HTTP yanıt süresi serisi. Görev filtresini ve ek olarak
startDate, endDate ve
groupBy'ı kabul eder. Sade bir seri nesneleri dizisi döndürür:
[
{
"id": "ef10cd12-93f9-e311-bec5-dc85de1f0bc2",
"rawUrl": "https://www.example.com",
"name": "My website",
"results": [ [1719181583, 142], [1719177983, 138] ] // [unixSeconds, responseTimeMs], newest first
}
]
Ajanlar
Ajanlar, coğrafi olarak dağıtılmış izleme konumlarıdır. Burada döndürülen havuz id'leri, bir görevin
agentPools alanında geçtiğiniz değerlerdir.
GET agents
İzleme ajanlarını listeler. İsteğe bağlı sorgu parametresi:
| Parametre | Tür | Açıklama |
|---|---|---|
touched | int | Yalnızca son N dakika içinde rapor veren ajanlar. ≤ 0 (veya belirtilmemiş) değerler filtre yok anlamına gelir; aksi halde 1–10 aralığına sınırlanır. |
Her ajan id, upFrom,
datacenter (name/city/country/state),
company (name/url), ip,
version, lon/lat ve
pools taşır.
[
{
"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
Genel ajan havuzlarını (coğrafi bölgeler) listeler. Her havuz id,
desc, kendi agents,
childPools ve hidden alanlarını taşır. Bir
görevin agentPools alanında havuz id
değerlerini kullanın.
GET agents/ips anonim
Güncel izleme ajanı IP adreslerini döndürür — Host-Tracker'ı bir güvenlik duvarında beyaz listeye
almak için kullanışlıdır. Bu endpoint kimlik doğrulama gerektirmez. Varsayılan olarak satır başına bir IP
olacak şekilde text/plain döndürür; bunun yerine bir JSON dizisi almak için
Accept: application/json gönderin.
203.0.113.10
203.0.113.11
198.51.100.7
["203.0.113.10", "203.0.113.11", "198.51.100.7"]