📱 Mobile API Dokümantasyonu

Tüm mobil endpoint'ler /api/v1/mobile/* prefix'i ile çalışır.

⚙️ Genel Kurallar

Zorunlu Header'lar (tüm istekler)

X-App-Version1.2.3— Uygulamanın semver sürümü
X-Platformios | android— Cihaz platformu
AuthorizationBearer — JWT token (public route'lar hariç)

Versiyon Kontrolü Mantığı

Her istekte AppVersionMiddleware çalışır.

HARD UPDATE (426): Sürüm minimum sürümün altındaysa istek reddedilir, kullanıcı zorla güncellemeye yönlendirilir.

SOFT UPDATE: Sürüm latest'in altındaysa response'a updateStatus: "soft" eklenir.

Versiyon sınırları: DB (admin panelden anlık değiştirilebilir) → ENV VAR → default 1.0.0

🚫 Hard Update Response (HTTP 426)

{
  "success": false,
  "updateStatus": "hard",
  "message": "Bu uygulama sürümü artık desteklenmiyor. Lütfen uygulamayı güncelleyin."
}

🔔 Soft Update — Normal Response (HTTP 200)

Normal response'un içine updateStatus alanı eklenir:

{
  "success": true,
  "data": {
    "updateStatus": "soft",
    ... // asıl data
  }
}

🔐 Auth

📲 Cihaz

📁 Projeler

⚡ Generation

🪙 Krediler

💳 Satın Alma (IAP)

🎨 Tasarım Stilleri

🎁 Özel Günler (Gift Sites)

💘 Date Invite (Date Teklifi)

📈 Analytics (Event Tracking)

🔢 Versiyon Sınırı Konfigürasyonu

Öncelik sırası: DB (AppSetting) > ENV VAR > default 1.0.0

ENV VAR'lar (backend .env)

MOBILE_IOS_MIN_VERSION— iOS hard update sınırı
MOBILE_IOS_LATEST_VERSION— iOS soft update sınırı
MOBILE_ANDROID_MIN_VERSION— Android hard update sınırı
MOBILE_ANDROID_LATEST_VERSION— Android soft update sınırı

DB Key'leri (anlık değişiklik için)

mobile.ios.minVersion— iOS hard (DB override)
mobile.ios.latestVersion— iOS soft (DB override)
mobile.android.minVersion— Android hard (DB override)
mobile.android.latestVersion— Android soft (DB override)

📊 Generation Status Akışı

queued (0%)analyzing (15%)generating (40%)building (75%)completed (100%)

Hata durumunda: failed — errorLog alanı dolu olur

Polling önerisi: status completed veya failed gelene kadar her 4 saniyede bir /status çağır

❌ Hata Kodları

HTTPDurumSebep
400Bad RequestEksik veya geçersiz body parametresi
401UnauthorizedJWT token eksik veya süresi dolmuş
402Payment RequiredYetersiz kredi (generation başlatılamadı)
403ForbiddenBaşka kullanıcının kaynağına erişim girişimi
404Not FoundProje veya generation bulunamadı
409ConflictEmail zaten kayıtlı (register)
426Upgrade RequiredHard update — minimum sürüm altında
429Too Many RequestsRate limit aşıldı