{
	"TRIGGER": [
		{
			"name": "Timer",
			"description": "The Timer Trigger will fire a workflow on a scheduled interval.",
			"type": "TRIGGER",
			"nodeClazz": "TimerNode",
			"configClazz": "TimerNodeConfiguration",
			"defaultConfiguration": {
				"scheduleType": "SIMPLE_INTERVAL",
				"interval": 1,
				"timeUnit": "MINUTES"
			},
			"inEnabled": false,
			"outPortType": "SINGLE",
			"outPorts": [
				""
			],
			"icon": "clock"
		},
		{
			"name": "Virtual Button",
			"description": "fire a rule chain when the \"virtual button\" is pressed",
			"type": "TRIGGER",
			"nodeClazz": "VirtualButtonNode",
			"configClazz": "VirtualButtonNodeConfiguration",
			"defaultConfiguration": {
				"payload": "{\"key\":\"value\"}"
			},
			"inEnabled": false,
			"outPortType": "SINGLE",
			"outPorts": [
				""
			],
			"icon": "dot-circle"
		}
	],
	"LOGIC": [
		{
			"name": "Broadcast",
			"description": "broadcast",
			"type": "LOGIC",
			"nodeClazz": "BroadcastNode",
			"configClazz": "BroadcastNodeConfiguration",
			"defaultConfiguration": {
				"outputCount": 0
			},
			"inEnabled": true,
			"outPortType": "BROADCAST",
			"outPorts": [
				""
			],
			"icon": "sitemap"
		},
		{
			"name": "Delay",
			"description": "delay",
			"type": "LOGIC",
			"nodeClazz": "DelayNode",
			"configClazz": "DelayNodeConfiguration",
			"defaultConfiguration": {
				"delaySec": 0
			},
			"inEnabled": true,
			"outPortType": "SINGLE",
			"outPorts": [
				""
			],
			"icon": "pause"
		},
		{
			"name": "Filter",
			"description": "filter",
			"type": "LOGIC",
			"nodeClazz": "FilterNode",
			"configClazz": "FilterNodeConfiguration",
			"defaultConfiguration": {
				"jsScript": "return false;"
			},
			"inEnabled": true,
			"outPortType": "STATIC",
			"outPorts": [
				"true",
				"false"
			],
			"icon": "filter"
		},
		{
			"name": "Function",
			"description": "function",
			"type": "LOGIC",
			"nodeClazz": "FunctionNode",
			"configClazz": "FunctionNodeConfiguration",
			"defaultConfiguration": {
				"jsScript": "message.payload.measurement.temperature = (message.payload.measurement.temperature - 32) / 1.8;\nreturn message;"
			},
			"inEnabled": true,
			"outPortType": "SINGLE",
			"outPorts": [
				""
			],
			"icon": "superscript"
		},
		{
			"name": "Switch",
			"description": "switch",
			"type": "LOGIC",
			"nodeClazz": "SwitchNode",
			"configClazz": "SwitchNodeConfiguration",
			"defaultConfiguration": {
				"routes": [
					"normal",
					"warning",
					"error"
				],
				"jsScript": "if(message.payload.measurement.temperature > message.vars.threshold2) {\nreturn 'error';\n} else if(message.payload.measurement.temperature > message.vars.threshold1) {\nreturn 'warning';\n} else {\nreturn 'normal';\n}"
			},
			"inEnabled": true,
			"outPortType": "DYNAMIC",
			"outPorts": [
				""
			],
			"icon": "random"
		}
	],
	"DATA": [
		{
			"name": "Counter: Get",
			"description": "Get counter",
			"type": "DATA",
			"nodeClazz": "CounterGetNode",
			"configClazz": "CounterGetNodeConfiguration",
			"defaultConfiguration": {
				"keyTemplate": null,
				"resultPath": "counter"
			},
			"inEnabled": true,
			"outPortType": "SINGLE",
			"outPorts": [
				""
			],
			"icon": ""
		},
		{
			"name": "Counter: Set",
			"description": "Set counter",
			"type": "DATA",
			"nodeClazz": "CounterSetNode",
			"configClazz": "CounterSetNodeConfiguration",
			"defaultConfiguration": {
				"keyTemplate": null,
				"operation": "INCREMENT",
				"valueTemplate": null
			},
			"inEnabled": true,
			"outPortType": "SINGLE",
			"outPorts": [
				""
			],
			"icon": ""
		}
	],
	"ACTION": [
		{
			"name": "Debug",
			"description": "debug",
			"type": "ACTION",
			"nodeClazz": "DebugNode",
			"configClazz": "DebugNodeConfiguration",
			"defaultConfiguration": {
				"loggingLevel": "INFO",
				"messageTemplate": null
			},
			"inEnabled": true,
			"outPortType": "SINGLE",
			"outPorts": [
				""
			],
			"icon": "bug"
		},
		{
			"name": "Email",
			"description": "Send email",
			"type": "ACTION",
			"nodeClazz": "EmailNode",
			"configClazz": "EmailNodeConfiguration",
			"defaultConfiguration": {
				"subjectTemplate": "Temperature high!",
				"receiversTemplate": "user.name@example.com",
				"textTemplate": "Temperature is {{data.measurement.temperature}}",
				"resultPath": "mail"
			},
			"inEnabled": true,
			"outPortType": "SINGLE",
			"outPorts": [
				""
			],
			"icon": "envelope"
		}
	]
}