T-SOFT/Storefront API/Yorum Yazma

Yorum Yazma

Yetki:storefront:account — müşteri token'ı zorunlu. Token almak için Kimlik Doğrulama, hata gövdelerinin biçimi için Genel Bakış.

Giriş yapmış müşterinin bir ürüne yorum göndermesini sağlar. Uç hesap sürüm kökü altındadır: https://<domain>/api/v3/storefront/account/2026-01. Müşteri token'ı (storefront:account scope'u) gerekir; uygulama (app) token'ı ile yapılan istek 401 döner. Bu kaynak yalnızca yazma ucudur — onaylı yorumları okumak için Yorumlar sayfasındaki GET /products/{id}?include=comments kullanılır.

Yorum gönderme

POST /product-comments

İstek gövdesi JSON:API biçimindedir (data.type = product-comments):

curl -X POST "https://<domain>/api/v3/storefront/account/2026-01/product-comments" \
  -H "Accept: application/vnd.api+json" \
  -H "Content-Type: application/vnd.api+json" \
  -H "Authorization: Bearer <customer_access_token>" \
  -d '{
    "data": {
      "type": "product-comments",
      "attributes": {
        "productId": 771,
        "title": "Çok beğendim",
        "comment": "Kumaşı kaliteli, bedeni tam oldu. Tavsiye ederim.",
        "rating": 5,
        "isNameDisplayed": true
      }
    }
  }'

Yanıt 201 Created — oluşturulan yorum kaydı döner:

{
  "jsonapi": { "version": "1.0" },
  "links": { "self": "https://<domain>/api/v3/storefront/account/2026-01/product-comments/14" },
  "data": {
    "type": "product-comments",
    "id": "14",
    "attributes": {
      "productId": 771,
      "title": "Çok beğendim",
      "comment": "Kumaşı kaliteli, bedeni tam oldu. Tavsiye ederim.",
      "rating": 5,
      "isNameDisplayed": true,
      "createdAt": 1783705366,
      "authorName": "Portal Verify2"
    },
    "links": { "self": "https://<domain>/api/v3/storefront/account/2026-01/product-comments/14" }
  }
}

Görselli yorum gönderme

POST /product-comments/with-image

Yorumun yanına bir fotoğraf eklemek için bu uç kullanılır. Gövde JSON:API değil multipart/form-data biçimindedir: alanlar düz form alanı olarak, görsel dosya olarak gider.

curl -X POST "https://<domain>/api/v3/storefront/account/2026-01/product-comments/with-image" \
  -H "Accept: application/vnd.api+json" \
  -H "Authorization: Bearer <customer_access_token>" \
  -F "productId=771" \
  -F "title=Çok beğendim" \
  -F "comment=Kumaşı kaliteli, bedeni tam oldu." \
  -F "rating=5" \
  -F "isNameDisplayed=1" \
  -F "image=@/yol/urun-fotograf.jpg"

Yanıt 201 Created — gövde düz yorum ucuyla aynı kaydı döner.

AlanTipKural
imagedosyaOpsiyonel. Tek görsel. İzin verilen tipler: jpeg, jpg, png. En fazla 4608 KB.

Diğer alanların (productId, title, comment, rating, isNameDisplayed) kuralları düz yorum ucuyla birebir aynıdır; aşağıdaki tabloya bak.

image gönderilmezse görselsiz yorum oluşur — davranış POST /product-comments ile aynı olur. İzin verilen tipler bu uçta jpeg/jpg/png ile sınırlıdır; Görsel Yükleme sayfasındaki kişiselleştirme ucunun tip listesi ve boyut sınırı farklıdır, ikisini karıştırma.

Moderasyon, satın alma şartı ve sıklık sınırı bu uçta da geçerlidir.

Alanlar

AlanTipKural
productIdintZORUNLU. Yorum yapılan ürünün id'si (Ürünler kataloğundan).
titlestringZORUNLU. Yorum başlığı, en fazla 100 karakter.
commentstringZORUNLU. Yorum metni, en fazla 5000 karakter.
ratingintZORUNLU. Puan, 0–5 arası tamsayı. Aralık dışı değer 422 döner.
isNameDisplayedbooltrue = müşterinin adı soyadı yorumda görünsün. Gönderilmezse false.
createdAtintSALT OKUNUR. Yorumun oluşturulma anı (Unix timestamp).
authorNamestringSALT OKUNUR. isNameDisplayed true ise müşterinin ad soyadı; false ise boş string — vitrinde de gizli kalır.

Moderasyon kuyruğu

Gönderilen yorum onay bekleyen durumda oluşturulur ve mağaza panelinden onaylanana kadar vitrinde görünmez: 201 yanıtı alınsa bile yorum, Yorumlar okumasındaki include=comments sonucuna onaylanmadan girmez. Uygulama, gönderim sonrası "Yorumunuz onaya gönderildi" benzeri bir mesaj göstermelidir.

Gönderim kısıtları

  • Satın alma şartı: mağaza "yalnızca ürünü satın alanlar yorum yapabilsin" ayarını açtıysa, o ürünü satın almamış müşterinin isteği 403 döner ("Yalnızca ürünü satın alan müşteriler yorum yapabilir.").
  • Sıklık sınırı: mağazanın yorum sıklığı ayarı (saniye) içinde aynı ürüne ikinci yorum 422 döner ("Yorum ekleme sıklık limitine ulaşıldı.").

Hatalar

Durum koduSebep
401Token yok/geçersiz veya müşteri token'ı değil
403Satın alma şartı açık ve müşteri ürünü satın almamış
406Accept başlığı application/vnd.api+json değil
422Doğrulama hatası (eksik alan, uzunluk/aralık aşımı — errors[].source.pointer alanı gösterir) veya sıklık sınırı. Görselli uçta ayrıca: dosya tipi jpeg/jpg/png değil ya da boyut 4608 KB üstü