PushizoDocs
API referansı

API değişiklik günlüğü

Public REST API, SDK'lar ve webhook'larla ilgili sürüm notları (CHANGELOG.md'den süzülür).

Sözleşme politikası: /v1 altına yalnızca geriye dönük uyumlu ekleme yapılır; kırıcı değişiklikler yeni sürüm yolunda yayımlanır (sürümleme). Tüm ürün değişiklikleri için sürüm notları.

1.0.0 - 2026-10-16

Öne çıkanlar

  • Pushizo marka adı: ürün HeroSignal'den Pushizo'ya taşındı; paketler @pushizo/*, imajlar ghcr.io/exec0de/pushizo-*, SDK paket adları ve varsayılan API kökü https://api.pushizo.com, hata dokümantasyonu https://docs.pushizo.com/errors.
  • v2 fazları (15–21): kurumsal kimlik (SAML/OIDC SSO, SCIM, JWT kimlik doğrulama), ölçek mimarisi (ClickHouse, Kafka, Go dispatcher, Helm), iOS Live Activities, Huawei HMS, konum; sürükle-bırak e-posta editörü, HTML in-app, şablon galerisi, Data Feeds, Dynamic Content, AI içerik asistanı; WhatsApp, RCS, iki yönlü SMS, teslim edilebilirlik; Event Streams, veri ambarı dışa aktarımı, hazır entegrasyonlar ve MCP sunucusu; veri yerleşimi (EU/TR), white-label ve bayi.
  • OneSignal tarzı kurulum akışı: "Başlarken" ve SDK kurulum sayfaları (platform seçimi, adım adım kurulum, kod örneklerinde genel API adresi).

Eklendi

  • Kurumsal kimlik (Faz 15): SAML 2.0 ve OIDC SSO (alan adı DNS doğrulaması, JIT, IdP grup → rol, test girişi, "yalnızca SSO" ve sahip kurtarma kodları), SCIM 2.0 (/scim/v2/Users, /Groups), org'lar arası app taşıma (iki sahip + platform admin onayı), olay başına saklama süresi, SIEM denetim akışı (audit.created webhook'u ve günlük NDJSON).
  • JWT identity verification: app başına ES256 genel anahtarları (/v1/apps/:appId/identity-keys), identity_verification_mode (hmac \| jwt \| both); Web/Android/iOS/Flutter/RN/Capacitor/Cordova/MAUI/Unity SDK'larında login(externalId, { jwt }) ve updateUserJwt; Node/PHP/Python/Go/Java/.NET/Ruby sunucu SDK'larında belirteç üretme yardımcısı.
  • iOS Live Activities (Faz 17a): tür kaydı ve şema doğrulaması, POST /v1/apps/:appId/live-activities/:activityType/start\|update\|end, SDK push-to-start/güncelleme belirteci uçları (sahiplik kanıtı zorunlu), APNs liveactivity yükü, journey live_activity düğümü (Liquid + şema çevirisi), dashboard Live Activities sayfası, iOS SDK Pushizo.LiveActivities.register ve köprülerde genel tür.
  • Huawei HMS, Flutter web, Mac Catalyst, konum (Faz 17b, ADR-0025): hms_push kanalı ve Push Kit sağlayıcısı (OAuth, data mesajı, doğrulama), Android pushizo-hms modülü, Flutter web (Web SDK köprüsü), iOS Mac Catalyst; tüm SDK'larda Location.setShared/isShared/requestPermission (yalnızca ön plan, KVKK rıza kaydı, kapatınca silme), segmentte "yarıçap içinde" koşulu, dashboard Huawei kanal kartı ve kullanıcı konumu.

Güvenlik

  • Yol kanonikleştirme ve rota desenine göre kimlik türü (API anahtarı yalnızca /v1, oturum yalnızca /internal//admin); /internal ve /admin mutasyonlarında köken + içerik türü denetimi; HTML yanıtlarına CSP.
  • TRUST_PROXY ile sınırlı vekil güveni (XFF sahteciliğiyle IP izin listesi/hız sınırı atlatılamaz); IPv6 CIDR izin listesi.
  • API anahtarı kapsamı rol iznine bağlandı; app kapsamlı üyeler için org geneli işlem ve okuma sınırları.
  • SDK sahiplik kanıtı e-posta/SMS yeniden kaydına, olaylara, in-app/inbox ve tercih uçlarına genişletildi (ADR-0016 K7–K9).
  • Resend imza zorunluluğu (üretim), SNS TopicArn/tazelik; hook token'larının log maskelemesi; MinIO en az yetkili servis kullanıcısı; API Explorer SRI.

Eklendi

  • Başarısız kuyruk işleri (DLQ) listesi ve yeniden deneme (admin), kanal durumu ucu, olay tanımlarında imleç sayfalama, kampanya onayında kota önizlemesi, segment/şablon arama.
  • Journey'ler (Faz 11, ADR-0018): 13 düğüm türlü motor (bekleme, koşul, split, zaman penceresi, gönderim A/B, webhook, tag), giriş/çıkış kuralları, hedefler, takvim, sürümleme, çökme sonrası kurtarma; React Flow builder, run zaman çizelgesi, journey.* webhook'ları; gönderim düğümünde tercih kategorisi.
  • A/B ve tercihler (Faz 12, ADR-0019): kampanya/journey/in-app A/B (deterministik atama, holdout, z-testi, otomatik/elle kazanan; in-app kazanan 0024), kategoriler ve kullanıcı tercihleri (API, tüm istemci SDK'ları dahil RN/Capacitor/Cordova/MAUI/Unity, barındırılan tercih merkezi), etiketler, şablon analitiği, çoklu frekans pencereleri, outcome türleri (unique/unattributed), usage_duration segmenti, retention kohortu, SMS HELP/STOP yanıtları.
  • Operasyon (Faz 14): Docker/compose/Helm, CI/CD (release, SDK yayını, E2E, Stripe test modu, gitleaks, Dependabot, PR imaj derleme), Prometheus/Grafana/Alertmanager, Sentry, sentetik izleme, kaos tatbikatı, wal-g + günlük temel yedek, runbook'lar, docs-site (+ dağıtım), OneSignal göç aracı, Postman koleksiyonu, GO_LIVE_CHECKLIST.md.

Güvenlik

  • Üretim Postgres'te uygulama rolü NOSUPERUSER/NOBYPASSRLS (RLS gerçekten uygulanır); API/worker açılışta rolü denetler.

0.6.0 — 2026-10-07 (Faz 10: e-posta, SMS, in-app, bildirim kutusu)

Eklendi

  • SMS: Twilio ve Netgsm (encoding: TR, İYS filtresi); kısa link (/t/s), GSM-7/UCS-2/Türkçe kaydırma segment sayımı (smsSegments), STOP/START (Twilio gelen mesaj, Netgsm gelen kutusu sorgusu, genel webhook).
  • Gelen geri bildirim: /hooks/email/{ses\|resend\|smtp\|mock}/{token}, /hooks/sms/{twilio\|mock}/{token} (SNS/Svix/Twilio imzaları); bounce/complaint/teslim/açılma/tıklama teslimata, sayaçlara ve webhook'lara işlenir; Netgsm rapor sorgusu.
  • Suppression list: özet + maskeli değer; audience ve gönderim anında kontrol; internal + public API, dashboard ekranı.
  • In-app mesajlar: blok tabanlı modal/banner/tam ekran, tetikler (oturum, olay, ekran, trigger), segment kitlesi, sıklık, istatistik; Web/Android/iOS/Flutter render ve InAppMessages API'si; dashboard editörü ve canlı önizleme.
  • Bildirim kutusu: add_to_inbox mesajları; SDK Inbox (liste, okundu, tümü, arşiv) ve uçları; kullanıcı detayında inbox.
  • SDK: User.addEmail/removeEmail/addSms/removeSms (anonim kullanıcıya user.subscription_id ile bağlama); Node hs.suppressions, PHP Suppressions; örnek uygulamalar güncellendi.
  • Dashboard: E-posta/SMS kanal ayarları ve webhook adresi kartı, kampanya/şablon editöründe E-posta ve SMS sekmeleri (MJML editörü + sandbox önizleme, segment sayacı).

Değişti

  • ci:local OpenAPI denetimi birleşim (oneOf/anyOf) varyantlarını ayırt eder: yeni varyant kırıcı sayılmaz, mevcut varyanta zorunlu alan eklemek sayılır.

0.5.0 — 2026-10-07 (Faz 9: webhook'lar)

Eklendi

  • Giden webhook'lar: endpoint yönetimi (internal + public admin), 20 olay türü, HMAC-SHA256 imza (Pushizo-Signature), 24 saatlik secret rotasyonu, özel başlıklar (şifreli), batch modu (delivery.* 100'erli), test gönderimi, teslim geçmişi, tekil/toplu replay.
  • Teslim motoru: transactional outbox + worker taraması (ADR-0014), üstel yeniden deneme (1 dk → 24 sa, 7 istek sonra dead), SSRF koruması (https, özel IP/yerel ad reddi, DNS sonrası IP sabitleme, yönlendirme yok), endpoint sağlığı (7 gün failing + e-posta, 14 gün disabled), 30 gün saklama, webhook_deliveries_total metriği.
  • SDK: Node verifyWebhookSignature / constructWebhookEvents / hs.webhooks; PHP Pushizo\Webhook.
  • Dashboard: Webhooks liste ve detay ekranları, imza doğrulama örnekleri; trace'te webhook teslimleri.
  • Migration 0014_webhooks (up/down); docs/webhooks.md; E2E webhooks.spec.ts.

Düzeltildi (Faz 9 eksik turu)

  • Kullanıcı silme ve app veri temizliği webhook teslim geçmişindeki kişisel veriyi de siler (KVKK/GDPR).
  • Webhook taraması: endpoint başına kota ve eşzamanlılık sınırı, devre kesici, kira korumalı gönderim (çok worker'da çift gönderim önlenir).
  • event.received aboneliğinde olay adı filtresi zorunlu; başarısız test gönderimi endpoint sağlığını etkilemez; alias/external_id değişiminde user.updated; alias ekleme çakışması transaction'ı bozmaz; 64 KB üzeri yük kesilir.
  • Bildirim merkezinde sorunlu webhook'lar; gecikme metrikleri ve tests/load/webhooks-bench.mjs (p95 4,5 sn).

0.4.0 — 2026-10-07 (Faz 0–8 derin denetim ve eksik kapatma)

Eklendi

  • API: Idempotency-Key başlığı, filter[...] ve sort parametreleri, export/import cursor sayfalaması, bildirim geçmişi (GET /v1/notifications/{id}/history), ?kind= filtresi, X-HTTP-Method-Override, SDK alias ve dismissed uçları, SDK hata raporları, kanal kimlik bilgisi dosya yükleme, statik segmentler (segments/{id}/refresh), bildirim merkezi, kullanıcı son mesajları, kampanya canlı akışı (SSE), genel bakışta özel tarih aralığı ve son kampanyalar, web push istem/SW ayarları SDK config'te, public organizasyon/üye/audit uçları.
  • Teslimat: FCM data-only ve ortak hs {dlv, msg, url, buttons} payload alanı, 4 KB payload sınırı, cihaz bazında APNs ortamı, iOS rozet artırma, app başına adil sıralama ve sağlayıcı hız sınırı, rate_limited için deneme sayılmayan erteleme, kimlik bilgisi reddinde sahibine e-posta, mock:open, test cihazı adları.
  • SDK'lar: Android 12+ uyumlu bildirim açma, token değişiminde güncelleme, alias API'si (Web/Android/iOS/Flutter), Flutter ön plan engelleme, iOS NSE rozet/kategori birleştirme, web slidedown kaydırma tetikleyicisi ve kategoriler, SW yeniden deneme, SDK hata raporlama, Node SDK notifications.history.
  • Dashboard: ⌘K komut paleti, bildirim zili, global app seçici; request_id'li hata durumları; DataTable/CodeBlock/DateRangePicker/JsonViewer/Stepper; yerel sayı biçimi ve hesap saat dilimi; API anahtarı süresi; gönderim onay modalı; kişiselleştirme değişken seçici; web izin istemi tasarımcısı; kullanıcı detayı düzenleme; SDK hataları log sekmesi.
  • Araçlar: npm run ci:local (OpenAPI kırıcı değişiklik, npm audit, gizli bilgi taraması, i18n, migration çiftleri), npm run openapi:baseline, k6 olay ingest betiği.

Değişti

  • Kiracı dışı erişim her zaman 404 HS_NOT_FOUND (ADR-0011); geçersiz cursor 400 HS_VALIDATION_ERROR.

Güvenlik

  • fastify 5.11.3 → 5.12.5 (yüksek önem, 7 GHSA), js-yaml 5.3.0 → 5.4.3 (overrides); TOTP tekrar kullanım engeli, API anahtarı iptal önbelleği yarışı, artan giriş gecikmesi, JSON derinlik ve gövde boyutu sınırları, aktif DEK önbelleğinin rotasyonu algılaması.

0.3.0 — 2026-10-07 (Faz 8: olaylar, analitik, dönüşüm, export/import)

Eklendi

  • Analitik API ve ekranları: teslimat (gün/kanal/kampanya), abonelik büyümesi, olay hacmi, dönüşüm/gelir, funnel, sağlayıcı sağlığı (hata kodları, gecikme p50/p95), etkileşim ısı haritası; tarih aralığı, önceki dönemle karşılaştırma, CSV export; ECharts grafikleri.

Performans

  • 1M olay ingest tek API sürecinde 11679 olay/sn (hedef ≥ 5k); 100.000 kullanıcı export 2,0 sn (18,1 MB CSV, hedef < 60 sn); 1M olay ingest sırasında worker olay işlemesi eşzamanlı çalıştı.

0.2.0 — 2026-10-07 (Faz 7: segmentler, şablonlar, kampanyalar)

Eklendi

  • Segmentler: iç içe all/any/none koşul AST'si → parametrik SQL derleyici (tag/özellik/dil/cihaz/semver/olay sayısı/mesaj etkileşimi/segment üyeliği), canlı önizleme ve önbellekli tahmin uçları, dashboard segment builder.
  • Şablonlar: sürümlü mesaj şablonları (template_versions), geri alma, Liquid render önizlemesi; POST /v1/notifications içinde template_id.
  • Kampanyalar: durum makinesi (taslak/zamanlandı/çalışıyor/duraklatıldı/tamamlandı/iptal/başarısız), planlı ve tekrarlı (cron + saat dilimi) gönderim, kullanıcı saat dilimi ve akıllı teslimat, hız sınırı, frekans/sessiz saat istisnaları, onay akışı (settings.campaignApprovalRequired), kopyalama, istatistik/rollup uçları; dashboard 5 adımlı kampanya oluşturucu ve detay ekranı.
  • Hedefleme: included_segments, excluded_segments, filters, all ve delayed_option artık Public API'de çalışır (Faz 4 501 yanıtları kaldırıldı).
  • Tamamlama turu: Teslimat politikaları ekranı (sessiz saat, frekans sınırı, varsayılan TTL); segmentin kullanıldığı kampanyalar; kampanya listesinde tür/kanal filtresi ve iptal; kampanya detayında abone bazlı teslimat tablosu ve "başarısızlara yeniden gönder"; ad yazarak iptal onayı; Kullanıcılar sayfasında segment builder filtresi ve POST /v1/apps/{app_id}/users/search; hedef kitle snapshot'ı (segment_snapshot); TABLESAMPLE ile büyük tablo tahmini; builder between/subscription.status; içerik editöründe kanal sekmeleri; Chrome önizleme çerçevesi.

0.1.0 — 2026-10-06 (MVP: Faz 0–6)

Eklendi

  • Altyapı (Faz 0): npm workspaces + Turborepo monorepo; NestJS 11 + Fastify API; BullMQ worker; Next.js 16 dashboard; Drizzle + SQL migration'lar (up/down); pino + Prometheus metrikleri; OpenAPI üretimi ve tip güvenli istemci.
  • Kimlik ve kiracılık (Faz 1): kayıt/giriş/e-posta doğrulama/parola sıfırlama, oturum yönetimi, TOTP MFA + kurtarma kodları, giriş kilidi; organizasyon/üyelik/davet, roller ve app kapsamı, API anahtarları (scope, iptal ≤ 60 sn önbellek), audit log, Redis hız sınırı, Postgres RLS ikinci savunma hattı, org MFA zorunluluğu ve IP izin listesi.
  • Son kullanıcı kimliği (Faz 2): end user / alias / abonelik modeli, anonim → kimlikli birleştirme, tag/özellik merge-patch, identity verification (HMAC), SDK API (/sdk/v1), public Users/Subscriptions API, KVKK/GDPR silme ve veri dışa aktarma.
  • Sağlayıcılar (Faz 3): envelope encryption (DEK + MASTER_KEY, rotasyon komutları), APNs HTTP/2, FCM HTTP v1, Web Push (VAPID), mock sağlayıcı, kanal doğrulama uçları.
  • Teslimat motoru (Faz 4): POST /v1/notifications (idempotency), audience/dispatch worker'ları, LiquidJS kişiselleştirme, bastırma (frekans sınırı, sessiz saat), planlı yeniden deneme, sayaçlar, trace ekranı, test cihazları, kuyruk-veritabanı uzlaştırma işi.
  • SDK'lar (Faz 5): Web (@pushizo/web), Android, iOS (+ Notification Service Extension), Flutter, Node, PHP; örnek uygulamalar ve docs/sdk/* rehberleri.
  • Dashboard çekirdeği (Faz 6): onboarding stepper (simülasyon modu, canlı cihaz algılama, test push), Genel Bakış KPI'ları, SDK Kurulumu, Test Cihazları, API Explorer, Loglar; tr/en, koyu tema, axe erişilebilirlik taraması.

Güvenlik

  • Güvenlik başlıkları (CSP, HSTS, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, X-Frame-Options) API ve dashboard'da.
  • Gizli bilgiler (p8, servis hesabı, VAPID private, SDK secret) yalnızca şifreli saklanır; API'den geri okunamaz.

Bu sayfada