Geliştiriciler

Kendi araçlarınızla bağlayın

WAM, panelin kullandığı aynı REST API'yi sunar. Bugün yedek heartbeat ucu ve GitHub webhook'u canlıdır; kalanlar yol haritasındadır.

  • Canlı

    REST API

    Panelin kullandığı /api/v1 uçları: JSON, Bearer erişim belirteci, RFC 7807 hata gövdeleri ve her yanıtta tutarlı error_code.

  • Canlı

    Yedek heartbeat

    Yedek script'inizin sonunda tek bir istek: başarılı mı, ne kadar sürdü, boyutu ne. Gecikme ve hata uyarıya dönüşür.

  • Canlı

    GitHub webhook

    GitHub App olayları imzalı webhook ile alınır (HMAC, sabit zamanlı doğrulama); deployment ve commit durumu anında güncellenir.

  • Yakında

    API anahtarları ve OpenAPI

    Kapsamlı, iptal edilebilir API anahtarları, hız sınırları ve OpenAPI şeması ile interaktif belgeler.

  • Yakında

    Giden webhook'lar

    Olay açıldı/kapandı, SSL ve domain bitişi için imzalı webhook'lar; Zapier, Make ve n8n ile uyumlu.

  • Yakında

    Prometheus ve Grafana

    Prometheus uyumlu metrik ucu ve hazır Grafana panoları ile kendi gözlem yığınınıza bağlayın.

Kimlik doğrulama akışı

Panelin kullandığı aynı API'ye oturum belirteciyle bağlanırsınız. Erişim belirteci kısa ömürlüdür; süresi dolunca yenileme çerezi yeni belirteç verir.

GirişPOST /api/v1/auth/login
Erişim belirteciKısa ömürlü JWT
API isteğiAuthorization: Bearer <belirteç>
YenilemePOST /api/v1/auth/refresh · HttpOnly çerez

Bugün API oturum belirteciyle çalışır. Kapsamlı, iptal edilebilir API anahtarları yol haritasındadır. Yedek heartbeat ve webhook uçları kendi belirteçleriyle ayrıca çalışır.

Uç katalogu

Sık kullanılan uçlardan seçmeler. Tümü /api/v1 altındadır; izinler rolünüze göre uygulanır.

Kimlik

  • POST/auth/loginE-posta + şifre → erişim belirteci
  • POST/auth/refreshYeni erişim belirteci (rotasyonlu çerez)
  • GET/auth/meKullanıcı, organizasyon, rol ve izinler

Website ve domain

  • GET/websitesListe (cursor ile sayfalı)
  • POST/websitesWebsite ekle (plan limiti uygulanır)
  • GET/websites/{id}/monitoringUptime, yanıt süresi serileri, olaylar
  • POST/websites/{id}/checkManuel kontrol (kotalı)
  • GET/domainsDomain listesi, bitiş tarihi, registrar

Uyarı ve görev

  • GET/alertsAktif, çözülmüş, tümü
  • POST/alerts/{id}/resolveManuel çözüldü işareti
  • GET/alerts/rulesEtkin kurallar (varsayılan + organizasyon)

Kod ve yedek

  • GET/repositoriesRepo listesi, son commit
  • GET/deploymentsProduction deployment durumu
  • POST/backups/targetsYedek hedefi + tek seferlik token
  • POST/backups/targets/{id}/rotate-tokenToken'ı yenile

Dış girişler

  • POST/ingest/backupsYedek sonucu bildir (Bearer token)
  • POST/webhooks/githubGitHub App olayları (HMAC imzalı)

Genel

  • GET/public/plansSatışa açık planlar ve limitler
  • GET/dashboard/summaryKPI'lar ve aksiyon gereken öğeler
  • GET/exports/{resource}Filtreli dışa aktarım

Webhook doğrulama

GitHub App olayları imzalı gelir. İmza ham gövde üzerinden sabit zamanlı karşılaştırılır; geçerliyse hemen 202 döner, işleme arka planda yapılır.

GitHub olayıpush, deployment, workflow_run…
İmza doğrulanırHMAC-SHA256, sabit zamanlı
202 Kabul edildiTeslimat kimliği ile tekrar engellenir
Kuyrukta işlenirCommit ve deployment durumu güncellenir
X-Hub-Signature-256X-GitHub-EventX-GitHub-Delivery

Hata sözleşmesi

Tüm hatalar RFC 7807 application/problem+json olarak döner; doğrulama hatalarında alan bazlı errors nesnesi bulunur.

  • 400Doğrulama hatası
  • 401Belirteç yok ya da geçersiz
  • 403İzin yok ya da plan limiti
  • 404Bulunamadı (başka organizasyonun kaydı da 404 döner)
  • 409Çakışma (ör. aynı domain zaten kayıtlı)
  • 429Hız sınırı ya da kota; Retry-After başlığı
application/problem+json
{
  "type": "plan-limit",
  "title": "Plan limit reached",
  "status": 403,
  "detail": "Website limit for your plan has been reached.",
  "traceId": "00-8f2c…-01"
}

Cursor sayfalama

Liste uçları offset yerine opak cursor kullanır: büyük veride de sabit maliyet.

cursor pagination
GET /api/v1/websites?limit=50&cursor=eyJ0IjoiMjAyNi0xMC0wNyIsImlkIjoiLi4uIn0

{
  "items": [ … ],
  "nextCursor": "eyJ0IjoiMjAyNi0xMC0wNiIs…"
}

Sınırlar

  • Yedek heartbeat: belirteç başına dakikada 60 istek.
  • Şimdi tara / manuel kontrol: plan başına günlük kota ve website başına bekleme süresi (429).
  • Plan limiti aşımı: 403 ve type: plan-limit.
  • Yenileme ucu özel bir başlık ister (CSRF koruması).

Yedek heartbeat örneği

Belirteç yalnızca Authorization başlığında taşınır. WAM yalnızca sonucu alır; yedek dosyasına erişmez.

Belirteci website detay sayfasındaki Backup bölümünden oluşturursunuz.

Yanıtlar

  • 202Kabul edildi, runId döner
  • 400Geçersiz gövde
  • 401Belirteç eksik ya da geçersiz
  • 429Belirteç başına dakikada 60 istek aşıldı
bashPOST /api/v1/ingest/backups
curl -sS -X POST "https://wamdesk.com/api/v1/ingest/backups" \
  -H "Authorization: Bearer $WAM_BACKUP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"status":"SUCCESS","sizeBytes":123456789,"durationSec":94,"location":"r2://backups/2026-10-07.sql.gz","message":"nightly backup"}'

Bir uç eksik mi?

Hangi otomasyona ihtiyacınız olduğunu yazın; yol haritasını buna göre sıralıyoruz.