The plugin.json file describes the plugin. It’s a JSON file using the UTF-8 encoding.

    "pluginName": "example_plugin",
    "pluginAuthor": "Joe Bloggs And Company",
    "pluginVersion": 109,
    "displayName": "Example plugin",
    "displayDescription": "An example plugin to demonstrate the JavaScript plugin API.",
    "installSecret": "abcdefghij0123456789",
    "apiVersion": 4,
    "depend": ["std_workflow"],
    "privilegesRequired": ["pDatabase"],
    "load": ["js/example_plugin.js", "js/handle_requests.js"],
    "respond": ["/do/example", "/api/example"],
    "allowAnonymousRequests": false

JSON keys

key pluginName

The name of the plugin. This must match the plugin definition exactly, or the plugin will not be loaded.

It can only use a-zA-Z0-9_.

key pluginAuthor

The author of the plugin. This will be displayed to the user on installation or if there is an error in the plugin.

key pluginVersion

Version number of the plugin, as an integer. When displayed to the user, it will be divided by 100. For example, 120 will be displayed as 1.20.

key displayName

The name of the plugin as displayed to the user.

key displayDescription

A longer description of the plugin, for display to the user.

key installSecret

An optional secret used for generating the license key required when installing this application. Use the Plugin Tool to generate license keys.

If this key is omitted, the plugin will be able to be installed without supplying a license key.

key apiVersion

The minimum version of the Haplo API required by this plugin.

key depend

An array of plugin names of the plugins on which this plugin depends. These plugins will be installed automatically when this plugin is installed, along with their dependencies.

key load

An array of JavaScript files to load, in order. Include the js/ directory name.

key respond

An array of the base URLs that this plugin will respond to.

URLs must begin with /do/ or /api/, and declare only one level below that, for example, /do/example.

key allowAnonymousRequests

By default, plugins will not be asked to respond to any request unless the user has logged in, or the request is made by software using an API key to authenticate. Set this to true to allow anonymous requests as well.

In either case, the plugin should do it’s own authorisation checks, but the default of not allowing anonymous requests minimises the effects of a mistake.

key privilegesRequired

An array of the privileges this plugin requires. The use of certain APIs is restricted to plugins which explicitly request the required privileges. These plugins will have a more careful code review, and appropriate warnings displayed on installation of the plugin.

Privileges available in the current API version are:

Name Required for
pDatabase Use of the relational database API.
pSendEmail Any API which sends an email.

This key should be omitted if the plugin does not use any privileged APIs.

key loadPriority

An integer priority value to control the load order of installed plugins. If it is not included, the priority will be a large number to load the plugin after plugins which do specify a loadPriority. Numbers in the range 1000 to 10000 are recommended.

Only specify this value if you absolutely need to control the load order. In general, the provided Inter-plugin communication should make the use of loadPriority unnecessary.

key use

An array of feature names used by this plugin. This is the recommended alternative to calling use() in your JavaScript.

key locals

A dictionary of local variable names to properties of your plugin. These are added to the wrapper function generated when loading each file.