{
  "type" : "object",
  "additionalProperties" : false,
  "properties" : {
    "autoStartup" : {
      "type" : "boolean"
    },
    "description" : {
      "type" : "string"
    },
    "from" : {
      "$ref" : "#/definitions/org.apache.camel.model.FromDefinition"
    },
    "group" : {
      "type" : "string"
    },
    "id" : {
      "type" : "string"
    },
    "inputType" : {
      "$ref" : "#/definitions/org.apache.camel.model.InputTypeDefinition"
    },
    "logMask" : {
      "type" : "boolean"
    },
    "messageHistory" : {
      "type" : "boolean"
    },
    "nodePrefixId" : {
      "type" : "string"
    },
    "outputType" : {
      "$ref" : "#/definitions/org.apache.camel.model.OutputTypeDefinition"
    },
    "precondition" : {
      "type" : "string"
    },
    "routeConfigurationId" : {
      "type" : "string"
    },
    "routePolicy" : {
      "type" : "string"
    },
    "shutdownRoute" : {
      "type" : "string",
      "description" : "To control how to shut down the route.",
      "default" : "Default",
      "enum" : [ "Default", "Defer" ]
    },
    "shutdownRunningTask" : {
      "type" : "string",
      "description" : "To control how to shut down the route.",
      "default" : "CompleteCurrentTaskOnly",
      "enum" : [ "CompleteCurrentTaskOnly", "CompleteAllTasks" ]
    },
    "startupOrder" : {
      "type" : "number"
    },
    "streamCaching" : {
      "type" : "boolean"
    },
    "trace" : {
      "type" : "boolean"
    }
  },
  "required" : [ "from" ],
  "$schema" : "http://json-schema.org/draft-04/schema#",
  "definitions" : {
    "org.apache.camel.model.FromDefinition" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "description" : {
          "type" : "string"
        },
        "id" : {
          "type" : "string"
        },
        "parameters" : {
          "type" : "object"
        },
        "steps" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/org.apache.camel.model.ProcessorDefinition"
          }
        },
        "uri" : {
          "type" : "string"
        },
        "variableReceive" : {
          "type" : "string"
        }
      },
      "required" : [ "steps", "uri" ]
    },
    "org.apache.camel.model.InputTypeDefinition" : {
      "title" : "Input Type",
      "description" : "Set the expected data type of the input message. If the actual message type is different at runtime, camel look for a required Transformer and apply if exists. If validate attribute is true then camel applies Validator as well. Type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder} . It's also possible to specify only scheme part, so that it works like a wildcard. If only 'xml' is specified, all the XML message matches. It's handy to add only one transformer/validator for all the transformation from/to XML.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "urn" : {
          "type" : "string",
          "title" : "Urn",
          "description" : "The input type URN."
        },
        "validate" : {
          "type" : "boolean",
          "title" : "Validate",
          "description" : "Whether if validation is required for this input type."
        }
      },
      "required" : [ "urn" ]
    },
    "org.apache.camel.model.OutputTypeDefinition" : {
      "title" : "Output Type",
      "description" : "Set the expected data type of the output message. If the actual message type is different at runtime, camel look for a required Transformer and apply if exists. If validate attribute is true then camel applies Validator as well. Type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder} . It's also possible to specify only scheme part, so that it works like a wildcard. If only 'xml' is specified, all the XML message matches. It's handy to add only one transformer/validator for all the XML-Java transformation.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "urn" : {
          "type" : "string",
          "title" : "Urn",
          "description" : "Set output type URN."
        },
        "validate" : {
          "type" : "boolean",
          "title" : "Validate",
          "description" : "Whether if validation is required for this output type."
        }
      },
      "required" : [ "urn" ]
    }
  }
}