Bayiler için

Bayi API dokümanı

Kendi sisteminizden (WHMCS, kendi panel'iniz) müşteri domainlerini ekleyip yönetmek için REST API. Bayi panelindeki her işlem API ile de yapılabilir.

Kimlik doğrulama

Bayi panelinden (Ayarlar → API erişimi) bir anahtar oluşturun. Anahtar yalnızca oluşturulduğu anda gösterilir, kaybederseniz yenisini oluşturmanız gerekir (eskisi geçersiz olur). Her isteğe şu header'ı ekleyin:

Authorization: Bearer sb_live_<anahtarınız>
Temel adres: https://spambil.com — aşağıdaki tüm yollar bu adresin altındadır.

Hesap bilgisi

GET/api/reseller/me

Şirket bilgisi, kayıt ücreti durumu ve tüm domainlerinizin listesi.

curl https://spambil.com/api/reseller/me \
  -H "Authorization: Bearer sb_live_..."

Domain yönetimi

POST/api/reseller/domains

Yeni bir müşteri domaini ekler (ödeme tamamlanana kadar pending_payment durumunda kalır).

curl -X POST https://spambil.com/api/reseller/domains \
  -H "Authorization: Bearer sb_live_..." \
  -H "Content-Type: application/json" \
  -d '{"domain":"musteriniz.com","mailHost":"mail.musteriniz.com"}'

→ { "resellerDomainId": "...", "priceKurus": 10000 }

POST/api/reseller/domains/bulk

Tek istekte en fazla 200 domain ekler. Her satır ayrı değerlendirilir, biri başarısız olsa diğerleri eklenmeye devam eder. Ödeme adımı hâlâ her domain için ayrı yapılır.

curl -X POST https://spambil.com/api/reseller/domains/bulk \
  -H "Authorization: Bearer sb_live_..." \
  -H "Content-Type: application/json" \
  -d '{"rows":[{"domain":"musteriniz1.com","mailHost":"mail.musteriniz1.com"},{"domain":"musteriniz2.com","mailHost":"185.10.20.30"}]}'

→ { "added": 2, "failed": 0, "results": [{"domain":"musteriniz1.com","ok":true,"resellerDomainId":"..."}, ...] }

POST/api/reseller/domains/:id/cancel

Domaini iptal eder, koruma hemen PMG'den kaldırılır.

GET/api/reseller/domains/:id/mx-check

Domainin MX kaydının Spambil'e yönlendirilip yönlendirilmediğini kontrol eder.

→ { "verified": true, "records": ["spam1.jusbil.com", "mx1.spambil.com"], "expected": "spam1.jusbil.com" }

GET/api/reseller/domains/:id/host-check

Kayıtlı mail sunucusunun (mailHost) hâlâ bir IP'ye çözüldüğünü doğrular.

GET/api/reseller/domains/:id/stats?days=30

Son days gündeki tarama/spam/virüs sayıları (varsayılan 30, maksimum 90).

Karantina

GET/api/reseller/domains/:id/quarantine?days=7

Son days gündeki karantinaya alınan mailler (varsayılan 7, maksimum 30).

GET/api/reseller/domains/:id/quarantine/:itemId

Tek bir mailin tam önizlemesi (başlıklar, spam skoru detayı, içerik).

POST/api/reseller/domains/:id/quarantine/action

curl -X POST https://spambil.com/api/reseller/domains/:id/quarantine/action \
  -H "Authorization: Bearer sb_live_..." \
  -H "Content-Type: application/json" \
  -d '{"itemId":"C1R2T3","action":"welcomelist"}'
actionAnlamı
welcomelistMaili teslim eder ve göndereni güvenilir listesine ekler
deliverYalnızca teslim eder, güven listesine eklemez
deleteKalıcı olarak siler

Güvenilir / engelli listeler

GET/api/reseller/domains/:id/lists?pmail=kutu@domain.com&type=welcomelist

type: welcomelist veya blocklist.

POST / DELETE/api/reseller/domains/:id/lists

-d '{"pmail":"kutu@domain.com","type":"welcomelist","address":"gonderen@disaridan.com"}'

Ekip erişimi

Yalnızca hesap sahibi (/api/reseller/me yanıtındaki isOwner: true olan e-posta) ekip yönetebilir ve API anahtarı oluşturabilir. Ekip üyeleri aynı domainlere/karantinaya erişebilir ama bu iki şeyi yapamaz.

GET/api/reseller/team

POST/api/reseller/team

-d '{"email":"ekip@sirketiniz.com"}'

DELETE/api/reseller/team/:id

Fiyatlandırma

/api/reseller/me yanıtındaki priceTiers ve nextDomainPriceKurus alanları, aktif (ödemesi yapılmış) domain sayınıza göre kademeli fiyatı gösterir: 1-9 domain 100₺, 10-49 domain 85₺, 50+ domain 70₺ (yıllık, domain başına). Yeni eklenen bir domainin fiyatı eklendiği andaki kademeye göre belirlenir ve yenilemelerde sabit kalır.

Raporlama

GET/api/reseller/export

Tüm domainlerinizi ve son 30 günlük tarama/spam/virüs sayılarını text/csv olarak döner (kendi fatura/iç raporlama sistemlerinize aktarmak için). Tarayıcıdan çağrıldığında doğrudan indirilir.

Ödeme

POST/api/reseller/checkout/start

Bir ödeme token'ı döner; kart bilgisi yalnızca PayTR'ın kendi sayfasında girilir, bu API kart verisi görmez/işlemez. Dönen token'ı aşağıdaki gibi bir ödeme linkine çevirip bayi yöneticinizi yönlendirebilirsiniz.

-d '{"kind":"domain","resellerDomainId":"..."}'
→ { "token": "..." }

Ödeme linki: https://www.paytr.com/odeme/guvenli/<token>
Kayıt ücreti için {"kind":"signup_fee"} gönderin.

Hata formatı

Hatalı istekler {"error": "kod"} gövdesiyle döner. Yaygın kodlar: unauthenticated (401, anahtar eksik/geçersiz), forbidden (403), not_found (404, domain size ait değil), domain_taken (409).