Integration Config
A Ferdi recipe is a node module. In order to learn more about node modules and their configuration check the official Node.js documentation / npm package.json documentation.
Table of Contents
Config flags
string id mandatory
Unique identifier name of the plugin. The name of the plugin folder has to be the same.
This ID cannot contain any special characters or spaces.
string name mandatory
Display name of the service.
string version mandatory
Version number. Will be used for auto updating the integrations. The version number must be in a semver compatible format: eg 1.0.0.
important: the version will be used to figure out if a new recipe update should be deployed to the user. If you make changes to a recipe, always increase the version number or Ferdi won't update your recipe.
string license
The license of the integration. We prefer MIT, but here is a list of all the available SPDX licenses http://spdx.org/licenses/
string repository
Link to your Github, Gitlab or Bitbucket public repository. Not used in the application, but is very helpful if we need to log bugs or update to newer versions, etc.
array[string] aliases
The list of alternate names that this recipe can be called
object config mandatory
This is the Ferdi-specific integration config.
stringserviceURL
Defines the URL that should be loaded into the Ferdi webview.
If you want to load a simple URL likehttps://www.messenger.com, you can simply define it via theserviceURLparameter. If your service URL is team based, e.g. Slack or HipChat you can usehttps://{teamId}.slack.com.
If your service works with custom URLs, just leave this empty.
Examples
{
"serviceURL": "https://www.messenger.com"
}{
"serviceURL": "https://{teamId}.slack.com"
}booleanhasTeamId default: false
Is this a team based service? If true, the interface to add the service will require a team identifier. e.g.[teamId].slack.comstringurlInputPrefix
This option is only used in combination withhasTeamId: truein order to display the value ofurlInputPrefixbefore the input for TeamId to make it obvious to the user what input is required from them. Eg. <TeamID>.hipchat.comstringurlInputSuffix
This option is only used in combination withhasTeamId: truein order to display the value ofurlInputSuffixafter the input for TeamId to make it obvious to the user what input is required from them. Eg. <TeamID>.hipchat.combooleanhasHostedOption default: false
If a service can be hosted and has a teamId or customUrlbooleanhasCustomUrl default: false
On-premise services like HipChat, Mattermost, ... require a custom URL. This option enables the user to enter a custom URL when adding the service.booleanhasNotificationSound default: false
Some services provide their own notification sound. In order to avoid multiple sounds when the user receives a message set this totrue. If the service has no built in notification sound set this tofalse.booleanhasDirectMessages default: true
Some services have direct 1x1 messages e.g. a mention or message to every user in a channel (@channel). If this flag is set totrue, the user can enable/disable if there should be a badge for direct messages.booleanhasIndirectMessages default: false
Services like Slack or HipChat have direct messages e.g. a mention or message to every user in a channel (@channel) and indirect messages e.g. general discussion in a channel. If this flag is set totrue, the user can enable/disable if there should be a badge for indirect messages.stringmessage
Info message that will be displayed in the add/edit service preferences screen.booleandisablewebsecurity default: false
Some services like hangoutschat need the web security disabled.booleanallowFavoritesDelineationInUnreadCount default: false
Services like Outlook differentiate between favorites vs other folders. Setting this totruewill allow the exclusion of the message counts from those non-favorite folders.
Example
The mattermost configuration is a typical example.