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:

  • name
  • version
  • description
  • author

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.