domains
40 uç · /api/v1/domains
İstek örnekleri ucun GERÇEK metodu ve yolundan üretilir. 40 ucun elle doğrulanmış gövde örneği henüz yok; o uçlarda iskelet gövdesizdir — uydurma bir alan yazmıyoruz.
Remove a domain binding (DOM-08). NS-delegasyonlu alan adında platform
idCloudflare zone'u da silinir (best-effort): kiracının alan adı hesabımızda "rehin" kalmaz, kiracı NS'ini registrar'ından eski sağlayıcısına döndürür.
curl -X DELETE "https://api.blesyum.com/api/v1/domains/<id>" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}**EPP/auth kodunu göster** (DOM-30). Alan adını başka bir sağlayıcıya taşımak
idisteyen müşterinin yasal hakkıdır — vermemek müşteriyi kilitlemektir. 🔴 Kod HİÇBİR YERE YAZILMAZ: ne kolona, ne loga, ne bildirim gövdesine. Alan adının tamamını devreden tek-kullanımlık bir sırdır ve saklanan sır er geç sızar. (Aynı ders "personel parolası in-app bildirime yazılmaz"da alınmıştı.) Kod GÖRÜNTÜLENDİĞİ AN yöneticilere duyurulur: gerçek sahibi bunu görmezse alan adının taşındığını ancak alan adı gittiğinde öğrenir.
curl -X POST "https://api.blesyum.com/api/v1/domains/<id>/auth-code" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Otomatik-yenileme aç/kapat (yerel toggle; canlı tahsilat=Faz4). core.settings.manage.
idcurl -X POST "https://api.blesyum.com/api/v1/domains/<id>/auto-renew" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Hassas işlem için e-posta kodu iste (DOM-30). Sıra ÖNEMLİ: önce parola, sonra kod.
id🔴 Sırayı TERS KURMA. Kod önce gönderilseydi bu uç ücretsiz bir **posta bombası** olurdu: saldırgan kurbanın kutusuna istediği kadar "alan adı kodu" yağdırırdı.
curl -X POST "https://api.blesyum.com/api/v1/domains/<id>/challenge" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Kaydı sil. Sistem kayıtları da silinebilir (zone kiracınındır) — UI uyarır;
idrecord_idyönlendirme kırılırsa domains.recheck durumu errora düşürür.
curl -X DELETE "https://api.blesyum.com/api/v1/domains/<id>/dns/<record_id>" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Transfer kilidi (theft-protection) aç/kapat (registrar'a it). core.settings.manage.
id🔴 Kapı ASİMETRİKTİR ve bu bilinçlidir: **açmak** (korumayı kaldırmak) parola + e-posta kodu ister, **kapatmak** (korumayı geri koymak) hiçbir şey istemez. Güvenliği artıran eylemi zorlaştırmak onu yapılmaz kılar — kullanıcı kilidi açık bırakır ve tam da korumak istediğimiz şeyi kaybederiz.
curl -X POST "https://api.blesyum.com/api/v1/domains/<id>/lock" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Nameserver'ları güncelle (registrar'a it). Doğrulama fail-fast. core.settings.manage.
idcurl -X PUT "https://api.blesyum.com/api/v1/domains/<id>/nameservers" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}NS bağlantı durumunu canlı kontrol et: şu anki NS'ler + Cloudflare zone durumu.
idZone 28 günde silinmişse yeniden yaratır (NS çifti değişebilir → köprü tazelenir);
pending ise aktivasyon kontrolünü dürter; active ise kayıtları garanti edip
doğrulamayı kuyruğa alır.
curl -X POST "https://api.blesyum.com/api/v1/domains/<id>/ns/check" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}WHOIS gizlilik korumasını aç/kapat (registrar'a it). core.settings.manage.
idcurl -X POST "https://api.blesyum.com/api/v1/domains/<id>/privacy" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}DOM-42 — "Şimdi kontrol et": adresin ve AİLESİNİN (kök + alt adresler) Blesyum'a
idulaşıp ulaşmadığını BU İSTEKTE ölç ve yaz. core.settings.manage.
Müşteri alan adını yeniledikten ya da NS'i geri çevirdikten sonra buna basar;
cevap BU yanıtta döner (2026-08-16 dersi: "şimdi" diyen düğme kuyruğa iş atıp
eski durumu göstermemeli). NS yöntemiyle bağlı kökün zone'u silinmişse ve NS
bize dönmüşse zone yedekten yeniden kurulur. Bildirim kararı işçidedir
(domains.reach_notify) — "düzeldi"/"koptu" cümlesinin ikinci bir kopyası yok.
curl -X POST "https://api.blesyum.com/api/v1/domains/<id>/reach-check" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Registrar'daki CANLI durum (NS/kilit/gizlilik/bitiş) — yönetim yüzeyini besler.
idNS/kilit/gizlilik yerelde tutulmaz (kolon yok) → her açılışta get_info ile okunur.
core.settings.view.
curl -X GET "https://api.blesyum.com/api/v1/domains/<id>/registrar" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Alan adını yenile (DOM-12 Faz 3). Idempotent sipariş → registrar.renew → yeni
idexpires_at geri-yazılır. Ödeme STUB (canlı tahsilat=Faz4). core.settings.manage.
curl -X POST "https://api.blesyum.com/api/v1/domains/<id>/renew" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/domains/{id}/ssl — adresin kapsamı için Blesyum SSL satın al.
idcurl -X POST "https://api.blesyum.com/api/v1/domains/<id>/ssl" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/domains/{id}/ssl/auto-renew — otomatik yenilemeyi aç/kapa.
idcurl -X POST "https://api.blesyum.com/api/v1/domains/<id>/ssl/auto-renew" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Bağlı bir alan adının ALT ADRESİNİ aç (DOM-22). core.settings.manage.
id🔴 Neden ayrı bir uç (2026-08-16 kullanıcı vakası: *"pdfdonustur.com bağlanmış ama
erp.pdfdonustur.com ERP olsun istiyorum, ayarlayamıyorum"*): kök alan adı NS
yöntemiyle bağlandığında **zone'u ARTIK BİZ yönetiyoruz**. Bu durumda müşteriden
ikinci kez DNS kaydı istemek anlamsız — etiketi yazması yeter, kaydı biz açar,
sahipliği kökten devralır ve adresi ANINDA yayına veririz.
Zone bizde DEĞİLSE (elle/Cloudflare-anahtarı ile bağlanmış kök) uç yine çalışır ama
kayıt pending doğar ve müşteriye eklemesi gereken DNS kayıtları döner — yani
"normal" özel alan adı akışı.
curl -X POST "https://api.blesyum.com/api/v1/domains/<id>/subdomains" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Bir adresin hedefini değiştir (DOM-21). core.settings.manage.
idİkisi de boş gelirse hedef VARSAYILANA döner — "yönlendirmeyi kaldır" ayrı bir uç
istemesin diye. Doğrulama parse_domain_target ile ekleme ucuyla AYNI: modül
lisanslı mı, yönlendirme şeması güvenli mi.
curl -X PATCH "https://api.blesyum.com/api/v1/domains/<id>/target" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Trigger verification of a pending domain (DOM-02) — enqueues the background
idHTTP-challenge check.
curl -X POST "https://api.blesyum.com/api/v1/domains/<id>/verify" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}**WHOIS künyesini (registrant) güncelle** — DOM-31.
idAlan adının kayıt sahibi bilgisi budur: adı, adresi, e-postası. ICANN bu bilgilerin
GÜNCEL tutulmasını zorunlu kılar ve geçersiz e-posta alan adının askıya alınmasına
yol açabilir — yani bu ekran bir konfor değil, bir yükümlülüktür.
🔴 Registrar'a **dört rolün DÖRDÜ de** yazılır (ContactSet::uniform). Yalnız
registrant'ı yazmak, yönetim/fatura/teknik rollerini eski (belki artık şirkette
olmayan) kişide bırakır ve transfer onayı o adrese gider.
⚠ Bu uç save_contactsi çağırır ve o, sağlayıcıda bir DOĞRULAMA e-postası
tetikleyebilir (ICANN kuralı: registrant e-postası değişirse onay istenir).
Kullanıcıya bunu SÖYLEMEK gerekir — sessizce bekleyen bir onay, "değiştirdim
ama olmadı" diye geri döner.
curl -X PUT "https://api.blesyum.com/api/v1/domains/<id>/whois" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Cloudflare "otomatik" bağlama ÖN-KONTROLÜ: kiracının verdiği API anahtarını
**doğrula** + alan adının **zone'unu bul** (hiçbir kayıt oluşturmaz). Anahtar SAKLANMAZ — yalnız bu istekte kullanılır. UX: kullanıcı bağlanmadan önce anahtarın geçerliliğini + zone erişimini görür.
curl -X POST "https://api.blesyum.com/api/v1/domains/cloudflare/check" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Cloudflare "otomatik" bağlama: anahtarı **doğrula** → zone'u **bul** → alan adını
ekle → kiracının Cloudflare zone'unda **proxied CNAME + sahiplik TXT**'yi otomatik
oluştur → doğrulamayı kuyruğa al. Anahtar SAKLANMAZ. Yaygın hatalar (geçersiz token /
erişilemeyen zone) alan adı EKLENMEDEN önce yakalanır. Kayıt oluşturma adımı (nadir
CNAME çakışması vb.) başarısızsa alan adı pending KALIR — rollback YOK (remove_domain
soft-delete + unique(domain) yeniden denemeyi bloklardı); kullanıcı manage görünümünden
kayıtları elle tamamlayıp doğrular.
curl -X POST "https://api.blesyum.com/api/v1/domains/cloudflare/connect" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Tenant'ın WHOIS iletişim profilleri (kayıt formunda seçilebilir). core.settings.view.
curl -X GET "https://api.blesyum.com/api/v1/domains/contacts" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}WHOIS iletişim profilini güncelle. core.settings.manage.
idcurl -X PUT "https://api.blesyum.com/api/v1/domains/contacts/<id>" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}WHOIS iletişim profilini sil. core.settings.manage.
idcurl -X DELETE "https://api.blesyum.com/api/v1/domains/contacts/<id>" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Bu profili varsayılan yap. core.settings.manage.
idcurl -X POST "https://api.blesyum.com/api/v1/domains/contacts/<id>/default" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}NS-delegasyonla bağla: zone'u platform hesabında yarat/bul, yaşayan kayıtları
hasat edip taşı, yönlendirme kayıtlarını garanti et, kiracıya gireceği NS çiftini döndür. Idempotent: aynı alan adıyla tekrar çağrılırsa mevcut zone bilgisi döner.
curl -X POST "https://api.blesyum.com/api/v1/domains/ns/connect" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Alan adı satın al (DOM-12 Faz 2). core.settings.manage + aktif abonelik +
domains_registered limiti. Idempotent sipariş → registrar.register → satın
alınan alan adı galeriye düşer (custom_domains, auto-NS→edge, status active).
Ödeme STUB (canlı tahsilat=Faz4). OT&E'de gerçek para OLUŞMAZ.
curl -X POST "https://api.blesyum.com/api/v1/domains/register" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Alan adı uygunluk + retail fiyat araması (DOM-12). Salt-okunur registrar çağrısı.
Fiyatlar RETAIL (reseller cost + config markup); reseller cost asla sızmaz.
Kök HER ZAMAN bir uzantı KÜMESİ boyunca aranır: kullanıcı "ornek" de yazsa
"ornek.com" da yazsa 20 popüler uzantının tamamı döner (yazdığı uzantı BAŞA alınır).
Eskiden "ornek.com" YALNIZ o tek alan adını sorguluyordu; sağlayıcı o uzantıyı
yanıtlayamayınca liste boş kalıp kullanıcı "Sonuç bulunamadı" görüyordu.
Sağlayıcı, sorgulayamadığı uzantıları yanıttan SESSİZCE düşürür (HTTP 200 +
success:true, kalem yok — OT&E'de .com/.net böyle). Sorulan-ama-dönmeyen her uzantı
bu yüzden yanıtta state:"unchecked" ile DÜRÜSTÇE görünür; yok sayılmaz.
curl -X POST "https://api.blesyum.com/api/v1/domains/search" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Registrar TLD fiyat kataloğu (retail) — "alan adı satın al" yüzeyi için (DOM-12).
domain_pricing global tablosundan (worker pricing_sync doldurur); app SELECT.
curl -X GET "https://api.blesyum.com/api/v1/domains/tlds" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Alan adını Blesyum'a **transfer et** (DOM-12 Faz 3). Asenkron: sipariş processing
kalır, registrar.transfer_poll tamamlanınca galeriye düşürür. Entitlement gate
(alan adı edinme). Ödeme STUB (canlı=Faz4). core.settings.manage.
curl -X POST "https://api.blesyum.com/api/v1/domains/transfer" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Alınmış alan adı için ÜCRETSİZ sahiplik/kayıt sorgusu (arama sonuçlarındaki
"Kim almış?"). Registrar-BAĞIMSIZ — DNA reseller API'sinde böyle bir uç yok;
kaynak registry RDAP'ı (IANA bootstrap) veya yetkili port-43 whois (.tr =
TRABIS, diğerleri IANA referral). Sonuç 6 saat Redis'te paylaşılır (single-
flight; whois verisi yavaş değişir) + tenant başına 10/dk limit — hem kötüye
kullanım hem registry'lerin IP kotası (429) için. gTLD'lerde registrant
GDPR/KVKK gereği çoğunlukla gizlidir (privacy:true) — dürüstçe döneriz.
curl -X GET "https://api.blesyum.com/api/v1/domains/whois" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}DETAYLI whois sorgusu (/domains/whois/[domain] sayfası): özet + registry HAM
çıktısı + kayıt şirketinin whois sunucusuna İKİNCİ sorgu ile Kayıtlı/İdari/
Teknik iletişim blokları. whois_domain_h ile aynı guard'lar (izin + charset
validasyonu + AYNI "whois" rate-limit kovası — iki uç toplamda 10/dk/tenant);
daha ağır olduğundan kendi cache anahtarı (6h, single-flight).
curl -X GET "https://api.blesyum.com/api/v1/domains/whois/detail" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}