Tüm hatalar aynı biçimde döner. request_id her yanıtta X-Request-ID başlığında da vardır; destek isterken bunu ilet.
{"error": {"code": "validation_failed", "message": "Bazı alanlar geçersiz.", "request_id": "b4b3c7ad13f04cda", "fields": {"password": "parola en az 10 karakter olmalı"}}}
code
HTTP
Anlamı
validation_failed
422
Alanlar geçersiz; ayrıntılar fields içinde
invalid_json
400
Gövde çözümlenemedi veya bilinmeyen alan var
unauthorized
401
Authorization başlığı yok
invalid_token
401
Access token geçersiz veya süresi dolmuş: /v1/auth/refresh çağır
session_revoked
401
Oturum kapatılmış; tekrar giriş gerekir
invalid_credentials
401
E-posta veya parola hatalı
email_not_verified
403
E-posta doğrulanmamış
refresh_token_reused
401
Kullanılmış refresh token tekrar geldi; oturum iptal edildi
rate_limited
429
Rate limit aşıldı; Retry-After başlığı kadar bekle
too_many_attempts
429
Bu e-posta için çok fazla hatalı giriş
internal
500
Beklenmeyen hata; request_id ile bildir
Rate limit
Limitler kayan pencereyle uygulanır: genel olarak IP başına dakikada 600 istek, kimlik doğrulama servislerinde her servisin altında yazan daha sıkı limitler. Limit aşılınca 429 rate_limited döner.
X-RateLimit-Limit
Pencere içinde izin verilen istek sayısı
X-RateLimit-Remaining
Bu penceredeki kalan istek
Retry-After
429 durumunda kaç saniye sonra tekrar denenebileceği
Sağlık
GET/v1/health
Servis durumu
Veritabanı, Redis ve dosya deposunun (MinIO) durumunu ve gecikmesini döner. Bir bileşen çalışmıyorsa 503 döner; izleme ve yük dengeleyiciler için uygundur.
Yanıtlar
200Tüm bileşenler çalışıyor
503En az bir bileşen çalışmıyor
curl https://api.satiskatla.com/v1/health
const res = await fetch("https://api.satiskatla.com/v1/health", {
method: "GET",
credentials: "include", // refresh token cookie'si için
});
const data = await res.json();
Hesap açar ve e-posta doğrulama linki gönderir; e-posta doğrulanmadan giriş yapılamaz. E-posta zaten kayıtlıysa da aynı yanıt döner (hesap varlığı sızdırılmaz), o adrese 'zaten hesabın var' e-postası gider.
const res = await fetch("https://api.satiskatla.com/v1/auth/resend-verification", {
method: "POST",
credentials: "include", // refresh token cookie'si için
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"email": "ad@firma.com"}),
});
const data = await res.json();
{
"message": "Bu e-postayla doğrulanmamış bir hesap varsa yeni doğrulama linki gönderildi."
}
Dene
POST/v1/auth/login
⏱ IP başına 20/dk · e-posta başına 5 hatalı deneme/15 dk
Giriş yap
E-posta ve parola ile access token (15 dk) ve refresh token (30 gün, tek kullanımlık) alır. İzinli bir tarayıcı origin'inden gelen isteklerde refresh token httpOnly cookie'ye konur ve gövdede yer almaz. Bir e-posta için 15 dakikada 5 hatalı denemeden sonra giriş geçici olarak kilitlenir.
Yeni bir token çifti verir; kullanılan refresh token geçersiz olur (rotation). Kullanılmış bir refresh token tekrar gönderilirse token çalınmış sayılır ve oturumun tamamı iptal edilir. Aynı token son 15 saniyede yenilenmişse 409 döner (eşzamanlı sekmeler için).
Oturumun tüm refresh token'larını iptal eder; o oturumun access token'ları da süresi dolmadan reddedilir. İdempotenttir.
İstek gövdesi
refresh_tokenstringopsiyonel
Tarayıcıda cookie kullanılır
Yanıtlar
204Çıkış yapıldı
curl -X POST https://api.satiskatla.com/v1/auth/logout
const res = await fetch("https://api.satiskatla.com/v1/auth/logout", {
method: "POST",
credentials: "include", // refresh token cookie'si için
});
const data = await res.json();
Dene
GlobalTrustID
GET/v1/auth/login_with_gti
⏱ IP başına 30/dk
GlobalTrustID ile giriş
Kullanıcıyı GlobalTrustID'ye yönlendirir (PKCE). Onaydan sonra redirect_uri adresine #code=… ile dönülür; bu tek kullanımlık kod 60 saniye içinde exchange servisiyle token çiftine çevrilir. Hesap yoksa GlobalTrustID'nin doğruladığı e-postayla otomatik açılır.
Query parametreleri
redirect_uriurlopsiyonel
Dönüş adresi; izin listesindeki bir origin olmalı. Boşsa bu doküman sayfası.
Yanıtlar
302GlobalTrustID'ye yönlendirme
400redirect_uri izin listesinde değil
# Tarayıcıyı bu adrese yönlendir:
https://api.satiskatla.com/v1/auth/login_with_gti?redirect_uri=https%3A%2F%2Fconsole.satiskatla.com%2Fauth%2Fcallback