Loyetta

Quizler

Quizler, kullanıcıların soruları cevaplayarak puan kazandığı bilgi tabanlı içeriklerdir. Her quiz, önceden tanımlanmış cevap seçenekleriyle bir veya daha fazla soru içerir.

İçerik segmente edilmişse, bu endpointler yalnızca mevcut kullanıcıyla eşleşen içerikleri döndürür.


Quizleri Listele

Mevcut quizlerin sayfalanmış listesini alın.

GET/v1/quizzes

Query Parametreleri

ParametreTürAçıklama
page[number]integerSayfa numarası (varsayılan: 1)
filter[answered]booleanCevaplanma durumuna göre filtrele. 0/1 veya true/false kabul eder

Örnek İstek

bash
curl -X GET "https://marka.prod.loyetta.com/api/v1/quizzes?page[number]=1" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Accept: application/json"

Yanıt

json
{
  "data": [
    {
      "id": "1a5c77ff",
      "title": "Genel Kültür Quizi",
      "description": "Genel kültür bilginizi test edin!",
      "points": 100,
      "image": {
        "url": "https://example.com/quiz.jpg",
        "sizes": {
          "full": "https://example.com/quiz.webp",
          "large": "https://example.com/quiz-large.webp",
          "thumbnail": "https://example.com/quiz-thumb.webp"
        }
      },
      "share_text": "Az önce bir quiz tamamladım! Sen de dene.",
      "questions": [
        {
          "id": "q1a2b3",
          "content": "Fransa'nın başkenti neresidir?",
          "answers": [
            {
              "id": "a1x2y3",
              "content": "Paris"
            },
            {
              "id": "a4x5y6",
              "content": "Londra"
            }
          ]
        }
      ]
    }
  ],
  "links": {
    "first": "https://marka.prod.loyetta.com/api/v1/quizzes?page[number]=1",
    "last": "https://marka.prod.loyetta.com/api/v1/quizzes?page[number]=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "https://marka.prod.loyetta.com/api/v1/quizzes",
    "per_page": 15,
    "to": 1,
    "total": 1
  }
}

Quiz Nesnesi

AlanTürAçıklama
idstringBenzersiz quiz tanımlayıcısı
titlestringQuiz başlığı
descriptionstringQuiz açıklaması
pointsintegerQuiz tamamlandığında kazanılan puan
imageobjecturl ve sizes içeren görsel nesnesi (aşağıdaki Görsel Nesnesi bölümüne bakın)
share_textstringSistem paylaşım diyaloğunda kullanılacak metin
questionsarrayQuiz soruları dizisi

Soru Nesnesi

AlanTürAçıklama
idstringSoru tanımlayıcısı
contentstringSoru metni
answersarrayOlası cevaplar dizisi

Cevap Nesnesi

AlanTürAçıklama
idstringCevap tanımlayıcısı
contentstringCevap metni

Görsel Nesnesi

AlanTürAçıklama
urlstringHam görsel URL'i, her zaman mevcuttur
sizes.fullstring | nullWebP formatında orijinal boyutlar
sizes.largestring | nullWebP formatında maks. 1920px genişlik
sizes.thumbnailstring | nullWebP formatında maks. 400px genişlik

image.url alanı her zaman mevcuttur. Ancak image.sizes değerleri, görseller işlenirken null olabilir. Her zaman bir fallback deseni kullanın: image.sizes.thumbnail ?? image.url veya image.sizes.large ?? image.url.


Quiz Detayı

Belirli bir quizin soruları ve cevapları dahil detaylı bilgilerini alın.

GET/v1/quizzes/{quiz}

Listeleme endpoint'i de içerik verilerini döndürse de, kullanıcı belirli bir içerikle etkileşime geçtiğinde bu detay endpoint'ini çağırmanız önerilir. Bu istek arka planda yapılabilir ve Loyetta'nın analitiği doğru şekilde takip etmesine yardımcı olur.

Path Parametreleri

ParametreTürAçıklama
quizstringAlınacak quizin ID'si

Örnek İstek

bash
curl -X GET "https://marka.prod.loyetta.com/api/v1/quizzes/1a5c77ff" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Accept: application/json"

Yanıt

json
{
  "success": true,
  "data": {
    "id": "1a5c77ff",
    "title": "Genel Kültür Quizi",
    "description": "Genel kültür bilginizi test edin!",
    "points": 100,
    "image": {
      "url": "https://example.com/quiz.jpg",
      "sizes": {
        "full": "https://example.com/quiz.webp",
        "large": "https://example.com/quiz-large.webp",
        "thumbnail": "https://example.com/quiz-thumb.webp"
      }
    },
    "share_text": "Az önce bir quiz tamamladım! Sen de dene.",
    "questions": [
      {
        "id": "q1a2b3",
        "content": "Fransa'nın başkenti neresidir?",
        "answers": [
          {
            "id": "a1x2y3",
            "content": "Paris"
          },
          {
            "id": "a4x5y6",
            "content": "Londra"
          },
          {
            "id": "a7x8y9",
            "content": "Berlin"
          }
        ]
      }
    ]
  }
}

Hata Yanıtı (404)

json
{
  "success": false,
  "message": "Quiz not found"
}

Quiz Cevaplarını Gönder

Belirli bir quiz için kullanıcının cevaplarını gönderin. Her soru için tek bir cevap kabul edilir. Puanlar doğruluğa göre verilir.

POST/v1/quizzes/{quiz}/answers

Path Parametreleri

ParametreTürAçıklama
quizstringQuizin ID'si

İstek Gövdesi

İstek gövdesi bir JSON cevap dizisidir:

AlanTürZorunluAçıklama
idintegerEvetSoru ID'si
answer_idintegerEvetSeçilen cevabın ID'si

Örnek İstek

bash
curl -X POST "https://marka.prod.loyetta.com/api/v1/quizzes/1a5c77ff/answers" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '[
    {
      "id": 1,
      "answer_id": 3
    },
    {
      "id": 2,
      "answer_id": 7
    }
  ]'

Başarılı Yanıt

json
{
  "success": true,
  "message": "Tebrikler! Quiz'i cevaplayarak 100 puan kazandınız.",
  "correct": true,
  "correct_answers": {
    "1": 3,
    "2": 7
  },
  "earned_points": 100,
  "user": {
    "points": 1500
  }
}

Başarılı Yanıt Alanları

AlanTürAçıklama
successbooleanGönderimin başarılı olup olmadığı
messagestringGeri bildirim mesajı
correctbooleanTüm cevapların doğru olup olmadığı
correct_answersobjectSoru ID'lerinin doğru cevap ID'lerine eşlemesi
earned_pointsintegerBu quizden kazanılan puan
user.pointsintegerKullanıcının güncellenmiş toplam puan bakiyesi

Hata Yanıtı (400) — Daha Önce Cevaplanmış

json
{
  "success": false,
  "message": "Bu quiz'i daha önce cevaplamışsınız."
}

Hata Yanıtı (422) — Doğrulama Hatası

Geçersiz soru ID'si veya cevap ID'si gönderildiğinde döndürülür.

Her quiz, kullanıcı başına yalnızca bir kez cevaplanabilir. Tekrar cevap göndermeye çalışmak 400 hatası döndürür.


Quiz Paylaş

Kullanıcı bir quizi paylaştığında paylaşım aksiyonunu kaydedin. Analitik ve etkileşim takibi için kullanılabilir.

POST/v1/quizzes/{quiz}/share

Path Parametreleri

ParametreTürAçıklama
quizstringQuizin ID'si

Örnek İstek

bash
curl -X POST "https://marka.prod.loyetta.com/api/v1/quizzes/1a5c77ff/share" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Accept: application/json"

Yanıt

json
{
  "success": true
}