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
publicIdile, yani01J9ZP4M3K8Q5R6S7T8V9W0X1Ygibi 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,detailsplanın gerekçesini taşır),MONITOR_NOT_FOUND(404),INTERNAL_ERROR(500).
Monitor
| Metot | Path | İzin | Amaç |
|---|---|---|---|
GET | /api/v1/monitors | monitors:read | Sahibi 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/monitors | monitors:create | Monitor oluşturur. Doğrulama, varsayılanlar ve plan sınırları dashboard ile aynıdır. |
GET | /api/v1/monitors/:publicId | monitors:read | Bir monitor'un bütün alanları. |
PATCH | /api/v1/monitors/:publicId | monitors:create | Yalnı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/:publicId | monitors:delete | Monitor'u ve geçmişini kalıcı olarak siler. Düzenleme yetkisi gerekir. |
GET | /api/v1/monitors/:publicId/results | monitors:results:read | 7 güne kadar kontrol sonucu. Query: ?timeRange=24h|7d, ?startDate&endDate, ?since, ?days=1..7, ?limit=1..1000. |
GET | /api/v1/monitors/:publicId/stats | monitors:results:read | Uptime 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 / :write | Bakı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).
| Grup | Alanlar |
|---|---|
| Temel | name, 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 edilir | region (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 / DNS | method, 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şikler | retryCount, 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önlendirme | alertTypes, 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) |
| Heartbeat | heartbeatIntervalSeconds (60 sn ile 30 gün arası; varsayılan interval), heartbeatGraceSeconds (varsayılan 60) |
| Salt okunur | publicId, 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ı.
| Metot | Path | Döner |
|---|---|---|
GET | /api/v1/escalation-policies | Sizin oluşturduğunuz politikalar (escalationPolicyId'nin kabul ettikleri): publicId, name, stepCount, createdAt, updatedAt. |
GET | /api/v1/webhooks | Webhook 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/regions | Etkin 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.
| Metot | Path | Amaç |
|---|---|---|
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)
| Metot | Path | İzin | Hız | Amaç |
|---|---|---|---|---|
GET | /api/v1/incidents | incidents:read | 120/dk | Token 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/:id | incidents:update | 60/dk | Olayı günceller. Body: { status?: "active"|"resolved", resolutionMessage?: string }. status: "resolved" ayarlamak resolvedAt damgasını basar. |
POST | /api/v1/incidents/:id/comments | incidents:comment | 60/dk | Zaman ç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
| Metot | Path | İzin | Hız | Amaç |
|---|---|---|---|---|
GET | /api/v1/ssl/status | ssl:status:read | 60/dk | Token sahibinin sahip olduğu her monitor için portföy geneli SSL sertifika özeti. |
GET | /api/v1/ssl/monitors/:id | ssl:status:read | 60/dk | Monitor 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
| Metot | Path | İzin | Hız | Amaç |
|---|---|---|---|---|
GET | /api/v1/security/monitors/:id/analysis | security:analysis:read veya security:analysis:monitor | 30/dk | Sahip olunan bir monitor için son önbelleklenmiş analiz (header'lar, açıklar, derece). |
POST | /api/v1/security/monitors/:id/analyze | security:analysis:monitor | 10/dk | Monitor URL'sinde yeni bir analiz çalıştırır. |
POST | /api/v1/security/analyze | security:analysis:website | 10/dk | Rastgele 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
| Metot | Path | İzin | Hız | Amaç |
|---|---|---|---|---|
GET | /api/v1/health/monitors/:id/predictions | health:predictions:read | 60/dk | Monitö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
| Parametre | Nerede | Notlar |
|---|---|---|
page | Liste endpoint'leri | 1'den başlar, varsayılan 1. |
limit | Liste endpoint'leri | Varsayılan 20, max 100 (monitor/olay); varsayılan 100, max 1000 (monitor sonuçları). |
timeRange | Sonuç / istatistik / olay | Sonuç ve istatistik için 24h|7d, olay için 24h|7d|30d. |
startDate + endDate | Sonuç / istatistik / olay | ISO 8601. Aralık 7 gün (sonuç) veya 30 gün (olay) ile sınırlıdır. |
since | Sonuç / istatistik / olay | ISO 8601. Yukarıdakiyle aynı pencere sınırı. |
days | Sonuç / istatistik / olay | 1-7 (sonuç) veya 1-30 (olay) tam sayı. |
status | Olay | active, 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
- API'ye Başlangıç: başlangıç, base URL, hatalar
- API Hızlı Başlangıç: beş dakikalık curl turu
- API Token'ları: izin kataloğu ve rotasyon
- Abonelik Planları: plan tier'a göre API çağrı kotası