Üye Kaydı ve Parola Kurtarma
Bu sayfa yeni müşteri kaydını, SMS ile kayıt doğrulamayı ve "şifremi unuttum" akışını anlatır. Kimlik Doğrulama sayfasındaki token uçları gibi bu uçlar da sürümsüz path altındadır (/api/v3/storefront/...) ve token gerektirmez (public). Bu uçların hata gövdesi JSON:API errors[] değil, düz JSON'dur (message + alan bazlı errors).
Kayıt
POST /api/v3/storefront/customer/register
curl -X POST "https://<domain>/api/v3/storefront/customer/register" \
-H "Accept: application/vnd.api+json" \
-H "Content-Type: application/json" \
-d '{
"name": "Portal",
"surname": "Verify",
"email": "ornek@example.com",
"password": "PortalDoc123",
"kvkk": true,
"device_name": "iOS App"
}'
Mağaza üyeliği otomatik onaylıyorsa yanıt 200 — kayıt tamamlanır ve girişteki gibi müşteri token'ı döner:
{
"status": "registered",
"access_token": "<customer_access_token>",
"token_type": "Bearer",
"expires_at": "2026-08-09T20:02:14+03:00",
"scope": "storefront:read storefront:account storefront:pricing",
"customer": {
"id": 1433,
"name": "Portal Verify",
"email": "ornek@example.com",
"phone": ""
}
}
İstek alanları
| Alan | Tip | Kural |
|---|---|---|
name | string | ZORUNLU, en fazla 100 karakter. |
surname | string | ZORUNLU, en fazla 100 karakter. |
email | string | E-posta ile üyelikte ZORUNLU. Kayıtlı bir e-posta 422 döner. |
mobilePhone | string | Telefonla üyelikte ZORUNLU. Numara normalize edilir (örn. 05550001122 → 905550001122); geçersiz format veya kayıtlı numara 422 döner. |
password | string | ZORUNLU. En az 8 karakter; küçük harf + büyük harf + rakam içermelidir. |
kvkk | bool | KVKK onayı; true gönderilirse onay kaydedilir. |
identityNumber | string | T.C. kimlik numarası; mağaza kimlik doğrulamayı zorunlu tutuyorsa checkIdentityNumber ile birlikte kullanılır. |
birthDate | string | Doğum tarihi; kimlik doğrulama açıkken identityNumber ile birlikte istenir. |
checkMembershipWithPhone | bool | true = telefonla üyelik akışı (mağazada telefonla üyelik lisansı gerektirir); kimlik alanı mobilePhone olur. |
checkIdentityNumber | bool | true = mağazanın T.C. kimlik doğrulama ayarına göre kimlik alanlarını denetle. |
fetchSmsVerify | bool | true = mağaza SMS onaylı üyelik modundaysa kayıt öncesi SMS doğrulama kodu iste (aşağıya bakın). |
code | string | SMS doğrulama kodu — verification_pending yanıtından sonra tekrar çağrıda gönderilir. |
representativeCode | string | Opsiyonel; müşteriyi bir satış temsilcisine bağlar. Değer, Satış Temsilcileri listesinden seçilen temsilcinin wsCode değeridir (en fazla 30 karakter). Boş bırakılırsa müşteri temsilcisiz kaydolur; tanınmayan bir kod gönderilse de kayıt tamamlanır, temsilci bağlanmaz. |
device_name | string | ZORUNLU. Token'ı üreten cihaz etiketi. |
Kayıt sonucu üç durumdan biridir
registered — üyelik otomatik onaylı; yukarıdaki gibi token döner, müşteri hemen giriş yapmış olur.
pending_approval — mağaza üyelikleri panelden onaylıyor; kayıt alınır ama token dönmez. Müşteri onaylanana kadar giriş yapamaz:
{ "status": "pending_approval", "customer_id": 1436 }
verification_pending — mağaza SMS onaylı üyelik modunda ve istek fetchSmsVerify: true ile geldi; müşteri henüz oluşturulmaz, telefona tek kullanımlık kod gönderilir:
{ "status": "verification_pending", "sms_verify_second": 120 }
- Kod
120saniye geçerlidir (sms_verify_second); en fazla5deneme yapılabilir, yeni kod isteği için60saniye beklenir. - Kod geldikten sonra kayıt, aynı alanlar +
codeile doğrulama ucuna gönderilir (ya dacodeeklenerekregistertekrar çağrılır).
Kayıt doğrulama (SMS)
POST /api/v3/storefront/customer/register/verify
curl -X POST "https://<domain>/api/v3/storefront/customer/register/verify" \
-H "Accept: application/vnd.api+json" \
-H "Content-Type: application/json" \
-d '{
"name": "Portal",
"surname": "Verify",
"mobilePhone": "05550001122",
"email": "ornek@example.com",
"password": "PortalDoc123",
"code": "123456",
"device_name": "iOS App"
}'
Alanlar kayıt ile aynıdır; ek olarak mobilePhone ve code bu uçta ZORUNLUDUR. Kod doğruysa müşteri oluşturulur ve registered yanıtı (token dahil) döner. Kod yanlış, süresi dolmuş veya deneme hakkı bitmişse 422 döner.
Şifremi unuttum
POST /api/v3/storefront/customer/forgot-password
curl -X POST "https://<domain>/api/v3/storefront/customer/forgot-password" \
-H "Accept: application/vnd.api+json" \
-H "Content-Type: application/json" \
-d '{"email": "ornek@example.com"}'
{ "message": "Talebiniz alındı. Hesabınız kayıtlıysa şifre yenileme bağlantısı gönderilecektir." }
emailveyaphonealanlarından biri ZORUNLUDUR; ikisi de boşsa422döner.- Yanıt her durumda
200ve aynı jenerik mesajdır — hesabın kayıtlı olup olmadığı yanıttan anlaşılamaz (hesap taraması koruması). - E-posta yolunda müşteri kayıtlıysa parola sıfırlama bağlantısı e-posta ile gönderilir. Bağlantı mağazanın web sitesinde açılır ve parola orada belirlenir; API tarafında ayrıca bir sıfırlama ucu yoktur.
phoneyolu mağazada telefonla üyelik lisansı gerektirir; lisans yoksa422döner. Lisans varsa bağlantı SMS ile gönderilir; mağazanın SMS hesabı yoksa müşterinin kayıtlı e-postasına düşer.
Rate limit
| Uç | Sınır |
|---|---|
customer/register | Kimlik (e-posta/telefon) + IP başına dakikada 5, IP başına dakikada 15 |
customer/register/verify | Kimlik + IP başına dakikada 10 |
customer/forgot-password | Kimlik + IP başına dakikada 3 |
Sınır aşımında yanıt 429 Too Many Requests olur.
Hatalar
| Durum kodu | Sebep |
|---|---|
| 422 | Eksik/geçersiz alan (message + errors gövdesiyle); kayıtlı e-posta/telefon; geçersiz telefon formatı; yanlış/süresi dolmuş SMS kodu; telefonla üyelik lisansı yokken telefon akışı |
| 429 | Rate limit aşıldı |
{"message": "...", "errors": {"surname": ["surname alanı gereklidir."]}}. İş kuralı hataları ise {"status": false, "message": "Bu e-posta adresi zaten kayıtlı."} biçiminde döner. İstemci iki biçimi de 422 altında ele almalıdır.