[
  {
    "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 }"
  },
  {
    "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 }"
  }
]