Skip to content
developers
Developer home

VISWOO DOCUMENTATION

Concepts

The parts of a plugin package, where they run and their life cycle at a customer.

In Viswoo a business (customer) manages its screens from the panel. A plugin adds a new capability to the customer’s panel and screens: a prize draw, a survey, a queue number display. A plugin is a single package file (.vzp, ZIP).

Part File Runs in Bridge
Manifest viswoo-plugin.json — —
Panel tab panel.entry (e.g. panel/index.html) The customer’s panel, in a sandboxed frame Viswoo.panel
Screen view player.entry (e.g. player.html) TVs, tablets, kiosks; inside the player Viswoo.player
Public page public.entry (e.g. public/index.html) The visitor’s phone, via the QR code on screen Viswoo.public
Your own server Your domain — Signed webhooks + platform API

No part is mandatory: a reporting plugin may have only a panel tab, a content plugin only a screen view.

Every page opens in a sandboxed frame with its own opaque origin: it cannot reach the panel’s cookies, storage or DOM. It talks to the platform only through the SDK bridge (postMessage). The screen view has no network at all (connect-src 'none'); server work goes through the bridge’s call.

The panel gives a plugin a menu item and tabs. Viswoo draws the standard tabs:

Tab Drawn by Contents
The plugin’s tab (panel.tab) The plugin Special work such as the till, statistics, lists
Settings Viswoo, from the settings schema Form, required fields, saving
Screens Viswoo Which screens, how (continuous, interval, playlist), between which dates
Preview Viswoo The screen view in a TV frame, landscape/portrait, touch

So you do not write a settings form; you write the settings schema.

  1. The customer enables the plugin in the store and approves the requested permissions.
  2. They fill in Settings. Setup is incomplete until the schema’s required fields are set: the plugin does not play, server actions return plugin.setup_incomplete, and the bridge context says setupComplete: false.
  3. If there is a screen view, they choose the placement in Screens. Without it the plugin plays on no screen.
  4. When the plugin is turned off or outside its date range it leaves the screens; server actions return plugin.not_live.

If a new version asks for new permissions, the old version keeps running until the customer approves.

Permission Grants
settings Settings schema and reading/writing settings
data Plugin data (collection/key → JSON document)
screens:read Names and orientation of the customer’s screens
events Event counters (report, events.summary)
codes One-time codes
draw Weighted draw pool
public Public page opened by QR
server Signed events to the plugin’s own server

Ask only for what you need; the customer sees the list when installing.

The screen view must run on the oldest player in the field: LG webOS 3.x, i.e. Chromium 38. That is why it is written in ES5 and is a single file. Screen views need a protocol 3 player; placement (continuous and interval display) is protocol 4. Older players skip the plugin item and the panel tells the customer to update the screen.