Plugin Manifest Reference (plugin.json)¶
Overview¶
The plugin.json file is the manifest that describes a Movian plugin's metadata, capabilities, and requirements. This file is required for all plugins and must be located in the plugin's root directory.
Basic Structure¶
{
"type": "ecmascript",
"apiversion": 2,
"id": "my-plugin",
"file": "main.js",
"version": "1.0.0",
"title": "My Plugin",
"author": "Plugin Developer",
"description": "A sample plugin for Movian",
"category": "video",
"showtimeVersion": "5"
}
Required Fields¶
type (string, required)¶
Specifies the plugin type. Determines how the plugin is loaded and executed.
Valid values:
- "ecmascript" - JavaScript plugin using Duktape runtime
- "views" - UI-only plugin with view files
- "bitcode" - LLVM bitcode plugin (deprecated)
Example:
id (string, required)¶
Unique identifier for the plugin. Must be unique across all plugins.
Format: Alphanumeric characters, dots, hyphens, and underscores Example:
version (string, required)¶
Plugin version using semantic versioning format.
Format: MAJOR.MINOR.PATCH or MAJOR.MINOR.PATCH.BUILD
Example:
title (string, required)¶
Human-readable plugin name displayed in the UI.
Example:
ECMAScript Plugin Fields¶
file (string, required for ecmascript)¶
Path to the main JavaScript file relative to the plugin directory.
Example:
apiversion (integer, required for ecmascript)¶
ECMAScript API version the plugin is designed for.
Valid values:
- 1 - Legacy API (deprecated, uses compatibility layer)
- 2 - Current API (recommended)
Example:
Optional Metadata Fields¶
author (string, optional)¶
Plugin author or developer name.
Example:
description (string, optional)¶
Detailed plugin description. Supports HTML formatting.
Example:
{
"description": "<p>This plugin provides access to <a href=\"https://example.com\">Example Video Service</a> for streaming movies and TV shows.</p>"
}
synopsis (string, optional)¶
Short one-line description of the plugin.
Example:
homepage (string, optional)¶
URL to the plugin's homepage or repository.
Example:
icon (string, optional)¶
Path to the plugin icon relative to the plugin directory.
Supported formats: PNG, JPG, GIF Recommended size: 256x256 pixels Example:
category (string, optional)¶
Plugin category for organization in the plugin browser.
Valid values:
- "tv" - Online TV and live streaming
- "video" - Video streaming services
- "music" - Music streaming and audio
- "cloud" - Cloud storage services
- "subtitles" - Subtitle providers
- "glwview" - UI themes and components
- "glwosk" - On-screen keyboards
- "audioengine" - Audio decoders
- "other" - Miscellaneous utilities
Default: "other"
Example:
popularity (integer, optional)¶
Plugin popularity score used for sorting in repository listings.
Range: 0-100 Example:
Version Requirements¶
showtimeVersion (string, optional)¶
Minimum Movian version required for the plugin to function.
Format: Version string or minimum version number Example:
Advanced Configuration¶
debug (boolean, optional)¶
Enable debug mode for the plugin during development.
Default: false
Example:
entitlements (object, optional)¶
Security permissions requested by the plugin.
Available entitlements:
- bypassFileACLRead - Bypass file system read restrictions
- bypassFileACLWrite - Bypass file system write restrictions
Example:
memory-size (integer, optional, bitcode only)¶
Memory size in KB for bitcode plugins.
Default: 4096 Example:
stack-size (integer, optional, bitcode only)¶
Stack size in KB for bitcode plugins.
Default: 64 Example:
UI Integration¶
glwviews (array, optional)¶
Custom view files provided by the plugin.
Structure:
{
"glwviews": [
{
"uitype": "standard",
"class": "background",
"title": "Custom Background",
"file": "views/background.view",
"select": false
}
]
}
Fields:
- uitype - UI type ("standard" is most common)
- class - View class (e.g., "background", "loading", "home")
- title - Display name for the view
- file - Path to view file relative to plugin directory
- select - Whether to auto-select this view on installation
Auto-Installation Configuration¶
control (object, optional)¶
Configuration for automatic plugin installation based on file types or URI patterns.
File Format Detection¶
{
"control": {
"fileformats": [
{
"data": "base64-encoded-magic-bytes",
"mask": "base64-encoded-mask",
"offset": 0
}
]
}
}
URI Prefix Detection¶
Repository Fields¶
downloadURL (string, repository only)¶
Direct download URL for the plugin package. Used by plugin repositories.
Example:
Complete Example¶
{
"type": "ecmascript",
"apiversion": 2,
"id": "example-video-service",
"file": "main.js",
"version": "2.1.0",
"title": "Example Video Service",
"author": "Plugin Developer",
"synopsis": "Stream videos from Example Service",
"description": "<p>This plugin provides access to <a href=\"https://example.com\">Example Video Service</a> for streaming movies, TV shows, and documentaries.</p><p>Features:</p><ul><li>Search functionality</li><li>HD streaming</li><li>Subtitle support</li></ul>",
"homepage": "https://github.com/developer/example-plugin",
"icon": "icon.png",
"category": "video",
"popularity": 75,
"showtimeVersion": "5.0.156",
"debug": false,
"entitlements": {
"bypassFileACLRead": false,
"bypassFileACLWrite": false
},
"glwviews": [
{
"uitype": "standard",
"class": "loading",
"title": "Example Service Loading Screen",
"file": "views/loading.view",
"select": false
}
],
"control": {
"uriprefixes": [
"https://example.com/watch/",
"example://"
]
}
}
Validation Rules¶
Required Field Validation¶
type,id,version, andtitleare mandatory- ECMAScript plugins must include
fileandapiversion - Plugin ID must be unique across all installed plugins
Format Validation¶
- Version must follow semantic versioning
- Icon file must exist if specified
- Main file must exist for ECMAScript plugins
- Category must be from the valid list
Compatibility Validation¶
showtimeVersionchecked against current Movian version- API version must be supported
- Entitlements validated against security policy
Best Practices¶
Naming Conventions¶
- Use descriptive, unique plugin IDs
- Follow semantic versioning strictly
- Use clear, concise titles and descriptions
Metadata Quality¶
- Provide comprehensive descriptions with HTML formatting
- Include high-quality icons (256x256 PNG recommended)
- Set appropriate categories for discoverability
- Include homepage URLs for support and updates
Version Management¶
- Increment versions appropriately for changes
- Test compatibility with minimum Movian versions
- Document breaking changes in descriptions
Security Considerations¶
- Request minimal necessary entitlements
- Validate all user inputs in plugin code
- Follow secure coding practices for network requests
This manifest reference ensures plugins are properly configured and integrated into the Movian ecosystem.