Mimari özet

Hemen Mağaza Headless API, her mağazayı ayrı tenant olarak ele alır. Bir API isteği geldiğinde sistem önce isteğin hangi mağazaya ait olduğunu çözer, sonra token, origin, scope ve plan limitlerini kontrol eder. Bu sayede bir mağazanın ürünü, sepeti veya siparişi başka bir mağaza tarafından okunamaz.

Tenant

Tenant, Hemen Mağaza içindeki mağazadır. Örnek:
  • velunamora
  • demo-moda
  • b2b-toptan
API tarafında tenant genellikle domain, subdomain veya özel header bağlamından çözülür.

Client

Client, bir mağaza için oluşturulan API uygulamasıdır. Örnek client türleri:
  • Next.js vitrin
  • Mobil uygulama
  • Pazaryeri entegrasyonu
  • Tema editörü
  • İç operasyon paneli
Her client kendi API key, origin listesi, scope listesi ve rate limit kurallarına sahiptir.

Origin

Origin, tarayıcıdan çalışan vitrinlerin geldiği web adresidir. API adresi değil, vitrinin açıldığı adrestir. Doğru örnek:
https://velunamora.com
https://shop.velunamora.com
Yanlış örnek:
https://api.hemenmagaza.com
https://velunamora.localhost/graphql
Server-to-server isteklerde Origin header’ı olmayabilir. Tarayıcı tabanlı isteklerde origin kontrolü güvenlik için zorunludur.

Scope

Scope, bir client’ın ne yapabileceğini belirleyen izin anahtarıdır. Örnek:
  • catalog:read ürün ve kategori okumak için
  • cart:write sepete ürün eklemek için
  • checkout:write checkout yönlendirmesi başlatmak için
  • webhook:manage webhook kayıtlarını yönetmek için
Client’a sadece ihtiyacı olan scope’ları verin. * scope’u tüm yetkileri açar ve sadece iç ekip testlerinde kullanılmalıdır.

Rate limit

Rate limit, API kullanım sınırıdır. Örneğin başlangıç paketinde dakikada 60 istek olabilir. Sistem bu limiti tenant ve client bazında uygular. Limit aşılırsa API 429 Too Many Requests döndürür.

Önerilen başlangıç

Yeni bir dış vitrin için minimum akış:
  1. Tenant panelinde yeni client oluşturun.
  2. Vitrin domainini origin olarak ekleyin.
  3. catalog:read, cart:read, cart:write, checkout:write scope’larını seçin.
  4. Storefront key’i güvenli şekilde frontend uygulamasına tanımlayın.
  5. Sepet ve checkout akışını sandbox ortamında test edin.