[
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      0,
      "items",
      "allOf",
      0,
      "then"
    ],
    "errorMessage": "must provide choices=[] with \"Dropdown\" type"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      0,
      "items",
      "properties",
      "choices",
      "items"
    ],
    "errorMessage": {
      "required": "{ name, value } must be specified for \"Dropdown\" choices"
    }
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "properties",
      "binding",
      "allOf",
      0,
      "then"
    ],
    "errorMessage": "property.binding ${0/type} requires name"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      0,
      "properties",
      "appliesTo",
      "items"
    ],
    "errorMessage": {
      "pattern": "invalid item for \"appliesTo\", should contain namespaced property, example: \"bpmn:Task\""
    }
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      0,
      "properties",
      "elementType"
    ],
    "errorMessage": {
      "required": {
        "value": "missing elementType value"
      }
    }
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      0,
      "properties",
      "elementType",
      "properties",
      "value"
    ],
    "errorMessage": {
      "pattern": "invalid item for \"elementType\", should contain namespaced property, example: \"bpmn:Task\""
    }
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      "0",
      "properties",
      "groups",
      "items"
    ],
    "errorMessage": {
      "required": {
        "id": "missing id for group \"${0#}\"",
        "label": "missing label for group \"${0#}\""
      }
    }
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      0,
      "properties",
      "documentationRef"
    ],
    "errorMessage": {
      "pattern": "Malformed documentation URL, must match \"^(https|http)://.*\""
    }
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      0
    ],
    "errorMessage": {
      "required": {
        "name": "missing template name",
        "id": "missing template id",
        "appliesTo": "missing appliesTo=[]",
        "properties": "missing properties=[]"
      }
    }
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      0,
      "items",
      "allOf",
      1,
      "definitions",
      "condition"
    ],
    "errorMessage": {
      "required": {
        "property": "missing property name for condition"
      }
    }
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      0,
      "items",
      "allOf",
      1,
      "allOf",
      0,
      "then"
    ],
    "errorMessage": "Invalid condition.property, must be different than property.id"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      0,
      "items",
      "allOf",
      1,
      "allOf",
      1,
      "then"
    ],
    "errorMessage": "Invalid condition.property, must be different than property.id"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items"
    ],
    "errorMessage": {
      "required": {
        "binding": "missing binding for property \"${0#}\""
      }
    }
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      0,
      "then",
      "properties",
      "type"
    ],
    "errorMessage": "invalid property type ${0} for binding type \"property\"; must be any of { String, Text, Hidden, Dropdown, Boolean, Number }"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      1,
      "then",
      "properties",
      "type"
    ],
    "errorMessage": "invalid property type ${0} for binding type ${1/binding/type}; must be any of { String, Text, Hidden, Dropdown, Boolean, Number }"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      2,
      "then",
      "properties",
      "binding",
      "properties",
      "type"
    ],
    "errorMessage": "optional is not supported for binding type ${0}; must be any of { zeebe:input, zeebe:output, zeebe:property, zeebe:taskHeader }"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      3,
      "then",
      "properties",
      "constraints",
      "properties",
      "notEmpty"
    ],
    "errorMessage": "optional is not allowed for truthy \"notEmpty\" constraint"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      4,
      "then",
      "properties",
      "type"
    ],
    "errorMessage": "feel is only supported for \"String\", \"Text\", \"Number\" and \"Boolean\" type"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      5,
      "then",
      "properties",
      "type"
    ],
    "errorMessage": "language is only supported for \"Text\" type"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "properties",
      "binding",
      "allOf",
      1,
      "then"
    ],
    "errorMessage": "property.binding ${0/type} requires source"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "properties",
      "binding",
      "allOf",
      2,
      "then"
    ],
    "errorMessage": "property.binding ${0/type} requires key"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "properties",
      "binding",
      "properties",
      "type"
    ],
    "errorMessage": "invalid property.binding type ${0}; must be any of { 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, zeebe:userTask, zeebe:formDefinition, zeebe:calledDecision, zeebe:script, zeebe:assignmentDefinition, zeebe:priorityDefinition, zeebe:adHoc, zeebe:taskSchedule, bpmn:Signal#property, bpmn:TimerEventDefinition#property }"
  },
  {
    "path": [
      "definitions",
      "template",
      "properties",
      "icon",
      "properties",
      "contents"
    ],
    "errorMessage": {
      "pattern": "Malformed icon source, must be a valid HTTP(s) or data URL"
    }
  },
  {
    "path": [
      "definitions",
      "template",
      "properties",
      "icon"
    ],
    "errorMessage": {
      "required": {
        "contents": "missing icon contents"
      }
    }
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      10,
      "then",
      "properties",
      "binding",
      "properties",
      "property"
    ],
    "errorMessage": "invalid binding.property ${0}; must be any of { resourceId, resourceType, bindingType, versionTag }"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      13,
      "then"
    ],
    "errorMessage": "Property \"formId\" cannot be a FEEL expression"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      4,
      "then",
      "properties",
      "properties"
    ],
    "errorMessage": "When using ${0/0/binding/type}, \"zeebe:userTask\" must be set on the same element"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      5,
      "then",
      "allOf",
      0,
      "properties",
      "properties",
      "contains",
      "properties",
      "binding",
      "properties",
      "property"
    ],
    "errorMessage": "Binding type \"zeebe:calledDecision\" must contain property \"decisionId\""
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      5,
      "then",
      "allOf",
      1,
      "properties",
      "properties",
      "contains",
      "properties",
      "binding",
      "properties",
      "property"
    ],
    "errorMessage": "Binding type \"zeebe:calledDecision\" must contain property \"resultVariable\""
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      5,
      "then",
      "allOf",
      2
    ],
    "errorMessage": "Binding type \"zeebe:taskDefinition\" or \"zeebe:taskDefinition:type\" cannot be set when binding type \"zeebe:calledDecision\" is set."
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      6,
      "then",
      "allOf",
      2
    ],
    "errorMessage": "Binding type \"zeebe:taskDefinition\" or \"zeebe:taskDefinition:type\" cannot be set when binding type \"zeebe:script\" is set."
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      15,
      "then"
    ],
    "errorMessage": "Property \"resultVariable\" cannot be a Feel expression"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      17,
      "then"
    ],
    "errorMessage": "Property \"resultVariable\" cannot be a Feel expression"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      7,
      "allOf",
      1,
      "then",
      "properties",
      "properties"
    ],
    "errorMessage": "Binding with property=`bindingType` and value=`versionTag` must be set when using a binding with property=`versionTag`"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      20,
      "allOf",
      0,
      "then",
      "properties",
      "type"
    ],
    "errorMessage": "Incorrect type ${0}. Must be one of { Hidden, Dropdown } for binding with `property`=`bindingType`"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      20,
      "allOf",
      1,
      "then",
      "allOf",
      0,
      "properties",
      "type"
    ],
    "errorMessage": "Incorrect type ${0}. Must be one of { String, Text, Hidden, Dropdown } for binding with `property`=`versionTag`"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      20,
      "allOf",
      1,
      "then",
      "allOf",
      1
    ],
    "errorMessage": "Binding with `property`=`versionTag` does not support `feel`"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      7,
      "allOf",
      0,
      "then",
      "properties",
      "properties"
    ],
    "errorMessage": "Missing binding with `property`=`versionTag` as binding with `property`=`bindingType` and `value`=`versionTag` is set"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      7,
      "allOf",
      2,
      "then",
      "properties",
      "properties"
    ],
    "errorMessage": "`property`=`bindingType` is not supported when using `property`=`externalReference`. Use `formId` with `bindingType`"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      2,
      "then",
      "properties",
      "properties"
    ],
    "errorMessage": "Binding with `property`=`processId` and `type`=`zeebe:calledElement` is required, when using a binding with `type`=`zeebe:calledElement`"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      8,
      "then",
      "properties",
      "properties"
    ],
    "errorMessage": "\"formId\" and \"externalReference\" cannot be used together"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      22,
      "allOf",
      2,
      "then",
      "properties",
      "value"
    ],
    "errorMessage": "Invalid value for priority. Must be between 0 and 100"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      22,
      "allOf",
      2,
      "then",
      "properties",
      "choices",
      "items",
      "properties",
      "value"
    ],
    "errorMessage": "Invalid value for priority. Must be between 0 and 100"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      23,
      "allOf",
      1,
      "then"
    ],
    "errorMessage": "Property \"outputCollection\" cannot be a FEEL expression"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      9,
      "allOf",
      1,
      "then",
      "properties",
      "properties",
      "allOf",
      0
    ],
    "errorMessage": "When \"outputCollection\" is defined for \"zeebe:adHoc\", \"outputElement\" must be defined, too"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      9,
      "allOf",
      1,
      "then",
      "properties",
      "properties",
      "allOf",
      1
    ],
    "errorMessage": "When \"outputElement\" is defined for \"zeebe:adHoc\", \"outputCollection\" must be defined, too"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      9,
      "allOf",
      2,
      "then",
      "allOf",
      0,
      "properties",
      "properties",
      "items"
    ],
    "errorMessage": "Property ${0/binding/name} must not be set when using a \"zeebe:taskDefinition\" implementation for a \"bpmn:AdHocSubProcess\""
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      9,
      "allOf",
      2,
      "then",
      "allOf",
      1,
      "properties",
      "properties",
      "items"
    ],
    "errorMessage": "Property ${0/binding/property} must not be set when using a \"zeebe:taskDefinition\" implementation for a \"bpmn:AdHocSubProcess\""
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      24,
      "allOf",
      1,
      "then",
      "properties",
      "value"
    ],
    "errorMessage": "Must be conforming to an ISO 8601 combined date and time representation"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      10,
      "allOf",
      1,
      "then",
      "properties",
      "properties"
    ],
    "errorMessage": "Binding with `type`=`bpmn:Signal#property` is required, when using `elementType.eventDefinition`=`bpmn:SignalEventDefinition`"
  },
  {
    "path": [
      "definitions",
      "properties",
      "allOf",
      1,
      "items",
      "allOf",
      26,
      "then"
    ],
    "errorMessage": "FEEL is not supported for `zeebe:calledElement` variable propagation properties"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      11,
      "allOf",
      0,
      "then",
      "properties",
      "elementType"
    ],
    "errorMessage": {
      "required": {
        "eventDefinition": "Timer bindings require elementType.eventDefinition to equal \"bpmn:TimerEventDefinition\""
      }
    }
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      11,
      "allOf",
      1,
      "then",
      "properties",
      "properties"
    ],
    "errorMessage": "Template with elementType.eventDefinition=\"bpmn:TimerEventDefinition\" must have exactly one binding with type \"bpmn:TimerEventDefinition#property\" and name \"timeDate\", \"timeCycle\", or \"timeDuration\"."
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      11,
      "allOf",
      2,
      "then",
      "properties",
      "properties",
      "not"
    ],
    "errorMessage": "Binding with `type`=`bpmn:TimerEventDefinition#property` and `name`=`timeCycle` is only allowed on `bpmn:StartEvent` or `bpmn:BoundaryEvent` templates"
  },
  {
    "path": [
      "definitions",
      "template",
      "allOf",
      1,
      "allOf",
      12,
      "then",
      "properties",
      "properties"
    ],
    "errorMessage": "Binding with `type`=`zeebe:output` cannot be used when `propagateAllChildVariables` is set to `true`"
  }
]