Widget ve SDK Uçları

Widget ve mobil SDK trafiği için kullanılan uçlar

Bu sayfa, widget'ın ve mobil SDK'nın kendi trafiği için kullandığı uçları listeler. Çoğu entegrasyon bunlara dokunmaz: widget zaten çağırır. Kendi istemcinizi (örneğin sıfırdan bir mobil uygulama ya da bir "headless" mağaza) yazıyorsanız hangi isteğin ne işe yaradığını buradan okursunuz. Uç dizini için Public API, kimlik kuralları için Kimlik Doğrulama ve Erişim sayfasına bakın.

Bunlar kararlı entegrasyon sözleşmesi değildir

Bu uçların yanıt şekli widget sürümleriyle birlikte evrilir; geriye uyumluluk için ?p= protokol numarası taşırlar. Bir uca bağlanıp widget'ı atlayacaksanız protokolü ve yeteneklerinizi doğru bildirmek zorundasınız; yoksa bir kampanya ya da deney sizin istemcinizin çizemeyeceği biçimde gelebilir. Sorunuz widget'ı değiştirmekse genelde panelden yapılandırmak yeter.

Deney ataması

Bir ziyaretçinin hangi deney koluna girdiğini söyler. Atama visitorId'nin özetinden hesaplanır; yani aynı ziyaretçi her seferinde aynı kolu alır ve istemci tarafında saklanması gerekmez.

GET /api/v1/public/experiments/assign?siteKey=SITE_KEY&visitorId=VISITOR_ID&p=4&capabilities=holdout,audience
ParametreZorunluAçıklama
siteKeyEvetKanal anahtarı (sorgu parametresi, yolda değil)
visitorIdEvetBoşsa 400: boş bir kimlik tüm anonim ziyaretçileri aynı kovaya atardı
pHayırProtokol sürümü (4 güncel). Bir kolun yer tutucusu ya da koşulu istemcinin sürümünün üstündeyse ziyaretçi o deneyin tüm kollarının dışında tutulur
capabilitiesHayırİstemcinin uygulayabildikleri, virgülle ayrılmış: holdout (kontrol kolu hiçbir şey çizmez), audience (kolun kendi kitle kurallarını istemci değerlendirir). Bildirmeyen istemci bunu gerektiren deneylerin dışında kalır
forceVariantHayırQA için deneyId:kolId, tekrarlanabilir. Hash'i ve trafik payını atlar; widget zorlanan kol için hiçbir sayı yazmaz

Yanıt, deney kimliğine göre anahtarlanmış bir nesnedir; her değer experimentId, variantId, variantName, experimentMode ve duruma göre isForced, holdout, hasHoldout, liveCartRequired, audience alanlarını taşır. Hız sınırı IP başına dakikada 60. Kimlik: yalnızca doğrulanmış kanal (403 aksi hâlde).

Deney sayaçları

POST /api/v1/public/experiments/track?siteKey=SITE_KEY
POST /api/v1/public/experiments/track-event?siteKey=SITE_KEY

track gövdesi: experimentId (UUID), variantId (UUID), eventType (exposure, impression, conversion, goal), goalId (UUID, goal için), visitorId (en çok 200 karakter; yoksa olay sayılır ama istatistiğe girmez), revenue, testMode. Yanıt { "success": true }; testMode: true ise { "success": false, "reason": "test_mode" } ve olay sayılmaz. Bir varyant kanalın çalışan bir deneyine ait değilse yazım reddedilir (success: false); bir kanalın anahtarıyla başka kanalın deneyi şişirilemez. Dakikada 120 istek.

track-event serbest bir deney olayıdır: { visitorId, eventName, data }.

Segment değerlendirme

Bir ziyaretçinin hangi segmentlerde olduğunu söyler; widget segment hedefli kampanyaları göstermeden önce bunu sorar.

POST /api/v1/public/segments/evaluate

Gövde: segmentIds (UUID dizisi, zorunlu), visitorId (en çok 100), siteUserId (en çok 255), siteUserProfileId (UUID), sessionId, deviceType (desktop, mobile, tablet), referrer, pageUrl. Kanalı siteKey sorgu parametresiyle söyleyin (?siteKey=SITE_KEY). Yanıt { "results": { "<segmentId>": ... } }. Dakikada 120 istek.

Kimlik kanıtlanmadan sorulamaz: siteUserId mağazanızın ardışık olabilen müşteri kimliğidir ve segment kimlikleri herkese açık yapılandırmada yer alır; bağlama olmasaydı herkes numaralandırılmış müşterilerin "terk edilmiş sepet" ya da "yüksek değerli" üyeliğini okuyabilirdi. Bu yüzden iddia edilen kimlik, identify ile o ziyaretçi için kurulmuş olana indirgenir; kanıtlayamayan çağıran hata almaz, ziyaretçi kapsamlı bir cevap alır.

Senaryo gelen kutusu

Bir senaryonun site içi teslimatı, ziyaretçi sonraki sayfayı yüklediğinde widget tarafından toplanır. config yanıtındaki scenarios.enabled true değilse çağırmayın.

GET  /api/v1/public/sites/:siteKey/scenarios/inbox?visitorId=VISITOR_ID&p=4
POST /api/v1/public/sites/:siteKey/scenarios/inbox/ack

inbox yanıtı { "entries": [ ... ] } biçimindedir. Her giriş deliveryId, scenarioId, runId, nodeId, campaignId, tokens, respectFrequencyCaps, expiresAt, available, scenarioOnly ve (yalnızca senaryoya özel kampanyalarda) kampanyanın kendisini (campaign) taşır. Giriş sayısı sınırlıdır. İstemcinin p protokolü bir kampanyayı çizmeye yetmiyorsa o giriş yanıtta yer almaz ve beklemede kalır; kapatılmaz.

ack gövdesi: visitorId ve en çok 20 öğelik acknowledgements, her biri deliveryId (UUID) ve outcome (shown ya da suppressed:<neden>). shown teslimatı kapatır, başka her sonuç nedeniyle birlikte "atlandı" olarak kapatır. Yanıt { "updated": 1 }. Bilinmeyen kimlik hata vermez, sayılmaz. Her iki uç da dakikada 60 istek ve doğrulanmış kanal (alan adı ya da anahtar) ister. Bu yanıt config'in önbelleğine asla girmez: ziyaretçiye ait claim'ler herkese dağıtılmasın diye ayrı bir istektir.

Tarayıcı bildirimi aboneliği

POST /api/v1/public/sites/:siteKey/push/subscribe
POST /api/v1/public/sites/:siteKey/push/unsubscribe

subscribe gövdesi tarayıcının PushSubscription'ından gelir: visitorId (en çok 64), siteUserId (isteğe bağlı, en çok 64), endpoint (en çok 2000), p256dh ve auth (en çok 255). unsubscribe yalnızca endpoint ister. İkisi de { "success": true } ya da { "success": false } döner ve dakikada 60 istekle sınırlıdır. Kanalda bildirim anahtar çifti yoksa abonelik kabul edilmez (success: false); aksi hâlde ziyaretçi, hiçbir şeyin kullanamayacağı bir izin için tarayıcının tek hakkını harcamış olurdu.

Bu uç, ziyaretçi bildirim iznini verdikten sonra widget'ın çağırdığı uçtur. İzni isteyen yöntemler Selwise.requestPushPermission() ve onu çağıran bir düğmedir: JavaScript API. Bildirimi gösteren service worker'ı sitenizin kök dizininde yayınlamanız gerekir; bkz. Widget Kurulumu.

Abonelikten çıkış bağlantıları

GET  /api/v1/public/sites/:siteKey/unsubscribe?t=TOKEN
POST /api/v1/public/sites/:siteKey/unsubscribe?t=TOKEN
POST /api/v1/public/sites/:siteKey/unsubscribe/resubscribe?t=TOKEN

Selwise'in gönderdiği her e-postadaki bağlantıdır. GET bir HTML sayfası döndürür (Cache-Control: no-store) ve bilinmeyen bir belirteç için bile 200 verir: 404 hangi belirteçlerin gerçek olduğunu gösterirdi. POST RFC 8058 tek tıkla çıkıştır ve { "success": true } ya da false döner. resubscribe aynı belirteçle yeniden abone eder. Dakikada 60 istek. Belirteç tahmin edilemeyen bir HMAC'tir ve yalnızca bu tek işi yapar. Bir yeniden abonelik, bir bounce ya da şikâyet baskısını kaldırmaz; sayfa bunu söyler.

Sağlayıcı olayları

POST /api/v1/public/messaging/:siteKey/:providerId/events

Mesaj sağlayıcınızın (bounce, şikâyet, açılma, tıklama) webhook'u için bir alıcıdır; sağlayıcının kendi imzasıyla doğrulanır, doğrulanamayan çağrı işlenmeden atılır. Her zaman 200 ve { "received": true } döner: başka bir durum sağlayıcının günlerce yeniden denemesine yol açardı. Dakikada 600 istek. Kurulumu: Mesajlaşma Sağlayıcıları.

Görsel editör

/public/sites/:siteKey/editor/verify, .../editor/sessions/:sessionId (GET), .../draft (PUT) ve .../result (PUT) uçları panelin görsel yerleştirme ve sayfa üstü deney editörü içindir. Editör yalnızca panelden açılan, doğrulanmış bir belirteçle gelen yöneticiye yüklenir; bir alışverişçi bu uçlara hiç ulaşmaz. Dakikada 10 ile 240 arası sınırları vardır. Entegrasyonunuzun çağıracağı bir şey değildir: Görsel Yerleştirme.

Yüklenen medya

GET /api/v1/public/media/:assetKey

Panelden yüklediğiniz görselleri (kampanya görselleri, marka logosu) yayınlar. Kimlik istemez; Content-Type ve Content-Length doğru gelir ve Cache-Control: public, max-age=31536000, immutable ile bir yıl önbelleğe alınır. Yüklenen her dosyanın kendi rastgele assetKey'i vardır ve adres immutable işaretlidir: bir adresin içeriği değişmez, güncel görsel her zaman yeni bir yüklemenin yeni adresidir. Bu adresler img-src için api.selwise.com'a izin verilmesini gerektirir: Widget Kurulumu.

Kullanımdan kalkan uçlar

UçDurum
GET /public/sites/:siteKey/widgetsWidget'lar Eylül 2026'da kampanyalara birleşti. Her zaman { "widgets": [] }. Eski bir client.js hâlâ çağırdığı için duruyor
config yanıtındaki widgetsAynı sebep; her zaman boş dizi
/public/newsletter, /public/newsletter/subscribe, /public/newsletter/confirm (siteKeysiz)Selwise'in kendi tanıtım sitesi bülteni; sizin kanalınızın ucu değil

Sırada ne var

Son güncelleme: 10 Ekim 2026