Zenginleştirme Uçları

enrichments, product-facts ve app/enrichments

Ürün zenginleştirmesi üç uçtan dağıtılır. Hangisini kullanacağınız içeriği kimin ve nerede çizeceğine bağlıdır:

Uçİçeriği kim çizerSayfa
GET /public/sites/:siteKey/enrichmentsWidget, tarayıcıda; ham blok ve token verirBu sayfa
GET /public/sites/:siteKey/product-factsWidget, kampanya metnindeki product.* yer tutucuları içinBu sayfa
GET /public/sites/:siteKey/app/enrichmentsMobil uygulama; hazır HTML verirBu sayfa
GET /public/sites/:siteKey/ssr/enrichmentsSizin sunucunuz, sayfayı oluştururken; hazır HTML verirSunucu Taraflı Render API

Zenginleştirmenin panelde nasıl kurulduğu için Ürün Zenginleştirme bölümüne bakın. Üç tarayıcı uçta da kimlik, kanalın doğrulanmış alan adıdır (ya da başlıksız istekte mobile_read anahtarı). Kimlik kuralları: Kimlik Doğrulama ve Erişim.

enrichments

Bir ürün koduna atanmış, aktif zenginleştirme bloklarını çözümlenmiş hâlde döndürür. Çakışma sıralaması sunucuda yapılmıştır.

curl -G "https://api.selwise.com/api/v1/public/sites/SITE_KEY/enrichments" \
  -H "Origin: https://magaza.com" \
  --data-urlencode "code=SKU-12345"
ParametreAçıklama
codeÜrün kodu. sku, item_code ya da sepet kodu; büyük/küçük harf duyarsız. En çok 100 karakter
test1 ya da true ise test modundaki kurallar da gelir
{
  "v": "m3k1p.4",
  "items": [
    {
      "assignmentId": "8f3a2b7c-...",
      "selector": ".product-description",
      "insertPosition": "after",
      "order": 0,
      "blocks": [
        { "blockId": "5d1e9c0a-...", "html": "<table>…</table>", "css": ".x{}", "reservedHeightPx": 240 }
      ],
      "segmentTargetingMode": "all",
      "segmentIds": [],
      "isTestMode": false
    }
  ],
  "tokens": { "code": "SKU-12345", "title": "Ürün Adı", "price": 199.9, "currency": "TRY", "inStock": true }
}
AlanAnlamı
vİçerik sürüm damgası; sitenin herhangi bir zenginleştirme kuralı ya da bloğu değiştiğinde değişir
items[]Render sırasındadır. Bir kural birden fazla blok taşıyabilir; bunlar tek kök altında çizilir ve tek gösterim sayılır
insertPositionbefore, after, inside-start, inside-end ya da replace; panelde sırasıyla Before element, After element, Inside element (start), Inside element (end), Replace element (Türkçe arayüzde Öğeden önce, Öğeden sonra, Öğe içinde (başlangıç), Öğe içinde (bitiş), Öğeyi değiştir)
blocks[].html, .cssSatıcı tarafından yazılmış içerik; ${...} yer tutucuları henüz doldurulmamıştır
blocks[].reservedHeightPxBlok gelmeden önce ayrılacak yükseklik (px); sayfa kaymasın diye
tokensYer tutucuları doldurmak içindir. Blok ${attr.renk} gibi besleme özniteliklerini kullanıyorsa tokens.attrs yalnızca kullanılan anahtarları taşır
segmentTargetingMode, segmentIdsSegment hedeflemesi istemcide değerlendirilir; kişiye bağlı bir karar sunucuda verilmez
isTestModetrue ise yalnızca test modundaki ziyaretçiye çizilir

Kod bulunamazsa, boş gönderilirse, 100 karakterden uzunsa ya da tekrarlı ?code= verildiyse uç hata değil boş yanıt döner (items: []): widget kodu sayfadan okur ve orada 400 üzerinde işlem yapamayacağı bir gürültüdür. Sitede aktif istemci zenginleştirmesi yoksa yine boş döner.

html ve css satıcı içeriğidir. Widget bunları DOM'a koymadan önce sanitize eder ve CSS'i blok kapsamına alır. Kendi arayüzünüzde kullanıyorsanız bunu sizin yapmanız gerekir; zenginleştirme izin listesi yazılı bir bileşendir ve aynı çıktıyı elde etmenin en güvenli yolu bu ucu değil SSR ucunu (hazır, temizlenmiş HTML) kullanmaktır.

renderMode Yalnızca sunucu olan kurallar bu uca hiç girmez: widget onları çizmeyeceği için gönderilmezler.

Yanıt kanal başına, ürün koduna ve sürüm damgasına göre 5 dakika, içeriği olmayan kodlar için 1 dakika önbelleğe alınır.

product-facts

Kampanya metnindeki product.* yer tutucularının (örneğin "Son 3 ürün") okuduğu katalog bilgisidir. Zenginleştirme kuralı olmadan, aynı ürün aramasıdır.

GET /api/v1/public/sites/:siteKey/product-facts?code=SKU-12345
{
  "code": "SKU-12345",
  "known": true,
  "title": "Ürün Adı",
  "price": 199.9,
  "originalPrice": 249.9,
  "stock": 3,
  "currency": "TRY"
}

Katalogda bulunamayan, boş ya da 100 karakterden uzun bir kod için { "code": "...", "known": false } döner. stock, beslemede sayı varsa o sayıdır; ürün stokta değil ve sayı yoksa 0; stokta ve sayı yoksa null (bilinmiyor, sıfır değil). Hız sınırı IP başına dakikada 1000, yanıt 2 dakika önbelleğe alınır (bulunamayan kod 1 dakika).

app/enrichments

Uygulama kanalı için hazır içerik: yer tutucular doldurulmuş, HTML temizlenmiş, CSS kapsamlanmış. Bir uygulamada DOM ve CSS seçici yoktur; içerik yuva adıyla yerleştirilir.

curl -G "https://api.selwise.com/api/v1/public/sites/SITE_KEY/app/enrichments" \
  -H "x-selwise-api-key: swpk_live_..." \
  --data-urlencode "code=SKU-12345" \
  --data-urlencode "slots=pdp-specs,pdp-shipping"
ParametreAçıklama
codeÜrün kodu
slotsYuva adları, virgülle ayrılmış. Küçük harf, rakam ve tek tire; en çok 10
test1 ya da true ise test modundaki kurallar da gelir
{
  "v": "m3k1p.4",
  "code": "SKU-12345",
  "resolved": true,
  "slots": ["pdp-specs", "pdp-shipping"],
  "items": [
    {
      "assignmentId": "8f3a2b7c-...",
      "placementKey": "pdp-specs",
      "order": 0,
      "html": "<div data-selwise-root=\"true\" ...>...</div>",
      "css": "[data-selwise-enrichment=\"5d1e9c0a\"] .spec-table{...}",
      "reservedHeightPx": 240,
      "segmentTargetingMode": "include",
      "segmentIds": ["..."],
      "isTestMode": false
    }
  ]
}
  • Yanıt kural başınadır; html ve css kuralın tamamı için hazırdır. CSS her öğede ayrı gelir (yanıt boyunca tekilleştirilmez), çünkü her öğe tek başına çizilebilmelidir.
  • Test modu ve segment kararı istemcidedir. segmentTargetingMode, segmentIds ve isTestMode öğeyle birlikte gelir; SDK uygular. Yanıt ürüne göredir, ziyaretçiye göre değil; bu yüzden herkese aynı önbellekten verilebilir.
  • renderMode bu uçta sorulmaz: bu sütun "bir web sayfasında kim çizer" sorusunun cevabıdır; uygulamanın tek çizicisi vardır ve tarayıcı botu yoktur.
  • Bir yanıtın markup'ı (HTML ve CSS) en çok 256 KB taşır; sınıra ulaşınca ilk kurallar gelir, sınırı aşan atlanır.
  • Kod ya da slots verilmemişse hata değil boş yanıt döner.
  • Web kanalında bu uç 400 verir: This endpoint serves app channels.... Web kanalı enrichments ya da ssr/enrichments kullanır.

Hazır SelwiseEnrichment bileşeni bunu sizin yerinize çağırır: Mobil Uygulamada Zenginleştirme.

Hatalar

DurumNeden
403Alan adı ya da anahtar doğrulaması başarısız; kanal doğrulanmamış
404Site anahtarı yanlış
400Yalnızca app/enrichments: kanal web kanalı
429Yalnızca product-facts ve genel sınır (100/dk) için: hız sınırı

Sırada ne var

Son güncelleme: 10 Ekim 2026