Temel Kavramlar

Kimlik Doğrulama

API, JWT bearer token ile çalışır. Önce login ile token alınır, sonra korumalı her istekte bu token bir başlıkta gönderilir.

Akış

1

Login isteği

POST /api/auth/loginAnonim

LoginRequest
{
  "loginIdentifier": "test_kullanici",
  "password": "sifre123"
}
2

Token ve kullanıcı bilgisi döner

LoginResponse (data)
{
  "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6...",
  "expiresOnUtc": "2026-07-25T18:30:00Z",
  "user": { "...": "AuthenticatedUserResponse" }
}
3

Token'ı sonraki isteklerde gönder

Authorization: Bearer <accessToken>

Request alanları — LoginRequest

AlanTipAçıklama
loginIdentifierstringKısa kullanıcı adı veya e-posta.
passwordstringKullanıcı şifresi.

Cevap alanları — LoginResponse

AlanTipAçıklama
accessTokenstringJWT bearer token. Korumalı isteklerde Authorization başlığında gönderilir.
expiresOnUtcstring (UTC datetime)Token'ın geçerlilik bitiş anı (UTC). Bu andan sonra yeniden login gerekir.
userAuthenticatedUserResponseGiriş yapan kullanıcının özet bilgisi (aşağıda).

AuthenticatedUserResponse

AlanTipAçıklama
idintKullanıcının ID'si.
uniqueIdentifierguidKullanıcının benzersiz ID'si.
emailstringE-posta adresi.
usernamestringKısa kullanıcı adı.
nameSurnamestringAd soyad.
gradeintSınıf düzeyi.
studyRoomIdintBağlı olduğu çalışma odası (study room) ID'si.
currentWpmintGüncel okuma hızı (kelime/dakika).
isPasswordSetboolKullanıcının şifresi ayarlanmış mı.

Hangi endpoint token ister?

ErişimEndpointler
AnonimPOST /api/auth/login, GET /api/health
BearerDiğer tüm public endpointler (me, paragraphs, assignments, game-sessions).
Token yoksa veya geçersizse: 401 Korumalı bir endpoint'e token göndermeden ya da süresi dolmuş/geçersiz token ile gidersen, API HTTP 401 Unauthorized döner. Bu durumda cevap ApiResponse zarfında gelmez — doğrudan 401 statüsüdür. Çözüm: yeniden login olup yeni token al.

Unity örneği

UnityWebRequest ile korumalı çağrı
var req = UnityWebRequest.Get("https://<api-adresi>/api/me/profile");
req.SetRequestHeader("Authorization", "Bearer " + accessToken);
yield return req.SendWebRequest();
// req.downloadHandler.text -> ApiResponse<MeProfileResponse> JSON
Token süresi dolunca expiresOnUtc'yi istemcide takip et; geçmeden ya da 401 alınca yeniden login ol. (Şu an ayrı bir refresh-token endpoint'i yoktur.)