Arama Uçları

Arama, öneri, tıklama ve sıfır sonuç bildirimi

Arama uçları, site içi arama widget'ının kullandığı sözleşmedir. Kendi arama kutunuzu ya da uygulamanızı yazıyorsanız sonuçları search ucundan alır, tıklama ve sıfır sonuç bilgisini analitik uçlarına bildirirsiniz. Panelde aramanın nasıl yapılandırıldığı için Arama bölümüne bakın.

Arama uçlarının hepsi Search & Merchandising (search) modülünü ister: hesapta bu modül yoksa uç 402 ve MODULE_NOT_ENTITLED koduyla döner.

Yöntem ve yolKimlikNe yapar
GET /public/sites/:siteKey/searchAlan adı ya da anahtarÜrün arar
GET /public/sites/:siteKey/search-configAlan adı ya da anahtarArama widget'ının yapılandırması
GET /public/sites/:siteKey/search/suggestionsAlan adı ya da anahtarPopüler arama, kategori ve ürün listeleri
POST /public/sites/:siteKey/search/logYokArama sorgusunu kaydeder
POST /public/sites/:siteKey/search/clickYokSonuçtaki ürün tıklamasını kaydeder
POST /public/sites/:siteKey/search/zero-resultsYokSıfır sonuç olayını kaydeder

Kimlik kuralları: Kimlik Doğrulama ve Erişim. Üç GET ucunda sınır IP başına dakikada 100 istektir ve uç başına ayrı sayılır; sunucudan arama yapıyorsanız aynı sorguyu kendi önbelleğinizde tutun. Üç POST ucu hız sınırının dışındadır.

curl -G "https://api.selwise.com/api/v1/public/sites/SITE_KEY/search" \
  -H "Origin: https://magaza.com" \
  --data-urlencode "q=kırmızı elbise" \
  --data-urlencode "limit=24" \
  --data-urlencode "inStock=true" \
  --data-urlencode "maxPrice=1500"
ParametreAçıklama
qArama terimi. En çok 200 karakter; uzunsa hata gövdesiyle döner (aşağıda). Boş olabilir, ama o zaman en az bir süzgeç gerekir
limitSonuç sayısı. En çok 100. Verilmezse panelde ayarlı Maksimum sonuç değeri, o da yoksa 10. Geçersiz ya da 1'den küçükse 20
categoryKategori adına göre süzer (içerir eşleşmesi, büyük/küçük harf duyarsız)
minPrice, maxPriceFiyat aralığı. Negatifler 0'a çekilir, üst sınır 99999999. minPrice maxPrice'tan büyükse ikisi yer değiştirir
inStocktrue yalnızca stokta olanları, false yalnızca stokta olmayanları getirir

Terimsiz arama. q boşken category, minPrice, maxPrice ya da inStock'tan biri varsa istek bir kategori gezintisi olarak yanıtlanır. Hiçbir süzgeç de yoksa Query parameter required hatası döner (tüm kataloğu listelemek bir listeleme sayfasının işidir).

{
  "hits": [
    {
      "id": "ELB-0042",
      "_uuid": "b3f1c2a4-1d3e-4a5b-8c7d-9e0f1a2b3c4d",
      "itemCode": "904236",
      "sku": "ELB-0042",
      "title": "Kırmızı Midi Elbise",
      "price": 899.9,
      "originalPrice": 1199.9,
      "discountRate": 25,
      "currency": "TRY",
      "imageUrl": "https://cdn.magaza.com/elbise-0042.jpg",
      "url": "https://magaza.com/kirmizi-midi-elbise",
      "categories": "Kadın > Elbise",
      "brand": "Ardisa",
      "inStock": true,
      "stock": 14,
      "hasVariants": false,
      "cartCode": null,
      "groupCode": "ELB-0042",
      "score": 7.4
    }
  ],
  "total": 42,
  "took": 12,
  "enabled": true,
  "categories": [ { "name": "Kadın > Elbise", "count": 31 } ],
  "strategy": "standard",
  "debugMeta": { "queryLength": 14, "appliedFilters": { "limit": 24, "inStock": true, "maxPrice": 1500 } },
  "traceId": "5d0c2b6e-0e0b-4a5e-8b9c-2f0a3b2c1d9e"
}
AlanAnlamı
hits[]Ürünler. id mağazanızın kodudur (sku, yoksa item_code); _uuid Selwise'in dahili kimliği, izleme birleştirmeleri içindir. cartCode sepetin kabul ettiği kod itemCode'dan farklıysa dolu gelir (Akinon: sayısal ürün pk'si). groupCode kardeş ürünleri gruplar; kimlik değildir. Renk kardeşleri ve beden seçenekleri varsa variants ve benzer kart alanları da eklenir
totalSüzgeçlere uyan toplam ürün sayısı
tookSunucu süresi, milisaniye
enabledArama bu kanalda kapalıysa false; o zaman hits boştur
categoriesSonuçların kategori dağılımı: name ve count
redirectSorgu bir yönlendirme kuralına eşleştiyse hedef adres. hits boştur; istemci kullanıcıyı oraya götürür
suggestionsSonuç sıfırsa "bunu mu demek istediniz" alternatifleri (en çok 5)
expandedQueryEş anlamlı ve Türkçe çekim genişletmesi uygulandıysa aranan terimler
strategystandard, expanded_query, redirect, disabled, service_unavailable, validation_error, error
errorBir sorun varsa nedeni. HTTP durumu yine 200 olabilir; strategy ile birlikte okuyun
traceIdBir şikayeti sunucu günlüğüyle eşleştirmek için
debugMetaTanılama için: uygulanan süzgeçler ve sınırlamalar. Arayüzünüzde kullanmayın

strategy: "validation_error" ve error: "Query too long" ya da "Query parameter required" HTTP 200 ile döner; arama geçersiz isteklerde bile 4xx vermez. Arama motoru geçici olarak çalışmıyorsa strategy: "service_unavailable" ve error: "Search service temporarily unavailable" gelir.

Arama kanalın kendi yapılandırmasıyla (eş anlamlılar, yönlendirmeler, sıralama kuralları) çalışır, ürünleri ise kanal başka bir kanalın kataloğunu okuyorsa paylaşılan katalogdan alır. Türkçe çekim ekleri ve eş anlamlılar sorguyu otomatik genişletir. Sıfır sonuçlu sorgular Sıfır Sonuç ekranına düşer; bunu sizin ayrıca bildirmeniz gerekmez.

search-config

GET /api/v1/public/sites/:siteKey/search-config

Widget'ın kendi arayüzünü çizmek için okuduğu yapılandırmadır: enabled, isTestMode, yerleşim (position, selector, triggerSelector, floatingPosition), metinler (placeholder, hotkey), davranış (minChars, debounceMs, maxResults, searchOnFocus, keepOpen, mobileFullscreen), sonuç gösterimi, stiller, önerilen aramalar, sepet entegrasyonu, segment hedefleme, ürün kartı ve marka teması. Kanal başına 10 dakika önbelleğe alınır. Kendi arayüzünüzü yazıyorsanız genellikle yalnızca enabled, minChars, debounceMs ve maxResults işinize yarar.

search/suggestions

GET /api/v1/public/sites/:siteKey/search/suggestions

Parametre almaz: kutu odaklandığında, yazmaya başlamadan önce gösterilen listeler. Yazarken önerilen terimler için search ucunun suggestions alanı kullanılır.

{
  "recentSearches": { "enabled": true, "maxCount": 5 },
  "popularSearches": { "enabled": true, "items": ["elbise", "ceket"] },
  "popularCategories": { "enabled": true, "items": [ { "name": "Kadın", "imageUrl": null } ] },
  "popularProducts": { "enabled": false, "items": [] },
  "styles": {}
}

recentSearches yalnızca bir ayardır; kişinin son aramaları tarayıcıda tutulur, sunucuda değil. Liste kaynakları (elle, dinamik ya da ikisi birden) panelde ayarlanır. Bir hata olursa istek 200 ve { "error": "Failed to get suggestions" } döner.

Analitik uçları

Üç uç da yalnızca site anahtarı ister ve kaydı kendi başına yazar; bir sonuç döndürmezler. Kendi arama arayüzünüz bunları çağırmazsa arama ekranları ve atıf eksik veriyle çalışır.

search/log

curl -X POST https://api.selwise.com/api/v1/public/sites/SITE_KEY/search/log \
  -H "Content-Type: application/json" \
  -d '{ "query": "kırmızı elbise", "resultsCount": 42, "sessionId": "SESSION_ID", "visitorId": "VISITOR_ID", "pageUrl": "https://magaza.com/arama" }'
AlanZorunluAçıklama
queryEvetAranan terim
resultsCountHayırGösterilen sonuç sayısı
sessionId, visitorId, siteUserId, pageUrl, referrer, eventIdHayırBağlam. eventId tekilleştirme içindir

Bir search_query olayı yazar ve ilgili senaryo girişlerini değerlendirir. Yanıt 200 ve gövde, kanal bilinmiyor ya da doğrulanmamışsa { "success": false } olur.

search/click

curl -X POST https://api.selwise.com/api/v1/public/sites/SITE_KEY/search/click \
  -H "Content-Type: application/json" \
  -d '{ "productItemCode": "ELB-0042", "query": "kırmızı elbise", "category": "Kadın > Elbise", "sessionId": "SESSION_ID", "visitorId": "VISITOR_ID" }'

productItemCode zorunludur (boşsa 400, productItemCode is required); diğer alanlar query, category, sessionId, visitorId, siteUserId, pageUrl, referrer, eventId. Bir product_click olayı yazar; arama analitiği ve atfı bu tıklamayı kullanır. Yanıt { "success": true }.

search/zero-results

curl -X POST https://api.selwise.com/api/v1/public/sites/SITE_KEY/search/zero-results \
  -H "Content-Type: application/json" \
  -d '{ "query": "pembe palto", "sessionId": "SESSION_ID", "visitorId": "VISITOR_ID" }'

Bir search_zero_results olayı yazar. Sıfır sonuç tablosuna satır eklemez: search ucu sonuç sıfır olduğunda o satırı zaten kendisi yazar; ikinci bir yazım her sayıyı iki katına çıkarırdı. Bu uç yalnızca olayı (oturum, ziyaretçi ve sayfa bilgisiyle) kaydeder. Yanıt { "success": true }.

Hatalar

DurumNeden
402Kod MODULE_NOT_ENTITLED: hesapta arama modülü yok
403Alan adı ya da anahtar doğrulaması başarısız; kanal doğrulanmamış
404Site anahtarı yanlış
400Yalnızca search/click: productItemCode is required
429Dakikada 100 istek aşıldı (GET uçları)

Sırada ne var

Son güncelleme: 10 Ekim 2026