T-SOFT/Storefront API/Kimlik Doğrulama

Kimlik Doğrulama

Storefront API üç farklı token türü kullanır. Hangi uç noktaya erişeceğinize göre uygun token'ı alırsınız. Token uç noktaları versiyonsuz path altındadır (sürüm klasöründen bağımsız).

Katalog uçları (ürünler, kategoriler vb.) token'sız da erişilebilir — herkese açıktır. Token yalnızca müşteri hesabı, indirimli fiyat veya sepet işlemleri için gerekir.

Scope'lar

Scope'lar (yetkiler) token'a mint edilirken sunucu tarafında belirlenir; istekte scope talep edilmez. Dört yetki vardır:

ScopeEtkisiHangi token
storefront:readKatalog okuma (ürün, kategori, marka, sayfa…)client + müşteri
storefront:pricingYanıtta discountPrice alanının görünmesini sağlaryalnızca müşteri
storefront:accountHesap katmanı (sipariş, adres, favori, destek…)yalnızca müşteri
storefront:cartMisafir sepet / misafir checkoutyalnızca misafir

Client token'ı (katalog)

Anonim uygulama token'ı. Yalnızca storefront:read taşır; indirimli fiyat göremez.

POST /api/v3/storefront/token
curl -s -X POST 'https://<domain>/api/v3/storefront/token' \
  -H 'Content-Type: application/json' \
  -d '{"client_id": "<CLIENT_UUID>"}'
yanıt
{
  "access_token": "1|abc...",
  "token_type": "Bearer",
  "expires_at": "2026-07-03T12:00:00+03:00",
  "scope": "storefront:read"
}

Alınan token'ı isteklerde Authorization: Bearer <access_token> başlığıyla gönder. client_id bir gizli anahtar (secret) değildir; AuthClient UUID'sidir.

Aynı client_id için aktif bir token varken uç noktayı tekrar çağırmak aynı token'ı döndürür — yeni üretilmez. "Her açılışta token al" güvenli bir varsayılandır.

Müşteri token'ı (hesap + fiyat)

Giriş yapmış müşteri token'ı. storefront:read, storefront:account ve storefront:pricing yetkilerini birlikte taşır — yani hem hesap uçlarına erişir hem de indirimli fiyat görür.

POST /api/v3/storefront/customer/token
curl -s -X POST 'https://<domain>/api/v3/storefront/customer/token' \
  -H 'Content-Type: application/json' \
  -d '{
    "identifier": "musteri@example.com",
    "password": "<PAROLA>",
    "device_name": "web"
  }'
yanıt
{
  "access_token": "2|def...",
  "expires_at": "2026-08-02T12:00:00+03:00",
  "scope": "storefront:read storefront:account storefront:pricing",
  "customer": { "…": "…" }
}
  • identifier: e-posta veya telefon numarası.
  • device_name: her cihaz için ayrı token; aynı cihaz adına yeni token alındığında eskisi geçersiz kılınır.
  • Token süresi 30 gündür. Yenileme için POST /api/v3/storefront/customer/token/refresh (müşteri token'ı ile).
Ard arda hatalı giriş, kısa süreli hesap kilidine yol açar (10 deneme / 600 sn). Parola alanını istemci tarafında saklama.

Sosyal giriş

Google, Apple veya Facebook hesabıyla giriş. Sağlayıcıdan alınan kimlik token'ı sunucuya gönderilir; sunucu token'ı sağlayıcıya karşı doğrular ve karşılığında normal bir müşteri token'ı üretir. Yanıt, parolayla girişle birebir aynı şekildedir.

POST /api/v3/storefront/customer/token/social
curl -s -X POST 'https://<domain>/api/v3/storefront/customer/token/social' \
  -H 'Content-Type: application/json' \
  -d '{
    "SocialPlatform": "google",
    "SocialToken": "<SAĞLAYICIDAN_ALINAN_TOKEN>",
    "device_name": "iphone-15"
  }'
AlanTipKural
SocialPlatformstringZorunlu. google, apple veya facebook
SocialTokenstringZorunlu. Sağlayıcının döndürdüğü kimlik token'ı
device_namestringZorunlu. Parolayla girişteki ile aynı anlamda; en fazla 100 karakter
Platformstringİsteğe bağlı. İstemcinin çalıştığı platform; Apple girişinde hangi istemci kimliğine karşı doğrulanacağını belirler
guestCartTokenstringİsteğe bağlı. Verilirse misafir sepeti üye sepetine taşınır — bkz. Misafir Sepeti

Sağlayıcı doğrulaması başarısız olursa (süresi dolmuş, sahte veya başka bir uygulamaya ait token) istek reddedilir; sunucu bu durumda müşteri kaydı oluşturmaz.

Her sağlayıcı mağaza panelinde ayrıca yapılandırılmalıdır (istemci kimliği ve gizli anahtarı). Yapılandırılmamış bir sağlayıcıya istek atıldığında giriş tamamlanmaz.

Oturum kapatma

Müşteri token'ını iptal eder.

DELETE /api/v3/storefront/customer/token
curl -s -X DELETE 'https://<domain>/api/v3/storefront/customer/token' \
  -H 'Authorization: Bearer <CUSTOMER_TOKEN>'

Yanıt 204 No Content — gövde dönmez. Varsayılan davranış yalnızca isteği yapan token'ı iptal eder; diğer cihazlardaki oturumlar açık kalır.

Tüm cihazlardan çıkmak için all parametresini gönder:

DELETE /api/v3/storefront/customer/token?all=1
curl -s -X DELETE 'https://<domain>/api/v3/storefront/customer/token?all=1' \
  -H 'Authorization: Bearer <CUSTOMER_TOKEN>'

Bu çağrı müşterinin bütün müşteri token'larını siler; parola değişikliği veya "diğer oturumları kapat" akışında kullanılır. İptal edilen token'la yapılan sonraki istekler 401 döner.

Misafir token'ı (sepet)

Giriş yapmadan sepet/checkout için. storefront:cart taşır. Almak için geçerli bir client token'ı gerekir.

POST /api/v3/storefront/2026-01/guest-token
curl -s -X POST 'https://<domain>/api/v3/storefront/2026-01/guest-token' \
  -H 'Authorization: Bearer <CLIENT_TOKEN>'
yanıt
{
  "access_token": "3|ghi...",
  "token_type": "Bearer",
  "expires_at": "2026-08-02T12:00:00+03:00",
  "scope": "storefront:cart"
}

Hatalar

KodSebep
401Token yok, süresi dolmuş veya iptal (hesap/sepet uçlarında token zorunludur)
403Token geçerli ama istenen scope yok
401 invalid_clientClient token isteğinde bilinmeyen veya pasif client_id