{
	"$schema": "http://json-schema.org/draft-07/schema#",
	"$id": "https://axway.com/axway-flow-trigger/plugintriggerschema-v1.json",
	"title": "Flow-trigger plugin definition schema",
	"description": "The schema for Flow-trigger plugins definition",
	"type": "object",
	"properties": {
		"name": {
			"type": "string",
			"description": "The flow-trigger's friendly name."
		},
		"description": {
			"type": "string"
		},
		"icon": {
			"type": "string",
			"description": "Base64 encoded image.",
			"pattern": "data:image/.*?;base64,.*"
		},
		"createTrigger": {
			"description": "A function that creates a single trigger instance."
		},
		"triggerParameters": {
			"$ref": "#/definitions/parameters"
		},
		"createChannel": {
			"description": "A function that creates a single channel instance."
		},
		"channelParameters": {
			"$ref": "#/definitions/parameters"
		},
		"channelFriendlyName": {
			"type": "string"
		},
		"requestSchema": {
			"$ref": "#/definitions/requestSchema"
		}
	},
	"required": [
		"name",
		"description",
		"icon",
		"triggerParameters",
		"createTrigger"
	],
	"dependencies": {
		"createChannel": [
			"channelFriendlyName",
			"channelParameters"
		],
		"channelParameters": [
			"createChannel",
			"channelFriendlyName"
		],
		"channelFriendlyName": [
			"createChannel",
			"channelParameters"
		]
	},
	"additionalProperties": false,
	"definitions": {
		"requestSchema": {
			"type": "object",
			"allOf": [
				{
					"required": [
						"title"
					]
				},
				{
					"$ref": "http://json-schema.org/draft-06/schema#"
				}
			]
		},
		"parameters": {
			"type": "object",
			"properties": {
				"type": {
					"const": "object"
				},
				"description": {
					"type": "string"
				},
				"properties": {
					"type": "object",
					"additionalProperties": {
						"allOf": [
							{
								"properties": {
									"type": {
										"const": "string"
									}
								}
							},
							{
								"$ref": "http://json-schema.org/draft-06/schema#"
							}
						]
					}
				},
				"required": {
					"type": "array",
					"uniqueItems": true,
					"items": {
						"type": "string"
					}
				},
				"additionalProperties": {
					"const": false
				}
			},
			"required": [
				"type",
				"properties",
				"additionalProperties"
			],
			"additionalProperties": false
		}
	}
}
