Uygulama Yapılandırması
client_id verilirse yanıta storefront token'ı gömülür; bkz. Kimlik Doğrulama.Mobil uygulamanın açılışta ihtiyaç duyduğu her şeyi tek istekte döner: sürüm/revizyon bilgisi, aktif diller, para birimleri, izinli özellik bayrakları ve (istenirse) storefront erişim token'ı. Uç herkese açıktır — token gerektirmez; client_id verilirse yanıta idempotent bir storefrontToken gömülür. Yanıt JSON:API değil, düz JSON nesnesidir.
Yapılandırmayı okuma
GET /config
Bu uç sürümlü path'in dışında yaşar: https://<domain>/api/v3/storefront/config.
curl "https://<domain>/api/v3/storefront/config?client_id=<client_id>" \
-H "Accept: application/json"
{
"version": "2026-01",
"revision": 39214,
"kvkkLastChange": 0,
"languages": [
{
"code": "tr",
"name": "Turkish",
"nativeName": "Türkçe",
"isDefault": true,
"isRtl": false
}
],
"currencies": [
{
"code": "TRY",
"name": "Türk Lirası",
"symbol": "₺",
"symbolPosition": "suffix",
"isDefault": true
},
{
"code": "USD",
"name": "Amerikan Doları",
"symbol": "$",
"symbolPosition": "suffix",
"isDefault": false
}
],
"defaultLanguage": "tr",
"defaultCurrency": "TRY",
"featureFlags": {
"newThemeSystemV5": true,
"priceFractionDigits": 2,
"allowNegativeStock": false,
"forceUpdate": false,
"siteAddress": "https://www.example.com",
"memberOrderCancellation": true,
"memberOrderReturn": true,
"platformMethodActive": true
},
"storefrontToken": {
"accessToken": "1|xxxxxxxxxxxxxxxxxxxxxxxx",
"tokenType": "Bearer",
"expiresAt": "2026-07-09T13:00:00+00:00",
"scope": "storefront:read"
}
}
Yukarıdaki featureFlags kısaltılmıştır; tam anahtar listesi aşağıdadır ve yanıt her zaman listenin tamamını içerir.
Üst düzey alanlar
| Alan | Tip | Kural |
|---|---|---|
version | string | API yapılandırma sürümü |
revision | int | Mağaza revizyon sayacı; yoksa 0 |
kvkkLastChange | int | KVKK metninin son değişiklik unix zaman damgası; hiç değişmediyse 0 |
languages | dizi | Yalnızca aktif diller, sıralı. Eleman: code, name, nativeName, isDefault, isRtl |
currencies | dizi | Eleman: code, name, symbol, symbolPosition, isDefault. Kodlar ISO 4217'ye normalize edilir (TL → TRY), tekrar eden kodlar teke indirilir |
defaultLanguage | string | Site varsayılan dili; ayarsızsa "tr" |
defaultCurrency | string | Varsayılan para birimi, normalize edilmiş ("TRY") |
featureFlags | nesne | Aşağıdaki izinli listenin tamamı, her zaman tüm anahtarlarla |
storefrontToken | nesne | null | Yalnızca geçerli ve aktif bir client_id verildiğinde dolu |
Tek para birimi modunda currencies tek elemanlıdır. Çoklu para birimi lisansı açıksa mağazanın tanımlı tüm para birimleri listelenir.
code her zaman ISO 4217 kodudur (TRY), symbol ise mağazada tanımlı gösterim sembolüdür (₺, $). symbolPosition sembolün tutara göre yerini söyler: suffix sonda (100,00 ₺), prefix başta ($100.00).
symbol mağaza ayarlarından okunur ve boş gelebilir — para birimi için sembol girilmemişse alan boş string döner (null değil). Bu durumda tutarı code ile gösterin.
featureFlags anahtarları
featureFlags yalnızca aşağıdaki izinli listeyi servis eder; başka hiçbir ayar bu kanaldan sızmaz. Bool bayraklar gerçek true/false, sayısal bayraklar gerçek sayı olarak döner (string değil).
| Alan | Tip | Kural |
|---|---|---|
newThemeSystemV5 | bool | Yeni tema sistemi (V5) aktif mi |
priceFractionDigits | int | Fiyat gösteriminde ondalık basamak sayısı |
allowNegativeStock | bool | Stok eksiye düşse de satışa izin |
showCountOnFilters | bool | Filtre seçeneklerinde ürün adedi gösterimi |
loginByPhone | bool | Telefon numarası ile üyelik/giriş lisansı |
storeCargoService | bool | Mağaza kargo servisi lisansı |
addImageToCommentLicence | bool | Yoruma görsel ekleme lisansı |
eExport | bool | E-ihracat lisansı |
showProductByCountry | bool | Ülkelere göre ürün gösterme lisansı |
ipCountryDetection | bool | IP'den ülke tespiti lisansı |
catalogLicence | bool | Katalog lisansı |
guestCheckoutStart | bool | Satın alma sürecine üyeliksiz başlama |
continueWithoutMembership | bool | "Üyelik olmadan devam et" gösterimi |
isCurrentAccountActive | bool | Cari ödeme lisansı |
serviceProductRender | bool | Servis ürünü render lisansı |
forceUpdate | bool | Uygulamayı güncellemeye zorla |
locationDetectionSetting | int | Sevkiyat konum belirleme modu |
categoryDisplayType | int | Kategori görüntüleme tipi |
hideIfOutOfStock | int | Stokta yoksa davranışı |
popupProductType | int | Açılır pencerede gösterilecek ürünler |
addToCartAction | int | Sepete ekle / satın al aksiyon modu |
mobileMenuDisplayType | int | Mobil menü görünümü |
cancelTimeMin | int | Sipariş iptal süresi (dakika) |
returnableTime | int | İade gün süresi |
imageHeightWidthRatio | float | Ürün liste görseli en/boy oranı |
siteAddress | string | Site adresi |
memberOrderCancellation | bool | Üye sipariş iptali açık mı (sipariş durum tanımından türetilir) |
memberOrderReturn | bool | Üye sipariş iadesi açık mı (iade durumlarından herhangi biri aktifse true) |
platformMethodActive | bool | Platform metodu aktif mi; kaynak tanımsızsa varsayılan true |
giftNoteActive | bool | Hediye notu alanı mağazada açık mı |
orderNoteActive | bool | Sipariş notu alanı mağazada açık mı |
giftPackageActive | bool | Hediye paketi açık mı. Ücret 0 ise kapalı sayılır — legacy ile aynı kural |
giftPackageCost | float | Hediye paketi ücreti. 0 ise özellik kapalıdır |
giftPackageAppliesToCart | bool | true ise hediye paketi sepetin geneline, false ise satır bazında uygulanır |
orderNoteAppliesToCart | bool | true ise sipariş notu sepetin geneline, false ise satır bazında uygulanır |
orderNoteCharacterLimit | int | Sipariş notu karakter sınırı. Ayar 5'ten küçükse 1000 uygulanır — legacy ile aynı kural |
showLoyaltyPointsOnProductDetail | bool | Ürün detayında kazanılacak puan gösterilsin mi |
showOrderNoteOnProductDetail | bool | Ürün detayında sipariş notu alanı gösterilsin mi |
Hediye paketi ve not alanlarının kapsamı
- Üç alanın kendisi (
orderNote,giftNote,giftPackage) sepet satırında taşınır — bkz. Sepet. - Client formu göstermeden önce
giftNoteActive/orderNoteActive/giftPackageActivebayraklarını okumalıdır; kapalı bir alanı göstermek kullanıcıya karşılığı olmayan bir seçenek sunar. giftPackageAppliesToCartveorderNoteAppliesToCartalanın nerede toplanacağını söyler: sepet geneli için tek giriş, satır bazı için her satırda ayrı giriş.showOrderNoteOnProductDetailmağaza geneli anahtardır: açıkken ürün detayındakiorderNoteEnabledalanı tüm ürünlerdetruegelir, kapalıyken ürünün kendi ayarı geçerlidir — bkz. Ürünler.showLoyaltyPointsOnProductDetailkapalıyken puan önizlemesi istenmemelidir; kaynak yine yanıt verir, ama mağaza o alanı vitrinde göstermemeyi seçmiştir — bkz. Puan kazanım önizlemesi.
storefrontToken semantiği
client_idgönderilmezsestorefrontTokennulldöner; yapılandırmanın kalanı yine servis edilir.- Bilinmeyen veya pasif bir
client_iddenullüretir — istek yine200döner, hata fırlatılmaz. - Geçerli ve aktif bir client için davranış idempotenttir: aynı
client_idile tekrarlanan çağrılar aynıaccessToken'ı döner. Saklanan token geçersizleşmişse (silinmiş/süresi dolmuş) yenisi üretilir. expiresAther zaman doludur (ISO 8601): client'a özel TTL yoksa sunucu varsayılanı uygulanır.- Dönen token, sürümlü uçlarda (
/api/v3/storefront/2026-01/...)Authorization: Bearerbaşlığıyla kullanılır vestorefront:readscope'unu taşır. Ayrıntı için kimlik doğrulama sayfasına bak.
Token almanın diğer yolu
POST /api/v3/storefront/token'dır; config içine gömülü token aynı issuer'dan çıkar, ikisi arasında fark yoktur.
Hız sınırı
| Durum | Davranış |
|---|---|
client_id'siz okuma | Sınırsız |
client_id'li okuma | Aynı client_id + IP ikilisi için dakikada 5 istek; aşımda 429 ve Retry-After başlığı döner |
Hatalar
| Durum kodu | Sebep |
|---|---|
| 429 | Aynı client_id ile dakikada 5'ten fazla token isteği |
Yapılandırma okuması diğer tüm durumlarda 200 döner; hatalı client_id hata değil storefrontToken: null üretir.