plugin.json
Every field of a plugin's plugin.json, for marketplace packages (manifest 2) and local trusted plugins.
Every plugin has a plugin.json at the top of its folder. HF Panel reads it strictly: an unknown field, a wrong type
or a value that breaks a rule below makes the plugin invalid, with the reason shown.
Fields
| Field | Manifest 2 | Local (1) | What it is |
|---|---|---|---|
manifest |
2 |
absent or 1 |
the format |
id |
required | required | 2–40 lowercase letters, digits or -; the folder's name once installed and the address of its pages |
name |
required | required | up to 60 characters |
version |
required | required | for example 2.1.0 (letters, digits, ., +, -, up to 30 characters) |
description |
optional | optional | up to 300 characters |
publisher |
required | not allowed | who makes it, up to 100 characters |
author |
not allowed | optional | up to 100 characters |
homepage |
optional | optional | an https:// address |
min_panel |
required | optional | the oldest HF Panel version it works with; a plugin for a newer panel is refused |
permissions |
optional | not allowed | what it may do, see Plugin permissions (up to 60) |
hooks |
optional | optional | event name → the path of a script in the plugin (the events); in manifest 2 each event needs its events:<event> permission |
ui |
optional | not allowed | up to 10 pages at extension points, see below |
menu |
not allowed | optional | up to 10 menu entries: role (admin, reseller or client), label, group, path |
pages |
with ui or menu |
with menu |
the folder of the plugin's pages |
Texts may not hold control characters or < >. Every path is relative to the plugin's folder: letters, digits,
., _ and - in each part, never .., never starting with /, . or -.
ui entries
| Field | What it is |
|---|---|
point |
admin.menu, reseller.menu, client.menu, client.account-card or admin.account-tab; needs the permission ui:<point> |
label |
up to 40 characters: the menu entry, card title or Manage menu entry |
group |
for a menu point, the menu heading to put it under (a new heading when the menu has none of that name, Plugins when empty) |
path |
the page inside the pages folder, index.html when empty |
How the pages are shown and how they talk to the panel: Pages and the bridge.
Not yet
A long-running service of a plugin (service) is not part of manifest 2 yet: a plugin.json with it is refused.