Developer Kolay Deniz Market API v1.0 Mağazaya dön
API referansı · 7 uç nokta

Catalog

Herkese açık katalog — kategoriler, ürünler, canlı stok.

GET /v1/catalog/categories Herkese açık

Aktif kategori ağacı

Yanıtlar

DurumGövdeAçıklama
200 CategoryDto[] Kök düğümler; alt düğümler children içinde.
GET /v1/catalog/brands Herkese 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

DurumGövdeAçıklama
200 BrandDto[] Marka adına göre (tr) sıralı liste.
GET /v1/catalog/snapshot Herkese 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

AdYerTipAçıklama
If-None-Match header string Önceki yanıtın ETag'i. W/ öneki ve * desteklenir.

Yanıtlar

DurumGövdeAçıklama
200 CatalogSnapshotDto Katalog.
304 — Katalog değişmedi; gövde yok.
GET /v1/catalog/stock Herkese 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

AdYerTipAçıklama
slugs * query string Virgülle ayrılmış ürün slug'ları; en fazla 200 adet. Tekrarlar sunucuda tekilleştirilir.

Yanıtlar

DurumGövdeAçıklama
200 StockBySlugMap slug → şube bazlı uygunluk.
400 ApiError too_many_slugs (200 sınırı aşıldı) veya validation_failed.
GET /v1/catalog/products Herkese açık

Sayfalı ürün listesi

Parametreler

AdYerTipAçıklama
page query integer ≥ 1 · varsayılan 1
perPage query integer 1–100 · varsayılan 24
categoryId query string Kategoriyi ve tüm alt kategorilerini kapsar.
search query string en fazla 64 karakter %, _ ve \ karakterleri sunucuda temizlenir.

Yanıtlar

DurumGövdeAçı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

Slug ile tek ürün

Parametreler

AdYerTipAçıklama
slug * path string

Yanıtlar

DurumGövdeAçıklama
200 PublicProductDto Ürün.
404 ApiError Kayıt bulunamadı.
GET /v1/catalog/products/{id} Herkese açık

Id ile tek ürün

Parametreler

AdYerTipAçıklama
id * path string

Yanıtlar

DurumGövdeAçıklama
200 PublicProductDto Ürün.
404 ApiError Kayıt bulunamadı.