UNPKG

@camunda/zeebe-element-templates-json-schema

Version:
1,514 lines 49.1 kB
{ "$schema": "http://json-schema.org/draft-07/schema", "$id": "http://camunda.org/schema/zeebe-element-templates/1.0", "title": "Element Template Schema", "definitions": { "properties": { "allOf": [ { "type": "array", "description": "List of properties of the element template.", "allOf": [ { "examples": [ [ { "label": "Name", "type": "String", "binding": { "type": "property", "name": "name" } } ] ] } ], "items": { "type": "object", "default": {}, "allOf": [ { "if": { "properties": { "type": { "const": "Dropdown" } }, "required": [ "type" ] }, "then": { "required": [ "choices" ] } }, { "definitions": { "condition": { "type": "object", "required": [ "property" ], "properties": { "type": { "$id": "#/condition/type", "const": "simple", "description": "The type of the condition.", "default": "simple" }, "property": { "$id": "#/condition/property", "type": "string", "description": "The id of the property to check." } }, "oneOf": [ { "properties": { "equals": { "type": [ "string", "number", "boolean" ] } }, "required": [ "equals" ] }, { "properties": { "oneOf": { "type": "array", "items": { "type": [ "string", "number" ] } } }, "required": [ "oneOf" ] }, { "properties": { "isActive": { "type": "boolean", "description": "For `true`, activates the property when given property is active" } }, "required": [ "isActive" ] } ] }, "conditionDependingOnId": { "required": [ "property" ], "properties": { "property": { "const": { "$data": "2/id" } } } } }, "allOf": [ { "$comment": "property#condition should not depend on property#id", "if": { "required": [ "id", "condition" ], "properties": { "condition": { "$ref": "#/definitions/properties/allOf/0/items/allOf/1/definitions/conditionDependingOnId" } } }, "then": { "not": { "required": [ "condition" ] } } } ], "properties": { "id": { "type": "string", "description": "Unique identifier of the property." }, "condition": { "type": "object", "description": "Condition(s) to activate the binding.", "allOf": [ { "examples": [ { "type": "simple", "property": "httpMethod", "equals": "GET" }, { "type": "simple", "property": "httpMethod", "oneOf": [ "POST", "PUT", "DELETE" ] }, { "allMatch": [ { "type": "simple", "property": "authType", "equals": "Basic" }, { "type": "simple", "property": "httpMethod", "oneOf": [ "POST", "PUT", "DELETE" ] } ] } ] } ], "oneOf": [ { "$ref": "#/definitions/properties/allOf/0/items/allOf/1/definitions/condition" }, { "properties": { "allMatch": { "$id": "#/allMatch", "type": "array", "items": { "$ref": "#/definitions/properties/allOf/0/items/allOf/1/definitions/condition" }, "minItems": 1 } }, "required": [ "allMatch" ] } ] } } }, { "if": { "properties": { "type": { "not": { "const": "Number" } } }, "required": [ "type" ] }, "then": { "properties": { "value": { "type": [ "string", "boolean" ] } } } }, { "if": { "oneOf": [ { "properties": { "type": { "enum": [ "String", "Text" ] } }, "required": [ "type" ] }, { "not": { "required": [ "type" ] } } ] }, "then": { "properties": { "placeholder": { "type": "string" } } }, "else": { "not": { "required": [ "placeholder" ] } } } ], "properties": { "value": { "$id": "#/properties/property/value", "type": [ "string", "number", "boolean" ], "description": "The value of a control field." }, "description": { "$id": "#/properties/property/description", "type": "string", "description": "The description of a control field." }, "label": { "$id": "#/properties/property/label", "type": "string", "description": "The label of a control field." }, "type": { "$id": "#/properties/property/type", "type": "string", "description": "The type of a control field." }, "editable": { "$id": "#/properties/property/editable", "type": "boolean", "description": "Indicates whether a control field is editable or not." }, "choices": { "$id": "#/properties/property/choices", "type": "array", "description": "The choices for dropdown fields.", "default": [], "items": { "$id": "#/properties/property/choices/item", "type": "object", "default": {}, "properties": { "name": { "$id": "#/properties/property/choices/item/name", "type": "string", "description": "The name of a choice." }, "value": { "$id": "#/properties/property/choices/item/value", "type": "string", "description": "The value of a choice." }, "condition": { "$ref": "#/definitions/properties/allOf/0/items/allOf/1/properties/condition" } }, "required": [ "value", "name" ] } }, "constraints": { "$id": "#/properties/property/constraints", "type": "object", "description": "The validation constraints of a control field.", "allOf": [ { "examples": [ { "notEmpty": true } ] } ], "properties": { "notEmpty": { "$id": "#/properties/property/constraints/notEmpty", "type": "boolean", "description": "The control field must not be empty." }, "minLength": { "$id": "#/properties/property/constraints/minLength", "type": "number", "description": "The minimal length of a control field value." }, "maxLength": { "$id": "#/properties/property/constraints/maxLength", "type": "number", "description": "The maximal length for a control field value." }, "pattern": { "$id": "#/properties/property/constraints/pattern", "description": "A regular expression pattern for a constraint.", "oneOf": [ { "type": "object", "default": {}, "properties": { "value": { "$id": "#/properties/property/constraints/pattern/value", "type": "string", "description": "The regular expression of a pattern." }, "message": { "$id": "#/properties/property/constraints/pattern/message", "type": "string", "description": "The validation message of a pattern." } } }, { "type": "string" } ] } } }, "group": { "$id": "#/properties/property/group", "type": "string", "description": "The custom group of a control field." } } } }, { "$schema": "http://json-schema.org/draft-07/schema", "type": "array", "description": "List of properties of the element template.", "items": { "type": "object", "default": {}, "required": [ "binding" ], "allOf": [ { "if": { "properties": { "binding": { "properties": { "type": { "const": "property" } }, "required": [ "type" ] } }, "required": [ "binding" ] }, "then": { "properties": { "type": { "enum": [ "String", "Text", "Hidden", "Dropdown", "Boolean", "Number" ] } } } }, { "if": { "properties": { "binding": { "properties": { "type": { "enum": [ "zeebe:input", "zeebe:output", "zeebe:property", "zeebe:taskHeader", "zeebe:taskDefinition:type", "bpmn:Message#property", "bpmn:Message#zeebe:subscription#property", "zeebe:taskDefinition", "zeebe:calledElement", "zeebe:linkedResource" ] } }, "required": [ "type" ] } }, "required": [ "binding" ] }, "then": { "properties": { "type": { "enum": [ "String", "Text", "Hidden", "Dropdown", "Boolean", "Number" ] } } } }, { "if": { "properties": { "optional": { "const": true } }, "required": [ "optional" ] }, "then": { "properties": { "binding": { "properties": { "type": { "enum": [ "zeebe:input", "zeebe:output", "zeebe:property", "zeebe:taskHeader" ] } }, "required": [ "type" ] } } } }, { "if": { "properties": { "optional": { "const": true } }, "required": [ "optional" ] }, "then": { "properties": { "constraints": { "properties": { "notEmpty": { "const": false } }, "required": [ "notEmpty" ] } } } }, { "if": { "properties": { "feel": { "not": { "const": null } } }, "required": [ "feel" ] }, "then": { "properties": { "type": { "enum": [ "String", "Text", "Number", "Boolean" ] } }, "required": [ "type" ] } }, { "if": { "properties": { "language": { "not": { "const": null } } }, "required": [ "language" ] }, "then": { "properties": { "type": { "enum": [ "Text" ] } } } }, { "if": { "required": [ "value" ] }, "then": { "not": { "required": [ "generatedValue" ] } } }, { "if": { "properties": { "type": { "enum": [ "Boolean", "Dropdown" ] } }, "required": [ "type" ] }, "then": { "not": { "required": [ "generatedValue" ] } } }, { "if": { "properties": { "type": { "enum": [ "String", "Text" ] } }, "required": [ "feel" ] }, "then": { "properties": { "feel": { "enum": [ "optional", "required" ] } } } }, { "if": { "properties": { "feel": { "const": "required" } }, "required": [ "feel" ] }, "then": { "properties": { "value": { "type": "string" } } } }, { "if": { "properties": { "binding": { "properties": { "type": { "const": "zeebe:linkedResource" } }, "required": [ "type" ] } }, "required": [ "binding" ] }, "then": { "properties": { "binding": { "properties": { "linkName": { "type": "string" }, "property": { "enum": [ "resourceId", "resourceType", "bindingType", "versionTag" ] } }, "required": [ "linkName", "property" ] } } } }, { "allOf": [ { "if": { "properties": { "binding": { "properties": { "type": { "enum": [ "zeebe:input", "zeebe:output" ] } }, "required": [ "type" ] }, "type": { "enum": [ "Boolean", "Number" ] } }, "required": [ "binding", "type" ] }, "then": { "properties": { "feel": { "default": "static" } } } } ] } ], "properties": { "binding": { "$id": "#/properties/property/binding", "type": "object", "description": "Specifying how the property is mapped to BPMN or Zeebe extension elements and attributes.", "required": [ "type" ], "allOf": [ { "if": { "properties": { "type": { "enum": [ "property", "zeebe:property", "zeebe:input", "bpmn:Message#property", "bpmn:Message#zeebe:subscription#property" ] } }, "required": [ "type" ] }, "then": { "required": [ "name" ] } }, { "if": { "properties": { "type": { "const": "zeebe:output" } }, "required": [ "type" ] }, "then": { "required": [ "source" ] } }, { "if": { "properties": { "type": { "const": "zeebe:taskHeader" } }, "required": [ "type" ] }, "then": { "required": [ "key" ] } }, { "if": { "properties": { "type": { "const": "zeebe:taskDefinition" } }, "required": [ "type" ] }, "then": { "properties": { "property": { "enum": [ "type", "retries" ] } }, "required": [ "property" ] } }, { "if": { "properties": { "type": { "const": "zeebe:taskDefinition:type" } }, "required": [ "type" ] }, "then": { "deprecated": true } }, { "if": { "properties": { "type": { "const": "zeebe:calledElement" } }, "required": [ "type" ] }, "then": { "properties": { "property": { "const": "processId" } }, "required": [ "property" ] } }, { "examples": [ { "type": "property", "name": "name" }, { "type": "zeebe:input", "name": "input" }, { "type": "zeebe:output", "source": "output" }, { "type": "zeebe:property", "name": "property" }, { "type": "zeebe:taskHeader", "key": "key" }, { "type": "zeebe:taskDefinition", "property": "retries" }, { "type": "zeebe:taskDefinition", "property": "type" } ] } ], "properties": { "type": { "$id": "#/properties/property/binding/type", "type": "string", "description": "The type of a property binding.", "enum": [ "property", "zeebe:taskDefinition:type", "zeebe:input", "zeebe:output", "zeebe:property", "zeebe:taskHeader", "bpmn:Message#property", "bpmn:Message#zeebe:subscription#property", "zeebe:taskDefinition", "zeebe:calledElement", "zeebe:linkedResource" ] }, "name": { "$id": "#/properties/property/binding/name", "type": "string", "description": "The name of a property binding." }, "source": { "$id": "#/properties/property/binding/source", "type": "string", "description": "The source value of a property binding (zeebe:output)." }, "key": { "$id": "#/properties/property/binding/key", "type": "string", "description": "The key value of a property binding (zeebe:taskHeader)." }, "property": { "$id": "#/properties/property/binding/property", "type": "string", "description": "The name of the property defined in the binding." }, "linkName": { "$id": "#/properties/property/binding/linkName", "type": "string", "description": "The `linkName` of the element (zeebe:linkedResource)." } } }, "optional": { "$id": "#/optional", "type": "boolean", "description": "Indicates whether a property is optional. Optional bindings do not persist empty values in the underlying BPMN 2.0 XML." }, "feel": { "$id": "#/properties/property/feel", "type": "string", "description": "Indicates whether the property can be a feel expression", "enum": [ "optional", "required", "static" ] }, "language": { "$id": "#/properties/property/language", "type": "string", "description": "Indicates that the field is a custom language editor" }, "generatedValue": { "$id": "#/properties/property/generatedValue", "type": "object", "required": [ "type" ], "properties": { "type": { "const": "uuid" } }, "description": "Sets property to a generated value according to given scheme." }, "tooltip": { "$id": "#/properties/property/tooltip", "type": "string", "description": "Hints for the control field." } } } } ] }, "template": { "type": "object", "allOf": [ { "required": [ "name", "id", "appliesTo", "properties" ], "properties": { "name": { "$id": "#/name", "type": "string", "description": "The name of the element template." }, "id": { "$id": "#/id", "type": "string", "description": "The identifier of the element template." }, "description": { "$id": "#/description", "type": "string", "description": "The description of the element template." }, "version": { "$id": "#/version", "type": "integer", "description": "Optional version of the template. If you add a version to a template it will be considered unique based on its ID and version. Two templates can have the same ID if their version is different." }, "isDefault": { "$id": "#/isDefault", "type": "boolean", "description": "Indicates whether the element template is a default template." }, "deprecated": { "$id": "#/deprecated", "type": [ "boolean", "object" ], "description": "Indicates whether the element template is deprecated.", "properties": { "message": { "$id": "#/deprecated/message", "type": "string", "description": "Optional message to describe migration path." }, "documentationRef": { "$id": "#/deprecated/documentationRef", "type": "string", "pattern": "^(https|http)://.*", "description": "Optional link to migration documentation." } } }, "appliesTo": { "$id": "#/appliesTo", "type": "array", "description": "List of BPMN types the template can be applied to.", "default": [], "items": { "$id": "#/appliesTo/items", "type": "string", "pattern": "^[\\w\\d]+:[\\w\\d]+$", "allOf": [ { "examples": [ "bpmn:Task", "bpmn:ServiceTask", "bpmn:SequenceFlow", "bpmn:Process", "bpmn:StartEvent", "bpmn:Gateway" ] } ] } }, "elementType": { "$id": "#/elementType", "type": "object", "description": "The BPMN type the element will be transformed into.", "default": {}, "required": [ "value" ], "properties": { "value": { "$id": "#/elementType/value", "type": "string", "pattern": "^[\\w\\d]+:[\\w\\d]+$", "allOf": [ { "examples": [ "bpmn:ServiceTask", "bpmn:UserTask", "bpmn:StartEvent", "bpmn:ExclusiveGateway", "bpmn:ParallelGateway" ] } ] } } }, "metadata": { "$id": "#/metadata", "type": "object", "description": "Some custom properties for further configuration.", "default": {} }, "entriesVisible": { "$id": "#/entriesVisible", "type": "boolean", "description": "Select whether non-template entries are visible in the properties panel." }, "groups": { "$id": "#/groups", "type": "array", "description": "Custom fields can be ordered together via groups.", "allOf": [ { "examples": [ [ { "id": "group-1", "label": "My Group" } ] ] } ], "items": { "$id": "#/groups/group", "type": "object", "default": {}, "required": [ "id", "label" ], "properties": { "id": { "$id": "#/groups/group/id", "type": "string", "description": "The id of the custom group" }, "label": { "$id": "#/groups/group/label", "type": "string", "description": "The label of the custom group" } } } }, "documentationRef": { "$id": "#/documentationRef", "type": "string", "pattern": "^(https|http)://.*" } } }, { "allOf": [ { "if": { "properties": { "properties": { "contains": { "properties": { "binding": { "properties": { "type": { "const": "bpmn:Message#property" } }, "required": [ "type" ] } }, "required": [ "binding" ] } } }, "required": [ "properties" ] }, "then": { "required": [ "elementType" ], "properties": { "elementType": { "required": [ "value" ], "properties": { "value": { "enum": [ "bpmn:ReceiveTask", "bpmn:SendTask", "bpmn:StartEvent", "bpmn:IntermediateCatchEvent", "bpmn:IntermediateThrowEvent", "bpmn:BoundaryEvent", "bpmn:EndEvent" ] } }, "allOf": [ { "if": { "properties": { "value": { "enum": [ "bpmn:StartEvent", "bpmn:IntermediateCatchEvent", "bpmn:IntermediateThrowEvent", "bpmn:BoundaryEvent", "bpmn:EndEvent" ] } } }, "then": { "eventDefinition": { "const": "bpmn:MessageEventDefinition" }, "required": [ "eventDefinition" ] } } ] } } } }, { "if": { "properties": { "properties": { "contains": { "properties": { "binding": { "properties": { "type": { "const": "bpmn:Message#zeebe:subscription#property" } }, "required": [ "type" ] } }, "required": [ "binding" ] } } }, "required": [ "properties" ] }, "then": { "required": [ "elementType" ], "properties": { "elementType": { "required": [ "value" ], "properties": { "value": { "enum": [ "bpmn:ReceiveTask", "bpmn:StartEvent", "bpmn:IntermediateCatchEvent", "bpmn:IntermediateThrowEvent", "bpmn:BoundaryEvent", "bpmn:EndEvent" ] } }, "allOf": [ { "if": { "properties": { "value": { "enum": [ "bpmn:StartEvent", "bpmn:IntermediateCatchEvent", "bpmn:IntermediateThrowEvent", "bpmn:BoundaryEvent", "bpmn:EndEvent" ] } } }, "then": { "eventDefinition": { "const": "bpmn:MessageEventDefinition" }, "required": [ "eventDefinition" ] } } ] } } } }, { "if": { "properties": { "properties": { "contains": { "properties": { "binding": { "properties": { "type": { "const": "zeebe:calledElement" } }, "required": [ "type" ] } }, "required": [ "binding" ] } } }, "required": [ "properties" ] }, "then": { "anyOf": [ { "required": [ "elementType" ], "properties": { "elementType": { "required": [ "value" ], "properties": { "value": { "const": "bpmn:CallActivity" } } } } }, { "required": [ "appliesTo" ], "properties": { "appliesTo": { "const": [ "bpmn:CallActivity" ] } } } ] } } ] } ], "properties": { "properties": { "$ref": "#/definitions/properties", "$id": "#/properties" }, "engines": { "$id": "#/engines", "type": "object", "description": "Defines the compatibility of this element template with different engines. Keys are engine names, values are semantic version ranges.", "default": {}, "examples": [ { "camunda": "^8.5" } ], "properties": { "camunda": { "$id": "#/engines/camunda", "type": "string", "description": "A semantic version range that denotes compatible Camunda versions.", "default": "" } } }, "icon": { "$id": "#/icon", "type": "object", "description": "Custom icon to be shown on the element", "default": {}, "properties": { "contents": { "$id": "#/icon/contents", "type": "string", "description": "The URL of an icon.", "pattern": "^(https?|data):.*" } }, "required": [ "contents" ] }, "elementType": { "allOf": [ { "allOf": [ { "properties": { "eventDefinition": { "$id": "#/elementType/eventDefinition", "enum": [ "bpmn:MessageEventDefinition" ] } } }, { "if": { "required": [ "eventDefinition" ] }, "then": { "properties": { "value": { "enum": [ "bpmn:StartEvent", "bpmn:IntermediateCatchEvent", "bpmn:IntermediateThrowEvent", "bpmn:BoundaryEvent", "bpmn:EndEvent" ] } }, "required": [ "value" ] } } ] } ] }, "groups": { "items": { "properties": { "tooltip": { "$id": "#/groups/group/tooltip", "type": "string" }, "openByDefault": { "$id": "#/groups/group/openByDefault", "type": "boolean", "description": "Specifies whether the Group should be opened when first viewed. Defaults to true.", "default": true } } } } } } }, "oneOf": [ { "description": "An element template configuration.", "$ref": "#/definitions/template" }, { "type": "array", "description": "A list of element template configurations.", "items": { "$ref": "#/definitions/template" } } ] }