Herkese açık katalog — kategoriler, ürünler, canlı stok.
GET/v1/catalog/categoriesHerkese açık
Aktif kategori ağacı
Yanıtlar
Durum
Gövde
Açıklama
200
CategoryDto[]
Kök düğümler; alt düğümler children içinde.
GET/v1/catalog/brandsHerkese açık
Kataloğa girmiş marka yazımları
Marka bir TABLO DEĞİLDİR: varlık da, ilişki de yok — brand ürün satırındaki serbest metindir. Bu uç o metinleri olduğu gibi, taşıdıkları ürün sayısıyla sayar.
Vitrindeki marka filtresi metni birebir grupladığı için "Ülker" ile "ULKER" iki ayrı marka olur. Satıcı/entegrasyon yazma yolu markayı kanonik yazıma katlar (bkz. /integration/catalog/brands), ama yönetim uçları ve mutabakat içe aktarımı katlamaz — varyant oradan gelir.
Kapsam vitrinle aynıdır: pasif ürünün ya da durdurulmuş satıcının markası listede görünmez. Eşleştirme yapacak entegratörün okuması gereken liste bu değil, /integration/catalog/brands'tir — o liste vitrinde henüz görünmeyen kanonik yazımları da taşır.
Yanıtlar
Durum
Gövde
Açıklama
200
BrandDto[]
Marka adına göre (tr) sıralı liste.
GET/v1/catalog/snapshotHerkese açık
Tüm aktif katalog, tek yanıtta
Vitrin build'inin girdisi — gezinme ucu değildir. If-None-Match gönderin: değişmeyen katalog 304 döner. 304 kararı yalnızca ETag üzerinden verilir; Last-Modified insanlar ve proxy'ler içindir.
Sıralama sabittir ve gövde bayt-özdeş servis edilir; yeniden sıralarsanız ETag eşleşmesi bozulur.
Parametreler
Ad
Yer
Tip
Açıklama
If-None-Match
header
string
Önceki yanıtın ETag'i. W/ öneki ve * desteklenir.
Yanıtlar
Durum
Gövde
Açıklama
200
CatalogSnapshotDto
Katalog.
304
—
Katalog değişmedi; gövde yok.
GET/v1/catalog/stockHerkese açık
Verilen slug'lar için canlı stok
Statik üretilmiş sayfaları dürüst tutmak içindir; Cache-Control: no-store gönderilir ve asla cache'lenmemelidir.
Katalogda olmayan (bilinmeyen, pasif, ya da pasif bir kategori altındaki) bir slug yanıt haritasında bulunmaz — bu, {} değeri taşıyan bir slug'dan ("bilinen ürün, hiçbir şubede stoklu değil") farklı bir iddiadır.
Parametreler
Ad
Yer
Tip
Açıklama
slugs*
query
string
Virgülle ayrılmış ürün slug'ları; en fazla 200 adet. Tekrarlar sunucuda tekilleştirilir.
Yanıtlar
Durum
Gövde
Açıklama
200
StockBySlugMap
slug → şube bazlı uygunluk.
400
ApiError
too_many_slugs (200 sınırı aşıldı) veya validation_failed.
GET/v1/catalog/productsHerkese açık
Sayfalı ürün listesi
Parametreler
Ad
Yer
Tip
Açıklama
page
query
integer≥ 1 · varsayılan 1
perPage
query
integer1–100 · varsayılan 24
categoryId
query
string
Kategoriyi ve tüm alt kategorilerini kapsar.
search
query
stringen fazla 64 karakter
%, _ ve \ karakterleri sunucuda temizlenir.
Yanıtlar
Durum
Gövde
Açıklama
200
PageMeta + { items: PublicProductDto[] }
Ürün sayfası.
400
ApiError
validation_failed — gövde veya query şemaya uymuyor (details).
GET/v1/catalog/products/by-slug/{slug}Herkese açık