White-label: marka, özel alan adı ve bayi hesabı
Pushizo'yu kendi markanızla sunun: panelde ve sistem e-postalarında ürün adınız, logonuz ve renkleriniz; kendi alan adlarınızda panel, izleme bağlantıları, tercih merkezi ve durum sayfası; ajanslar için alt müşteri…
Pushizo'yu kendi markanızla sunun: panelde ve sistem e-postalarında ürün adınız, logonuz ve renkleriniz; kendi alan
adlarınızda panel, izleme bağlantıları, tercih merkezi ve durum sayfası; ajanslar için alt müşteri yönetimi ve toplu
faturalama. Kararlar: docs/adr/0032-hucre-mimarisi-white-label-bayi.md.
| Özellik | Plan |
|---|---|
| Marka (ad, logo, renkler, destek e-postası) ve özel alan adları | Growth ve Enterprise (white_label) |
| "Powered by Pushizo" ibaresini gizleme | Enterprise (hide_powered_by) |
| Bayi hesabı (alt organizasyonlar, toplu döküm) | Enterprise (reseller) |
1. Marka
Organizasyon → Marka sayfasından ya da API ile:
PUT /internal/v1/orgs/:orgId/branding
{ "product_name": "Acme Push", "primary_color": "#112233", "secondary_color": "#445566",
"support_email": "destek@acme.com", "hide_powered_by": true }- Renkler
#RRGGBB; alanı kaldırmak içinnullgönderin.GETyanıtındakieffectivealanı plan özellikleri ve (alt organizasyonda) bayi markası uygulanmış hâlidir. - Logo:
PUT /internal/v1/orgs/:orgId/branding/logo(multipartfile) — PNG, JPEG veya WebP, en çok 512 KB. Dosya türü içerikten doğrulanır; SVG kabul edilmez (betik taşıyabilir). LogoGET /branding/v1/logos/:orgId/:dosyaadresinden sunulur; yeni logo yüklenince eskisi silinir. Harici birhttpsadresi delogo_urlile verilebilir. - Sistem e-postaları (davet, kullanım/deneme uyarıları, kanal ve webhook sağlık bildirimleri, veri ambarı hataları; parola sıfırlama ve e-posta doğrulama ise istek markalı panel alan adından geldiyse) markanızla gider: ürün adı, logo, birincil renk, destek adresi; bağlantılar etkin panel alan adınıza yönelir. "Powered by Pushizo" yalnızca planınız izin veriyor ve gizlemeyi seçtiyseniz kaldırılır.
- Alt organizasyonun kendi markası yoksa bayinin markası kullanılır.
2. Özel alan adları
Desteklenen türler:
| Tür | Ne sunulur |
|---|---|
dashboard | Markalı panel (giriş, kayıt ve tüm ekranlar) |
tracking | Açılma/tıklama izleme, abonelikten çıkış ve tercih bağlantıları (/t/…) |
preference_center | Abonelik tercih merkezi ve abonelikten çıkış (/t/p, /t/u) |
status_page | Durum sayfası (/status, /status.json) |
Ekleme: Organizasyon → Özel alan adları → Ekle veya
POST /internal/v1/orgs/:orgId/custom-domains
{ "kind": "dashboard", "hostname": "panel.acme.com" }
→ 201 { "id": "cdm_…", "status": "pending",
"verification": { "txt_name": "_pushizo-challenge.panel.acme.com", "txt_value": "hs-verify=…",
"cname_target": "edge.eu.pushizo.com" } }DNS'e iki kayıt ekleyin:
| Kayıt | Ad | Değer |
|---|---|---|
| TXT | _pushizo-challenge.panel.acme.com | hs-verify=… (yanıttaki txt_value) |
| CNAME | panel.acme.com | yanıttaki cname_target |
Durumlar: pending → (TXT doğrulandı) verified → (CNAME de doğru) active. Kontrol 5 dakikada bir otomatik yapılır;
beklemek istemezseniz POST …/custom-domains/:id/verify. 72 saat içinde doğrulanamayan veya TXT kaydı silinen alan adı
failed olur (yeniden doğrulama süreyi yeniden başlatır). last_error: txt_missing, txt_mismatch, cname_missing,
cname_mismatch, dns_error.
- TLS sertifikası, alan adı
activeolduktan sonra ilk istekte otomatik alınır (ACME); ek işlem gerekmez. - Bir alan adı tüm bölgelerde tek bir organizasyona ait olabilir (başka organizasyonda kayıtlıysa 409). Organizasyon başına en çok 20 alan adı; IP adresi, tek etiketli ad, port ve platformun kendi alan adları kullanılamaz.
- Güvenlik: bir türün alan adında yalnızca o türün yolları açılır; izleme/tercih merkezi bağlantısı yalnızca alan adının organizasyonuna (veya bayinin alt organizasyonlarına) aitse çalışır. Markalı panelde yapılan oturumlu değişiklikler yalnızca o alan adının organizasyonu (ve bayinin alt organizasyonları) için kabul edilir.
- Bölge taşımasından sonra CNAME'i yeni bölgenin hedefine güncelleyin (Veri yerleşimi).
3. Bayi hesabı
Bayi (Enterprise + reseller) alt organizasyonlar oluşturur ve yönetir. Alt organizasyonlar ayrı kiracılardır; verileri
birbirinden ve bayiden yalıtılmıştır. Tek seviye desteklenir (alt organizasyon bayi olamaz).
| İşlem | Uç (yetki org.manage) |
|---|---|
| Alt organizasyonları listele / oluştur | GET / POST /internal/v1/orgs/:orgId/reseller/children (name, isteğe bağlı slug, plan_code) |
| Askıya al / sürdür | POST …/children/:childId/suspend (reason), POST …/children/:childId/resume |
| Destek erişimi al / bırak | POST / DELETE …/children/:childId/support-access (role: admin | viewer) |
Aylık döküm (yetki billing.manage) | GET …/reseller/statement?month=YYYY-AA |
- Yeni alt organizasyonun sahibi işlemi yapan bayi üyesidir; varsayılan plan
starter, deneme süresi yoktur. Bayi alt organizasyona kendi planından yüksek bir plan atayamaz (400,details.max_plan_code). - Askıya alma: bayi yalnızca kendi koyduğu askıyı (
reseller:önekli neden) kaldırabilir; platformun koyduğu askılar destek ekibine aittir. - Destek erişimi alt organizasyonda geri alınabilir bir üyeliktir ve hem bayinin hem alt organizasyonun denetim kaydına yazılır.
- Faturalama bayi üzerinden toplu yapılır: alt organizasyonun kendi ödeme akışı yoktur (
409 reseller_managed). Döküm her alt organizasyon için plan bedeli ve kullanımı (gönderilen mesaj, olay, API isteği; ayın en yüksek aktif abone ve MAU değeri) ile toplamları verir. - Alt organizasyonlar bayiyle aynı veri bölgesinde oluşturulur; bayi hiyerarşisindeki bir organizasyon tek başına başka bölgeye taşınamaz.