Ürün filtreleri
Yetki: storefront:read — herkese açık, token isteğe bağlı.
Ürün listesinin yanında duran filtre panelini tek istekte verir: hangi kategoriler, markalar, modeller, özellikler ve varyant eksenleri seçilebilir, fiyat aralığı nedir, hangi sıralama seçenekleri gösterilecek. Dönen her seçeneğin yanında o seçim yapıldığında kaç ürün kalacağı da vardır.
Kaynak, ürün listesinin aynasıdır: Ürünler kaynağında geçerli olan filtreler burada da aynı adlarla kabul edilir. Panelde bir seçim yapıldığında aynı filtre kümesiyle bu kaynağı yeniden çağırırsan, kalan seçenekler ve sayılar daralır.
Listeleme
GET /product-facets
curl "https://<domain>/api/v3/storefront/2026-01/product-facets" \
-H "Accept: application/vnd.api+json" \
-H "Authorization: Bearer <access_token>"
{
"jsonapi": { "version": "1.0" },
"data": [
{
"type": "product-facets",
"id": "current",
"attributes": {
"groups": [],
"attributes": [
{
"id": 1,
"name": "Renk",
"type": "multi",
"options": [
{ "id": 101, "name": "Kırmızı", "count": 2 },
{ "id": 102, "name": "Mavi", "count": 2 }
],
"range": null
},
{
"id": 2,
"name": "Ağırlık",
"type": "decimal",
"options": [],
"range": { "min": 1.25, "max": 2.5, "count": 2 }
}
],
"categories": [
{ "id": 335, "name": "Kadın", "count": 15 },
{ "id": 340, "name": "Üst Giyim", "count": 15 }
],
"brands": [
{ "id": 80, "name": "T-Soft", "count": 15 }
],
"models": [],
"priceRange": { "min": 83.33333333, "max": 8332.5, "count": 15 },
"variantTypes": [
{
"id": "variantType1Id",
"name": "",
"options": [
{ "id": 24, "name": "Mavi", "count": 3 },
{ "id": 26, "name": "Kırmızı", "count": 3 }
]
}
],
"toggles": [
{ "id": "availableForSale", "type": "boolean" },
{ "id": "isNew", "type": "boolean" },
{ "id": "hasDiscount", "type": "boolean" }
],
"sortOptions": [
{ "id": "name", "label": "Alfabetik A-Z" },
{ "id": "-price", "label": "Fiyat Yüksekten Düşüğe" },
{ "id": "-favoriteCount", "label": "En Çok Favorilenen" }
],
"defaultSort": "position"
}
}
]
}
Kaynak tek kayıt döner; data yine dizidir ve kaydın id değeri current'tır. Sayfalama parametresi almaz.
Alanlar
| Alan | Tip | Kural |
|---|---|---|
groups | array | Kategoriye bağlı filtre grupları. Mağaza kategoriye özel bir filtre seti tanımlamadıysa boş dizi |
attributes | array | Ürün özellik filtreleri (renk, beden, ağırlık gibi). Her grup id, name, type, options ve range taşır |
categories | array | Seçilebilir kategoriler; id, name ve count |
brands | array | Seçilebilir markalar; id, name ve count |
models | array | Seçilebilir modeller; id, name ve count |
priceRange | object | null | Kalan ürünlerin fiyat aralığı — min, max, count. Ürün yoksa veya fiyat filtresi kapalıysa null |
variantTypes | array | Varyant eksenleri (birinci ve ikinci eksen); her eksen id, name ve options taşır |
toggles | array | Aç/kapa filtreleri; her biri id ve type: "boolean" |
sortOptions | array | Listede gösterilecek sıralama seçenekleri; id doğrudan sort parametresine yazılır, label mağazanın dilinde hazır metindir |
defaultSort | string | null | Mağazanın seçtiği varsayılan sıralama. Ayar tanımlı değilse null |
Bu alanların hepsi her zaman yanıtta yer alır; kapalı olan bir filtre boş dizi (priceRange için null) döner, alan kaybolmaz.
Panelin mağaza ayarına bağlılığı
Filtre panelinin hangi bölümlerinin görüneceğini mağaza belirler. Kapatılan bölüm boş döner:
| Alan | Kapalıyken |
|---|---|
categories | [] |
brands | [] |
models | [] |
priceRange | null |
variantTypes | [] |
toggles | İlgili anahtar listeye hiç girmez |
Panelde bir bölümü "veri yok" diye gizlemeden önce boş dizinin kapalı ayar anlamına da gelebileceğini hesaba kat — ikisi yanıtta aynı görünür.
attributes semantiği
Ürünün özellik grupları. Grubun tipi seçim biçimini belirler:
type | Anlamı | Nerede değer taşır |
|---|---|---|
multi | Çoklu seçim (ör. renk) | options |
single | Tekli seçim (ör. kumaş) | options |
decimal | Sayısal aralık (ör. ağırlık) | range |
optionsiçindeki her seçenekid,namevecounttaşır.count, o seçenek işaretlendiğinde listede kalacak ürün sayısıdır.decimalgruplardaoptionsboştur;rangealanımin,maxvecountverir.- Hiçbir ürünü kalmayan grup listeye girmez — kullanıcıya sonuçsuz bir filtre gösterilmez.
- Gruplar mağaza ayarındaki sıraya göre döner.
Seçim ürün listesine filter[attr] ile taşınır; sözdizimi Ürünler sayfasındadır.
variantTypes semantiği
Ürünün varyant eksenleri: variantType1Id (genelde renk) ve variantType2Id (genelde beden). id değeri doğrudan ürün listesindeki filtre adıdır — filter[variantType1Id]=24 gibi.
name, eksenin mağazadaki adıdır; mağaza ad tanımlamadıysa boş string döner. Panelde başlık çizerken boş adı kendi metninle karşıla.optionsiçindekiiddeğerleri varyant seçeneklerinin id'leridir; virgülle çoklu gönderilebilir.
toggles semantiği
Aç/kapa filtreleri. Listeye giren her anahtar, ürün listesinde aynı adla filter[<id>]=1 biçiminde kullanılır:
id | Ürün listesindeki karşılığı |
|---|---|
availableForSale | Yalnız satılabilir ürünler |
isNew | Yalnız yeni ürünler |
hasDiscount | Yalnız indirimli ürünler |
Mağazanın kapattığı anahtar listeye hiç girmez; panelde o düğmeyi çizme.
sortOptions semantiği
Sıralama listesini istemci sabitlemez — mağazanın açtığı seçenekler ve etiketleri buradan gelir.
id, ürün listesine olduğu gibi yazılır:GET /products?sort=-favoriteCount.label, isteğin dilinde hazır metindir; istemcide çevrilmesi gerekmez.defaultSort, kullanıcı bir seçim yapmadan önce işaretli gelecek seçenektir.nulldönerse listeyi kendi varsayılanınla aç.
Filtreler
Ürün listesindeki filtrelerin tamamı burada da geçerlidir; panel daraltılırken aynı parametreler gönderilir.
| Parametre | Örnek | Davranış |
|---|---|---|
filter[categoryId] | filter[categoryId]=346 | Kategori ve alt dalları; virgülle çoklu |
filter[brandId] | filter[brandId]=80 | Marka id'si; virgülle çoklu |
filter[modelId] | filter[modelId]=12 | Model id'si; virgülle çoklu |
filter[variantType1Id] | filter[variantType1Id]=24,26 | Birinci varyant ekseni |
filter[variantType2Id] | filter[variantType2Id]=31 | İkinci varyant ekseni |
filter[priceMin] | filter[priceMin]=100 | Alt fiyat sınırı |
filter[priceMax] | filter[priceMax]=5000 | Üst fiyat sınırı |
filter[availableForSale] | filter[availableForSale]=1 | Yalnız satılabilir ürünler |
filter[hasDiscount] | filter[hasDiscount]=1 | Yalnız indirimli ürünler |
filter[isNew] | filter[isNew]=1 | Yalnız yeni ürünler |
filter[isOpportunity] | filter[isOpportunity]=1 | Yalnız fırsat ürünleri |
filter[attr] | filter[attr][1][]=101 | Özellik seçimi; grup id'si ve seçenek id'leri |
filter[q] | filter[q]=gömlek | Arama metni |
filter[filterId] | filter[filterId]=3 | Kategoriye bağlı filtre setini seçer; groups alanını doldurur |
Bir bölümün kendi seçimi o bölümün sayılarına uygulanmaz: renk filtresinde "Kırmızı" seçiliyken renk seçeneklerinin sayıları diğer filtrelere göre hesaplanır, kullanıcı ikinci bir rengi de işaretleyebilsin diye. Diğer bölümlerin sayıları ise seçime göre daralır.
Sıralama
Bu kaynak sort parametresi almaz. Ürün listesinin sıralama seçenekleri sortOptions alanında döner.
İlgili konular
- Ürünler — filtrelerin ve sıralamanın uygulandığı liste
- Kategoriler — kategori ağacı
- Markalar — marka detayı