Plug-in manifest

The plug-in manifest is a JSON file that contains all relevant information to install a plug-in in a Haiilo Home environment. Each plug-in must therefore necessarily have at least one plug-in manifest. Although Haiilo Home stores a local copy of the manifest in the database when a plug-in is installed, it makes sense to host and publish the manifest under the same domain as the plug-in.

The structure of the manifest is defined in an accompanying JSON schema. You can download the latest schema version 2.5.0 here. With this schema you can test your own plug-in manifest using a tool like the JSON Schema Tool. While the final definitions should always be looked up in the latest JSON schema file, here is a list of the most important fields of a plug-in manifest:

AttributeTypeDescription
manifestVersionsemantic version
e.g. 2.3.0
The version that the plug-in manifest is validated against.
pluginVersionsemantic version
e.g. 1.0.0
The plug-in version that follows the semantic versioning spec.
coyoVersion semantic version
e.g. 37.0.0
The minimum required Haiilo Home version this plug-in needs to operate properly.
nametranslation map
see Internationalization
The plug-in's name. Should be short.
description translation map
see Internationalization
The plug-in's description. Should describe in detail what the plug-in does.
thumbnailURL
e.g. /plugin/thumb.png
Absolute or relative (to this manifest) URL to a thumbnail for this plug-in.
contextstring[]
e.g. [“userName”]
Additional context properties that should be included in the plug-in initialization request.
configconfiguration fields
see Configuration
A list of global configuration fields.
lifecycle lifecycle objects
see Lifecycle events
Life cycle events the plug-in wants to receive.
apiAccessHaiilo API access request data
see Haiilo API access
If the plug-in requests access to the Haiilo API for backend-to-backend communication
entryPointsentry point definitions
see Entry points
The list of entry points the plug-in offers.

Schema changelog with download links

VersionChangelog
2.5.0- added apiAccess for backend-to-backend communication
2.4.0- added entryPoints/permissionsPolicy 'fullscreen'
2.3.0- added custom configuration for entry points (entryPoints/configUrl)
- added entryPoints/configHeight
2.2.0- added entryPoints/permissionsPolicy
2.1.0- added thumbnail
2.0.0Initial version 2

Entry points

To cater for different views of a single plug-in, Haiilo Home offers the concept of entry points. Each entry point belongs to the overarching plug-in and shares the same data but defines its own URL endpoint. While the plug-in itself is configured in Haiilo Home’s administration area, the specific entry point to render can be configured on each individual plug-in instance in Haiilo Home. If your plug-in defines only one entry point Haiilo Home will automatically select and render it.

To get a better idea of entry points, let's take the following example. You develop a plug-in to display the current menu of your company canteen. While this is a single plug-in you might want to define three different entry points for it (each of them with an own URL and interface):

  • the daily menu,
  • a weekly overview
  • and the current special offers

The details of each entry point are defined in the plug-in manifest. Here is again a list of the most important fields of a plug-in manifest's entry point definition:

AttributeTypeDescription
entryPoints.idUUID
e.g. a6725e06-30f2-46c2-a1da-fa7a52a0e454
The entry point's unique identifier.
entryPoints.nametranslation map
see Internationalization
The entry point's name. Should be short.
entryPoints.descriptiontranslation map
see Internationalization
The entry point's description. Should describe in detail what the entry point does.
entryPoints.urlURL
e.g. /plugin/ep1
Absolute or relative (to this manifest) invocation URL.
entryPoints.originURL[]
see Secure communication
Overrides the events' target origins that are accepted by Haiilo Home.
entryPoints.heightheight or ratio
see Dimensions and scrolling
The entry point's initial height or aspect ratio as a number in pixels or a string of the form {width}:{height}.
entryPoints.configconfiguration fields
see Configuration
A set of local configuration fields for this entry point.
entryPoints.configUrlURL
e.g. /plugin/ep1/edit
Absolute or relative (to this manifest) invocation URL for the configuration.
entryPoints.configHeightheight or ratio
see Dimensions and scrolling
The configuration's initial height or aspect ratio as a number in pixels or a string of the form {width}:{height}.
entryPoints.permissionsPolicystring[]
e.g. [“camera",
"geolocation", "fullscreen"]
Request allowance for permissions policies.

Internationalization

Since Haiilo Home can be used in different languages, plug-ins should also react to the language settings of the user. This concerns both the information in the plug-in manifest and the presentation of the plug-in itself.

The description texts of the plug-in manifest are used in the administration area and in the plug-in configuration dialog. Thus, every text in the manifest is not defined as a simple string but as a JSON object mapping language identifiers to their respective translations. Haiilo Home automatically takes care of selecting the correct language for every user based on the users' settings.

{
  "pluginVersion": "1.0.0",
  "name": {
    "en": "Hello world",
    "de": "Hallo Welt"
  },
  "description": {
    "en": "My first plug-in.",
    "de": "Mein erstes Plug-In."
  },
  …
}

Thumbnail

Plug-ins can set a thumbnail image in their manifest. The thumbnail will be shown in the widget chooser when instanciating a new plug-in. If no thumbnail is set, a generic plug-in icon will be shown instead.

The thumbnail should be in JPG of PNG format and should be at least 64px in width and height.