plugin_info.json
The manifest file for every Pubvana plugin. Read at discovery time, stored in the plugins database table, and checked on every admin panel plugin listing load.
"slug" has been removed as of 2.3.x and we now use the folder name instead
Cron Registration
Plugins can register Spark commands to run at scheduled intervals by adding a cron object to plugin_info.json:
{
"cron": {
"minute": ["pluginname:sync"],
"quarterday": ["pluginname:digest"],
"daily": ["pluginname:cleanup"]
}
}
Available frequencies: minute (every minute), quarterday (every 6 hours), daily (once at 3 AM).
Each entry must be a valid Spark command name registered by your plugin. Commands are only executed when the plugin is active.
Capabilities
New in 2.3.6— Plugins can declare platform capabilities the system stores at discovery time.
{
"capabilities": {
"email": ["core", "self"]
}
}
| Value | Meaning |
|---|---|
"self" |
Plugin sends its own transactional emails |
"core" |
Plugin can also handle all core system emails |
Use ["self"] if your plugin only sends its own emails. Use ["core", "self"] to act as a full email transport replacement. See Email Provider for the implementation guide.
Omit capabilities entirely if your plugin has no platform integrations.
Free Field
{
"free": true
}
Set free to true for free third-party addons. Free addons activate without a license key. Omit or set to false for paid addons.
URL Fields
Third-party addon authors can include these URL fields for licensing and update integration:
| Field | Purpose |
|---|---|
license_validate_url |
Endpoint to validate a license key |
license_check_url |
Endpoint to check license status |
store_url |
Author's store homepage |
items_url |
Author's product listing page |
item_url |
Direct link to this addon's store page |
download_url |
Endpoint to download the addon ZIP |
update_url |
Endpoint to check for new versions |
Required Fields
The following fields are required in all *_info.json files. Addons missing any of these will be registered as disabled:
nameversiondescriptionauthor
Full Schema
{
"name": "Pubvana Docs",
"version": "1.1.0",
"min_pubvana_version": "2.2.3",
"max_pubvana_version": "2.2.4",
"update_url": "https://pubvana.net/api/dstore/v1/update/check",
"support_url": "https://pubvana.net/contact",
"description": "Two-sided documentation system for Pubvana CMS — user and developer docs with versioning, search, and tree navigation.",
"author": "Pubvana Team"
}
Field Reference
name
Type: string Required: yes
Human-readable plugin name. Displayed in the admin panel plugin list, marketplace listings, and the admin sidebar menu header. May contain spaces and mixed case.
"name": "My Awesome Plugin"
version
Type: string (semver) Required: yes
Current plugin version. Must match the value returned by Plugin::getVersion(). The update checker compares this against the version returned by update_url to determine if an upgrade is available.
Use semantic versioning: MAJOR.MINOR.PATCH.
"version": "1.1.0"
min_pubvana_version
Type: string (semver) Required: yes
Minimum Pubvana CMS version this plugin is compatible with. The admin panel warns (or blocks activation) if the installed Pubvana version is lower than this value.
"min_pubvana_version": "2.2.3"
max_pubvana_version
Type: string (semver) Required: yes
Maximum Pubvana CMS version this plugin is tested against. Used to warn administrators when a Pubvana core update may have broken compatibility. Update this value after testing against a new Pubvana release.
"max_pubvana_version": "2.2.4"
update_url
Type: string (URL) Required: yes
The endpoint Pubvana calls to check for plugin updates. The update checker sends a POST request with { "folder": "PvDocs", "version": "1.1.0" } and expects a response with { "has_update": true/false, "latest_version": "x.x.x", "download_url": "..." }.
For marketplace plugins sold through pubvana.net, use:
"update_url": "https://pubvana.net/api/dstore/v1/update/check"
For self-hosted plugins, implement your own endpoint following the same contract.
support_url
Type: string (URL) Required: yes
URL to the plugin's support page, forum, or issue tracker. Displayed as a link in the admin panel plugin detail view.
"support_url": "https://pubvana.net/contact"
description
Type: string Required: yes
One to three sentence description of what the plugin does. Displayed in the admin panel plugin list and marketplace listing.
"description": "Two-sided documentation system for Pubvana CMS with versioning, full-text search, and tree navigation."
author
Type: string Required: yes
Plugin author name. Displayed in the admin panel plugin detail view.
"author": "Pubvana Team"
Version Compatibility Checking
When a plugin is activated, Pubvana compares min_pubvana_version and max_pubvana_version against the installed CMS version (stored in setting('App.version')):
- If installed version <
min_pubvana_version→ activation blocked - If installed version >
max_pubvana_version→ warning shown, activation allowed - Otherwise → proceed normally
Schema Validation
PluginManager::discover() validates that all required fields are present and non-empty. If validation fails, the plugin is not inserted into the DB and an error is logged to writable/logs/.
Keeping in Sync with Plugin.php
Three fields must match between plugin_info.json and Plugin.php:
| plugin_info.json field | Plugin.php method |
|---|---|
version |
getVersion() return value |
name |
getName() return value |
Mismatches will not cause errors at boot time, but will cause confusion in the admin UI and incorrect update detection.