İçeriğe geç

Sürümler ve sürüm notları

Markdown

API'nin ve sayfa bileşeni sözleşmesinin sürümleri ile değişikliklerin duyurulma biçimi.

Bileşen Güncel sürüm Görüldüğü yer
API v1 Endpoint yollarının başında: /v1/…, /admin/v1/…
Sayfa bileşeni sözleşmesi (data-review-* attribute’ları, window.Sayproof) 3 Kök öğedeki data-review-version ve window.Sayproof.version
  • Sayfa bileşeni sözleşmesi: Yeni bir attribute, metot ya da event eklenmesi küçük sürüm değişikliğidir ve mevcut CSS kurallarınızı ya da kodunuzu etkilemez. Bir attribute’un kaldırılması ya da anlamının değiştirilmesi ana sürüm değişikliğidir; önceki sürüm en az bir yıl desteklenir.
  • API: Mevcut sürüm içinde yanıtlara yeni alanlar, yeni endpoint’ler ve yeni hata kodları eklenebilir. Kodunuz tanımadığı alanları yok saymalıdır. Mevcut alanların kaldırılması ya da anlamının değiştirilmesi yeni bir API sürümüyle yapılır; önceki sürüm en az bir yıl desteklenir.
  • Tüm değişiklikler bu sayfada duyurulur.
  • Yapay zekâ paketi (yorum denetimi, yanıt taslağı, konu ve duygu, çeviri, yorum özeti) ve WhatsApp ile davet v2 sürümüne taşındı; v1 kurulumlarında kapalıdır. Ayrıntı: Yapay zekâ paketi, WhatsApp ile davet.
  • GET /admin/v1/ai ve POST /admin/v1/ai/requests 404 döner. POST /admin/v1/reviews/<id>/seller-response/draft 409 seller_response_refused döner (ai_package_off ya da ai_feature_closed). GET /admin/v1/insights yanıtında ai null olur.
  • Otomatik kontrollerde yapay zekâ denetimi çalışmaz; GET /admin/v1/settings yanıtındaki checks listesinde ai_review yer almaz. reply_tone, ai_translation_enabled ve ai_summary_enabled kaydedilir ama etkisi yoktur.
  • GET /v1/reviews/list yanıtında ai_summary null, yorum satırlarındaki translations {} döner; yorumlar çevrilmez, özet hazırlanmaz. Script ve sunucuda hazırlanan HTML data-review-ai-*, data-review-translated ve data-review-show-original öğelerini çizmez.
  • GET /admin/v1/settings yanıtındaki deliveries whatsapp içermez; invite_delivery ya da reminder_delivery için whatsapp gönderilirse 400 invalid / invite_delivery_unavailable ya da reminder_delivery_unavailable döner. WhatsApp mesajı gönderilmez. Sipariş verisindeki customer_phone kabul edilir; WhatsApp ile davet v2 sürümüyle gelene kadar telefon numarası saklanmaz.
  • İşlem geçmişi iki sekmeye ayrıldı: Panel işlemleri ve Kişisel veri erişimleri. Kişisel veri gösteren okumalar (yorum ayrıntısı, yorum geçmişi, davetler, mesaj kayıtları, sorular, KVKK talepleri, kullanıcılar, e-posta adresiyle yorum araması, POST /admin/v1/opt-outs/check) panel oturumu, sunucu anahtarı ve Sayproof ekibi için kaydedilir; liste GET /admin/v1/access-log (export) ile okunur. Kayıtlar değiştirilemez ve 365 gün sonra silinir. Veri dışa aktarımı personal_data_access.json dosyasını da taşır. İşlem geçmişi kayıtları istek kimliği, IP adresinin anahtarlı hash’i ve tarayıcı bilgisini taşır.
  • Panelde iki adımlı giriş: kullanıcı kendi hesabı için açabilir. Açıkken POST /admin/v1/session doğru parolada {"authenticated": false, "step": "second_step"} döner; giriş POST /admin/v1/session/passcode (passcode) ile tamamlanır. Yanlış kod 400 invalid_passcode, süresi geçen adım 400 second_step_expired döner. Açma, onaylama ve kapatma: GET/POST /admin/v1/session/second-step, POST …/second-step/confirm, POST …/second-step/off. Oturum yanıtında yeni second_step alanı var. Sayproof ekibinin yönetim ekranına giriş her zaman iki adımlıdır.
  • POST /admin/v1/users yanıtında set_password_link ve shown_once yok, mailed: true var; e-posta zorunlu (400 invalid / email_required). POST /admin/v1/users/<id>/password-link 202 {"mailed": true} döner. Parola bağlantısı yalnız hesabın sahibinin e-postasına gider. Yenileme bağlantısı 1 saat, yeni hesap bağlantısı 3 gün geçerli. Parola belirlenince ya da değişince ve e-posta değişince bildirim gönderilir. Yeni parola kodları: invalid / password_guessable, password_names_account. Parola yenileme sayacı IP adresine bağlı; sınır aşılınca yanıt 202 kalır, e-posta gönderilmez.
  • KVKK silmesi yorum, soru ve cevap metnindeki ad ve iletişim bilgilerini [email], [phone], [name] gibi işaretlerle değiştirir; silinmiş ve yayında olmayan yorumda available_events approve/unhide içermez, geçiş 409 transition_refused / review_anonymized alır, POST /admin/v1/moderation/bulk bu yorumları skipped’a sayar. Silmeden sonra yorum ayrıntısındaki proof.order_reference erased-order:<32 hex> döner; GET /admin/v1/brand-export hazır dışa aktarımları listelemez.
  • POST /v1/ingest/orders yanıtındaki orders[].external_id gönderilen sipariş numarasını döner; silinmiş sipariş yeniden gönderilirse aynı siparişe yazılır. POST /v1/ingest/deliveries detail alanını kabul eder ama saklamaz. Sipariş iletişim bilgileri yorum yazma süresi bitince, davet gitmeyecek siparişlerde 30 gün sonra takma değere çevrilir; bu siparişlerin davetlerinde GET /admin/v1/send-logs ve GET /admin/v1/invites recipient boş döner.
  • Erişim kopyası export satırlarına author_name, aspect_scores, topics, seller_responses; export_details’e deliveries, mail_events, questions, answers, consents eklendi; emails satırları delivered_at, opened_at taşır. Veri dışa aktarımı paketine questions.json, answers.json, question_events.json, delivery_signals.json eklendi.
  • Kanallara aydınlatma metni bağlantısı eklendi: panel oturumunda PATCH /admin/v1/channels/<id> privacy_url alanını alır (https; değilse 400 invalid / privacy_url_not_https, 500 karakteri aşarsa privacy_url_too_long), kanal satırları privacy_url taşır. GET /v1/reviews/list, GET /v1/ssr (state) ve GET /v1/viewer/order yanıtlarına privacy_url, words tablosuna privacy_notice eklendi; script bağlantıyı formların altında data-review-privacy ile gösterir. Davet e-postası tasarımında isteğe bağlı yeni değişken: {{ privacy_url }}.
  • Yorumun fotoğraf ve videoları yalnız yorum yayındayken herkese açık adreste durur. Admin API’deki yorum ayrıntısında media[].url, poster_url, srcset artık GET /admin/v1/reviews/<id>/media/<dosya kimliği>/<dosya adı> endpoint’ini gösterir. POST /v1/media yeni ret kodları: video_frame_too_large: 3840x2160, video_frame_rate_too_high: 60, video_codec_not_allowed, video_unreadable, video_stream_missing, image_unreadable, image_too_large; scan_failed ve processing_failed artık ek bilgi taşımaz.
  • POST /admin/v1/audit-log/export body’si {"format", "title", "filters", "columns", "labels", "changes"} oldu; rows okunmaz. Dosya sunucuda filtrelerden üretilir; kayıt dosyanın SHA-256 hash’ini (fingerprint) taşır.
  • Geçersiz anahtar, şifre ya da imzayla, okunamayan body ile ya da tanınmayan e-posta hizmetine reddedilen istekler aynı IP adresinden 5 dakikada 60 ile sınırlıdır; sınır aşılınca 429 rate_limited döner (Limitler). Çok derin iç içe JSON 500 yerine 400 invalid_json (aktarım ve e-posta bildirimlerinde 400 invalid / body_invalid) döner. Aktarımda saklanamayan karakter 400 invalid / field_invalid: <alan>, e-posta teslim bildirimlerinde 400 invalid / field_invalid ile reddedilir.
  • E-posta teslim bildirimlerinde yalnız bir gönderimle eşleşen olay adresi e-posta almak istemeyenler listesine ekler; detail içindeki e-posta adresleri address sözcüğüne çevrilir. Sayproof’un dışarıya yaptığı istekler (ürün kaynağı, sipariş bağlantısı, bildirim adresi) yalnız 443 portunu kullanır; port numaralı adres port_refused ile reddedilir.
  • Yorum formu fotoğraf ve videoyu yüklemeden önce müşterinin tarayıcısında hazırlar: fotoğraf uzun kenarı en çok 2560 piksel JPEG olarak yeniden kodlanır (konum ve cihaz bilgisi cihazdan çıkmaz), video kısa kenarı en çok 1080 piksel, saniyede en çok 30 kare, sessiz H.264 MP4’e dönüştürülür. Her dosyada “Hazırlanıyor %N”, ardından “Yükleniyor %N” ve iptal düğmesi görünür (data-review-form-media-progress, data-review-form-media-cancel). Script bunun için iki yeni tembel parça yükleyebilir: sayproof-media-* (dosya seçilince) ve sayproof-video-* (yalnız video seçilince). Tarayıcı dönüştüremezse dosya sunucu sınırı içindeyse olduğu gibi yüklenir; sunucudaki denetimler değişmedi. Video dönüştürme 20 saniye ilerlemezse ya da toplam 4 dakikayı aşarsa durdurulur ve dosya olduğu gibi yüklenir (sınır içindeyse).
  • Pazaryeri yorumları: Entegrasyon › Pazaryeri yorumları sekmesi ve /admin/v1/marketplace/... endpoint’leri (sources, runs, check, imported-reviews, removals; yalnız panel oturumu). Mağaza listesinde kaynağı own olmayan her yorum hazır origin_label taşır; pazaryerinden aktarılan yorumda origin: "imported", origin_url, verified: false ve boş verification_method döner. aggregate’e imported_count, imported_label, structured_count, structured_average eklendi; verified_count ve verified=1 süzgeci aktarılmış yorumları saymaz. Yapılandırılmış veri ve Google ürün yorumları dosyası aktarılmış yorumları içermez. DOM: data-review-imported-count; data-review-origin bağlantı (<a>) olabilir. Yöntem beyanına imported bölümü eklenir. Admin API: yorum ayrıntısında imported nesnesi, proof.method: source_platform, entry_point: import, kaldırma gerekçesi source_removed; geçmişte review.imported ve review.source_updated. GET /admin/v1/marketplace/sources satırları attention alanını taşır (held ya da failed, count, error, at; sorun yoksa null); GET /admin/v1/overview dikkat listesi marketplace_held ve marketplace_failed türlerini içerebilir. Veri dışa aktarımına marketplace_sources, marketplace_runs, marketplace_imported_reviews, marketplace_suppressed_reviews eklendi (erişim şifresi ve geçici yükleme satırı yok). Marka yöneticilerine kaldırmalar bekletilince ve okumalar Ayarlar › Uyarı sınırları’ndaki sayı kadar üst üste başarısız olunca e-posta gider; 0 ikisini de kapatır.
  • Yorumun tek bir fotoğrafı ya da videosu yorum kaldırılmadan kaldırılabilir: DELETE /admin/v1/reviews/<id>/media/<dosya kimliği> (moderate kapsamı), body {"reason"} (personal_data, profanity, data_subject_request, legal_order). Liste GET /admin/v1/reasons yanıtında review_media_removal, yorum ayrıntısında media_removal_reasons olarak gelir. Dosya kalıcı silinir, yanıt 204; kaldırma yorumun geçmişine ve İşlem geçmişi’ne yazılır. Panelde Fotoğraf ve videolar kartında her dosyanın altında Kaldır… düğmesi vardır.
  • Yönetici artık hiçbir üyenin e-postasını değiştiremez: PATCH /admin/v1/users/<id> email alanı 403 email_change_own_only döner. Üye kendi adresini POST /admin/v1/session/email-change ({current, email}) ile güncel parolasını girerek değiştirir; yanlış parola 400 invalid / current_password. Kişisel veri erişim kaydına imported_reviews.listed eklendi. Pazaryeri yorumunun origin_url alanı yalnız platformun kendi alan adındaysa dolar. Sayproof ekibinin girişinde kurulum anahtarı tamamlanana kadar her parola girişinde yenilenir; parola adımı ile kod adımı arasında parola değişirse giriş baştan yapılır (second_step_expired). Kapatılan markanın yayındaki fotoğraf ve videoları herkese açık adresten hemen kalkar, marka yeniden açılırsa geri gelir.
  • Yorum listesi (GET /admin/v1/reviews) ve onay kuyruğu (GET /admin/v1/moderation/queue) satırlarına source eklendi: pazaryerinden aktarılan yorumda {"platform", "name"} (örneğin {"platform": "trendyol", "name": "Trendyol"}), diğerlerinde null. Panelde Onay bekleyenler ve Tüm yorumlar satırlarında pazaryeri adı rozet olarak görünür; Tüm yorumlar’daki Nereden geldi filtresi Filtreler bölmesinden filtre çubuğuna alındı.
  • Yorum, soru ve cevap formlarına isteğe bağlı ad alanı ve Adım sitede gizli kalsın kutusu eklendi; işaretliyse ad sitede, yapılandırılmış veride ve Google ürün yorumları dosyasında her sözcüğün ilk harfi ve *** olarak görünür (A*** K***), tam ad panelde kalır. POST /v1/reviews, POST /v1/reviews/revise, POST /v1/questions ve cevap endpoint’i hide_name alanını kabul eder; yorum ve soru ayrıntısı name_hidden döndürür. Yeni attribute’lar: data-review-form-who, data-review-hide-name.
  • NUL (\u0000) ya da eşi olmayan vekil karakter içeren metin artık 500 yerine 400 alır: JSON body’de invalid_json, sorgu parametresinde invalid / invalid, tek bir alanda invalid / <alan>.
  • E-posta almak istemeyenler listesindeki telefon numaraları Sayproof’a özgü anahtarlı karmayla saklanır; GET /admin/v1/opt-outs/export telefon satırlarında bu değeri verir ve bu değer SHA-256 ile eşleşmez. Telefon listenizi POST /admin/v1/opt-outs/check ile eşleştirin; bu uç numarayı yerel yazımla da (0532 111 22 33, 905321112233) kabul eder ve yanıtta gönderdiğiniz yazımı döner.
  • GET /admin/v1/invites ve GET /admin/v1/send-logs satırları recipient_erased taşır; müşterinin kişisel verileri silinmişse recipient boş döner. Davetlerin counters.conversion değeri artık gönderilmiş ve en az bir ürünü yorumlanmış davetleri sayar; İstatistikler’deki dönüşümle aynıdır.
  • GET /admin/v1/moderation/queue counters.elsewhere (reviews, responses) taşır: channel verildiğinde diğer kanallarda onay bekleyenlerin sayısı.
  • Soru-cevap: müşteri cevabı yalnızca yorum davetinin token’ıyla verilir (süreç daveti token’ı 403 token_refused / token_wrong_kind), iptal ya da iade edilen satır not_a_buyer alır; bağlantı içeren soru ve cevap link işaretiyle onaya düşer. Cevap e-postası soranın ve alıcının metnini taşımaz, bir adrese 24 saatte en fazla 5 e-posta gider; fazlası mesaj kayıtlarında refused_rate_limit sonucuyla görünür.
  • Yapay zekâ metinleri (çeviri dahil) aynı denetimden geçer; bağlantı içeren metin de reddedilir. Geçemeyen çeviri saklanmaz, özet yayınlanmaz, yanıt taslağı 409 seller_response_refused / ai_draft_unusable alır. Google ürün yorumları dosyasına süreç deneyimi yorumları (experience: process) girmez.
  • Kullanıcı eklerken (yalnızca panel oturumunda) var olan bir hesabın eski parolası geçersiz olur ve parola belirleme bağlantısı hesabın e-posta adresine gönderilir (15 Ekim 2026’dan itibaren yanıt bağlantıyı taşımaz); son üyeliği silinen hesabın parolası da geçersiz olur.
  • Admin API’de 5xx ya da beklenmeyen bir hatada değişiklik ve İşlem geçmişi kaydı birlikte geri alınır. POST /admin/v1/settings aynı anda yapılan başka bir kaydı ezmez. POST /admin/v1/order-sources/<id>/run iş kuyruğu kapalıyken 500 yerine 202 döner.
  • Script, GET /v1/reviews/list 200 yanıtında core ya da reviews yoksa bileşeni kapatır ve sayfaya hata fırlatmaz. soft tasarımında --review-text-muted varsayılanı #7E6874 oldu.
  • Bütün markalar panele tek adresten girer; markaya özel panel adresleri kaldırıldı. Açılacak markayı giriş yapan hesabın üyeliği belirler; parola, Panelde aç ve destek bağlantıları bu adresi açar. Anahtarla gönderilen Admin API istekleri değişmedi. Parola yenileme kullanıcı adını ya da e-postayı bütün markalarda arar ve yanıt her durumda 202 {"requested": true} olur.
  • Marka verisi veritabanında satır düzeyinde de ayrılır (RLS); dışarıdan görünen davranış değişmedi. Yanıtlar Content-Security-Policy ve Permissions-Policy header’larını taşır; API yalnızca JSON döner.
  • Sipariş doğrulamada aynı e-posta ya da sipariş numarası için saatte 10 başarısız deneme sınırı eklendi (429 rate_limited). Bir sipariş satırına, yoruma eklenmemiş en fazla 18 dosya yüklenebilir (400 refused / too_many_items: 18); 40 megapikseli aşan ya da JPEG, PNG, WebP olmayan görsel processing_failed alır.
  • POST /admin/v1/invite-templates HTML denetimi genişledi: href, background, poster, srcset ve stildeki url() adresleri ile Outlook koşullu bölümleri de taranır; izleme görseli ve stilde @import 400 invalid / image_tracking, style_import alır. POST /admin/v1/terms marka başına en fazla 50 düzenli ifade kabul eder (400 invalid / regex_limit: 50).
  • Soru-cevap: GET|POST /v1/questions ve POST /v1/questions/<id>/answers (kapalıyken 403 refused / questions_disabled; liste yanıtında questions_enabled). Oturum açmış müşteri için GET /v1/viewer yanıtında asker token’ı. Yeni data-review-questions öğeleri; SSR HTML’i de bu bölümü içerir, sözleşme sürümü 3 kaldı. Panel ve Admin API: GET /admin/v1/questions, GET /admin/v1/questions/<id>, POST /admin/v1/questions/<id>/transition, POST /admin/v1/answers/<id>/transition, POST /admin/v1/questions/<id>/answer; ayrıntı Soru-cevap.
  • Yapay zekâ paketi: liste yanıtında ai_summary, yorum satırlarındaki translations çevirilerle dolar; script özeti (data-review-ai-summary*) ve çeviriyi (data-review-translated, data-review-show-original) çizer. GET /admin/v1/ai, POST /admin/v1/reviews/<id>/seller-response/draft; GET|POST /admin/v1/settings yeni alanlar: reply_tone, ai_translation_enabled, ai_summary_enabled, syndication_enabled, questions_enabled, reminder_consent, reminder_delivery, deliveries. GET /admin/v1/insights ai bölümünü ve products.fit_returns alanını taşır.
  • Pazarlar arası paylaşım açıkken liste diğer pazarlarınızdaki satın alma kanıtlı yorumları da taşır (origin: "syndicated", origin_market, shared); bu yorumlar ortalamaya ve yapılandırılmış veriye girmez. Özet ya da paylaşım açılınca yöntem beyanına yeni bölümler eklendiği için current_fingerprint değişir.
  • WhatsApp: sipariş verisine customer_phone eklendi (uluslararası biçimde saklanır); yeni gönderim yolu invite_delivery: "whatsapp", mesaj kayıtlarında ve ret listesinde channel_kind: "whatsapp", yeni durdurma nedeni no_phone. GET /admin/v1/send-logs ve GET /admin/v1/invites telefonda da arar.
  • Google ürün yorumları dosyası: GET|POST /admin/v1/review-feeds ve DELETE /admin/v1/review-feeds/<id> (yalnızca panel oturumunda), oturumsuz dosya GET /admin/v1/shared-review-feeds/<id>/<anahtar>.xml; ayrıntı Google ürün yorumları. Ürün eşlemesine gtin, mpn, brand hedefleri eklendi.
  • KVKK talebi telefon numarasıyla da açılır; erişim kopyası telefonu ve sipariş telefonlarını taşır, silme soru soranın ve alıcı cevabındaki kişisel verileri de siler. Yorum satırları flag_open taşır; GET /admin/v1/policies?channel= yalnızca o kanalın pazarını döner.
  • Her markanın paneli yalnızca markaya ait, rastgele harf ve rakamlardan oluşan adreste açılır; ortak giriş adresi yoktur. Panel oturumu markayı adresten çözer ve X-Sayproof-Tenant header’ını okumaz. Anahtarla gönderilen Admin API istekleri değişmedi; marka anahtardan çözülür.
  • Bir kullanıcı yalnızca bir markaya üye olabilir: başka markada kullanılan kullanıcı adı 400 invalid / username_taken alır. account_shared yanıtı ve kullanıcı satırlarındaki operator ve brand_only alanları kaldırıldı.
  • Kanal satırları müşteriye görünen kimliği taşır: brand_name, sender_address, support_url. Kanal hakkı dolduğunda kanal oluşturma ve kapalı kanalı yeniden açma 409 channel_quota döner; kanal listesi quota (limit, open, request) alanını taşır; ek kanal isteği POST /admin/v1/channel-requests ile, yalnızca panel oturumunda gönderilir (açık istek varken 409 channel_request_open).
  • Hizmeti dondurulan ya da kapatılan markada istekler 403 forbidden / brand_inactive alır. Veri dışa aktarımı GET|POST /admin/v1/brand-export ve GET /admin/v1/brand-export/<id>/download ile hazırlanıp indirilir; hazır değilse 404 not_found / export_not_ready.
  • GET /admin/v1/overview, GET /admin/v1/metrics ve GET /admin/v1/insights channel parametresi alır; sayılar yalnızca o kanalı kapsar. GET /admin/v1/overview her kanal için sites satırlarını (code, label, market, verdict, calls, refused, last_at) taşır.
  • POST /admin/v1/audit-file channel alır; saklanan rapor ve dosya adı kanal kodunu taşır, önceki raporlar listesi channel ile süzülür. Kanalın pazarıyla uyuşmayan market 400 invalid / channel_market_mismatch alır.
  • Markalar pazar kurallarının kendilerine ait sürümünü açabilir: POST /admin/v1/policies (yalnızca panel oturumunda, “Pazar kurallarını yönetebilir” izniyle) body’de market ya da channel, verification_required, review_window_days (7–365), allowed_sort_options, default_sort_option ve isteğe bağlı valid_from alır; sürüm yalnızca o markayı etkiler. GET /admin/v1/policies satırları own alanını taşır (false ise Sayproof kuralı) ve yanıt pazar başına sınırları limits içinde döner. Sayproof kuralı satın alma kanıtını zorunlu tutuyorsa şart kapatılamaz (400 invalid / verification_locked); Sayproof kuralında olmayan sıralama 400 invalid / sort_not_offered: <sıralama> alır.
  • Değerlendirme başlığı listeleri markaya aittir: GET /admin/v1/aspect-templates satırları own alanını taşır (false ise Sayproof hazır listesi); POST /admin/v1/aspect-templates markanın listesini ya da yeni sürümünü yayınlar; POST /admin/v1/aspect-templates/retire yalnızca markanın kendi listelerini kaldırır (409 refused / template_preset).
  • POST /admin/v1/invites/retry channel alır; verilirse yalnızca o kanalın gönderilemeyen davetleri yeniden sıraya alınır.
  • POST /admin/v1/subject-requests/<id>/copy yanıtı ve dosyası talebe yazılan notu (note) ve talebi işleyen kullanıcıyı (handler_id) taşımaz.
  • GET /admin/v1/overview channel verildiğinde mode o kanalda geçerli yayınlama yöntemini döner ve mode_overrides 0 olur; yöntem beyanı uyarısı da o kanalı kapsar. GET /admin/v1/insights compliance bölümü channel ile süzülür; reviews.product_bands scope (group ya da variant) alanını taşır.
  • KVKK taleplerinin state değeri received, completed ya da refused olur; kullanılmayan in_progress değeri kaldırıldı.
  • Beş yeni hazır tasarım eklendi: minimal “Sade”, soft “Pudra”, bold “Sportif”, natural “Doğal” ve night “Gece”. Panelde Mağaza görünümü ekranında seçilir; data-review-theme attribute’u, theme seçeneği, GET /v1/ssr isteğindeki theme parametresi ve liste yanıtındaki theme alanı bu değerleri de taşıyabilir. Gece tasarımı kök öğeye kendi koyu zeminini, iç boşluğunu ve köşe yuvarlaklığını verir. Mevcut üç tasarımın görünümü ve sayfa bileşeni sözleşmesinin sürümü (3) değişmedi.
  • GET /admin/v1/reviews, GET /admin/v1/moderation/queue, GET /admin/v1/reviews/<id> ve GET /admin/v1/diagnostics satırları product_name taşır.
  • Yorum listesi ve onay kuyruğunda q ürün adında, yazanın e-posta adresinde ve tam yorum kimliğinde de arar.
  • Liste endpoint’lerinin filters bildiriminde açık/kapalı filtreler (reported, flagged, refused, sessions) advanced: true döner.
  • GET /admin/v1/metrics publication alanı ve GET /admin/v1/insights moderation bölümü rejected sayısını da taşır; auto_published ve by_hand artık onay kararlarını sayar.
  • GET /admin/v1/reviews/<id>/trace ve GET /admin/v1/audit-file/<id> CSV ve Excel dosyalarında Panelde aç adresi bulunur; JSON dosyaları değişmedi.
  • Sipariş ve teslimat endpoint’leri (/v1/ingest/orders, /v1/ingest/deliveries) Authorization: Bearer <sunucu anahtarı> header’ıyla da istek kabul eder; anahtarda yeni orders (Sipariş gönderme) izni bulunmalıdır. Anahtar tanınmazsa 401 refused / unknown_key, iptal edilmişse 401 refused / revoked_key, izin yoksa 403 refused / scope_missing döner. İmzalı gönderim değişmedi.
  • scopes verilmeden oluşturulan sunucu anahtarı orders ve ssr izinlerini alır; ssr izni olan mevcut anahtarlara orders izni eklendi.
  • Sipariş bağlantılarına shopify ve woocommerce platformları eklendi. Yeni platform_refused ayrıntıları: shop_address_invalid, api_credentials_missing, api_credentials_refused, api_scope_missing; yeni okunamama nedeni: lines_truncated.
  • Alan adı _sayproof-verification.<alan adı> adındaki TXT kaydıyla da doğrulanabilir. Alan adı satırları ve proof_refused yanıtı dns_name alanını taşır; yeni ayrıntı dns_value_mismatch.
  • Dışa aktarımlar CSV, Excel ve JSON olarak alınır: GET /admin/v1/reviews ?export=xlsx ve ?export=json kabul eder; GET /admin/v1/opt-outs/export ?format=csv|xlsx|json kabul eder.
  • POST /admin/v1/subject-requests/<id>/copy body’de format (csv, xlsx, json) alırsa kopyayı dosya olarak döner. GET /admin/v1/subject-requests/<id> talebin kaydını döner; ?format=csv|xlsx|json dosya olarak indirir.
  • Yorumun dosyası: GET /admin/v1/reviews/<id>/trace (?format=csv|xlsx|json ile dosya).
  • İşlem geçmişi panel girişlerini varsayılan olarak listelemez; GET /admin/v1/audit-log?sessions=1 onları da döner.
  • GET /admin/v1/insights davet hunisinde deliveries_known alanını taşır; e-posta hizmetinden teslim bilgisi hiç gelmediyse delivered ve oranı null olur. GET /admin/v1/overview dikkat listesinde moderation_slow türü yer alabilir.

29 Eylül 2026: sayfa bileşeni sözleşmesi sürüm 3

Bölüm başlığı “29 Eylül 2026: sayfa bileşeni sözleşmesi sürüm 3”

Ana sürüm değişikliği: varsayılan yorum bölümü yeniden tasarlandı. SSR yanıtındaki version değeri de "3" oldu.

Değişenler:

  • Kök öğenin içi data-review-frame altında iki bölüme ayrıldı: data-review-aside (özet ve yorum yazma alanı) ve data-review-main (fotoğraf şeridi, filtreler, arama ve sıralama, liste). Yorum yazma alanı sıralama çubuğunun önünde değil, data-review-aside içinde özetin altında gösterilir.
  • Puan dağılımının her satırı (data-review-star) yıldız etiketi, çubuk ve sayı içeren bir düğme taşır (data-review-star-filter); eski “5★ 8” metni kaldırıldı.
  • “Faydalı (n)” düğmesi “Faydalı mı?” oy grubuna dönüştü (data-review-vote, data-review-helpful, data-review-unhelpful). Düğmeler başparmak simgesi ve yalnızca sayıyı (data-review-vote-count) gösterir; tam metin (“Evet (n)”, “Hayır (m)”) aria-label içindedir.
  • Yorumun üst satırı data-review-head oldu: baş harfler (data-review-avatar) ve yazar bölümü (data-review-byline). data-review-meta artık yazar adının altındaki satırdır ve rozetleri (data-review-badges) ile tarihi (data-review-date) taşır; yazar adı bu satırda değildir.
  • Yıldızlar her zaman beş karakterdir (★★★★★); dolu kısım data-review-fill ile gösterilir, özette ortalamaya göre dolar.
  • CSS değişkenlerinin varsayılan değerleri Sıcak tasarımının değerleri oldu; kendi tanımladığınız değerler etkilenmez. Varsayılan bileşenin stilleri ayrı bir parça olarak ilk liste isteğiyle paralel yüklenir; headless kullanımda yüklenmez.

Eklenenler:

  • Üç hazır tasarım (warm “Sıcak”, trust “Güven”, editorial “Editoryal”) ve iki düzen (cards “Kartlı”, sidebar “Yan panelli”). Tasarım ve düzen kanal başına panelde Mağaza görünümü ekranında seçilir; yeni kanallarda Sıcak ve Kartlı’dır. data-review-theme ve data-review-style attribute’ları, theme ve style seçenekleri ve GET /v1/ssr isteğindeki theme ve style parametreleri bu seçimi geçersiz kılar. Kök öğe ve yorum yazma alanı data-review-theme taşır.
  • Yıldıza göre filtre, filtre düğmeleri (data-review-filter), arama (data-review-search) ve sonuç satırı (data-review-results). Bunlar liste endpoint’inin mevcut rating, verified, media, q ve topic parametrelerini kullanır.
  • Fotoğraf şeridi (data-review-gallery) ve ayrı bir parça olarak yüklenen fotoğraf görüntüleyici (data-review-lightbox, #sayproof-style-lightbox).
  • Uzun metinler için “Devamını oku” (data-review-expand).
  • Baş harf dairesinin yazarın adına göre rengi (data-review-avatar-tone).
  • Liste yanıtında gallery, media_reviews, style ve theme alanları.
  • CSS değişkenleri --review-track, --review-verified, --review-summary, --review-summary-text, --review-avatar ve --review-avatar-text; bileşenin genişliğine göre değişen yerleşim (container sayproof-reviews).
  • Sipariş detayında değerlendirme: GET /v1/viewer/order, data-review-order öğesi ve window.Sayproof.mountOrder(). Sipariş detayında sayproof:submitted event’i detail: { order, line } taşır.
  • Belgeler Türkçe ve İngilizce olarak yayınlandı.
  • Davet bağlantısı token’ı adresin # sonrasında taşır (#review_token=…); ?review_token=… biçimi okunmaya devam eder.
  • Storefront endpoint’lerinde dil yalnızca ?lang=, body’deki language ya da kanalın dilinden belirlenir; Accept-Language kullanılmaz. Script’in sabit tr yedeği kaldırıldı.
  • Yorum listesi yanıtına limits ve yorum satırına experience alanları eklendi; POST /v1/reviews/revise kept_media alanını kabul eder.
  • Yeni attribute’lar: data-review-experience, data-review-aspects, data-review-item-aspects, data-review-aspect, data-review-list-message, data-review-form-media-remove; data-review-gate-state için pending, data-review-form-media-state için kept değeri.
  • Yeni Admin API endpoint’leri: POST /admin/v1/reviews/<id>/reports/resolve, POST /admin/v1/opt-outs/check, GET /admin/v1/opt-outs/export.

25 Eylül 2026: sayfa bileşeni sözleşmesi sürüm 2

Bölüm başlığı “25 Eylül 2026: sayfa bileşeni sözleşmesi sürüm 2”

Ana sürüm değişikliği. Sürüm 1 hiçbir mağazada yayında kullanılmadı; bütün mağazalar bu sürümle başladı.

Değişenler:

  • data-review-gate, yorum yazma alanının gösterileceği öğenin CSS seçicisi oldu.
  • Ürün kodu ve kapsam (data-review-product, data-review-scope) script etiketinden container’a taşındı; script etiketindeki değerler yedek olarak okunmaya devam eder.
  • SSR kök öğesi container’ın içinde oluşturulur.

Eklenenler:

  • Headless kullanım: data-review-mode="headless".
  • data-review-ready attribute’u ve window.Sayproof.write(container) metodu.
  • sayproof:submitted event’i.
  • Sipariş doğrulamasının yorum formuyla aynı dialog içinde açılması (data-review-form-verify).
  • Basamaklı ölçekli değerlendirme başlıkları (data-review-form-steps).
  • Oturum açmış müşteri desteği (data-review-viewer, GET /v1/viewer).
  • “Faydalı” oyunun geri alınması (vote: "none").
  • Anonim ürün görüntülenme sayımı (POST /v1/views).