Loyetta

Anketler

Anketler, kullanıcıların sorulara yanıt vererek puan kazandığı etkileşim içerikleridir. Quizlerden farklı olarak anketlerde doğru veya yanlış cevap yoktur — kullanıcı görüşleri toplanır. Anket soruları çoktan seçmeli (opsiyonel çoklu seçim) ve serbest metin (paragraf) yanıtlarını destekler.

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


Anketleri Listele

Mevcut anketlerin sayfalanmış listesini alın.

GET/v1/polls

Query Parametreleri

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

Örnek İstek

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

Yanıt

json
{
  "data": [
    {
      "id": "2b6d88aa",
      "title": "Müşteri Memnuniyet Anketi",
      "description": "Geri bildiriminizi paylaşarak bize yardımcı olun.",
      "points": 50,
      "image": {
        "url": "https://example.com/anket.jpg",
        "sizes": {
          "full": "https://example.com/anket.webp",
          "large": "https://example.com/anket-large.webp",
          "thumbnail": "https://example.com/anket-thumb.webp"
        }
      },
      "share_text": "Az önce bir anket tamamladım! Sen de fikirlerini paylaş.",
      "questions": [
        {
          "id": "pq1a2b",
          "content": "Hizmetimizden ne kadar memnunsunuz?",
          "type": "multiple_choice",
          "allow_multiple_answers": false,
          "answers": [
            {
              "id": "pa1x2y",
              "content": "Çok memnunum"
            },
            {
              "id": "pa3x4y",
              "content": "Memnunum"
            },
            {
              "id": "pa5x6y",
              "content": "Kararsızım"
            }
          ]
        },
        {
          "id": "pq3c4d",
          "content": "Neleri geliştirebiliriz?",
          "type": "paragraph",
          "allow_multiple_answers": false,
          "answers": []
        }
      ]
    }
  ],
  "links": {
    "first": "https://marka.prod.loyetta.com/api/v1/polls?page[number]=1",
    "last": "https://marka.prod.loyetta.com/api/v1/polls?page[number]=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "https://marka.prod.loyetta.com/api/v1/polls",
    "per_page": 15,
    "to": 1,
    "total": 1
  }
}

Anket Nesnesi

AlanTürAçıklama
idstringBenzersiz anket tanımlayıcısı
titlestringAnket başlığı
descriptionstringAnket açıklaması
pointsintegerAnket 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
questionsarrayAnket soruları dizisi

Soru Nesnesi

AlanTürAçıklama
idstringSoru tanımlayıcısı
contentstringSoru metni
typestringSoru tipi: multiple_choice veya paragraph
allow_multiple_answersbooleanBirden fazla cevap seçilip seçilemeyeceği (yalnızca multiple_choice için geçerli)
answersarrayOlası cevaplar dizisi (paragraph tipi için boş)

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.


Anket Detayı

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

GET/v1/polls/{poll}

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
pollstringAlınacak anketin ID'si

Örnek İstek

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

Yanıt

json
{
  "success": true,
  "data": {
    "id": "2b6d88aa",
    "title": "Müşteri Memnuniyet Anketi",
    "description": "Geri bildiriminizi paylaşarak bize yardımcı olun.",
    "points": 50,
    "image": {
      "url": "https://example.com/anket.jpg",
      "sizes": {
        "full": "https://example.com/anket.webp",
        "large": "https://example.com/anket-large.webp",
        "thumbnail": "https://example.com/anket-thumb.webp"
      }
    },
    "share_text": "Az önce bir anket tamamladım! Sen de fikirlerini paylaş.",
    "questions": [
      {
        "id": "pq1a2b",
        "content": "Hizmetimizden ne kadar memnunsunuz?",
        "type": "multiple_choice",
        "allow_multiple_answers": false,
        "answers": [
          {
            "id": "pa1x2y",
            "content": "Çok memnunum"
          },
          {
            "id": "pa3x4y",
            "content": "Memnunum"
          },
          {
            "id": "pa5x6y",
            "content": "Kararsızım"
          }
        ]
      },
      {
        "id": "pq3c4d",
        "content": "Neleri geliştirebiliriz?",
        "type": "paragraph",
        "allow_multiple_answers": false,
        "answers": []
      }
    ]
  }
}

Hata Yanıtı (404)

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

Anket Cevaplarını Gönder

Belirli bir anket için kullanıcının yanıtlarını gönderin. Her soru, yapılandırmasına bağlı olarak bir veya daha fazla cevap kabul edebilir.

POST/v1/polls/{poll}/answers

Path Parametreleri

ParametreTürAçıklama
pollintegerAnketin ID'si

İstek Gövdesi

İstek gövdesi bir JSON yanıt dizisidir:

AlanTürZorunluAçıklama
idintegerEvetSoru ID'si
answersarrayEvetCevap nesneleri dizisi
answers[].answer_idintegerEvetSeçilen cevabın ID'si (paragraf soruları için 0 gönderin veya atlayın)
answers[].user_answerstringHayırSerbest metin yanıtı (yalnızca paragraph tipi sorular için)

Örnek İstek — Çoktan Seçmeli

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

Örnek İstek — Paragraf

bash
curl -X POST "https://marka.prod.loyetta.com/api/v1/polls/2b6d88aa/answers" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '[
    {
      "id": 2,
      "answers": [
        {
          "answer_id": 0,
          "user_answer": "Teslimat sürelerinin iyileştirilmesi gerektiğini düşünüyorum."
        }
      ]
    }
  ]'

Örnek İstek — Çoklu Seçim

allow_multiple_answers değeri true olduğunda, answers dizisine birden fazla cevap gönderin:

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

Başarılı Yanıt

json
{
  "success": true,
  "message": "Tebrikler! Anketi cevaplayarak 50 puan kazandınız.",
  "earned_points": 50,
  "user": {
    "points": 1550
  }
}

Başarılı Yanıt Alanları

AlanTürAçıklama
successbooleanGönderimin başarılı olup olmadığı
messagestringGeri bildirim mesajı
earned_pointsintegerBu anketten 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 anketi 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 anket, kullanıcı başına yalnızca bir kez cevaplanabilir. Tekrar cevap göndermeye çalışmak 400 hatası döndürür.

Quizlerden farklı olarak anketler correct veya correct_answers alanları döndürmez — anketlerde doğru ya da yanlış cevap yoktur.


Anket Paylaş

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

GET/v1/polls/{poll}/share

Path Parametreleri

ParametreTürAçıklama
pollstringAnketin ID'si

Örnek İstek

bash
curl -X GET "https://marka.prod.loyetta.com/api/v1/polls/2b6d88aa/share" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Accept: application/json"

Yanıt

json
{
  "success": true
}