Okuma API'si

Sürüm 1.0.0 · Bu sayfa whmcs-musteri-yorumlari-1.0.0.zip paketindeki docs/API.md dosyasının HTML görünümüdür.

Uç nokta: {WHMCS_SYSTEM_URL}modules/addons/musteriyorumlari/api.php

  • Yalnızca GET / HEAD (CORS ön kontrolü için OPTIONS). Diğer yöntemler 405.
  • WHMCS oturumu başlatılmaz: çerez okunmaz/yazılmaz, API anahtarı istenmez. Tarayıcıdan credentials: 'omit' ile çağrılır.
  • Modül etkin değilse 404 {"hata":"modul_kapali"}.
  • Veritabanına WHMCS'in vendor/ dizinindeki Illuminate Capsule ile, configuration.php bilgileriyle bağlanır; WHMCS'in kendisini yüklemez (hızlı, oturumsuz).

Parametreler (hepsi isteğe bağlı; izin listesi)

Parametre Değer Varsayılan
r yorumlar · ozet · kategoriler yorumlar
kategori kategori anahtarı ^[a-z][a-z0-9_]{1,39}$ ya da tum tum
adet 1–50 yönetici/kategori ayarı
sayfa 1–500 1
sirala yeni · eski · puan_yuksek · puan_dusuk yönetici/kategori ayarı
puan 1–5 (filtre) —
donem 30 · 90 · 365 (son N gün) —

Geçersiz değer 400 {"hata":"gecersiz_parametre","alan":"<ad>"} döner. Sorgu dizesi 512 baytı aşamaz. Bilinmeyen parametreler yok sayılır.

Yanıt başlıkları

Başlık Değer
Content-Type application/json; charset=utf-8
Cache-Control public, no-cache (her istekte yeniden doğrulama; çoğunlukla 304)
ETag, Last-Modified içerik özetinden / en son değişiklikten
Vary Origin (bütün yanıtlarda)
Access-Control-Allow-Origin yalnızca istek Origin'i izinli kökenlerden biriyle birebir eşleşirse, o köken
X-Content-Type-Options nosniff
Referrer-Policy no-referrer
Cross-Origin-Resource-Policy cross-origin
Content-Security-Policy default-src 'none'; frame-ancestors 'none'

Access-Control-Allow-Credentials hiçbir zaman gönderilmez; * kullanılmaz. İzinsiz kökenden gelen ön kontrol 403.

Hata kodları

Durum Gövde
400 {"hata":"gecersiz_parametre","alan":"adet"}
404 {"hata":"kategori_yok"} (kategori yok / pasif / arşiv) · {"hata":"modul_kapali"}
405 {"hata":"yontem"}
429 {"hata":"cok_fazla_istek"} + Retry-After: <sn> (IP başına dakikada api_rate_per_minute, varsayılan 120)
500 {"hata":"sunucu"} (ayrıntı verilmez)
503 {"hata":"yapilandirma"}

r=yorumlar gövdesi

{
  "surum": 1,
  "kategori": {"anahtar": "vds", "ad": "VDS Sunucu", "sayfa": "https://www.ornek.com/vds"},
  "ozet": {"sayi": 3, "ortalama": 4.33, "ortalama_metin": "4,3", "dagilim": {"5": 2, "4": 0, "3": 1, "2": 0, "1": 0}},
  "yorumlar": [
    {
      "id": "k3m9x2p4q7wz",
      "kategori": {"anahtar": "vds", "ad": "VDS Sunucu"},
      "paket": "OneTRVDS",
      "ad": "Ayşe K.",
      "dogrulanmis": true,
      "rozet": "Doğrulanmış Müşteri",
      "baslik": "Hızlı kurulum",
      "metin": "Birinci paragraf.\nAlt satır.\n\nİkinci paragraf.",
      "puan": 5,
      "tarih": "2026-09-12T08:15:00Z",
      "guncellendi": null,
      "yanit": {"metin": "Teşekkür ederiz.", "tarih": "2026-09-13T10:00:00Z"}
    }
  ],
  "sayfalama": {"sayfa": 1, "adet": 6, "toplam": 3, "sayfa_sayisi": 1, "siralama": "yeni"},
  "baglantilar": {
    "tumu": "https://www.ornek.com/musteri-yorumlari?kategori=vds",
    "yorum_yap": "https://my.ornek.com/index.php?m=musteriyorumlari&eylem=yaz&kategori=vds",
    "bildir": "https://my.ornek.com/index.php?m=musteriyorumlari&eylem=bildir"
  },
  "gorunum": {
    "gorunum": "kart", "tema": "acik",
    "renkler": {"vurgu": "#1798c6", "yildiz": "#f2a900", "metin": "#1f2937", "zemin": "#ffffff", "cerceve": "#ecedf2"},
    "ozet": true, "yanitlar": true, "saat_dilimi": "Europe/Istanbul"
  },
  "sema": null,
  "kategoriler": null
}
  • kategori null ise genel istektir (bütün aktif kategoriler); bu durumda kategoriler = [{"anahtar","ad","sayi"}].
  • ortalama hiç yorum yoksa null, ortalama_metin "" (varsayılan puan üretilmez).
  • paket yönetici "Paket adını göster" ayarını kapatırsa null. guncellendi içerik revizyonla değiştiyse dolu.
  • sema: yalnızca şema koşullarını sağlayan kategoride (bkz. SEO-SEMA.md) JSON-LD nesnesi; aksi hâlde null.
  • Metinler düz metindir; HTML değildir. İstemci kaçışlamalıdır (textContent, htmlspecialchars, Blade {{ }}).
  • JSON <, >, & karakterlerini \u003C, \u003E, \u0026 biçiminde kodlar.

r=ozet

{"surum":1,"kategori":…,"ozet":…,"baglantilar":…,"gorunum":…}

r=kategoriler

{"surum":1,"kategoriler":[{"anahtar":"vds","ad":"VDS Sunucu","sayi":3}]}

Asla dönmeyen alanlar

E-posta, IP, WHMCS müşteri/kullanıcı/hizmet/sipariş/fatura kimliği, alan adı, doğrulama kanıtı, yönetici adı, bekleyen/reddedilen/spam/kaldırılmış içerik, pasif/arşiv kategori. Sorgular bu kolonları hiç okumaz (PublicReadService); testler (K5, K12) JSON anahtarlarını ve değerlerini ayrıca tarar.

Güncellik

Yayın durumunu değiştiren her olay (onay, revizyon onayı, yayından kaldırma, maskeleme, anonimleştirme, firma yanıtı, kategori durumu/ayarı) sunucu önbelleğinin neslini artırır; eski kayıtlar anında erişilemez olur. HTTP katmanında no-cache + ETag olduğu için tarayıcı ve vekiller her istekte yeniden doğrular: en fazla gecikme sunucu ve HTTP katmanında 0 sn. Sunucuda üst süre (cache_ttl, varsayılan 900 sn) yalnızca bellek/disk temizliği içindir. Harici sunucu adaptörlerinin (WordPress transient, Laravel Cache, PHP dosya önbelleği) kendi TTL'i kadar gecikme olabilir; örneklerde varsayılan 120 sn.

CORS bir kimlik doğrulama yöntemi değildir

CORS yalnızca tarayıcıların başka kökenden yanıtı okumasını sınırlar. Aynı veriler curl gibi tarayıcı dışı istemcilere açıktır; bu sorun değildir, çünkü API yalnızca zaten herkese açık olan içeriği döndürür. Yetki gerektiren hiçbir işlem API'de yoktur.

İnternet bağlantınız kesildi