From 26a4d6961fd58c65f720041f537a45ab12f88912 Mon Sep 17 00:00:00 2001 From: Fadhil Rasendriya Prabowo Date: Thu, 26 Oct 2023 15:46:10 +0700 Subject: [PATCH] Add nginx CRDs (#218) --- appprotect.f5.com/aplogconf_v1beta1.json | 89 + appprotect.f5.com/appolicy_v1beta1.json | 2748 +++++++++++++++++ appprotect.f5.com/apusersig_v1beta1.json | 111 + .../apdoslogconf_v1beta1.json | 69 + appprotectdos.f5.com/apdospolicy_v1beta1.json | 65 + .../dosprotectedresource_v1beta1.json | 85 + externaldns.nginx.org/dnsendpoint_v1.json | 92 + .../globalconfiguration_v1alpha1.json | 46 + k8s.nginx.org/policy_v1.json | 275 ++ k8s.nginx.org/policy_v1alpha1.json | 143 + k8s.nginx.org/transportserver_v1alpha1.json | 192 ++ k8s.nginx.org/virtualserver_v1.json | 1086 +++++++ k8s.nginx.org/virtualserverroute_v1.json | 943 ++++++ 13 files changed, 5944 insertions(+) create mode 100644 appprotect.f5.com/aplogconf_v1beta1.json create mode 100644 appprotect.f5.com/appolicy_v1beta1.json create mode 100644 appprotect.f5.com/apusersig_v1beta1.json create mode 100644 appprotectdos.f5.com/apdoslogconf_v1beta1.json create mode 100644 appprotectdos.f5.com/apdospolicy_v1beta1.json create mode 100644 appprotectdos.f5.com/dosprotectedresource_v1beta1.json create mode 100644 externaldns.nginx.org/dnsendpoint_v1.json create mode 100644 k8s.nginx.org/globalconfiguration_v1alpha1.json create mode 100644 k8s.nginx.org/policy_v1.json create mode 100644 k8s.nginx.org/policy_v1alpha1.json create mode 100644 k8s.nginx.org/transportserver_v1alpha1.json create mode 100644 k8s.nginx.org/virtualserver_v1.json create mode 100644 k8s.nginx.org/virtualserverroute_v1.json diff --git a/appprotect.f5.com/aplogconf_v1beta1.json b/appprotect.f5.com/aplogconf_v1beta1.json new file mode 100644 index 00000000..f0eb8601 --- /dev/null +++ b/appprotect.f5.com/aplogconf_v1beta1.json @@ -0,0 +1,89 @@ +{ + "description": "APLogConf is the Schema for the APLogConfs API", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "APLogConfSpec defines the desired state of APLogConf", + "properties": { + "content": { + "properties": { + "escaping_characters": { + "items": { + "properties": { + "from": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "format": { + "enum": [ + "splunk", + "arcsight", + "default", + "user-defined", + "grpc" + ], + "type": "string" + }, + "format_string": { + "type": "string" + }, + "list_delimiter": { + "type": "string" + }, + "list_prefix": { + "type": "string" + }, + "list_suffix": { + "type": "string" + }, + "max_message_size": { + "pattern": "^([1-9]|[1-5][0-9]|6[0-4])k$", + "type": "string" + }, + "max_request_size": { + "pattern": "^([1-9]|[1-9][0-9]|[1-9][0-9]{2}|1[0-9]{3}|20[1-3][0-9]|204[1-8]|any)$", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "filter": { + "properties": { + "request_type": { + "enum": [ + "all", + "illegal", + "blocked" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/appprotect.f5.com/appolicy_v1beta1.json b/appprotect.f5.com/appolicy_v1beta1.json new file mode 100644 index 00000000..21f4fc6e --- /dev/null +++ b/appprotect.f5.com/appolicy_v1beta1.json @@ -0,0 +1,2748 @@ +{ + "description": "APPolicyConfig is the Schema for the APPolicyconfigs API", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "APPolicySpec defines the desired state of APPolicy", + "properties": { + "modifications": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "description": { + "type": "string" + }, + "entity": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "entityChanges": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "x-kubernetes-preserve-unknown-fields": true, + "additionalProperties": false + }, + "type": "array" + }, + "modificationsReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "policy": { + "description": "Defines the App Protect policy", + "properties": { + "applicationLanguage": { + "enum": [ + "iso-8859-10", + "iso-8859-6", + "windows-1255", + "auto-detect", + "koi8-r", + "gb18030", + "iso-8859-8", + "windows-1250", + "iso-8859-9", + "windows-1252", + "iso-8859-16", + "gb2312", + "iso-8859-2", + "iso-8859-5", + "windows-1257", + "windows-1256", + "iso-8859-13", + "windows-874", + "windows-1253", + "iso-8859-3", + "euc-jp", + "utf-8", + "gbk", + "windows-1251", + "big5", + "iso-8859-1", + "shift_jis", + "euc-kr", + "iso-8859-4", + "iso-8859-7", + "iso-8859-15" + ], + "type": "string" + }, + "blocking-settings": { + "properties": { + "evasions": { + "items": { + "properties": { + "description": { + "enum": [ + "%u decoding", + "Apache whitespace", + "Bad unescape", + "Bare byte decoding", + "Directory traversals", + "IIS backslashes", + "IIS Unicode codepoints", + "Multiple decoding" + ], + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "maxDecodingPasses": { + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "http-protocols": { + "items": { + "properties": { + "description": { + "enum": [ + "Unescaped space in URL", + "Unparsable request content", + "Several Content-Length headers", + "POST request with Content-Length: 0", + "Null in request", + "No Host header in HTTP/1.1 request", + "Multiple host headers", + "Host header contains IP address", + "High ASCII characters in headers", + "Header name with no header value", + "CRLF characters before request start", + "Content length should be a positive number", + "Chunked request with Content-Length header", + "Check maximum number of parameters", + "Check maximum number of headers", + "Body in GET or HEAD requests", + "Bad multipart/form-data request parsing", + "Bad multipart parameters parsing", + "Bad HTTP version", + "Bad host header value" + ], + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "maxHeaders": { + "type": "integer" + }, + "maxParams": { + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "violations": { + "items": { + "properties": { + "alarm": { + "type": "boolean" + }, + "block": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "name": { + "enum": [ + "VIOL_GRPC_FORMAT", + "VIOL_GRPC_MALFORMED", + "VIOL_GRPC_METHOD", + "VIOL_PARAMETER_ARRAY_VALUE", + "VIOL_PARAMETER_VALUE_REGEXP", + "VIOL_CSRF", + "VIOL_PARAMETER_VALUE_BASE64", + "VIOL_MANDATORY_HEADER", + "VIOL_HEADER_REPEATED", + "VIOL_ASM_COOKIE_MODIFIED", + "VIOL_BLACKLISTED_IP", + "VIOL_COOKIE_EXPIRED", + "VIOL_COOKIE_LENGTH", + "VIOL_COOKIE_MALFORMED", + "VIOL_COOKIE_MODIFIED", + "VIOL_DATA_GUARD", + "VIOL_ENCODING", + "VIOL_EVASION", + "VIOL_FILETYPE", + "VIOL_FILE_UPLOAD", + "VIOL_FILE_UPLOAD_IN_BODY", + "VIOL_HEADER_LENGTH", + "VIOL_HEADER_METACHAR", + "VIOL_HTTP_PROTOCOL", + "VIOL_HTTP_RESPONSE_STATUS", + "VIOL_JSON_FORMAT", + "VIOL_JSON_MALFORMED", + "VIOL_JSON_SCHEMA", + "VIOL_MANDATORY_PARAMETER", + "VIOL_MANDATORY_REQUEST_BODY", + "VIOL_METHOD", + "VIOL_PARAMETER", + "VIOL_PARAMETER_DATA_TYPE", + "VIOL_PARAMETER_EMPTY_VALUE", + "VIOL_PARAMETER_LOCATION", + "VIOL_PARAMETER_MULTIPART_NULL_VALUE", + "VIOL_PARAMETER_NAME_METACHAR", + "VIOL_PARAMETER_NUMERIC_VALUE", + "VIOL_PARAMETER_REPEATED", + "VIOL_PARAMETER_STATIC_VALUE", + "VIOL_PARAMETER_VALUE_LENGTH", + "VIOL_PARAMETER_VALUE_METACHAR", + "VIOL_POST_DATA_LENGTH", + "VIOL_QUERY_STRING_LENGTH", + "VIOL_RATING_THREAT", + "VIOL_RATING_NEED_EXAMINATION", + "VIOL_REQUEST_MAX_LENGTH", + "VIOL_REQUEST_LENGTH", + "VIOL_THREAT_CAMPAIGN", + "VIOL_URL", + "VIOL_URL_CONTENT_TYPE", + "VIOL_URL_LENGTH", + "VIOL_URL_METACHAR", + "VIOL_XML_FORMAT", + "VIOL_XML_MALFORMED" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "blockingSettingReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "bot-defense": { + "properties": { + "mitigations": { + "properties": { + "anomalies": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "action": { + "enum": [ + "alarm", + "block", + "default", + "detect", + "ignore" + ], + "type": "string" + }, + "name": { + "type": "string" + }, + "scoreThreshold": { + "pattern": "[0-9]|[1-9][0-9]|1[0-4][0-9]|150|default", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "browsers": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "action": { + "enum": [ + "alarm", + "block", + "detect" + ], + "type": "string" + }, + "browserDefinition": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "isUserDefined": { + "type": "boolean" + }, + "matchRegex": { + "type": "string" + }, + "matchString": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "maxVersion": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "minVersion": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "classes": { + "items": { + "properties": { + "action": { + "enum": [ + "alarm", + "block", + "detect", + "ignore" + ], + "type": "string" + }, + "name": { + "enum": [ + "browser", + "malicious-bot", + "suspicious-browser", + "trusted-bot", + "unknown", + "untrusted-bot" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "signatures": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "action": { + "enum": [ + "alarm", + "block", + "detect", + "ignore" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "settings": { + "properties": { + "caseSensitiveHttpHeaders": { + "type": "boolean" + }, + "isEnabled": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "browser-definitions": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "isUserDefined": { + "type": "boolean" + }, + "matchRegex": { + "type": "string" + }, + "matchString": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "caseInsensitive": { + "type": "boolean" + }, + "character-sets": { + "items": { + "properties": { + "characterSet": { + "items": { + "properties": { + "isAllowed": { + "type": "boolean" + }, + "metachar": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "characterSetType": { + "enum": [ + "gwt-content", + "header", + "json-content", + "parameter-name", + "parameter-value", + "plain-text-content", + "url", + "xml-content" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "characterSetReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "cookie-settings": { + "properties": { + "maximumCookieHeaderLength": { + "pattern": "any|\\d+", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "cookieReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "cookieSettingsReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "cookies": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "accessibleOnlyThroughTheHttpProtocol": { + "type": "boolean" + }, + "attackSignaturesCheck": { + "type": "boolean" + }, + "decodeValueAsBase64": { + "enum": [ + "enabled", + "disabled", + "required" + ], + "type": "string" + }, + "enforcementType": { + "type": "string" + }, + "insertSameSiteAttribute": { + "enum": [ + "lax", + "none", + "none-value", + "strict" + ], + "type": "string" + }, + "name": { + "type": "string" + }, + "securedOverHttpsConnection": { + "type": "boolean" + }, + "signatureOverrides": { + "items": { + "properties": { + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "signatureId": { + "type": "integer" + }, + "tag": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "type": { + "enum": [ + "explicit", + "wildcard" + ], + "type": "string" + }, + "wildcardOrder": { + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "csrf-protection": { + "properties": { + "enabled": { + "type": "boolean" + }, + "expirationTimeInSeconds": { + "pattern": "disabled|\\d+", + "type": "string" + }, + "sslOnly": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "csrf-urls": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "enforcementAction": { + "enum": [ + "verify-origin", + "none" + ], + "type": "string" + }, + "method": { + "enum": [ + "GET", + "POST", + "any" + ], + "type": "string" + }, + "url": { + "type": "string" + }, + "wildcardOrder": { + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "data-guard": { + "properties": { + "creditCardNumbers": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "enforcementMode": { + "enum": [ + "ignore-urls-in-list", + "enforce-urls-in-list" + ], + "type": "string" + }, + "enforcementUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "lastCcnDigitsToExpose": { + "type": "integer" + }, + "lastSsnDigitsToExpose": { + "type": "integer" + }, + "maskData": { + "type": "boolean" + }, + "usSocialSecurityNumbers": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "dataGuardReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "description": { + "type": "string" + }, + "enablePassiveMode": { + "type": "boolean" + }, + "enforcementMode": { + "enum": [ + "transparent", + "blocking" + ], + "type": "string" + }, + "enforcer-settings": { + "properties": { + "enforcerStateCookies": { + "properties": { + "httpOnlyAttribute": { + "type": "boolean" + }, + "sameSiteAttribute": { + "enum": [ + "lax", + "none", + "none-value", + "strict" + ], + "type": "string" + }, + "secureAttribute": { + "enum": [ + "always", + "never" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "filetypeReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "filetypes": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "allowed": { + "type": "boolean" + }, + "checkPostDataLength": { + "type": "boolean" + }, + "checkQueryStringLength": { + "type": "boolean" + }, + "checkRequestLength": { + "type": "boolean" + }, + "checkUrlLength": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "postDataLength": { + "type": "integer" + }, + "queryStringLength": { + "type": "integer" + }, + "requestLength": { + "type": "integer" + }, + "responseCheck": { + "type": "boolean" + }, + "type": { + "enum": [ + "explicit", + "wildcard" + ], + "type": "string" + }, + "urlLength": { + "type": "integer" + }, + "wildcardOrder": { + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "fullPath": { + "type": "string" + }, + "general": { + "properties": { + "allowedResponseCodes": { + "items": { + "format": "int32", + "maximum": 999, + "minimum": 100, + "type": "integer" + }, + "type": "array" + }, + "customXffHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maskCreditCardNumbersInRequest": { + "type": "boolean" + }, + "trustXff": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "generalReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "grpc-profiles": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "associateUrls": { + "type": "boolean" + }, + "attackSignaturesCheck": { + "type": "boolean" + }, + "defenseAttributes": { + "properties": { + "allowUnknownFields": { + "type": "boolean" + }, + "maximumDataLength": { + "pattern": "any|\\d+", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "description": { + "type": "string" + }, + "hasIdlFiles": { + "type": "boolean" + }, + "idlFiles": { + "items": { + "properties": { + "idlFile": { + "properties": { + "contents": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "isBase64": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "importUrl": { + "type": "string" + }, + "isPrimary": { + "type": "boolean" + }, + "primaryIdlFileName": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "metacharElementCheck": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "signatureOverrides": { + "items": { + "properties": { + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "signatureId": { + "type": "integer" + }, + "tag": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "header-settings": { + "properties": { + "maximumHttpHeaderLength": { + "pattern": "any|\\d+", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "headerReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "headerSettingsReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "headers": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "allowRepeatedOccurrences": { + "type": "boolean" + }, + "base64Decoding": { + "type": "boolean" + }, + "checkSignatures": { + "type": "boolean" + }, + "decodeValueAsBase64": { + "enum": [ + "enabled", + "disabled", + "required" + ], + "type": "string" + }, + "htmlNormalization": { + "type": "boolean" + }, + "mandatory": { + "type": "boolean" + }, + "maskValueInLogs": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "normalizationViolations": { + "type": "boolean" + }, + "percentDecoding": { + "type": "boolean" + }, + "signatureOverrides": { + "items": { + "properties": { + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "signatureId": { + "type": "integer" + }, + "tag": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "type": { + "enum": [ + "explicit", + "wildcard" + ], + "type": "string" + }, + "urlNormalization": { + "type": "boolean" + }, + "wildcardOrder": { + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "host-names": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "includeSubdomains": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "idl-files": { + "items": { + "properties": { + "contents": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "isBase64": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "json-profiles": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "attackSignaturesCheck": { + "type": "boolean" + }, + "defenseAttributes": { + "properties": { + "maximumArrayLength": { + "pattern": "any|\\d+", + "type": "string" + }, + "maximumStructureDepth": { + "pattern": "any|\\d+", + "type": "string" + }, + "maximumTotalLengthOfJSONData": { + "pattern": "any|\\d+", + "type": "string" + }, + "maximumValueLength": { + "pattern": "any|\\d+", + "type": "string" + }, + "tolerateJSONParsingWarnings": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "description": { + "type": "string" + }, + "handleJsonValuesAsParameters": { + "type": "boolean" + }, + "hasValidationFiles": { + "type": "boolean" + }, + "metacharOverrides": { + "items": { + "properties": { + "isAllowed": { + "type": "boolean" + }, + "metachar": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "signatureOverrides": { + "items": { + "properties": { + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "signatureId": { + "type": "integer" + }, + "tag": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "validationFiles": { + "items": { + "properties": { + "importUrl": { + "type": "string" + }, + "isPrimary": { + "type": "boolean" + }, + "jsonValidationFile": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "contents": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "isBase64": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "json-validation-files": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "contents": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "isBase64": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "jsonProfileReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "jsonValidationFileReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "methodReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "methods": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "open-api-files": { + "items": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "parameterReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "parameters": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "allowEmptyValue": { + "type": "boolean" + }, + "allowRepeatedParameterName": { + "type": "boolean" + }, + "arraySerializationFormat": { + "enum": [ + "csv", + "form", + "label", + "matrix", + "multi", + "multipart", + "pipe", + "ssv", + "tsv" + ], + "type": "string" + }, + "attackSignaturesCheck": { + "type": "boolean" + }, + "checkMaxValue": { + "type": "boolean" + }, + "checkMaxValueLength": { + "type": "boolean" + }, + "checkMetachars": { + "type": "boolean" + }, + "checkMinValue": { + "type": "boolean" + }, + "checkMinValueLength": { + "type": "boolean" + }, + "checkMultipleOfValue": { + "type": "boolean" + }, + "contentProfile": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "dataType": { + "enum": [ + "alpha-numeric", + "binary", + "boolean", + "decimal", + "email", + "integer", + "none", + "phone" + ], + "type": "string" + }, + "decodeValueAsBase64": { + "enum": [ + "enabled", + "disabled", + "required" + ], + "type": "string" + }, + "disallowFileUploadOfExecutables": { + "type": "boolean" + }, + "enableRegularExpression": { + "type": "boolean" + }, + "exclusiveMax": { + "type": "boolean" + }, + "exclusiveMin": { + "type": "boolean" + }, + "isBase64": { + "type": "boolean" + }, + "isCookie": { + "type": "boolean" + }, + "isHeader": { + "type": "boolean" + }, + "level": { + "enum": [ + "global", + "url" + ], + "type": "string" + }, + "mandatory": { + "type": "boolean" + }, + "maximumLength": { + "type": "integer" + }, + "maximumValue": { + "type": "integer" + }, + "metacharsOnParameterValueCheck": { + "type": "boolean" + }, + "minimumLength": { + "type": "integer" + }, + "minimumValue": { + "type": "integer" + }, + "multipleOf": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "nameMetacharOverrides": { + "items": { + "properties": { + "isAllowed": { + "type": "boolean" + }, + "metachar": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "objectSerializationStyle": { + "type": "string" + }, + "parameterEnumValues": { + "items": { + "type": "string" + }, + "type": "array" + }, + "parameterLocation": { + "enum": [ + "any", + "cookie", + "form-data", + "header", + "path", + "query" + ], + "type": "string" + }, + "regularExpression": { + "type": "string" + }, + "sensitiveParameter": { + "type": "boolean" + }, + "signatureOverrides": { + "items": { + "properties": { + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "signatureId": { + "type": "integer" + }, + "tag": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "staticValues": { + "type": "string" + }, + "type": { + "enum": [ + "explicit", + "wildcard" + ], + "type": "string" + }, + "url": { + "type": "object" + }, + "valueMetacharOverrides": { + "items": { + "properties": { + "isAllowed": { + "type": "boolean" + }, + "metachar": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "valueType": { + "enum": [ + "array", + "auto-detect", + "dynamic-content", + "dynamic-parameter-name", + "ignore", + "json", + "object", + "openapi-array", + "static-content", + "user-input", + "xml" + ], + "type": "string" + }, + "wildcardOrder": { + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "response-pages": { + "items": { + "properties": { + "ajaxActionType": { + "enum": [ + "alert-popup", + "custom", + "redirect" + ], + "type": "string" + }, + "ajaxCustomContent": { + "type": "string" + }, + "ajaxEnabled": { + "type": "boolean" + }, + "ajaxPopupMessage": { + "type": "string" + }, + "ajaxRedirectUrl": { + "type": "string" + }, + "grpcStatusCode": { + "pattern": "ABORTED|ALREADY_EXISTS|CANCELLED|DATA_LOSS|DEADLINE_EXCEEDED|FAILED_PRECONDITION|INTERNAL|INVALID_ARGUMENT|NOT_FOUND|OK|OUT_OF_RANGE|PERMISSION_DENIED|RESOURCE_EXHAUSTED|UNAUTHENTICATED|UNAVAILABLE|UNIMPLEMENTED|UNKNOWN|d+", + "type": "string" + }, + "grpcStatusMessage": { + "type": "string" + }, + "responseActionType": { + "enum": [ + "custom", + "default", + "erase-cookies", + "redirect", + "soap-fault" + ], + "type": "string" + }, + "responseContent": { + "type": "string" + }, + "responseHeader": { + "type": "string" + }, + "responsePageType": { + "enum": [ + "ajax", + "ajax-login", + "captcha", + "captcha-fail", + "default", + "failed-login-honeypot", + "failed-login-honeypot-ajax", + "hijack", + "leaked-credentials", + "leaked-credentials-ajax", + "mobile", + "persistent-flow", + "xml", + "grpc" + ], + "type": "string" + }, + "responseRedirectUrl": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "responsePageReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "sensitive-parameters": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "sensitiveParameterReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "server-technologies": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "serverTechnologyName": { + "enum": [ + "Jenkins", + "SharePoint", + "Oracle Application Server", + "Python", + "Oracle Identity Manager", + "Spring Boot", + "CouchDB", + "SQLite", + "Handlebars", + "Mustache", + "Prototype", + "Zend", + "Redis", + "Underscore.js", + "Ember.js", + "ZURB Foundation", + "ef.js", + "Vue.js", + "UIKit", + "TYPO3 CMS", + "RequireJS", + "React", + "MooTools", + "Laravel", + "GraphQL", + "Google Web Toolkit", + "Express.js", + "CodeIgniter", + "Backbone.js", + "AngularJS", + "JavaScript", + "Nginx", + "Jetty", + "Joomla", + "JavaServer Faces (JSF)", + "Ruby", + "MongoDB", + "Django", + "Node.js", + "Citrix", + "JBoss", + "Elasticsearch", + "Apache Struts", + "XML", + "PostgreSQL", + "IBM DB2", + "Sybase/ASE", + "CGI", + "Proxy Servers", + "SSI (Server Side Includes)", + "Cisco", + "Novell", + "Macromedia JRun", + "BEA Systems WebLogic Server", + "Lotus Domino", + "MySQL", + "Oracle", + "Microsoft SQL Server", + "PHP", + "Outlook Web Access", + "Apache/NCSA HTTP Server", + "Apache Tomcat", + "WordPress", + "Macromedia ColdFusion", + "Unix/Linux", + "Microsoft Windows", + "ASP.NET", + "Front Page Server Extensions (FPSE)", + "IIS", + "WebDAV", + "ASP", + "Java Servlets/JSP", + "jQuery" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "serverTechnologyReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "signature-requirements": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "tag": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "signature-sets": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "alarm": { + "type": "boolean" + }, + "block": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object", + "x-kubernetes-preserve-unknown-fields": true, + "additionalProperties": false + }, + "type": "array" + }, + "signature-settings": { + "properties": { + "attackSignatureFalsePositiveMode": { + "enum": [ + "detect", + "detect-and-allow", + "disabled" + ], + "type": "string" + }, + "minimumAccuracyForAutoAddedSignatures": { + "enum": [ + "high", + "low", + "medium" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "signatureReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "signatureSetReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "signatureSettingReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "signatures": { + "items": { + "properties": { + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "signatureId": { + "type": "integer" + }, + "tag": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "softwareVersion": { + "type": "string" + }, + "template": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "threat-campaigns": { + "items": { + "properties": { + "isEnabled": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "threatCampaignReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "urlReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "urls": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "allowRenderingInFrames": { + "enum": [ + "never", + "only-same" + ], + "type": "string" + }, + "allowRenderingInFramesOnlyFrom": { + "type": "string" + }, + "attackSignaturesCheck": { + "type": "boolean" + }, + "clickjackingProtection": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "disallowFileUploadOfExecutables": { + "type": "boolean" + }, + "html5CrossOriginRequestsEnforcement": { + "properties": { + "allowOriginsEnforcementMode": { + "enum": [ + "replace-with", + "unmodified" + ], + "type": "string" + }, + "checkAllowedMethods": { + "type": "boolean" + }, + "crossDomainAllowedOrigin": { + "items": { + "properties": { + "includeSubDomains": { + "type": "boolean" + }, + "originName": { + "type": "string" + }, + "originPort": { + "pattern": "any|\\d+", + "type": "string" + }, + "originProtocol": { + "enum": [ + "http", + "http/https", + "https" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "enforcementMode": { + "enum": [ + "disabled", + "enforce" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "isAllowed": { + "type": "boolean" + }, + "mandatoryBody": { + "type": "boolean" + }, + "metacharOverrides": { + "items": { + "properties": { + "isAllowed": { + "type": "boolean" + }, + "metachar": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "metacharsOnUrlCheck": { + "type": "boolean" + }, + "method": { + "enum": [ + "ACL", + "BCOPY", + "BDELETE", + "BMOVE", + "BPROPFIND", + "BPROPPATCH", + "CHECKIN", + "CHECKOUT", + "CONNECT", + "COPY", + "DELETE", + "GET", + "HEAD", + "LINK", + "LOCK", + "MERGE", + "MKCOL", + "MKWORKSPACE", + "MOVE", + "NOTIFY", + "OPTIONS", + "PATCH", + "POLL", + "POST", + "PROPFIND", + "PROPPATCH", + "PUT", + "REPORT", + "RPC_IN_DATA", + "RPC_OUT_DATA", + "SEARCH", + "SUBSCRIBE", + "TRACE", + "TRACK", + "UNLINK", + "UNLOCK", + "UNSUBSCRIBE", + "VERSION_CONTROL", + "X-MS-ENUMATTS", + "*" + ], + "type": "string" + }, + "methodOverrides": { + "items": { + "properties": { + "allowed": { + "type": "boolean" + }, + "method": { + "enum": [ + "ACL", + "BCOPY", + "BDELETE", + "BMOVE", + "BPROPFIND", + "BPROPPATCH", + "CHECKIN", + "CHECKOUT", + "CONNECT", + "COPY", + "DELETE", + "GET", + "HEAD", + "LINK", + "LOCK", + "MERGE", + "MKCOL", + "MKWORKSPACE", + "MOVE", + "NOTIFY", + "OPTIONS", + "PATCH", + "POLL", + "POST", + "PROPFIND", + "PROPPATCH", + "PUT", + "REPORT", + "RPC_IN_DATA", + "RPC_OUT_DATA", + "SEARCH", + "SUBSCRIBE", + "TRACE", + "TRACK", + "UNLINK", + "UNLOCK", + "UNSUBSCRIBE", + "VERSION_CONTROL", + "X-MS-ENUMATTS" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "methodsOverrideOnUrlCheck": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "operationId": { + "type": "string" + }, + "positionalParameters": { + "items": { + "properties": { + "parameter": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "allowEmptyValue": { + "type": "boolean" + }, + "allowRepeatedParameterName": { + "type": "boolean" + }, + "arraySerializationFormat": { + "enum": [ + "csv", + "form", + "label", + "matrix", + "multi", + "multipart", + "pipe", + "ssv", + "tsv" + ], + "type": "string" + }, + "attackSignaturesCheck": { + "type": "boolean" + }, + "checkMaxValue": { + "type": "boolean" + }, + "checkMaxValueLength": { + "type": "boolean" + }, + "checkMetachars": { + "type": "boolean" + }, + "checkMinValue": { + "type": "boolean" + }, + "checkMinValueLength": { + "type": "boolean" + }, + "checkMultipleOfValue": { + "type": "boolean" + }, + "contentProfile": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "dataType": { + "enum": [ + "alpha-numeric", + "binary", + "boolean", + "decimal", + "email", + "integer", + "none", + "phone" + ], + "type": "string" + }, + "decodeValueAsBase64": { + "enum": [ + "enabled", + "disabled", + "required" + ], + "type": "string" + }, + "disallowFileUploadOfExecutables": { + "type": "boolean" + }, + "enableRegularExpression": { + "type": "boolean" + }, + "exclusiveMax": { + "type": "boolean" + }, + "exclusiveMin": { + "type": "boolean" + }, + "isBase64": { + "type": "boolean" + }, + "isCookie": { + "type": "boolean" + }, + "isHeader": { + "type": "boolean" + }, + "level": { + "enum": [ + "global", + "url" + ], + "type": "string" + }, + "mandatory": { + "type": "boolean" + }, + "maximumLength": { + "type": "integer" + }, + "maximumValue": { + "type": "integer" + }, + "metacharsOnParameterValueCheck": { + "type": "boolean" + }, + "minimumLength": { + "type": "integer" + }, + "minimumValue": { + "type": "integer" + }, + "multipleOf": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "nameMetacharOverrides": { + "items": { + "properties": { + "isAllowed": { + "type": "boolean" + }, + "metachar": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "objectSerializationStyle": { + "type": "string" + }, + "parameterEnumValues": { + "items": { + "type": "string" + }, + "type": "array" + }, + "parameterLocation": { + "enum": [ + "any", + "cookie", + "form-data", + "header", + "path", + "query" + ], + "type": "string" + }, + "regularExpression": { + "type": "string" + }, + "sensitiveParameter": { + "type": "boolean" + }, + "signatureOverrides": { + "items": { + "properties": { + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "signatureId": { + "type": "integer" + }, + "tag": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "staticValues": { + "type": "string" + }, + "type": { + "enum": [ + "explicit", + "wildcard" + ], + "type": "string" + }, + "url": { + "type": "object" + }, + "valueMetacharOverrides": { + "items": { + "properties": { + "isAllowed": { + "type": "boolean" + }, + "metachar": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "valueType": { + "enum": [ + "array", + "auto-detect", + "dynamic-content", + "dynamic-parameter-name", + "ignore", + "json", + "object", + "openapi-array", + "static-content", + "user-input", + "xml" + ], + "type": "string" + }, + "wildcardOrder": { + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "urlSegmentIndex": { + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "protocol": { + "enum": [ + "http", + "https" + ], + "type": "string" + }, + "signatureOverrides": { + "items": { + "properties": { + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "signatureId": { + "type": "integer" + }, + "tag": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "type": { + "enum": [ + "explicit", + "wildcard" + ], + "type": "string" + }, + "urlContentProfiles": { + "items": { + "properties": { + "contentProfile": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "headerName": { + "type": "string" + }, + "headerOrder": { + "type": "string" + }, + "headerValue": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "enum": [ + "apply-content-signatures", + "apply-value-and-content-signatures", + "disallow", + "do-nothing", + "form-data", + "gwt", + "json", + "xml", + "grpc" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "wildcardOrder": { + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "whitelist-ips": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "blockRequests": { + "enum": [ + "always", + "never", + "policy-default" + ], + "type": "string" + }, + "ipAddress": { + "pattern": "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}", + "type": "string" + }, + "ipMask": { + "pattern": "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}", + "type": "string" + }, + "neverLogRequests": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "whitelistIpReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "xml-profiles": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "attackSignaturesCheck": { + "type": "boolean" + }, + "defenseAttributes": { + "properties": { + "allowCDATA": { + "type": "boolean" + }, + "allowDTDs": { + "type": "boolean" + }, + "allowExternalReferences": { + "type": "boolean" + }, + "allowProcessingInstructions": { + "type": "boolean" + }, + "maximumAttributeValueLength": { + "pattern": "any|\\d+", + "type": "string" + }, + "maximumAttributesPerElement": { + "pattern": "any|\\d+", + "type": "string" + }, + "maximumChildrenPerElement": { + "pattern": "any|\\d+", + "type": "string" + }, + "maximumDocumentDepth": { + "pattern": "any|\\d+", + "type": "string" + }, + "maximumDocumentSize": { + "pattern": "any|\\d+", + "type": "string" + }, + "maximumElements": { + "pattern": "any|\\d+", + "type": "string" + }, + "maximumNSDeclarations": { + "pattern": "any|\\d+", + "type": "string" + }, + "maximumNameLength": { + "pattern": "any|\\d+", + "type": "string" + }, + "maximumNamespaceLength": { + "pattern": "any|\\d+", + "type": "string" + }, + "tolerateCloseTagShorthand": { + "type": "boolean" + }, + "tolerateLeadingWhiteSpace": { + "type": "boolean" + }, + "tolerateNumericNames": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "description": { + "type": "string" + }, + "enableWss": { + "type": "boolean" + }, + "followSchemaLinks": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "signatureOverrides": { + "items": { + "properties": { + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "signatureId": { + "type": "integer" + }, + "tag": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "xml-validation-files": { + "items": { + "properties": { + "$action": { + "enum": [ + "delete" + ], + "type": "string" + }, + "contents": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "isBase64": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "xmlProfileReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "xmlValidationFileReference": { + "properties": { + "link": { + "pattern": "^http", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/appprotect.f5.com/apusersig_v1beta1.json b/appprotect.f5.com/apusersig_v1beta1.json new file mode 100644 index 00000000..2f9307f3 --- /dev/null +++ b/appprotect.f5.com/apusersig_v1beta1.json @@ -0,0 +1,111 @@ +{ + "description": "APUserSig is the Schema for the apusersigs API", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "APUserSigSpec defines the desired state of APUserSig", + "properties": { + "properties": { + "type": "string" + }, + "signatures": { + "items": { + "properties": { + "accuracy": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "attackType": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "references": { + "properties": { + "type": { + "enum": [ + "bugtraq", + "cve", + "nessus", + "url" + ], + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "risk": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "rule": { + "type": "string" + }, + "signatureType": { + "enum": [ + "request", + "response" + ], + "type": "string" + }, + "systems": { + "items": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "tag": { + "type": "string" + }, + "additionalProperties": false + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/appprotectdos.f5.com/apdoslogconf_v1beta1.json b/appprotectdos.f5.com/apdoslogconf_v1beta1.json new file mode 100644 index 00000000..1fdd843b --- /dev/null +++ b/appprotectdos.f5.com/apdoslogconf_v1beta1.json @@ -0,0 +1,69 @@ +{ + "description": "APDosLogConf is the Schema for the APDosLogConfs API", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "APDosLogConfSpec defines the desired state of APDosLogConf", + "properties": { + "content": { + "properties": { + "format": { + "enum": [ + "splunk", + "arcsight", + "user-defined" + ], + "type": "string" + }, + "format_string": { + "type": "string" + }, + "max_message_size": { + "pattern": "^([1-9]|[1-5][0-9]|6[0-4])k$", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "filter": { + "properties": { + "traffic-mitigation-stats": { + "enum": [ + "none", + "all" + ], + "default": "all", + "type": "string" + }, + "bad-actors": { + "pattern": "^(none|all|top ([1-9]|[1-9][0-9]|[1-9][0-9]{2,4}|100000))$", + "default": "top 10", + "type": "string" + }, + "attack-signatures": { + "pattern": "^(none|all|top ([1-9]|[1-9][0-9]|[1-9][0-9]{2,4}|100000))$", + "default": "top 10", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/appprotectdos.f5.com/apdospolicy_v1beta1.json b/appprotectdos.f5.com/apdospolicy_v1beta1.json new file mode 100644 index 00000000..6d2bafb5 --- /dev/null +++ b/appprotectdos.f5.com/apdospolicy_v1beta1.json @@ -0,0 +1,65 @@ +{ + "type": "object", + "description": "APDosPolicy is the Schema for the APDosPolicy API", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "type": "object", + "description": "APDosPolicySpec defines the desired state of APDosPolicy", + "properties": { + "mitigation_mode": { + "enum": [ + "standard", + "conservative", + "none" + ], + "default": "standard", + "type": "string" + }, + "signatures": { + "enum": [ + "on", + "off" + ], + "default": "on", + "type": "string" + }, + "bad_actors": { + "enum": [ + "on", + "off" + ], + "default": "on", + "type": "string" + }, + "automation_tools_detection": { + "enum": [ + "on", + "off" + ], + "default": "on", + "type": "string" + }, + "tls_fingerprint": { + "enum": [ + "on", + "off" + ], + "default": "on", + "type": "string" + } + }, + "additionalProperties": false + } + } +} diff --git a/appprotectdos.f5.com/dosprotectedresource_v1beta1.json b/appprotectdos.f5.com/dosprotectedresource_v1beta1.json new file mode 100644 index 00000000..71f0aa55 --- /dev/null +++ b/appprotectdos.f5.com/dosprotectedresource_v1beta1.json @@ -0,0 +1,85 @@ +{ + "description": "DosProtectedResource defines a Dos protected resource.", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "DosProtectedResourceSpec defines the properties and values a DosProtectedResource can have.", + "type": "object", + "properties": { + "apDosMonitor": { + "description": "ApDosMonitor is how NGINX App Protect DoS monitors the stress level of the protected object. The monitor requests are sent from localhost (127.0.0.1). Default value: URI - None, protocol - http1, timeout - NGINX App Protect DoS default.", + "type": "object", + "properties": { + "protocol": { + "description": "Protocol determines if the server listens on http1 / http2 / grpc / websocket. The default is http1.", + "type": "string", + "enum": [ + "http1", + "http2", + "grpc", + "websocket" + ] + }, + "timeout": { + "description": "Timeout determines how long (in seconds) should NGINX App Protect DoS wait for a response. Default is 10 seconds for http1/http2 and 5 seconds for grpc.", + "type": "integer", + "format": "int64" + }, + "uri": { + "description": "URI is the destination to the desired protected object in the nginx.conf:", + "type": "string" + } + }, + "additionalProperties": false + }, + "apDosPolicy": { + "description": "ApDosPolicy is the namespace/name of a ApDosPolicy resource", + "type": "string" + }, + "dosAccessLogDest": { + "description": "DosAccessLogDest is the network address for the access logs", + "type": "string" + }, + "dosSecurityLog": { + "description": "DosSecurityLog defines the security log of the DosProtectedResource.", + "type": "object", + "properties": { + "apDosLogConf": { + "description": "ApDosLogConf is the namespace/name of a APDosLogConf resource", + "type": "string" + }, + "dosLogDest": { + "description": "DosLogDest is the network address of a logging service, can be either IP or DNS name.", + "type": "string" + }, + "enable": { + "description": "Enable enables the security logging feature if set to true", + "type": "boolean" + } + }, + "additionalProperties": false + }, + "enable": { + "description": "Enable enables the DOS feature if set to true", + "type": "boolean" + }, + "name": { + "description": "Name is the name of protected object, max of 63 characters.", + "type": "string" + } + }, + "additionalProperties": false + } + } +} diff --git a/externaldns.nginx.org/dnsendpoint_v1.json b/externaldns.nginx.org/dnsendpoint_v1.json new file mode 100644 index 00000000..829f96b4 --- /dev/null +++ b/externaldns.nginx.org/dnsendpoint_v1.json @@ -0,0 +1,92 @@ +{ + "description": "DNSEndpoint is the CRD wrapper for Endpoint", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "DNSEndpointSpec holds information about endpoints.", + "type": "object", + "properties": { + "endpoints": { + "type": "array", + "items": { + "description": "Endpoint describes DNS Endpoint.", + "type": "object", + "properties": { + "dnsName": { + "description": "The hostname for the DNS record", + "type": "string" + }, + "labels": { + "description": "Labels stores labels defined for the Endpoint", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "providerSpecific": { + "description": "ProviderSpecific stores provider specific config", + "type": "array", + "items": { + "description": "ProviderSpecificProperty represents provider specific config property.", + "type": "object", + "properties": { + "name": { + "description": "Name of the property", + "type": "string" + }, + "value": { + "description": "Value of the property", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "recordTTL": { + "description": "TTL for the record", + "type": "integer", + "format": "int64" + }, + "recordType": { + "description": "RecordType type of record, e.g. CNAME, A, SRV, TXT, MX", + "type": "string" + }, + "targets": { + "description": "The targets the DNS service points to", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "status": { + "description": "DNSEndpointStatus represents generation observed by the external dns controller.", + "type": "object", + "properties": { + "observedGeneration": { + "description": "The generation observed by by the external-dns controller.", + "type": "integer", + "format": "int64" + } + }, + "additionalProperties": false + } + } +} diff --git a/k8s.nginx.org/globalconfiguration_v1alpha1.json b/k8s.nginx.org/globalconfiguration_v1alpha1.json new file mode 100644 index 00000000..ee65bdb9 --- /dev/null +++ b/k8s.nginx.org/globalconfiguration_v1alpha1.json @@ -0,0 +1,46 @@ +{ + "description": "GlobalConfiguration defines the GlobalConfiguration resource.", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "GlobalConfigurationSpec is the spec of the GlobalConfiguration resource.", + "type": "object", + "properties": { + "listeners": { + "type": "array", + "items": { + "description": "Listener defines a listener.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "port": { + "type": "integer" + }, + "protocol": { + "type": "string" + }, + "ssl": { + "type": "boolean" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + } +} diff --git a/k8s.nginx.org/policy_v1.json b/k8s.nginx.org/policy_v1.json new file mode 100644 index 00000000..b840d69c --- /dev/null +++ b/k8s.nginx.org/policy_v1.json @@ -0,0 +1,275 @@ +{ + "description": "Policy defines a Policy for VirtualServer and VirtualServerRoute resources.", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "PolicySpec is the spec of the Policy resource. The spec includes multiple fields, where each field represents a different policy. Only one policy (field) is allowed.", + "type": "object", + "properties": { + "accessControl": { + "description": "AccessControl defines an access policy based on the source IP of a request.", + "type": "object", + "properties": { + "allow": { + "type": "array", + "items": { + "type": "string" + } + }, + "deny": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "basicAuth": { + "description": "BasicAuth holds HTTP Basic authentication configuration policy status: preview", + "type": "object", + "properties": { + "realm": { + "type": "string" + }, + "secret": { + "type": "string" + } + }, + "additionalProperties": false + }, + "egressMTLS": { + "description": "EgressMTLS defines an Egress MTLS policy.", + "type": "object", + "properties": { + "ciphers": { + "type": "string" + }, + "protocols": { + "type": "string" + }, + "serverName": { + "type": "boolean" + }, + "sessionReuse": { + "type": "boolean" + }, + "sslName": { + "type": "string" + }, + "tlsSecret": { + "type": "string" + }, + "trustedCertSecret": { + "type": "string" + }, + "verifyDepth": { + "type": "integer" + }, + "verifyServer": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "ingressClassName": { + "type": "string" + }, + "ingressMTLS": { + "description": "IngressMTLS defines an Ingress MTLS policy.", + "type": "object", + "properties": { + "clientCertSecret": { + "type": "string" + }, + "crlFileName": { + "type": "string" + }, + "verifyClient": { + "type": "string" + }, + "verifyDepth": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "jwt": { + "description": "JWTAuth holds JWT authentication configuration.", + "type": "object", + "properties": { + "jwksURI": { + "type": "string" + }, + "keyCache": { + "type": "string" + }, + "realm": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "token": { + "type": "string" + } + }, + "additionalProperties": false + }, + "oidc": { + "description": "OIDC defines an Open ID Connect policy.", + "type": "object", + "properties": { + "accessTokenEnable": { + "type": "boolean" + }, + "authEndpoint": { + "type": "string" + }, + "authExtraArgs": { + "type": "array", + "items": { + "type": "string" + } + }, + "clientID": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "jwksURI": { + "type": "string" + }, + "redirectURI": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "tokenEndpoint": { + "type": "string" + }, + "zoneSyncLeeway": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "rateLimit": { + "description": "RateLimit defines a rate limit policy.", + "type": "object", + "properties": { + "burst": { + "type": "integer" + }, + "delay": { + "type": "integer" + }, + "dryRun": { + "type": "boolean" + }, + "key": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "noDelay": { + "type": "boolean" + }, + "rate": { + "type": "string" + }, + "rejectCode": { + "type": "integer" + }, + "zoneSize": { + "type": "string" + } + }, + "additionalProperties": false + }, + "waf": { + "description": "WAF defines an WAF policy.", + "type": "object", + "properties": { + "apBundle": { + "type": "string" + }, + "apPolicy": { + "type": "string" + }, + "enable": { + "type": "boolean" + }, + "securityLog": { + "description": "SecurityLog defines the security log of a WAF policy.", + "type": "object", + "properties": { + "apLogConf": { + "type": "string" + }, + "enable": { + "type": "boolean" + }, + "logDest": { + "type": "string" + } + }, + "additionalProperties": false + }, + "securityLogs": { + "type": "array", + "items": { + "description": "SecurityLog defines the security log of a WAF policy.", + "type": "object", + "properties": { + "apLogConf": { + "type": "string" + }, + "enable": { + "type": "boolean" + }, + "logDest": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "status": { + "description": "PolicyStatus is the status of the policy resource", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "additionalProperties": false + } + } +} diff --git a/k8s.nginx.org/policy_v1alpha1.json b/k8s.nginx.org/policy_v1alpha1.json new file mode 100644 index 00000000..661cb55e --- /dev/null +++ b/k8s.nginx.org/policy_v1alpha1.json @@ -0,0 +1,143 @@ +{ + "description": "Policy defines a Policy for VirtualServer and VirtualServerRoute resources.", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "PolicySpec is the spec of the Policy resource. The spec includes multiple fields, where each field represents a different policy. Only one policy (field) is allowed.", + "type": "object", + "properties": { + "accessControl": { + "description": "AccessControl defines an access policy based on the source IP of a request.", + "type": "object", + "properties": { + "allow": { + "type": "array", + "items": { + "type": "string" + } + }, + "deny": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "egressMTLS": { + "description": "EgressMTLS defines an Egress MTLS policy.", + "type": "object", + "properties": { + "ciphers": { + "type": "string" + }, + "protocols": { + "type": "string" + }, + "serverName": { + "type": "boolean" + }, + "sessionReuse": { + "type": "boolean" + }, + "sslName": { + "type": "string" + }, + "tlsSecret": { + "type": "string" + }, + "trustedCertSecret": { + "type": "string" + }, + "verifyDepth": { + "type": "integer" + }, + "verifyServer": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "ingressMTLS": { + "description": "IngressMTLS defines an Ingress MTLS policy.", + "type": "object", + "properties": { + "clientCertSecret": { + "type": "string" + }, + "verifyClient": { + "type": "string" + }, + "verifyDepth": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "jwt": { + "description": "JWTAuth holds JWT authentication configuration.", + "type": "object", + "properties": { + "realm": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "token": { + "type": "string" + } + }, + "additionalProperties": false + }, + "rateLimit": { + "description": "RateLimit defines a rate limit policy.", + "type": "object", + "properties": { + "burst": { + "type": "integer" + }, + "delay": { + "type": "integer" + }, + "dryRun": { + "type": "boolean" + }, + "key": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "noDelay": { + "type": "boolean" + }, + "rate": { + "type": "string" + }, + "rejectCode": { + "type": "integer" + }, + "zoneSize": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + } +} diff --git a/k8s.nginx.org/transportserver_v1alpha1.json b/k8s.nginx.org/transportserver_v1alpha1.json new file mode 100644 index 00000000..8cf6563a --- /dev/null +++ b/k8s.nginx.org/transportserver_v1alpha1.json @@ -0,0 +1,192 @@ +{ + "description": "TransportServer defines the TransportServer resource.", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "TransportServerSpec is the spec of the TransportServer resource.", + "type": "object", + "properties": { + "action": { + "description": "Action defines an action.", + "type": "object", + "properties": { + "pass": { + "type": "string" + } + }, + "additionalProperties": false + }, + "host": { + "type": "string" + }, + "ingressClassName": { + "type": "string" + }, + "listener": { + "description": "TransportServerListener defines a listener for a TransportServer.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "protocol": { + "type": "string" + } + }, + "additionalProperties": false + }, + "serverSnippets": { + "type": "string" + }, + "sessionParameters": { + "description": "SessionParameters defines session parameters.", + "type": "object", + "properties": { + "timeout": { + "type": "string" + } + }, + "additionalProperties": false + }, + "streamSnippets": { + "type": "string" + }, + "tls": { + "description": "TLS defines TLS configuration for a TransportServer.", + "type": "object", + "properties": { + "secret": { + "type": "string" + } + }, + "additionalProperties": false + }, + "upstreamParameters": { + "description": "UpstreamParameters defines parameters for an upstream.", + "type": "object", + "properties": { + "connectTimeout": { + "type": "string" + }, + "nextUpstream": { + "type": "boolean" + }, + "nextUpstreamTimeout": { + "type": "string" + }, + "nextUpstreamTries": { + "type": "integer" + }, + "udpRequests": { + "type": "integer" + }, + "udpResponses": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "upstreams": { + "type": "array", + "items": { + "description": "Upstream defines an upstream.", + "type": "object", + "properties": { + "failTimeout": { + "type": "string" + }, + "healthCheck": { + "description": "HealthCheck defines the parameters for active Upstream HealthChecks.", + "type": "object", + "properties": { + "enable": { + "type": "boolean" + }, + "fails": { + "type": "integer" + }, + "interval": { + "type": "string" + }, + "jitter": { + "type": "string" + }, + "match": { + "description": "Match defines the parameters of a custom health check.", + "type": "object", + "properties": { + "expect": { + "type": "string" + }, + "send": { + "type": "string" + } + }, + "additionalProperties": false + }, + "passes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "timeout": { + "type": "string" + } + }, + "additionalProperties": false + }, + "loadBalancingMethod": { + "type": "string" + }, + "maxConns": { + "type": "integer" + }, + "maxFails": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "port": { + "type": "integer" + }, + "service": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "status": { + "description": "TransportServerStatus defines the status for the TransportServer resource.", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "additionalProperties": false + } + } +} diff --git a/k8s.nginx.org/virtualserver_v1.json b/k8s.nginx.org/virtualserver_v1.json new file mode 100644 index 00000000..b3de486f --- /dev/null +++ b/k8s.nginx.org/virtualserver_v1.json @@ -0,0 +1,1086 @@ +{ + "description": "VirtualServer defines the VirtualServer resource.", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "VirtualServerSpec is the spec of the VirtualServer resource.", + "type": "object", + "properties": { + "dos": { + "type": "string" + }, + "externalDNS": { + "description": "ExternalDNS defines externaldns sub-resource of a virtual server.", + "type": "object", + "properties": { + "enable": { + "type": "boolean" + }, + "labels": { + "description": "Labels stores labels defined for the Endpoint", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "providerSpecific": { + "description": "ProviderSpecific stores provider specific config", + "type": "array", + "items": { + "description": "ProviderSpecificProperty defines specific property for using with ExternalDNS sub-resource.", + "type": "object", + "properties": { + "name": { + "description": "Name of the property", + "type": "string" + }, + "value": { + "description": "Value of the property", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "recordTTL": { + "description": "TTL for the record", + "type": "integer", + "format": "int64" + }, + "recordType": { + "type": "string" + } + }, + "additionalProperties": false + }, + "gunzip": { + "type": "boolean" + }, + "host": { + "type": "string" + }, + "http-snippets": { + "type": "string" + }, + "ingressClassName": { + "type": "string" + }, + "internalRoute": { + "description": "InternalRoute allows for the configuration of internal routing.", + "type": "boolean" + }, + "listener": { + "description": "Listener references a custom http and/or https listener defined in GlobalConfiguration.", + "type": "object", + "properties": { + "http": { + "type": "string" + }, + "https": { + "type": "string" + } + }, + "additionalProperties": false + }, + "policies": { + "type": "array", + "items": { + "description": "PolicyReference references a policy by name and an optional namespace.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "routes": { + "type": "array", + "items": { + "description": "Route defines a route.", + "type": "object", + "properties": { + "action": { + "description": "Action defines an action.", + "type": "object", + "properties": { + "pass": { + "type": "string" + }, + "proxy": { + "description": "ActionProxy defines a proxy in an Action.", + "type": "object", + "properties": { + "requestHeaders": { + "description": "ProxyRequestHeaders defines the request headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "pass": { + "type": "boolean" + }, + "set": { + "type": "array", + "items": { + "description": "Header defines an HTTP Header.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "responseHeaders": { + "description": "ProxyResponseHeaders defines the response headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "description": "AddHeader defines an HTTP Header with an optional Always field to use with the add_header NGINX directive.", + "type": "object", + "properties": { + "always": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "hide": { + "type": "array", + "items": { + "type": "string" + } + }, + "ignore": { + "type": "array", + "items": { + "type": "string" + } + }, + "pass": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "rewritePath": { + "type": "string" + }, + "upstream": { + "type": "string" + } + }, + "additionalProperties": false + }, + "redirect": { + "description": "ActionRedirect defines a redirect in an Action.", + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "return": { + "description": "ActionReturn defines a return in an Action.", + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "code": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "dos": { + "type": "string" + }, + "errorPages": { + "type": "array", + "items": { + "description": "ErrorPage defines an ErrorPage in a Route.", + "type": "object", + "properties": { + "codes": { + "type": "array", + "items": { + "type": "integer" + } + }, + "redirect": { + "description": "ErrorPageRedirect defines a redirect for an ErrorPage.", + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "return": { + "description": "ErrorPageReturn defines a return for an ErrorPage.", + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "code": { + "type": "integer" + }, + "headers": { + "type": "array", + "items": { + "description": "Header defines an HTTP Header.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "type": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "location-snippets": { + "type": "string" + }, + "matches": { + "type": "array", + "items": { + "description": "Match defines a match.", + "type": "object", + "properties": { + "action": { + "description": "Action defines an action.", + "type": "object", + "properties": { + "pass": { + "type": "string" + }, + "proxy": { + "description": "ActionProxy defines a proxy in an Action.", + "type": "object", + "properties": { + "requestHeaders": { + "description": "ProxyRequestHeaders defines the request headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "pass": { + "type": "boolean" + }, + "set": { + "type": "array", + "items": { + "description": "Header defines an HTTP Header.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "responseHeaders": { + "description": "ProxyResponseHeaders defines the response headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "description": "AddHeader defines an HTTP Header with an optional Always field to use with the add_header NGINX directive.", + "type": "object", + "properties": { + "always": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "hide": { + "type": "array", + "items": { + "type": "string" + } + }, + "ignore": { + "type": "array", + "items": { + "type": "string" + } + }, + "pass": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "rewritePath": { + "type": "string" + }, + "upstream": { + "type": "string" + } + }, + "additionalProperties": false + }, + "redirect": { + "description": "ActionRedirect defines a redirect in an Action.", + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "return": { + "description": "ActionReturn defines a return in an Action.", + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "code": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "conditions": { + "type": "array", + "items": { + "description": "Condition defines a condition in a MatchRule.", + "type": "object", + "properties": { + "argument": { + "type": "string" + }, + "cookie": { + "type": "string" + }, + "header": { + "type": "string" + }, + "value": { + "type": "string" + }, + "variable": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "splits": { + "type": "array", + "items": { + "description": "Split defines a split.", + "type": "object", + "properties": { + "action": { + "description": "Action defines an action.", + "type": "object", + "properties": { + "pass": { + "type": "string" + }, + "proxy": { + "description": "ActionProxy defines a proxy in an Action.", + "type": "object", + "properties": { + "requestHeaders": { + "description": "ProxyRequestHeaders defines the request headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "pass": { + "type": "boolean" + }, + "set": { + "type": "array", + "items": { + "description": "Header defines an HTTP Header.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "responseHeaders": { + "description": "ProxyResponseHeaders defines the response headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "description": "AddHeader defines an HTTP Header with an optional Always field to use with the add_header NGINX directive.", + "type": "object", + "properties": { + "always": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "hide": { + "type": "array", + "items": { + "type": "string" + } + }, + "ignore": { + "type": "array", + "items": { + "type": "string" + } + }, + "pass": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "rewritePath": { + "type": "string" + }, + "upstream": { + "type": "string" + } + }, + "additionalProperties": false + }, + "redirect": { + "description": "ActionRedirect defines a redirect in an Action.", + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "return": { + "description": "ActionReturn defines a return in an Action.", + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "code": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "weight": { + "type": "integer" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, + "path": { + "type": "string" + }, + "policies": { + "type": "array", + "items": { + "description": "PolicyReference references a policy by name and an optional namespace.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "route": { + "type": "string" + }, + "splits": { + "type": "array", + "items": { + "description": "Split defines a split.", + "type": "object", + "properties": { + "action": { + "description": "Action defines an action.", + "type": "object", + "properties": { + "pass": { + "type": "string" + }, + "proxy": { + "description": "ActionProxy defines a proxy in an Action.", + "type": "object", + "properties": { + "requestHeaders": { + "description": "ProxyRequestHeaders defines the request headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "pass": { + "type": "boolean" + }, + "set": { + "type": "array", + "items": { + "description": "Header defines an HTTP Header.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "responseHeaders": { + "description": "ProxyResponseHeaders defines the response headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "description": "AddHeader defines an HTTP Header with an optional Always field to use with the add_header NGINX directive.", + "type": "object", + "properties": { + "always": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "hide": { + "type": "array", + "items": { + "type": "string" + } + }, + "ignore": { + "type": "array", + "items": { + "type": "string" + } + }, + "pass": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "rewritePath": { + "type": "string" + }, + "upstream": { + "type": "string" + } + }, + "additionalProperties": false + }, + "redirect": { + "description": "ActionRedirect defines a redirect in an Action.", + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "return": { + "description": "ActionReturn defines a return in an Action.", + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "code": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "weight": { + "type": "integer" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, + "server-snippets": { + "type": "string" + }, + "tls": { + "description": "TLS defines TLS configuration for a VirtualServer.", + "type": "object", + "properties": { + "cert-manager": { + "description": "CertManager defines a cert manager config for a TLS.", + "type": "object", + "properties": { + "cluster-issuer": { + "type": "string" + }, + "common-name": { + "type": "string" + }, + "duration": { + "type": "string" + }, + "issuer": { + "type": "string" + }, + "issuer-group": { + "type": "string" + }, + "issuer-kind": { + "type": "string" + }, + "renew-before": { + "type": "string" + }, + "usages": { + "type": "string" + } + }, + "additionalProperties": false + }, + "redirect": { + "description": "TLSRedirect defines a redirect for a TLS.", + "type": "object", + "properties": { + "basedOn": { + "type": "string" + }, + "code": { + "type": "integer" + }, + "enable": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "secret": { + "type": "string" + } + }, + "additionalProperties": false + }, + "upstreams": { + "type": "array", + "items": { + "description": "Upstream defines an upstream.", + "type": "object", + "properties": { + "buffer-size": { + "type": "string" + }, + "buffering": { + "type": "boolean" + }, + "buffers": { + "description": "UpstreamBuffers defines Buffer Configuration for an Upstream.", + "type": "object", + "properties": { + "number": { + "type": "integer" + }, + "size": { + "type": "string" + } + }, + "additionalProperties": false + }, + "client-max-body-size": { + "type": "string" + }, + "connect-timeout": { + "type": "string" + }, + "fail-timeout": { + "type": "string" + }, + "healthCheck": { + "description": "HealthCheck defines the parameters for active Upstream HealthChecks.", + "type": "object", + "properties": { + "connect-timeout": { + "type": "string" + }, + "enable": { + "type": "boolean" + }, + "fails": { + "type": "integer" + }, + "grpcService": { + "type": "string" + }, + "grpcStatus": { + "type": "integer" + }, + "headers": { + "type": "array", + "items": { + "description": "Header defines an HTTP Header.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "interval": { + "type": "string" + }, + "jitter": { + "type": "string" + }, + "keepalive-time": { + "type": "string" + }, + "mandatory": { + "type": "boolean" + }, + "passes": { + "type": "integer" + }, + "path": { + "type": "string" + }, + "persistent": { + "type": "boolean" + }, + "port": { + "type": "integer" + }, + "read-timeout": { + "type": "string" + }, + "send-timeout": { + "type": "string" + }, + "statusMatch": { + "type": "string" + }, + "tls": { + "description": "UpstreamTLS defines a TLS configuration for an Upstream.", + "type": "object", + "properties": { + "enable": { + "type": "boolean" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "keepalive": { + "type": "integer" + }, + "lb-method": { + "type": "string" + }, + "max-conns": { + "type": "integer" + }, + "max-fails": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "next-upstream": { + "type": "string" + }, + "next-upstream-timeout": { + "type": "string" + }, + "next-upstream-tries": { + "type": "integer" + }, + "ntlm": { + "type": "boolean" + }, + "port": { + "type": "integer" + }, + "queue": { + "description": "UpstreamQueue defines Queue Configuration for an Upstream.", + "type": "object", + "properties": { + "size": { + "type": "integer" + }, + "timeout": { + "type": "string" + } + }, + "additionalProperties": false + }, + "read-timeout": { + "type": "string" + }, + "send-timeout": { + "type": "string" + }, + "service": { + "type": "string" + }, + "sessionCookie": { + "description": "SessionCookie defines the parameters for session persistence.", + "type": "object", + "properties": { + "domain": { + "type": "string" + }, + "enable": { + "type": "boolean" + }, + "expires": { + "type": "string" + }, + "httpOnly": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "samesite": { + "type": "string" + }, + "secure": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "slow-start": { + "type": "string" + }, + "subselector": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "tls": { + "description": "UpstreamTLS defines a TLS configuration for an Upstream.", + "type": "object", + "properties": { + "enable": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "type": { + "type": "string" + }, + "use-cluster-ip": { + "type": "boolean" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "status": { + "description": "VirtualServerStatus defines the status for the VirtualServer resource.", + "type": "object", + "properties": { + "externalEndpoints": { + "type": "array", + "items": { + "description": "ExternalEndpoint defines the IP/ Hostname and ports used to connect to this resource.", + "type": "object", + "properties": { + "hostname": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "ports": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "additionalProperties": false + } + } +} diff --git a/k8s.nginx.org/virtualserverroute_v1.json b/k8s.nginx.org/virtualserverroute_v1.json new file mode 100644 index 00000000..b4718cbd --- /dev/null +++ b/k8s.nginx.org/virtualserverroute_v1.json @@ -0,0 +1,943 @@ +{ + "description": "VirtualServerRoute defines the VirtualServerRoute resource.", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "VirtualServerRouteSpec is the spec of the VirtualServerRoute resource.", + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "ingressClassName": { + "type": "string" + }, + "subroutes": { + "type": "array", + "items": { + "description": "Route defines a route.", + "type": "object", + "properties": { + "action": { + "description": "Action defines an action.", + "type": "object", + "properties": { + "pass": { + "type": "string" + }, + "proxy": { + "description": "ActionProxy defines a proxy in an Action.", + "type": "object", + "properties": { + "requestHeaders": { + "description": "ProxyRequestHeaders defines the request headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "pass": { + "type": "boolean" + }, + "set": { + "type": "array", + "items": { + "description": "Header defines an HTTP Header.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "responseHeaders": { + "description": "ProxyResponseHeaders defines the response headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "description": "AddHeader defines an HTTP Header with an optional Always field to use with the add_header NGINX directive.", + "type": "object", + "properties": { + "always": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "hide": { + "type": "array", + "items": { + "type": "string" + } + }, + "ignore": { + "type": "array", + "items": { + "type": "string" + } + }, + "pass": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "rewritePath": { + "type": "string" + }, + "upstream": { + "type": "string" + } + }, + "additionalProperties": false + }, + "redirect": { + "description": "ActionRedirect defines a redirect in an Action.", + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "return": { + "description": "ActionReturn defines a return in an Action.", + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "code": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "dos": { + "type": "string" + }, + "errorPages": { + "type": "array", + "items": { + "description": "ErrorPage defines an ErrorPage in a Route.", + "type": "object", + "properties": { + "codes": { + "type": "array", + "items": { + "type": "integer" + } + }, + "redirect": { + "description": "ErrorPageRedirect defines a redirect for an ErrorPage.", + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "return": { + "description": "ErrorPageReturn defines a return for an ErrorPage.", + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "code": { + "type": "integer" + }, + "headers": { + "type": "array", + "items": { + "description": "Header defines an HTTP Header.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "type": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "location-snippets": { + "type": "string" + }, + "matches": { + "type": "array", + "items": { + "description": "Match defines a match.", + "type": "object", + "properties": { + "action": { + "description": "Action defines an action.", + "type": "object", + "properties": { + "pass": { + "type": "string" + }, + "proxy": { + "description": "ActionProxy defines a proxy in an Action.", + "type": "object", + "properties": { + "requestHeaders": { + "description": "ProxyRequestHeaders defines the request headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "pass": { + "type": "boolean" + }, + "set": { + "type": "array", + "items": { + "description": "Header defines an HTTP Header.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "responseHeaders": { + "description": "ProxyResponseHeaders defines the response headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "description": "AddHeader defines an HTTP Header with an optional Always field to use with the add_header NGINX directive.", + "type": "object", + "properties": { + "always": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "hide": { + "type": "array", + "items": { + "type": "string" + } + }, + "ignore": { + "type": "array", + "items": { + "type": "string" + } + }, + "pass": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "rewritePath": { + "type": "string" + }, + "upstream": { + "type": "string" + } + }, + "additionalProperties": false + }, + "redirect": { + "description": "ActionRedirect defines a redirect in an Action.", + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "return": { + "description": "ActionReturn defines a return in an Action.", + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "code": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "conditions": { + "type": "array", + "items": { + "description": "Condition defines a condition in a MatchRule.", + "type": "object", + "properties": { + "argument": { + "type": "string" + }, + "cookie": { + "type": "string" + }, + "header": { + "type": "string" + }, + "value": { + "type": "string" + }, + "variable": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "splits": { + "type": "array", + "items": { + "description": "Split defines a split.", + "type": "object", + "properties": { + "action": { + "description": "Action defines an action.", + "type": "object", + "properties": { + "pass": { + "type": "string" + }, + "proxy": { + "description": "ActionProxy defines a proxy in an Action.", + "type": "object", + "properties": { + "requestHeaders": { + "description": "ProxyRequestHeaders defines the request headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "pass": { + "type": "boolean" + }, + "set": { + "type": "array", + "items": { + "description": "Header defines an HTTP Header.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "responseHeaders": { + "description": "ProxyResponseHeaders defines the response headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "description": "AddHeader defines an HTTP Header with an optional Always field to use with the add_header NGINX directive.", + "type": "object", + "properties": { + "always": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "hide": { + "type": "array", + "items": { + "type": "string" + } + }, + "ignore": { + "type": "array", + "items": { + "type": "string" + } + }, + "pass": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "rewritePath": { + "type": "string" + }, + "upstream": { + "type": "string" + } + }, + "additionalProperties": false + }, + "redirect": { + "description": "ActionRedirect defines a redirect in an Action.", + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "return": { + "description": "ActionReturn defines a return in an Action.", + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "code": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "weight": { + "type": "integer" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, + "path": { + "type": "string" + }, + "policies": { + "type": "array", + "items": { + "description": "PolicyReference references a policy by name and an optional namespace.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "route": { + "type": "string" + }, + "splits": { + "type": "array", + "items": { + "description": "Split defines a split.", + "type": "object", + "properties": { + "action": { + "description": "Action defines an action.", + "type": "object", + "properties": { + "pass": { + "type": "string" + }, + "proxy": { + "description": "ActionProxy defines a proxy in an Action.", + "type": "object", + "properties": { + "requestHeaders": { + "description": "ProxyRequestHeaders defines the request headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "pass": { + "type": "boolean" + }, + "set": { + "type": "array", + "items": { + "description": "Header defines an HTTP Header.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "responseHeaders": { + "description": "ProxyResponseHeaders defines the response headers manipulation in an ActionProxy.", + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "description": "AddHeader defines an HTTP Header with an optional Always field to use with the add_header NGINX directive.", + "type": "object", + "properties": { + "always": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "hide": { + "type": "array", + "items": { + "type": "string" + } + }, + "ignore": { + "type": "array", + "items": { + "type": "string" + } + }, + "pass": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "rewritePath": { + "type": "string" + }, + "upstream": { + "type": "string" + } + }, + "additionalProperties": false + }, + "redirect": { + "description": "ActionRedirect defines a redirect in an Action.", + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "return": { + "description": "ActionReturn defines a return in an Action.", + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "code": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "weight": { + "type": "integer" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, + "upstreams": { + "type": "array", + "items": { + "description": "Upstream defines an upstream.", + "type": "object", + "properties": { + "buffer-size": { + "type": "string" + }, + "buffering": { + "type": "boolean" + }, + "buffers": { + "description": "UpstreamBuffers defines Buffer Configuration for an Upstream.", + "type": "object", + "properties": { + "number": { + "type": "integer" + }, + "size": { + "type": "string" + } + }, + "additionalProperties": false + }, + "client-max-body-size": { + "type": "string" + }, + "connect-timeout": { + "type": "string" + }, + "fail-timeout": { + "type": "string" + }, + "healthCheck": { + "description": "HealthCheck defines the parameters for active Upstream HealthChecks.", + "type": "object", + "properties": { + "connect-timeout": { + "type": "string" + }, + "enable": { + "type": "boolean" + }, + "fails": { + "type": "integer" + }, + "grpcService": { + "type": "string" + }, + "grpcStatus": { + "type": "integer" + }, + "headers": { + "type": "array", + "items": { + "description": "Header defines an HTTP Header.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "interval": { + "type": "string" + }, + "jitter": { + "type": "string" + }, + "keepalive-time": { + "type": "string" + }, + "mandatory": { + "type": "boolean" + }, + "passes": { + "type": "integer" + }, + "path": { + "type": "string" + }, + "persistent": { + "type": "boolean" + }, + "port": { + "type": "integer" + }, + "read-timeout": { + "type": "string" + }, + "send-timeout": { + "type": "string" + }, + "statusMatch": { + "type": "string" + }, + "tls": { + "description": "UpstreamTLS defines a TLS configuration for an Upstream.", + "type": "object", + "properties": { + "enable": { + "type": "boolean" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "keepalive": { + "type": "integer" + }, + "lb-method": { + "type": "string" + }, + "max-conns": { + "type": "integer" + }, + "max-fails": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "next-upstream": { + "type": "string" + }, + "next-upstream-timeout": { + "type": "string" + }, + "next-upstream-tries": { + "type": "integer" + }, + "ntlm": { + "type": "boolean" + }, + "port": { + "type": "integer" + }, + "queue": { + "description": "UpstreamQueue defines Queue Configuration for an Upstream.", + "type": "object", + "properties": { + "size": { + "type": "integer" + }, + "timeout": { + "type": "string" + } + }, + "additionalProperties": false + }, + "read-timeout": { + "type": "string" + }, + "send-timeout": { + "type": "string" + }, + "service": { + "type": "string" + }, + "sessionCookie": { + "description": "SessionCookie defines the parameters for session persistence.", + "type": "object", + "properties": { + "domain": { + "type": "string" + }, + "enable": { + "type": "boolean" + }, + "expires": { + "type": "string" + }, + "httpOnly": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "samesite": { + "type": "string" + }, + "secure": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "slow-start": { + "type": "string" + }, + "subselector": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "tls": { + "description": "UpstreamTLS defines a TLS configuration for an Upstream.", + "type": "object", + "properties": { + "enable": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "type": { + "type": "string" + }, + "use-cluster-ip": { + "type": "boolean" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "status": { + "description": "VirtualServerRouteStatus defines the status for the VirtualServerRoute resource.", + "type": "object", + "properties": { + "externalEndpoints": { + "type": "array", + "items": { + "description": "ExternalEndpoint defines the IP/ Hostname and ports used to connect to this resource.", + "type": "object", + "properties": { + "hostname": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "ports": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "referencedBy": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "additionalProperties": false + } + } +}