İçeriğe geç
developers
Geliştirici merkezi

VISWOO BELGELERİ

Manifest

viswoo-plugin.json alanları, paket kuralları, ayar şeması ve ekranlara yerleşim.

Her paketin kökünde viswoo-plugin.json vardır. Şema SDK’dadır: @viswoo/plugin-sdk/schemas/plugin-manifest.schema.json (editörünüzde "$schema" ile bağlayabilirsiniz).

{
"schemaVersion": 1,
"code": "gunun-firsati",
"version": "1.0.0",
"name": { "tr": "Günün fırsatı", "en": "Deal of the day" },
"summary": { "tr": "Ekranda günün fırsatını gösterir.", "en": "Shows the deal of the day on screen." },
"publisher": { "name": "Örnek Yazılım", "url": "https://ornek.com" },
"category": "content",
"icon": "icon.png",
"screenshots": ["screenshots/tv.png"],
"billingUnit": "perTenant",
"permissions": ["settings"],
"panel": { "menu": { "label": { "tr": "Fırsat", "en": "Deal" }, "icon": "tag" } },
"player": { "entry": "player.html", "defaultDuration": 15 },
"settings": {
"type": "object",
"required": ["title"],
"properties": {
"title": { "type": "string", "minLength": 1, "maxLength": 60, "x-viswoo-label": { "tr": "Başlık", "en": "Title" } }
}
}
}
Alan Zorunlu Açıklama
schemaVersion evet 1
code evet Kalıcı kimlik: kebab-case, ASCII, 3–40 karakter. Yayımlandıktan sonra değişmez
version evet major.minor.patch; aynı sürüm ikinci kez yüklenemez
name, summary evet { "tr", "en" }; ad en çok 60, özet en çok 200 karakter
description Mağaza ayrıntı sayfası, Markdown (paragraf, başlık, liste, kalın, bağlantı), en çok 5000 karakter
publisher evet { "name", "url" }; adres https. Doğrulanmış işaretini Viswoo verir
category evet interactive, content, information, integration, reporting, device
icon evet Mağaza ikonu, 256 px kare PNG
screenshots En çok 6 görsel; ekran görünümü varsa en az bir 16:9 TV görseli
billingUnit evet perScreen, perTenant, included. Fiyat pakette değil, Viswoo ile belirlenir
requiredCapabilities Ör. ["touch"]: cihaz bu yeteneği bildirmiyorsa eklenti o ekranda açılamaz
minProtocol Ekran görünümü olan eklentide en az 3 (varsayılan)
permissions Kavramlar
panel { "menu": { "label", "icon" }, "entry"?, "tab"? }: menü öğesi, kendi sekmeniz ve adı
player { "entry", "defaultDuration", "placement"? }: ekran görünümü
public { "entry" }: genel sayfa; public izni gerekir
settings Ayarların JSON Schema’sı (aşağıda); settings izni gerekir
draw Çekiliş havuzları (Sunucu işlevleri); draw izni gerekir
server { "webhookUrl", "events"? } (Kendi sunucunuz); server izni gerekir

Menü ikonu (panel.menu.icon) şu adlardan biridir: bell, calendar, chart-bar, chart-no-axes-combined, chart-pie, circle-dollar-sign, clipboard-list, cloud-sun, coffee, ferris-wheel, gift, hand, heart, image, layout-template, list-checks, map-pin, megaphone, message-square, music, newspaper, percent, puzzle, qr-code, rss, shopping-cart, smile, sparkles, star, store, tag, thermometer, ticket, trophy, users, utensils, video, zap.

  • Paket en çok 5 MB, açılınca en çok 20 MB, en çok 200 dosya.
  • Dosya türleri: html, js, css, json, png, webp, jpg, jpeg, gif, woff2, txt, md. SVG yoktur (içinde betik çalışabilir).
  • Yollar göreli; yalnız harf, rakam, ., _, -, /. .., mutlak yol, ters bölü ve : yok.
  • Ekran görünümü tek dosyadır, en çok 512 KB ve ES5’tir (Ekran görünümü).
  • SDK dosyaları (viswoo-panel.js, viswoo-player.js, viswoo-public.js, viswoo-ui.css, viswoo-screen.css) pakete konmaz; sayfalar adlarıyla başvurur, pack ekler.

Panel Ayarlar sekmesini settings şemasından çizer; alan sırası şemadaki sıradır.

Şema Panelde
string Metin; format: "date" tarih, "date-time" tarih ve saat; enum seçim
integer, number Sayı; minimum, maximum
boolean Aç/kapa
object Başlıklı alan grubu
array (öğesi object) Satırlar: ekle, sil, sırala; minItems, maxItems

Desteklenen kurallar: required, minLength, maxLength, pattern, default (boş kurulumda ve eski kayıttaki eksik alanlarda kullanılır).

Viswoo ekleri:

Ek Ne yapar
x-viswoo-label, x-viswoo-help { "tr", "en" } etiket ve yardım metni (yoksa title, description)
x-viswoo-widget textarea, color, id (gizli, kendiliğinden üretilen satır kimliği)
x-viswoo-visibility: "server" Alan ekrana ve telefona gitmez; panel ve eklentinin sunucusu görür
"slices": {
"type": "array",
"minItems": 2,
"x-viswoo-label": { "tr": "Dilimler", "en": "Slices" },
"items": {
"type": "object",
"required": ["id", "label", "weight"],
"properties": {
"id": { "type": "string", "pattern": "^[a-z0-9-]{1,24}$", "x-viswoo-widget": "id" },
"label": { "type": "string", "minLength": 1, "x-viswoo-label": { "tr": "Ad", "en": "Label" } },
"weight": { "type": "integer", "minimum": 0, "x-viswoo-visibility": "server", "x-viswoo-label": { "tr": "Şans", "en": "Chance" } }
}
}
}
  • Eklentinin çalışması için gereken her alan required olur. Kayıtlı ayar şemaya uymuyorsa kurulum tamamlanmamıştır: eklenti ekranlarda oynamaz, sunucu işlemleri ve genel sayfa plugin.setup_incomplete döner.
  • Şemaya uymayan ayar kaydedilmez (plugin.invalid_settings).
  • Yeni sürüm şemaya zorunlu alan eklerse kurulumlar müşteri alanı girene kadar durur; yeni zorunlu alana default verin.

Ekran görünümü olan eklentide müşteri Ekranlar sekmesinde gösterim biçimini, ekranları (tümü, seçili, etiketli), tarih aralığını ve aç/kapa’yı seçer.

Biçim Ekranda
continuous (sürekli) Eklenti yayını kaplar (yayın saatleri ve acil duyuru yine geçerlidir)
interval (aralıklı) Her everyMinutes dakikada durationSeconds saniye yayının arasına girer
playlist Yalnız playlist’e öğe olarak eklendiğinde oynar
"player": {
"entry": "player.html",
"defaultDuration": 20,
"placement": { "modes": ["interval", "continuous", "playlist"], "default": "interval", "everyMinutes": 10, "durationSeconds": 30 }
}

modes izin verilen biçimlerdir; verilmezse üçü de seçilebilir, varsayılan aralıklıdır. Kampanya tarihleri için kendi ayar alanınıza gerek yoktur: yerleşimin tarih aralığı dışında eklenti oynamaz, sunucu işlemleri plugin.not_live döner.