API Endpoint'leri

v1 endpoint'leri için referans: metot, path, gereken izin, query parametreleri ve yanıt şekli.

Public API /api/v1/ altındadır; buna URL'deki token ile çalışan iki heartbeat ping'i eklenir. Bu sayfa hızlı bir referans kartıdır; kanonik şema /api/docs/v1-openapi.json adresinde yayınlanır ve /api/docs altında interaktif Swagger UI olarak sunulur.

Devam etmeden önce API'ye Başlangıç sayfasını okuduğunuzdan ve elinizde bir token olduğundan emin olun.

Konvansiyonlar

  • Base URL: https://app.uptimewarden.online
  • Kimlik doğrulama: Authorization: Bearer <token> (her v1 endpoint'i için zorunludur).
  • Kimlikler yalnızca public id'dir. Monitor, eskalasyon politikası ve webhook'lar publicId ile, yani 01J9ZP4M3K8Q5R6S7T8V9W0X1Y gibi 26 karakterlik bir ULID ile anılır. Sayısal kimlik hiçbir yanıtta dönmez; path'te verilirse reddedilir (400 INVALID_MONITOR_ID).
  • Başarılı yanıtlar { success: true, data, pagination?, meta? } zarfını izler.
  • Hata yanıtları { success: false, error: { code, message, details? } } zarfını izler. Kodlar: VALIDATION_ERROR (400, mesaj alanın adını verir), ACCESS_DENIED (403), PLAN_LIMIT_REACHED (403, details planın gerekçesini taşır), MONITOR_NOT_FOUND (404), INTERNAL_ERROR (500).

Monitor

MetotPathİzinAmaç
GET/api/v1/monitorsmonitors:readSahibi olduğunuz ya da bir takımın sizinle paylaştığı monitor'lar, özet hâlinde. Query: ?page&limit (varsayılan 20, en çok 100), ?managedBySource=terraform.
POST/api/v1/monitorsmonitors:createMonitor oluşturur. Doğrulama, varsayılanlar ve plan sınırları dashboard ile aynıdır.
GET/api/v1/monitors/:publicIdmonitors:readBir monitor'un bütün alanları.
PATCH/api/v1/monitors/:publicIdmonitors:createYalnızca gönderdiğiniz alanları değiştirir. Düzenleme yetkisi gerekir (sahip ya da düzenleme izinli takım paylaşımı).
DELETE/api/v1/monitors/:publicIdmonitors:deleteMonitor'u ve geçmişini kalıcı olarak siler. Düzenleme yetkisi gerekir.
GET/api/v1/monitors/:publicId/resultsmonitors:results:read7 güne kadar kontrol sonucu. Query: ?timeRange=24h|7d, ?startDate&endDate, ?since, ?days=1..7, ?limit=1..1000.
GET/api/v1/monitors/:publicId/statsmonitors:results:readUptime ve yanıt süresi özetleri. Zaman aralığı seçenekleri results ile aynıdır.
GET POST DELETE/api/v1/monitors/:publicId/maintenance[/:windowId]monitors:maintenance:read / :writeBakım pencerelerini listeler, açar, kapatır.
curl -sS -X POST "https://app.uptimewarden.online/api/v1/monitors" \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Production API","type":"http","url":"https://api.example.com/health",
       "interval":60,"timeout":10,"region":"gwc","verificationRegions":["sea"],
       "expectedStatusCodes":"200-299","escalationPolicyId":"01J9ZP4M3K8Q5R6S7T8V9W0EP1",
       "externalId":"tf.production_api","managedBySource":"terraform"}'

Monitor alanları

Oluşturma ve güncelleme dashboard'un alan adlarını kullanır. Bilinmeyen bir alan, adını veren bir 400 ile reddedilir. Güncellemede yalnızca gönderdiğiniz alanlar değişir; plan sınırları da yalnızca değişeni değerlendirir (plan düşürülmeden önce kaydedilmiş bir monitor düzenlenebilir kalır).

GrupAlanlar
Temelname, type (http tcp udp ssl websocket mcp grpc ping dns heartbeat; planınızda olmalı; heartbeat'e ya da heartbeat'ten değiştirilemez), url (heartbeat için verilmez), description, interval (saniye; en az 30 ve planınızın alt sınırı; varsayılan 300), timeout (5-300 sn, varsayılan 30), isActive, tags, groups (yalnızca güncellemede), externalId (en çok 255 karakter), managedBySource (varsayılan manual)
Nereden kontrol edilirregion (GET /api/v1/regions listesindeki etkin bir kod; seçmek için planınızda bölge seçimi olmalı), verificationRegions (bir kesintiyi yeniden kontrol eden bölgeler; etkin kodlar, birincil bölge hariç, en çok planınızın maxVerificationRegions - 1 değeri kadar; boş = en yakın bölgeler), minConfirmingRegions (plan varsayılanından farklı bir değer için allowConsensusOverride gerekir), agentId (kendi özel agent'larınızdan biri)
HTTP / TCP / UDP / gRPC / DNSmethod, customHeaders (nesne), requestBody, expectedStatusCodes (ör. "200-299"), expectedBody (anahtar kelime), contentValidation, followRedirects, verifySsl, enableSsl, basicAuthUsername, basicAuthPassword, bearerToken, hostname, port, grpcProtoFile, grpcMethod, dnsConfig ({recordType, resolver, expectedAnswers})
EşiklerretryCount, responseTimeThreshold (50-5000 ms; 0 ya da null = kapalı), sslExpiryDays, sslAlerts ({thirtyDays, fifteenDays, sevenDays, oneDay}), domainMonitoringEnabled ve domainExpiryThreshold (plan özelliği), securityAnalysisEnabled ve securityAnalysisMode (plan özelliği)
Alarm yönlendirmealertTypes, notifications (kanal × alarm türü, ör. {"email":{"down":true,"recovery":true},"sms":{"down":true}}), emailAddresses, phoneNumbers, whatsappNumbers, voiceNumbers (virgülle ayrılmış), voiceMode (sequential ya da all), escalationPolicyId (sizin oluşturduğunuz bir politikanın publicId'si; güncellemede null bağlantıyı kaldırır; nöbet planınıza bağlıdır), selectedWebhookIds (kendi webhook'larınızın publicId'leri; [] hepsini kaldırır)
HeartbeatheartbeatIntervalSeconds (60 sn ile 30 gün arası; varsayılan interval), heartbeatGraceSeconds (varsayılan 60)
Salt okunurpublicId, heartbeatToken ve heartbeatUrl (heartbeat monitor'ları), heartbeatLastPingAt, createdAt, lastChecked

Kimlik bilgileri (basicAuthPassword, bearerToken, heartbeatToken, heartbeatUrl) yalnızca monitor'u düzenleyebilen çağıranlara döner; salt okunur takım paylaşımı null görür.

Referans listeleri

Bir monitor'un gösterebileceği kaynaklar; istemci adları public id'ye çevirebilsin diye. Salt okunur, monitors:read, token sahibiyle sınırlı.

MetotPathDöner
GET/api/v1/escalation-policiesSizin oluşturduğunuz politikalar (escalationPolicyId'nin kabul ettikleri): publicId, name, stepCount, createdAt, updatedAt.
GET/api/v1/webhooksWebhook yapılandırmalarınız (selectedWebhookIds'in kabul ettikleri): publicId, name, description, messageFormat, isActive, enabledAlertTypes, enabledMonitorTypes, createdAt. URL ve gizli bilgi dönmez.
GET/api/v1/regionsEtkin bölge kodları (code, name, description, isDefault) ve plan: regionSelection, maxRegions, maxVerificationRegions, defaultConfirmingRegions, allowConsensusOverride (-1 = sınırsız).

Eskalasyon politikalarını, webhook'ları, durum sayfalarını ve nöbet çizelgelerini API token'ıyla oluşturmak, değiştirmek ve silmek planlanıyor; bugün dashboard'dan yönetilir.

Heartbeat ping'leri

URL'deki heartbeat token'ı kimlik bilgisidir; API token'ı gerekmez. Token'ı monitor'un heartbeatToken / heartbeatUrl alanından alın.

MetotPathAmaç
GET POST/api/heartbeat/:token/pingİş çalıştı. {"state":"failure","message":"..."} gövdesi (ya da ?state=failure) bunun yerine bir başarısızlık kaydeder.
GET POST/api/heartbeat/:token/failİş çalıştı ve başarısız oldu. İsteğe bağlı {"message":"..."} (500 karakter) olayın hata mesajı olur.

Başarısızlık bildirimi monitor'u aralık + tolerans süresini beklemeden, bir sonraki değerlendirmede (30 saniye içinde) düşmüş sayar; sonraki başarılı ping düzeltir. Yanıtlar: 204, 404 unknown token, 429 (token ve IP başına dakikada 120), 503 (yeniden deneyin).

Olay (incident)

MetotPathİzinHızAmaç
GET/api/v1/incidentsincidents:read120/dkToken sahibinin monitor'ları için olaylar. 30 gün ile sınırlıdır. Query: ?timeRange=24h|7d|30d, ?status=active|resolved|all, ?startDate&endDate, ?since, ?days=1..30, ?page&limit.
PATCH/api/v1/incidents/:idincidents:update60/dkOlayı günceller. Body: { status?: "active"|"resolved", resolutionMessage?: string }. status: "resolved" ayarlamak resolvedAt damgasını basar.
POST/api/v1/incidents/:id/commentsincidents:comment60/dkZaman çizelgesine yorum ekler. Body: { message: string } (zorunlu).
curl -sS -X PATCH "https://app.uptimewarden.online/api/v1/incidents/$ID" \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"status":"resolved","resolutionMessage":"Önbellek temizlendi, trafik geri döndü"}'

SSL

MetotPathİzinHızAmaç
GET/api/v1/ssl/statusssl:status:read60/dkToken sahibinin sahip olduğu her monitor için portföy geneli SSL sertifika özeti.
GET/api/v1/ssl/monitors/:idssl:status:read60/dkMonitor başına sertifika detayı (issuer, validFrom/validUntil, daysUntilExpiry, isValid).

Zorunlu yenileme için API endpoint'i yoktur; SSL verisi otomatik olarak yenilenir. Manuel yenileme için dashboard'u kullanın.

Güvenlik analizi

MetotPathİzinHızAmaç
GET/api/v1/security/monitors/:id/analysissecurity:analysis:read veya security:analysis:monitor30/dkSahip olunan bir monitor için son önbelleklenmiş analiz (header'lar, açıklar, derece).
POST/api/v1/security/monitors/:id/analyzesecurity:analysis:monitor10/dkMonitor URL'sinde yeni bir analiz çalıştırır.
POST/api/v1/security/analyzesecurity:analysis:website10/dkRastgele bir URL üzerinde tek seferlik analiz. Body: { url: string }.
curl -sS -X POST "https://app.uptimewarden.online/api/v1/security/analyze" \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Dönen yapı (kısaltılmış): { securityScore, grade, headers, vulnerabilities[], analyzedAt }. Tam yapı için OpenAPI spec'indeki SecurityAnalysis şemasına bakın.

AI Sağlık Tahminleri

MetotPathİzinHızAmaç
GET/api/v1/health/monitors/:id/predictionshealth:predictions:read60/dkMonitör için anomali, trend ve tahmin sonuçları. Yeterli geçmiş yoksa { success: true, data: null, message } döner.

Sağlık tahminleri her 6 saatte bir otomatik olarak üretilir ve yeterli geçmiş veri gerektirir. Tahmin modelinin detayları için Sağlık Tahminleri sayfasına bakın.

Ortak parametreler

ParametreNeredeNotlar
pageListe endpoint'leri1'den başlar, varsayılan 1.
limitListe endpoint'leriVarsayılan 20, max 100 (monitor/olay); varsayılan 100, max 1000 (monitor sonuçları).
timeRangeSonuç / istatistik / olaySonuç ve istatistik için 24h|7d, olay için 24h|7d|30d.
startDate + endDateSonuç / istatistik / olayISO 8601. Aralık 7 gün (sonuç) veya 30 gün (olay) ile sınırlıdır.
sinceSonuç / istatistik / olayISO 8601. Yukarıdakiyle aynı pencere sınırı.
daysSonuç / istatistik / olay1-7 (sonuç) veya 1-30 (olay) tam sayı.
statusOlayactive, resolved, all (varsayılan all).

İnteraktif olarak deneyin

/api/docs adresini açın. Swagger UI token yapıştırıp tarayıcıdan gerçek hesabınıza istek atmanıza imkan tanır. Aynı OpenAPI dokümanı kod jeneratörlerini de besler (openapi-generator, oazapfts, vb.).

İlgili