{
  "$ref": "#/definitions/Component",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "Component": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "type": "string"
        },
        "schemaentry": {
          "$ref": "#/definitions/FormSchemaEntry"
        },
        "show_validation": {
          "enum": [
            "yes",
            "no"
          ],
          "type": "string"
        },
        "style": {
          "type": "string"
        }
      },
      "required": [
        "schemaentry"
      ],
      "type": "object"
    },
    "FormSchemaEntry": {
      "additionalProperties": false,
      "properties": {
        "disabled": {
          "description": "When true, the native control is disabled and non-interactive.",
          "type": "boolean"
        },
        "id": {
          "description": "This will be both the key of the object when submitting the form's data, and also the id in the DOM.",
          "type": "string"
        },
        "label": {
          "description": "The descriptive label that will show alongside the form control.",
          "type": "string"
        },
        "params": {
          "description": "Other parameters that may be specific to a certain kind of form control.",
          "type": "object"
        },
        "placeholder": {
          "type": "string"
        },
        "readonly": {
          "type": "boolean"
        },
        "required": {
          "description": "This doesn't matter if the dependencies requirements aren't met.",
          "type": "boolean"
        },
        "validationRegex": {
          "type": "string"
        },
        "validationTip": {
          "description": "Shows if value is not valid.",
          "type": "string"
        },
        "value": {
          "description": "Optional default value.",
          "type": [
            "string",
            "number",
            "boolean"
          ]
        }
      },
      "required": [
        "id"
      ],
      "type": "object"
    }
  }
}
