{ "id":"/axapi/v3/slb/template/http/{name}", "type":"object", "node-type":"list", "title":"http", "partition-visibility":"shared", "description":"HTTP", "properties":{ "name":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "description":"HTTP Template Name", "optional":false }, "compression-auto-disable-on-high-cpu":{ "type":"number", "format":"number", "minimum":1, "maximum":100, "partition-visibility":"shared", "description":"Auto-disable software compression on high cpu usage (Disable compression if cpu usage is above threshold. Default is off.)", "optional":true }, "compression-content-type":{ "type":"array", "minItems":1, "items":{ "type":"object" }, "uniqueItems":true, "array":[ { "properties":{ "content-type":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":31, "partition-visibility":"shared", "description":"Compression content-type" } } } ] }, "compression-enable":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Enable Compression", "optional":true }, "compression-exclude-content-type":{ "type":"array", "minItems":1, "items":{ "type":"object" }, "uniqueItems":true, "array":[ { "properties":{ "exclude-content-type":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":31, "partition-visibility":"shared", "description":"Compression exclude content-type (Compression exclude content type)" } } } ] }, "compression-exclude-uri":{ "type":"array", "minItems":1, "items":{ "type":"object" }, "uniqueItems":true, "array":[ { "properties":{ "exclude-uri":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":31, "partition-visibility":"shared", "description":"Compression exclude uri" } } } ] }, "compression-keep-accept-encoding":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Keep accept encoding", "optional":true }, "compression-keep-accept-encoding-enable":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Enable Server Accept Encoding", "optional":true }, "compression-level":{ "type":"number", "format":"number", "minimum":1, "maximum":9, "default":1, "partition-visibility":"shared", "description":"gzip compression level, default 1 (gzip compression level value, default is 1)", "optional":true }, "compression-br-level":{ "type":"number", "format":"number", "minimum":1, "maximum":9, "default":1, "partition-visibility":"shared", "description":"brotli compression level, default 1 (brotli compression level value, default is 1)", "optional":true }, "compression-br-sliding-window-size":{ "type":"number", "format":"number", "minimum":10, "maximum":24, "partition-visibility":"shared", "description":"brotli compression sliding window size, default 10 (brotli compression sliding window size in the form of log (i.e., 10 means 1k-16MB bytes))", "optional":true }, "compression-minimum-content-length":{ "type":"number", "format":"number", "minimum":1, "maximum":2147483647, "default":120, "partition-visibility":"shared", "description":"Minimum Content Length (Minimum content length for compression in bytes. Default is 120.)", "optional":true }, "compression-method-order":{ "type":"string", "format":"string-rlx", "minLength":11, "maxLength":11, "partition-visibility":"shared", "description":"Method Order (Order to decide which compression algorithm to be applied when multiple algorithms are acceptable)", "optional":true }, "default-charset":{ "type":"string", "format":"enum", "default":"utf-8", "partition-visibility":"shared", "description":"'iso-8859-1': Use ISO-8859-1 as the default charset; 'utf-8': Use UTF-8 as the default charset; 'us-ascii': Use US-ASCII as the default charset; ", "enum":[ "iso-8859-1", "utf-8", "us-ascii" ], "optional":true }, "max-concurrent-streams":{ "type":"number", "format":"number", "minimum":1, "maximum":1000, "default":50, "partition-visibility":"shared", "description":"(http2 only) Max concurrent streams, default 50", "optional":true }, "stream-cancellation-limit":{ "type":"number", "format":"number", "minimum":0, "maximum":1000, "default":0, "partition-visibility":"shared", "description":"cancellation limit, default 0 (accumulated cancellation limit value, default is 0)", "optional":true }, "stream-cancellation-rate":{ "type":"number", "format":"number", "minimum":0, "maximum":1000, "default":10, "partition-visibility":"shared", "description":"cancellation rate, default 10 (cancellation rate value, default is 10)", "optional":true }, "frame-limit":{ "type":"number", "format":"number", "minimum":0, "maximum":65535, "default":10000, "partition-visibility":"shared", "description":"Limit the number of CONTINUATION, PING, PRIORITY, RESET, SETTINGS and empty frames in one HTTP2 connection, default 10000", "optional":true }, "failover-url":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":255, "partition-visibility":"shared", "description":"Failover to this URL (Failover URL Name)", "optional":true }, "host-switching":{ "type":"array", "minItems":1, "items":{ "type":"object" }, "uniqueItems":true, "array":[ { "properties":{ "host-switching-type":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'contains': Select service group if hostname contains another string; 'ends-with': Select service group if hostname ends with another string; 'equals': Select service group if hostname equals another string; 'starts-with': Select service group if hostname starts with another string; 'regex-match': Select service group if URL string matches with regular expression; 'host-hits-enable': Enables Host Hits counters; ", "enum":[ "contains", "ends-with", "equals", "starts-with", "regex-match", "host-hits-enable" ] }, "host-match-string":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "description":"Hostname String" }, "host-service-group":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "$ref":"/axapi/v3/slb/service-group", "description":"Create a Service Group comprising Servers (Service Group Name)" } } } ] }, "insert-client-ip":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Insert Client IP address into HTTP header", "optional":true }, "insert-client-ip-header-name":{ "type":"string", "format":"string", "minLength":1, "maxLength":63, "partition-visibility":"shared", "description":"HTTP Header Name for inserting Client IP", "optional":true }, "client-ip-hdr-replace":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Replace the existing header", "optional":true }, "insert-client-port":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Insert Client Port address into HTTP header", "optional":true }, "insert-client-port-header-name":{ "type":"string", "format":"string", "minLength":1, "maxLength":63, "partition-visibility":"shared", "description":"HTTP Header Name for inserting Client Port", "optional":true }, "client-port-hdr-replace":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Replace the existing header", "optional":true }, "log-retry":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"log when HTTP request retry", "optional":true }, "non-http-bypass":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Bypass non-http traffic instead of dropping", "optional":true }, "bypass-sg":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "$ref":"/axapi/v3/slb/service-group", "description":"Select service group for non-http traffic (Service Group Name)", "optional":true }, "redirect":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Automatically send a redirect response", "optional":true }, "rd-simple-loc":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":255, "partition-visibility":"shared", "not-list":[ "rd-secure", "rd-port" ], "description":"Redirect location tag absolute URI string", "optional":true }, "rd-secure":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "not":"rd-simple-loc", "description":"Use HTTPS", "optional":true }, "rd-port":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "not":"rd-simple-loc", "description":"Port (Port Number)", "optional":true }, "rd-resp-code":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'301': Moved Permanently; '302': Found; '303': See Other; '307': Temporary Redirect; ", "enum":[ "301", "302", "303", "307" ], "optional":true }, "redirect-rewrite":{ "type":"object", "properties":{ "match-list":{ "type":"array", "minItems":1, "items":{ "type":"object" }, "uniqueItems":true, "array":[ { "properties":{ "redirect-match":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "description":"URL Matching (Pattern URL String)" }, "rewrite-to":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "description":"Rewrite to Destination URL String" } } } ] }, "redirect-secure":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Use HTTPS" }, "redirect-secure-port":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "default":443, "partition-visibility":"shared", "description":"Port (Port Number)" } } }, "request-header-erase-list":{ "type":"array", "minItems":1, "items":{ "type":"object" }, "uniqueItems":true, "array":[ { "properties":{ "request-header-erase":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "description":"Erase a header from HTTP request (Header Name)" } } } ] }, "request-header-insert-list":{ "type":"array", "minItems":1, "items":{ "type":"object" }, "uniqueItems":true, "array":[ { "properties":{ "request-header-insert":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "description":"Insert a header into HTTP request (Header Content (Format: \"[name]:[value]\"))" }, "request-header-insert-type":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'insert-if-not-exist': Only insert the header when it does not exist; 'insert-always': Always insert the header even when there is a header with the same name; ", "enum":[ "insert-if-not-exist", "insert-always" ] } } } ] }, "response-content-replace-list":{ "type":"array", "minItems":1, "items":{ "type":"object" }, "uniqueItems":true, "array":[ { "properties":{ "response-content-replace":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "description":"replace the data from HTTP response content (String in the http content need to be replaced)" }, "response-new-string":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "description":"String will be in the http content" } } } ] }, "response-header-erase-list":{ "type":"array", "minItems":1, "items":{ "type":"object" }, "uniqueItems":true, "array":[ { "properties":{ "response-header-erase":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "description":"Erase a header from HTTP response (Header Name)" } } } ] }, "response-header-insert-list":{ "type":"array", "minItems":1, "items":{ "type":"object" }, "uniqueItems":true, "array":[ { "properties":{ "response-header-insert":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "description":"Insert a header into HTTP response (Header Content (Format: \"[name]:[value]\"))" }, "response-header-insert-type":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'insert-if-not-exist': Only insert the header when it does not exist; 'insert-always': Always insert the header even when there is a header with the same name; ", "enum":[ "insert-if-not-exist", "insert-always" ] } } } ] }, "request-timeout":{ "type":"number", "format":"number", "minimum":1, "maximum":120, "partition-visibility":"shared", "description":"Request timeout if response not received (timeout in seconds)", "optional":true }, "retry-on-5xx":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "not":"retry-on-5xx-per-req", "description":"Retry http request on HTTP 5xx code and request timeout", "optional":true }, "retry-on-5xx-val":{ "type":"number", "format":"number", "minimum":1, "maximum":3, "default":3, "partition-visibility":"shared", "description":"Number of times to retry (default is 3)", "optional":true }, "retry-on-5xx-per-req":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "not":"retry-on-5xx", "description":"Retry http request on HTTP 5xx code for each request", "optional":true }, "retry-on-5xx-per-req-val":{ "type":"number", "format":"number", "minimum":1, "maximum":3, "default":3, "partition-visibility":"shared", "description":"Number of times to retry (default is 3)", "optional":true }, "strict-transaction-switch":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Force server selection on every HTTP request", "optional":true }, "template":{ "type":"object", "properties":{ "logging":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "$ref":"/axapi/v3/slb/template/logging", "description":"Logging template (Logging Config name)" } } }, "term-11client-hdr-conn-close":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Terminate HTTP 1.1 client when req has Connection: close", "optional":true }, "persist-on-401":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Persist to the same server if the response code is 401", "optional":true }, "100-cont-wait-for-req-complete":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"When REQ has Expect 100 and response is not 100, then wait for whole request to be sent", "optional":true }, "http2-client-no-snat":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Set max-concurrent-stream = 1 when the client side is HTTP2 and no source-nat configuration is under vport", "optional":true }, "url-hash-persist":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Use URL's hash value to select server", "optional":true }, "url-hash-offset":{ "type":"number", "format":"number", "minimum":0, "maximum":255, "partition-visibility":"shared", "description":"Skip part of URL to calculate hash value (Offset of the URL string)", "optional":true }, "url-hash-first":{ "type":"number", "format":"number", "minimum":4, "maximum":128, "partition-visibility":"shared", "not":"url-hash-last", "description":"Use the begining part of URL to calculate hash value (URL string length to calculate hash value)", "optional":true }, "url-hash-last":{ "type":"number", "format":"number", "minimum":4, "maximum":128, "partition-visibility":"shared", "not":"url-hash-first", "description":"Use the end part of URL to calculate hash value (URL string length to calculate hash value)", "optional":true }, "use-server-status":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Use Server-Status header to do URL hashing", "optional":true }, "url-switching":{ "type":"array", "minItems":1, "items":{ "type":"object" }, "uniqueItems":true, "array":[ { "properties":{ "url-switching-type":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'contains': Select service group if URL string contains another string; 'ends-with': Select service group if URL string ends with another string; 'equals': Select service group if URL string equals another string; 'starts-with': Select service group if URL string starts with another string; 'regex-match': Select service group if URL string matches with regular expression; 'url-case-insensitive': Case insensitive URL switching; 'url-hits-enable': Enables URL Hits; ", "enum":[ "contains", "ends-with", "equals", "starts-with", "regex-match", "url-case-insensitive", "url-hits-enable" ] }, "url-match-string":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "description":"URL String" }, "url-service-group":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "$ref":"/axapi/v3/slb/service-group", "description":"Create a Service Group comprising Servers (Service Group Name)" } } } ] }, "req-hdr-wait-time":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"HTTP request header wait time before abort connection", "optional":true }, "req-hdr-wait-time-val":{ "type":"number", "format":"number", "minimum":1, "maximum":31, "default":7, "partition-visibility":"shared", "description":"Number of seconds wait for client request header (default is 7)", "optional":true }, "request-line-case-insensitive":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Parse http request line as case insensitive", "optional":true }, "keep-client-alive":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Keep client alive", "optional":true }, "cookie-format":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'rfc6265': Follow rfc6265; ", "enum":[ "rfc6265" ], "optional":true }, "prefix":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'host': the cookie will have been set with a Secure attribute, a Path attribute with a value of /, and no Domain attribute; 'secure': the cookie will have been set with a Secure attribute; 'check': check server prefix and enforce prefix format; ", "enum":[ "host", "secure", "check" ], "optional":true }, "cookie-samesite":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'none': none; 'lax': lax; 'strict': strict; ", "enum":[ "none", "lax", "strict" ], "optional":true }, "server-support-http2-only":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Notify the vport regarding whether server supports http2 only", "optional":true }, "server-support-http2-only-value":{ "type":"string", "format":"enum", "default":"auto-detect", "partition-visibility":"shared", "description":"'auto-detect': Commuincate with the server via HTTP/2 when an support-http2-only rport is detected; 'force': Communicate with the server via HTTP/2 when possible; ", "enum":[ "auto-detect", "force" ], "optional":true }, "client-idle-timeout":{ "type":"number", "format":"number", "minimum":0, "maximum":120, "default":0, "partition-visibility":"shared", "description":"Client session timeout if the next request is not received (timeout in seconds. 0 means disable, default is 0)", "optional":true }, "disallowed-methods":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":1023, "partition-visibility":"shared", "not":"allowed-methods", "description":"Enable disallowed-method check (List of disallowed HTTP methods)", "optional":true }, "disallowed-methods-action":{ "type":"string", "format":"enum", "default":"drop", "partition-visibility":"shared", "description":"'drop': Respond 400 directly; ", "enum":[ "drop" ], "optional":true }, "allowed-methods":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":1023, "partition-visibility":"shared", "not":"disallowed-methods", "description":"Enable allowed-method check (List of allowed HTTP methods)", "optional":true }, "allowed-methods-action":{ "type":"string", "format":"enum", "default":"drop", "partition-visibility":"shared", "description":"'drop': Respond 400 directly; ", "enum":[ "drop" ], "optional":true }, "uuid":{ "type":"string", "format":"string", "minLength":1, "maxLength":64, "partition-visibility":"shared", "modify-not-allowed":1, "description":"uuid of the object", "optional":true }, "user-tag":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "description":"Customized tag", "optional":true }, "http-protocol-check":{ "type":"object", "$ref":"/axapi/v3/slb/template/http/{name}/http-protocol-check", "properties":{ "h2up-content-length-alias":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'drop': Drop the request and send 400 to the client side; ", "enum":[ "drop" ] }, "malformed-h2up-header-value":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'drop': Drop the request and send 400 to the client side; ", "enum":[ "drop" ] }, "malformed-h2up-scheme-value":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'drop': Drop the request and send 400 to the client side; ", "enum":[ "drop" ] }, "h2up-with-transfer-encoding":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'drop': Drop the request and send 400 to the client side; ", "enum":[ "drop" ] }, "multiple-content-length":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'drop': Drop the request and send 400 to the client side; ", "enum":[ "drop" ] }, "multiple-transfer-encoding":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'drop': Drop the request and send 400 to the client side; ", "enum":[ "drop" ] }, "transfer-encoding-and-content-length":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'drop': Drop the request and Send 400 to the client side; ", "enum":[ "drop" ] }, "get-and-payload":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'drop': Drop the request and send 400 to the client side; ", "enum":[ "drop" ] }, "h2up-with-host-and-auth":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'drop': Drop the request and send 400 to the client side; ", "enum":[ "drop" ] }, "uuid":{ "type":"string", "format":"string", "minLength":1, "maxLength":64, "partition-visibility":"shared", "modify-not-allowed":1, "description":"uuid of the object" }, "header-filter-rule-list":{ "type":"array", "minItems":1, "items":{ "type":"header-filter-rule" }, "uniqueItems":true, "$ref":"/axapi/v3/slb/template/http/{name}/http-protocol-check/header-filter-rule/{seq-num}", "array":[ { "properties":{ "seq-num":{ "type":"number", "format":"number", "minimum":0, "maximum":4, "partition-visibility":"shared", "description":"Specify a sequence number", "optional":false }, "match-type-value":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'full-text': Full text match; 'pcre': PCRE match; ", "enum":[ "full-text", "pcre" ], "optional":true }, "header-name-value":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "description":"Header name value", "optional":true }, "header-value-value":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "description":"Header value", "optional":true }, "action-value":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'drop': Drop the request; ", "enum":[ "drop" ], "optional":true }, "uuid":{ "type":"string", "format":"string", "minLength":1, "maxLength":64, "partition-visibility":"shared", "modify-not-allowed":1, "description":"uuid of the object", "optional":true }, "user-tag":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "description":"Customized tag", "optional":true } }, "required":[ "seq-num" ] } ] } } } }, "object-keys":[ "name" ], "required":[ "name" ] }