Temel Kavramlar

Cevaplar & Hatalar

API'deki her cevap aynı zarfla gelir: ApiResponse<T>. Başarı da hata da bu zarfın içindedir. Bu yüzden istemcide önce isSuccess/statusCode kontrol edilir.

Zarf: ApiResponse<T>

AlanTipAçıklama
isSuccessboolİşlem iş kuralları açısından başarılı mı. Önce buna bak.
statusCodestringMakine-okur durum kodu. Başarıda "OK", hatada ör. "InvalidCredentials".
messagestringİnsan-okur açıklama. Loglama/geliştirme için; UI'da doğrudan göstermek zorunda değilsin.
dataT veya nullAsıl veri. Başarıda dolu, hatada genelde null.

Başarılı cevap

{
  "isSuccess": true,
  "statusCode": "OK",
  "message": "OK",
  "data": { "...": "endpoint'e özel gövde" }
}

Hatalı cevap

{
  "isSuccess": false,
  "statusCode": "InvalidCredentials",
  "message": "User credentials are invalid.",
  "data": null
}
Önemli: iş hataları da HTTP 200 döner Endpoint'ler iş kuralı hatalarında dahi HTTP 200 ile cevap verir; gerçek sonuç gövdedeki isSuccess ve statusCode'dadır. HTTP durum koduna güvenip başarı varsayma — önce isSuccess'e bak.
Tek istisna: 401 Korumalı endpoint'e geçersiz/eksik token ile gidilirse API HTTP 401 döner ve bu cevap ApiResponse zarfında gelmez. Bkz. Kimlik Doğrulama.

İstemci tarafında doğru kullanım

Sözde-kod
var res = Deserialize<ApiResponse<T>>(json);
if (!res.isSuccess) {
    // res.statusCode'a göre işle: "InvalidCredentials", "AssignmentExpired", ...
    HandleError(res.statusCode, res.message);
    return;
}
Use(res.data);

Sık görülen durum kodları

statusCode string bir koddur; endpoint'e göre değişir. Aşağıda sık görülenler alanlara göre gruplanmıştır. (Tam liste API kodunda tanımlıdır.)

Genel

statusCodeAnlamı
OKİşlem başarılı.
ValidationErrorGönderilen alanlar eksik/geçersiz.
UnauthorizedYetki yok / oturum geçersiz.
UserNotFoundKullanıcı bulunamadı.
ProfileIncompleteKullanıcı profili eksik.

Auth

statusCodeAnlamı
InvalidCredentialsKullanıcı adı/şifre hatalı.
InactiveStudyRoomKullanıcının çalışma odası aktif değil.
TokenConfigurationMissingSunucu tarafında JWT yapılandırması eksik (sunucu hatası).

Paragraphs

statusCodeAnlamı
ParagraphNotFoundParagraf bulunamadı.
ParagraphHasNoQuestionsParagrafa bağlı soru yok.
AnswersRequired / MissingAnswersTamamlama için cevaplar eksik.
QuestionMismatch / OptionMismatchGönderilen soru/seçenek paragrafla eşleşmiyor.
InvalidReadingMetricsOkuma metrikleri (süre/wpm) geçersiz.

Assignments

statusCodeAnlamı
AssignmentNotFoundÖdev bulunamadı.
AssignmentNotStartedÖdev henüz başlamamış.
AssignmentExpiredÖdevin süresi geçmiş.
AssignmentAlreadySubmittedÖdev zaten teslim edilmiş.
AssignmentParagraphNotFoundÖdeve bağlı paragraf bulunamadı.

GameSessions

statusCodeAnlamı
GameTemplateNotFoundOyun şablonu bulunamadı.
UnsupportedFrameworkİstenen oyun çerçevesi (framework) desteklenmiyor.
GameTemplateContentUnavailableŞablon içeriği mevcut değil.
GameTemplateContentInvalidŞablon içeriği geçersiz/bozuk.
Alan bazlı tam şema Her endpoint'in data gövdesindeki alanların tam listesi İnteraktif API Referansı'nda yer alır.