T-SOFT/Storefront API/Uygulama Yapılandırması

Uygulama Yapılandırması

Yetki: herkese açık — token gerektirmez. 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

AlanTipKural
versionstringAPI yapılandırma sürümü
revisionintMağaza revizyon sayacı; yoksa 0
kvkkLastChangeintKVKK metninin son değişiklik unix zaman damgası; hiç değişmediyse 0
languagesdiziYalnızca aktif diller, sıralı. Eleman: code, name, nativeName, isDefault, isRtl
currenciesdiziEleman: code, name, symbol, symbolPosition, isDefault. Kodlar ISO 4217'ye normalize edilir (TL → TRY), tekrar eden kodlar teke indirilir
defaultLanguagestringSite varsayılan dili; ayarsızsa "tr"
defaultCurrencystringVarsayılan para birimi, normalize edilmiş ("TRY")
featureFlagsnesneAşağıdaki izinli listenin tamamı, her zaman tüm anahtarlarla
storefrontTokennesne | nullYalnı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).

AlanTipKural
newThemeSystemV5boolYeni tema sistemi (V5) aktif mi
priceFractionDigitsintFiyat gösteriminde ondalık basamak sayısı
allowNegativeStockboolStok eksiye düşse de satışa izin
showCountOnFiltersboolFiltre seçeneklerinde ürün adedi gösterimi
loginByPhoneboolTelefon numarası ile üyelik/giriş lisansı
storeCargoServiceboolMağaza kargo servisi lisansı
addImageToCommentLicenceboolYoruma görsel ekleme lisansı
eExportboolE-ihracat lisansı
showProductByCountryboolÜlkelere göre ürün gösterme lisansı
ipCountryDetectionboolIP'den ülke tespiti lisansı
catalogLicenceboolKatalog lisansı
guestCheckoutStartboolSatın alma sürecine üyeliksiz başlama
continueWithoutMembershipbool"Üyelik olmadan devam et" gösterimi
isCurrentAccountActiveboolCari ödeme lisansı
serviceProductRenderboolServis ürünü render lisansı
forceUpdateboolUygulamayı güncellemeye zorla
locationDetectionSettingintSevkiyat konum belirleme modu
categoryDisplayTypeintKategori görüntüleme tipi
hideIfOutOfStockintStokta yoksa davranışı
popupProductTypeintAçılır pencerede gösterilecek ürünler
addToCartActionintSepete ekle / satın al aksiyon modu
mobileMenuDisplayTypeintMobil menü görünümü
cancelTimeMinintSipariş iptal süresi (dakika)
returnableTimeintİade gün süresi
imageHeightWidthRatiofloatÜrün liste görseli en/boy oranı
siteAddressstringSite adresi
memberOrderCancellationboolÜye sipariş iptali açık mı (sipariş durum tanımından türetilir)
memberOrderReturnboolÜye sipariş iadesi açık mı (iade durumlarından herhangi biri aktifse true)
platformMethodActiveboolPlatform metodu aktif mi; kaynak tanımsızsa varsayılan true
giftNoteActiveboolHediye notu alanı mağazada açık mı
orderNoteActiveboolSipariş notu alanı mağazada açık mı
giftPackageActiveboolHediye paketi açık mı. Ücret 0 ise kapalı sayılır — legacy ile aynı kural
giftPackageCostfloatHediye paketi ücreti. 0 ise özellik kapalıdır
giftPackageAppliesToCartbooltrue ise hediye paketi sepetin geneline, false ise satır bazında uygulanır
orderNoteAppliesToCartbooltrue ise sipariş notu sepetin geneline, false ise satır bazında uygulanır
orderNoteCharacterLimitintSipariş notu karakter sınırı. Ayar 5'ten küçükse 1000 uygulanır — legacy ile aynı kural
showLoyaltyPointsOnProductDetailboolÜrün detayında kazanılacak puan gösterilsin mi
showOrderNoteOnProductDetailboolÜ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 / giftPackageActive bayraklarını okumalıdır; kapalı bir alanı göstermek kullanıcıya karşılığı olmayan bir seçenek sunar.
  • giftPackageAppliesToCart ve orderNoteAppliesToCart alanın nerede toplanacağını söyler: sepet geneli için tek giriş, satır bazı için her satırda ayrı giriş.
  • showOrderNoteOnProductDetail mağaza geneli anahtardır: açıkken ürün detayındaki orderNoteEnabled alanı tüm ürünlerde true gelir, kapalıyken ürünün kendi ayarı geçerlidir — bkz. Ürünler.
  • showLoyaltyPointsOnProductDetail kapalı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_id gönderilmezse storefrontToken null döner; yapılandırmanın kalanı yine servis edilir.
  • Bilinmeyen veya pasif bir client_id de null üretir — istek yine 200 döner, hata fırlatılmaz.
  • Geçerli ve aktif bir client için davranış idempotenttir: aynı client_id ile tekrarlanan çağrılar aynı accessToken'ı döner. Saklanan token geçersizleşmişse (silinmiş/süresi dolmuş) yenisi üretilir.
  • expiresAt her 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: Bearer başlığıyla kullanılır ve storefront:read scope'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ı

DurumDavranış
client_id'siz okumaSınırsız
client_id'li okumaAynı client_id + IP ikilisi için dakikada 5 istek; aşımda 429 ve Retry-After başlığı döner

Hatalar

Durum koduSebep
429Aynı 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.