{
  "$schema" : "https://json-schema.org/draft/2019-09/schema",
  "$defs" : {
    "HTTPConnector" : {
      "type" : "object",
      "properties" : {
        "Enabled" : {
          "type" : "boolean",
          "description" : "Whether the HTTP connector is enabled.\n[restart required]",
          "default" : "true"
        },
        "Port" : {
          "type" : "integer",
          "description" : "The TCP port number on which this Connector will create a server socket and await incoming connections. \n[restart required]",
          "default" : "8080"
        },
        "AcceptCount" : {
          "type" : "integer",
          "description" : "The maximum length of the operating system provided queue for incoming connection requests when maxConnections has been reached. \n[restart required]",
          "default" : "100"
        },
        "Address" : {
          "description" : "For servers with more than one IP address, this attribute specifies which address will be used for listening\non the specified port.\nBy default, the connector will listen all local addresses.\n[restart required]",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "0.0.0.0", "::" ]
        },
        "AllowTrace" : {
          "type" : "boolean",
          "description" : "A boolean value which can be used to enable or disable the TRACE HTTP method. \n[restart required]"
        },
        "CompressibleMimeType" : {
          "type" : "string",
          "description" : "The value is a comma separated list of MIME types for which HTTP compression may be used.\n[restart required]",
          "default" : "text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml"
        },
        "Compression" : {
          "description" : "The Connector may use HTTP/1.1 GZIP compression in an attempt to save server bandwidth.\n[restart required]",
          "default" : "'off'",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "on", "off", "force" ]
        },
        "ConnectionLinger" : {
          "type" : "integer",
          "description" : "The number of seconds during which the sockets used by this Connector will linger when they are closed. The default value is -1 which disables socket linger.\n[restart required]",
          "default" : "-1"
        },
        "ConnectionTimeout" : {
          "type" : "integer",
          "description" : "The number of milliseconds this Connector will wait, after accepting a connection, for the request URI line to be presented.\n[restart required]",
          "default" : "60000"
        },
        "DisableUploadTimeout" : {
          "type" : "boolean",
          "description" : "This flag allows the servlet container to use a different, usually longer connection timeout during data upload.\n[restart required]",
          "default" : "true"
        },
        "EnableLookups" : {
          "type" : "boolean",
          "description" : "Set to true if you want calls to request.getRemoteHost() to perform DNS lookups in order to return the actual host name of the remote client.\nSet to false to skip the DNS lookup and return the IP address in String form instead (thereby improving performance).\n[restart required]"
        },
        "MaxHttpHeaderSize" : {
          "type" : "integer",
          "description" : "Provides the default value for maxHttpRequestHeaderSize and maxHttpResponseHeaderSize.\n[restart required]",
          "default" : "8192"
        },
        "MaxKeepAliveRequests" : {
          "type" : "integer",
          "description" : "The maximum number of HTTP requests which can be pipelined until the connection is closed by the server.\nSetting this attribute to 1 will disable HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and pipelining.\nSetting this to -1 will allow an unlimited amount of pipelined or keep-alive HTTP requests.\n[restart required]",
          "default" : "100"
        },
        "MaxPostSize" : {
          "type" : "integer",
          "description" : "The maximum size in bytes of the POST which will be handled by the container FORM URL parameter parsing.\nThe limit can be disabled by setting this attribute to a value less than zero.\n[restart required]",
          "default" : "2097152"
        },
        "MaxSavePostSize" : {
          "type" : "integer",
          "description" : "The maximum size in bytes of the request body which will be saved/buffered by\nthe container during FORM or CLIENT-CERT authentication or during HTTP/1.1 upgrade.\n[restart required]",
          "default" : "4096"
        },
        "MaxThreads" : {
          "type" : "integer",
          "description" : "The maximum number of request processing threads to be created by this Connector, which therefore determines the maximum number of simultaneous requests that can be handled.\n[restart required]",
          "default" : "200"
        },
        "MinSpareThreads" : {
          "type" : "integer",
          "description" : "The minimum number of threads always kept running. This includes both active and idle threads.\n[restart required]",
          "default" : "10"
        },
        "NoCompressionUserAgents" : {
          "type" : "string",
          "description" : "The value is a regular expression (using java.util.regex) matching the user-agent header of HTTP clients\nfor which compression should not be used.\n[restart required]"
        },
        "ProxyName" : {
          "type" : "string",
          "description" : "If this Connector is being used in a proxy configuration, configure this attribute to specify the server name to be returned for calls to request.getServerName(). \n[restart required]"
        },
        "ProxyPort" : {
          "type" : "integer",
          "description" : "If this Connector is being used in a proxy configuration, configure this attribute to specify the server port to be returned for calls to request.getServerPort(). \n[restart required]"
        },
        "RedirectPort" : {
          "type" : "integer",
          "description" : "If this Connector is supporting non-SSL requests, and a request is received for which a matching <security-constraint> requires SSL transport, Catalina will automatically redirect the request to the port number specified here. \n[restart required]",
          "default" : "8443"
        },
        "RestrictedUserAgents" : {
          "type" : "string",
          "description" : "The value is a regular expression (using java.util.regex) matching the user-agent header of HTTP clients\nfor which HTTP/1.1 or HTTP/1.0 keep alive should not be used, even if the clients advertise support for these features.\n[restart required]"
        },
        "Server" : {
          "type" : "string",
          "description" : "Overrides the Server header for the http response.\nIf set, the value for this attribute overrides any Server header set by a web application.\nIf not set, any value specified by the application is used.\nIf the application does not specify a value then no Server header is set.\n[restart required]"
        },
        "TcpNoDelay" : {
          "type" : "boolean",
          "description" : "If set to true, the TCP_NO_DELAY option will be set on the server socket, which improves performance under most circumstances.\n[restart required]",
          "default" : "true"
        },
        "ThreadPriority" : {
          "type" : "integer",
          "description" : "The priority of the request processing threads within the JVM.\n[restart required]",
          "default" : "5"
        },
        "URIEncoding" : {
          "type" : "string",
          "description" : "This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL.\n[restart required]",
          "default" : "UTF-8"
        },
        "UseBodyEncodingForURI" : {
          "type" : "boolean",
          "description" : "This specifies if the encoding specified in contentType should be used for URI query parameters, instead of using the URIEncoding.\n[restart required]"
        },
        "UseIPVHosts" : {
          "type" : "boolean",
          "description" : "Set this attribute to true to cause Tomcat to use the IP address that the request was received on to determine the Host to send the request to.\n[restart required]"
        },
        "XpoweredBy" : {
          "type" : "boolean",
          "description" : "Set this attribute to true to cause Tomcat to advertise support for the Servlet specification using the header recommended in the specification. \n[restart required]"
        }
      },
      "additionalProperties" : false
    },
    "HTTPSConnector" : {
      "type" : "object",
      "properties" : {
        "Enabled" : {
          "type" : "boolean",
          "description" : "Whether the HTTPS connector is enabled.\n[restart required]",
          "default" : "false"
        },
        "Port" : {
          "type" : "integer",
          "description" : "The TCP port number on which this Connector will create a server socket and await incoming connections. \n[restart required]",
          "default" : "8443"
        },
        "AcceptCount" : {
          "type" : "integer",
          "description" : "The maximum length of the operating system provided queue for incoming connection requests when maxConnections has been reached. \n[restart required]",
          "default" : "100"
        },
        "Address" : {
          "description" : "For servers with more than one IP address, this attribute specifies which address will be used for listening\non the specified port.\nBy default, the connector will listen all local addresses.\n[restart required]",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "0.0.0.0", "::" ]
        },
        "AllowTrace" : {
          "type" : "boolean",
          "description" : "A boolean value which can be used to enable or disable the TRACE HTTP method. \n[restart required]"
        },
        "ClientAuth" : {
          "type" : "string",
          "description" : "\n[restart required]",
          "default" : "NONE"
        },
        "CompressibleMimeType" : {
          "type" : "string",
          "description" : "The value is a comma separated list of MIME types for which HTTP compression may be used.\n[restart required]",
          "default" : "text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml"
        },
        "Compression" : {
          "description" : "The Connector may use HTTP/1.1 GZIP compression in an attempt to save server bandwidth.\n[restart required]",
          "default" : "'off'",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "on", "off", "force" ]
        },
        "ConnectionLinger" : {
          "type" : "integer",
          "description" : "The number of seconds during which the sockets used by this Connector will linger when they are closed. The default value is -1 which disables socket linger.\n[restart required]",
          "default" : "-1"
        },
        "ConnectionTimeout" : {
          "type" : "integer",
          "description" : "The number of milliseconds this Connector will wait, after accepting a connection, for the request URI line to be presented.\n[restart required]",
          "default" : "60000"
        },
        "DisableUploadTimeout" : {
          "type" : "boolean",
          "description" : "This flag allows the servlet container to use a different, usually longer connection timeout during data upload.\n[restart required]",
          "default" : "true"
        },
        "EnableLookups" : {
          "type" : "boolean",
          "description" : "Set to true if you want calls to request.getRemoteHost() to perform DNS lookups in order to return the actual host name of the remote client.\nSet to false to skip the DNS lookup and return the IP address in String form instead (thereby improving performance).\n[restart required]"
        },
        "RestrictedUserAgents" : {
          "type" : "string",
          "description" : "The value is a regular expression (using java.util.regex) matching the user-agent header of HTTP clients\nfor which HTTP/1.1 or HTTP/1.0 keep alive should not be used, even if the clients advertise support for these features.\n[restart required]"
        },
        "SslProtocol" : {
          "description" : "The name of the protocol to support when communicating with clients.\nIf you need a fine granular selection of multiple protocols, use the 'SslHostConfig.Protocols' property.\n[restart required]",
          "default" : "TLS",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "TLS", "TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3" ]
        },
        "SslHostConfig" : {
          "$ref" : "#/$defs/SslHostConfig"
        },
        "KeyAlias" : {
          "type" : "string",
          "description" : "\n[restart required]"
        },
        "KeyPass" : {
          "type" : "string",
          "description" : "[password]\n[restart required]"
        },
        "KeystoreFile" : {
          "type" : "string",
          "description" : "\n[restart required]",
          "default" : "configuration/keystore.p12"
        },
        "KeystorePass" : {
          "type" : "string",
          "description" : "[password]\n[restart required]",
          "default" : "changeit"
        },
        "KeystoreType" : {
          "type" : "string",
          "description" : "\n[restart required]",
          "default" : "pkcs12"
        },
        "MaxHttpHeaderSize" : {
          "type" : "integer",
          "description" : "Provides the default value for maxHttpRequestHeaderSize and maxHttpResponseHeaderSize.\n[restart required]",
          "default" : "8192"
        },
        "MaxKeepAliveRequests" : {
          "type" : "integer",
          "description" : "The maximum number of HTTP requests which can be pipelined until the connection is closed by the server.\nSetting this attribute to 1 will disable HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and pipelining.\nSetting this to -1 will allow an unlimited amount of pipelined or keep-alive HTTP requests.\n[restart required]",
          "default" : "100"
        },
        "MaxPostSize" : {
          "type" : "integer",
          "description" : "The maximum size in bytes of the POST which will be handled by the container FORM URL parameter parsing.\nThe limit can be disabled by setting this attribute to a value less than zero.\n[restart required]",
          "default" : "2097152"
        },
        "MaxSavePostSize" : {
          "type" : "integer",
          "description" : "The maximum size in bytes of the request body which will be saved/buffered by\nthe container during FORM or CLIENT-CERT authentication or during HTTP/1.1 upgrade.\n[restart required]",
          "default" : "4096"
        },
        "MaxThreads" : {
          "type" : "integer",
          "description" : "The maximum number of request processing threads to be created by this Connector, which therefore determines the maximum number of simultaneous requests that can be handled.\n[restart required]",
          "default" : "200"
        },
        "MinSpareThreads" : {
          "type" : "integer",
          "description" : "The minimum number of threads always kept running. This includes both active and idle threads.\n[restart required]",
          "default" : "10"
        },
        "NoCompressionUserAgents" : {
          "type" : "string",
          "description" : "The value is a regular expression (using java.util.regex) matching the user-agent header of HTTP clients\nfor which compression should not be used.\n[restart required]"
        },
        "ProxyName" : {
          "type" : "string",
          "description" : "If this Connector is being used in a proxy configuration, configure this attribute to specify the server name to be returned for calls to request.getServerName(). \n[restart required]"
        },
        "ProxyPort" : {
          "type" : "integer",
          "description" : "If this Connector is being used in a proxy configuration, configure this attribute to specify the server port to be returned for calls to request.getServerPort(). \n[restart required]"
        },
        "RedirectPort" : {
          "type" : "integer",
          "description" : "If this Connector is supporting non-SSL requests, and a request is received for which a matching <security-constraint> requires SSL transport, Catalina will automatically redirect the request to the port number specified here. \n[restart required]",
          "default" : "8443"
        },
        "Server" : {
          "type" : "string",
          "description" : "Overrides the Server header for the http response.\nIf set, the value for this attribute overrides any Server header set by a web application.\nIf not set, any value specified by the application is used.\nIf the application does not specify a value then no Server header is set.\n[restart required]"
        },
        "TcpNoDelay" : {
          "type" : "boolean",
          "description" : "If set to true, the TCP_NO_DELAY option will be set on the server socket, which improves performance under most circumstances.\n[restart required]",
          "default" : "true"
        },
        "ThreadPriority" : {
          "type" : "integer",
          "description" : "The priority of the request processing threads within the JVM.\n[restart required]",
          "default" : "5"
        },
        "TruststoreFile" : {
          "type" : "string",
          "description" : "\n[restart required]"
        },
        "TruststorePass" : {
          "type" : "string",
          "description" : "[password]\n[restart required]"
        },
        "TruststoreType" : {
          "type" : "string",
          "description" : "\n[restart required]",
          "default" : "JKS"
        },
        "URIEncoding" : {
          "type" : "string",
          "description" : "This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL.\n[restart required]",
          "default" : "UTF-8"
        },
        "UseBodyEncodingForURI" : {
          "type" : "boolean",
          "description" : "This specifies if the encoding specified in contentType should be used for URI query parameters, instead of using the URIEncoding.\n[restart required]"
        },
        "UseIPVHosts" : {
          "type" : "boolean",
          "description" : "Set this attribute to true to cause Tomcat to use the IP address that the request was received on to determine the Host to send the request to.\n[restart required]"
        },
        "XpoweredBy" : {
          "type" : "boolean",
          "description" : "Set this attribute to true to cause Tomcat to advertise support for the Servlet specification using the header recommended in the specification. \n[restart required]"
        }
      },
      "additionalProperties" : false
    },
    "SslHostConfig" : {
      "type" : "object",
      "properties" : {
        "Protocols" : {
          "description" : "The names of the protocols to support when communicating with clients.\nMultiple protocols can be enabled by separating them with a comma.\n[restart required]",
          "default" : "all",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3", "all" ]
        }
      },
      "additionalProperties" : false
    }
  },
  "type" : "object",
  "properties" : {
    "HTTP" : {
      "$ref" : "#/$defs/HTTPConnector",
      "description" : "https://tomcat.apache.org/tomcat-9.0-doc/config/http.html\n[restart required]"
    },
    "HTTPS" : {
      "$ref" : "#/$defs/HTTPSConnector",
      "description" : "https://tomcat.apache.org/tomcat-9.0-doc/config/http.html\n[restart required]"
    }
  },
  "additionalProperties" : false
}
