From 9b347b85e2523d1da885d2a7a99a9d63963daea0 Mon Sep 17 00:00:00 2001 From: bruceoutdoors Date: Wed, 24 Jan 2024 13:55:43 +0800 Subject: [PATCH] Update apisix.apache.org --- apisix.apache.org/apisixclusterconfig_v2.json | 40 +- .../apisixclusterconfig_v2beta3.json | 34 +- apisix.apache.org/apisixconsumer_v2.json | 285 ++++--- apisix.apache.org/apisixconsumer_v2beta3.json | 255 +++--- apisix.apache.org/apisixpluginconfig_v2.json | 51 +- .../apisixpluginconfig_v2beta3.json | 48 +- apisix.apache.org/apisixroute_v2.json | 595 +++++++------- apisix.apache.org/apisixroute_v2beta3.json | 524 ++++++------ apisix.apache.org/apisixtls_v2.json | 111 +-- apisix.apache.org/apisixtls_v2beta3.json | 108 +-- apisix.apache.org/apisixupstream_v2.json | 771 +++++++++--------- apisix.apache.org/apisixupstream_v2beta3.json | 728 +++++++++-------- 12 files changed, 1862 insertions(+), 1688 deletions(-) diff --git a/apisix.apache.org/apisixclusterconfig_v2.json b/apisix.apache.org/apisixclusterconfig_v2.json index f323ea27..814c4229 100644 --- a/apisix.apache.org/apisixclusterconfig_v2.json +++ b/apisix.apache.org/apisixclusterconfig_v2.json @@ -1,56 +1,62 @@ { - "type": "object", "properties": { "spec": { - "type": "object", "properties": { "admin": { - "type": "object", - "required": [ - "baseURL" - ], "properties": { - "baseURL": { - "type": "string", - "pattern": "https?://[^:]+:(\\d+)" - }, "adminKey": { "type": "string" + }, + "baseURL": { + "pattern": "https?://[^:]+:(\\d+)", + "type": "string" } }, + "required": [ + "baseURL" + ], + "type": "object", "additionalProperties": false }, + "ingressClassName": { + "type": "string" + }, "monitoring": { - "type": "object", "properties": { "prometheus": { - "type": "object", "properties": { "enable": { "type": "boolean" + }, + "prefer_name": { + "type": "boolean" } }, + "type": "object", "additionalProperties": false }, "skywalking": { - "type": "object", "properties": { "enable": { "type": "boolean" }, "sampleRatio": { - "type": "number", - "minimum": 1e-05, - "maximum": 1 + "maximum": 1, + "minimum": "1e-05", + "type": "number" } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false } - } + }, + "type": "object" } diff --git a/apisix.apache.org/apisixclusterconfig_v2beta3.json b/apisix.apache.org/apisixclusterconfig_v2beta3.json index f323ea27..b339b97a 100644 --- a/apisix.apache.org/apisixclusterconfig_v2beta3.json +++ b/apisix.apache.org/apisixclusterconfig_v2beta3.json @@ -1,56 +1,56 @@ { - "type": "object", "properties": { "spec": { - "type": "object", "properties": { "admin": { - "type": "object", - "required": [ - "baseURL" - ], "properties": { - "baseURL": { - "type": "string", - "pattern": "https?://[^:]+:(\\d+)" - }, "adminKey": { "type": "string" + }, + "baseURL": { + "pattern": "https?://[^:]+:(\\d+)", + "type": "string" } }, + "required": [ + "baseURL" + ], + "type": "object", "additionalProperties": false }, "monitoring": { - "type": "object", "properties": { "prometheus": { - "type": "object", "properties": { "enable": { "type": "boolean" } }, + "type": "object", "additionalProperties": false }, "skywalking": { - "type": "object", "properties": { "enable": { "type": "boolean" }, "sampleRatio": { - "type": "number", - "minimum": 1e-05, - "maximum": 1 + "maximum": 1, + "minimum": "1e-05", + "type": "number" } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false } - } + }, + "type": "object" } diff --git a/apisix.apache.org/apisixconsumer_v2.json b/apisix.apache.org/apisixconsumer_v2.json index ed0c2fd3..27d93ca5 100644 --- a/apisix.apache.org/apisixconsumer_v2.json +++ b/apisix.apache.org/apisixconsumer_v2.json @@ -1,14 +1,8 @@ { - "type": "object", "properties": { "spec": { - "type": "object", - "required": [ - "authParameter" - ], "properties": { "authParameter": { - "type": "object", "oneOf": [ { "required": [ @@ -34,11 +28,15 @@ "required": [ "hmacAuth" ] + }, + { + "required": [ + "ldapAuth" + ] } ], "properties": { "basicAuth": { - "type": "object", "oneOf": [ { "required": [ @@ -52,42 +50,42 @@ } ], "properties": { - "value": { - "type": "object", + "secretRef": { "properties": { - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 + "name": { + "minLength": 1, + "type": "string" } }, "required": [ - "username", - "password" + "name" ], + "type": "object", "additionalProperties": false }, - "secretRef": { - "type": "object", + "value": { "properties": { - "name": { - "type": "string", - "minLength": 1 + "password": { + "minLength": 1, + "type": "string" + }, + "username": { + "minLength": 1, + "type": "string" } }, "required": [ - "name" + "username", + "password" ], + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false }, - "keyAuth": { - "type": "object", + "hmacAuth": { "oneOf": [ { "required": [ @@ -101,37 +99,64 @@ } ], "properties": { - "value": { - "type": "object", + "secretRef": { "properties": { - "key": { - "type": "string", - "minLength": 1 + "name": { + "minLength": 1, + "type": "string" } }, "required": [ - "key" + "name" ], + "type": "object", "additionalProperties": false }, - "secretRef": { - "type": "object", + "value": { "properties": { - "name": { - "type": "string", - "minLength": 1 + "access_key": { + "type": "string" + }, + "algorithm": { + "type": "string" + }, + "clock_skew": { + "type": "integer" + }, + "encode_uri_params": { + "type": "boolean" + }, + "keep_headers": { + "type": "boolean" + }, + "max_req_body": { + "type": "integer" + }, + "secret_key": { + "type": "string" + }, + "signed_headers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "validate_request_body": { + "type": "boolean" } }, "required": [ - "name" + "access_key", + "secret_key" ], + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false }, "jwtAuth": { - "type": "object", "oneOf": [ { "required": [ @@ -145,55 +170,106 @@ } ], "properties": { - "value": { + "secretRef": { + "properties": { + "name": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name" + ], "type": "object", + "additionalProperties": false + }, + "value": { "properties": { - "key": { - "type": "string", - "minLength": 1 - }, - "secret": { + "algorithm": { + "default": "HS256", "type": "string" }, - "public_key": { + "base64_secret": { + "default": false, + "type": "boolean" + }, + "exp": { + "default": 86400, + "type": "integer" + }, + "key": { + "minLength": 1, "type": "string" }, + "lifetime_grace_period": { + "default": 0, + "type": "integer" + }, "private_key": { "type": "string" }, - "algorithm": { + "public_key": { "type": "string" }, - "exp": { - "type": "integer" - }, - "base64_secret": { - "type": "boolean" + "secret": { + "type": "string" } }, "required": [ "key" ], + "type": "object", "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "keyAuth": { + "oneOf": [ + { + "required": [ + "value" + ] }, + { + "required": [ + "secretRef" + ] + } + ], + "properties": { "secretRef": { - "type": "object", "properties": { "name": { - "type": "string", - "minLength": 1 + "minLength": 1, + "type": "string" } }, "required": [ "name" ], + "type": "object", + "additionalProperties": false + }, + "value": { + "properties": { + "key": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "key" + ], + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false }, - "wolfRBAC": { - "type": "object", + "ldapAuth": { "oneOf": [ { "required": [ @@ -207,39 +283,33 @@ } ], "properties": { - "value": { - "type": "object", + "secretRef": { "properties": { - "server": { - "type": "string" - }, - "appid": { - "type": "string" - }, - "header_prefix": { + "name": { + "minLength": 1, "type": "string" } }, + "type": "object", "additionalProperties": false }, - "secretRef": { - "type": "object", + "value": { "properties": { - "name": { - "type": "string", - "minLength": 1 + "user_dn": { + "type": "string" } }, "required": [ - "name" + "user_dn" ], + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false }, - "hmacAuth": { - "type": "object", + "wolfRBAC": { "oneOf": [ { "required": [ @@ -253,67 +323,52 @@ } ], "properties": { - "value": { - "type": "object", + "secretRef": { "properties": { - "access_key": { - "type": "string" - }, - "secret_key": { - "type": "string" - }, - "algorithm": { + "name": { + "minLength": 1, "type": "string" - }, - "clock_skew": { - "type": "integer" - }, - "signed_headers": { - "type": "array", - "items": { - "type": "string" - } - }, - "keep_headers": { - "type": "boolean" - }, - "encode_uri_params": { - "type": "boolean" - }, - "validate_request_body": { - "type": "boolean" - }, - "max_req_body": { - "type": "integer" } }, "required": [ - "access_key", - "secret_key" + "name" ], + "type": "object", "additionalProperties": false }, - "secretRef": { - "type": "object", + "value": { "properties": { - "name": { - "type": "string", - "minLength": 1 + "appid": { + "type": "string" + }, + "header_prefix": { + "type": "string" + }, + "server": { + "type": "string" } }, - "required": [ - "name" - ], + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false + }, + "ingressClassName": { + "type": "string" } }, + "required": [ + "authParameter" + ], + "type": "object", "additionalProperties": false } - } + }, + "type": "object" } diff --git a/apisix.apache.org/apisixconsumer_v2beta3.json b/apisix.apache.org/apisixconsumer_v2beta3.json index ed0c2fd3..e2b4bb48 100644 --- a/apisix.apache.org/apisixconsumer_v2beta3.json +++ b/apisix.apache.org/apisixconsumer_v2beta3.json @@ -1,14 +1,8 @@ { - "type": "object", "properties": { "spec": { - "type": "object", - "required": [ - "authParameter" - ], "properties": { "authParameter": { - "type": "object", "oneOf": [ { "required": [ @@ -38,7 +32,6 @@ ], "properties": { "basicAuth": { - "type": "object", "oneOf": [ { "required": [ @@ -52,42 +45,42 @@ } ], "properties": { - "value": { - "type": "object", + "secretRef": { "properties": { - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 + "name": { + "minLength": 1, + "type": "string" } }, "required": [ - "username", - "password" + "name" ], + "type": "object", "additionalProperties": false }, - "secretRef": { - "type": "object", + "value": { "properties": { - "name": { - "type": "string", - "minLength": 1 + "password": { + "minLength": 1, + "type": "string" + }, + "username": { + "minLength": 1, + "type": "string" } }, "required": [ - "name" + "username", + "password" ], + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false }, - "keyAuth": { - "type": "object", + "hmacAuth": { "oneOf": [ { "required": [ @@ -101,37 +94,64 @@ } ], "properties": { - "value": { - "type": "object", + "secretRef": { "properties": { - "key": { - "type": "string", - "minLength": 1 + "name": { + "minLength": 1, + "type": "string" } }, "required": [ - "key" + "name" ], + "type": "object", "additionalProperties": false }, - "secretRef": { - "type": "object", + "value": { "properties": { - "name": { - "type": "string", - "minLength": 1 + "access_key": { + "type": "string" + }, + "algorithm": { + "type": "string" + }, + "clock_skew": { + "type": "integer" + }, + "encode_uri_params": { + "type": "boolean" + }, + "keep_headers": { + "type": "boolean" + }, + "max_req_body": { + "type": "integer" + }, + "secret_key": { + "type": "string" + }, + "signed_headers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "validate_request_body": { + "type": "boolean" } }, "required": [ - "name" + "access_key", + "secret_key" ], + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false }, "jwtAuth": { - "type": "object", "oneOf": [ { "required": [ @@ -145,55 +165,62 @@ } ], "properties": { - "value": { + "secretRef": { + "properties": { + "name": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name" + ], "type": "object", + "additionalProperties": false + }, + "value": { "properties": { - "key": { - "type": "string", - "minLength": 1 - }, - "secret": { + "algorithm": { + "default": "HS256", "type": "string" }, - "public_key": { + "base64_secret": { + "default": false, + "type": "boolean" + }, + "exp": { + "default": 86400, + "type": "integer" + }, + "key": { + "minLength": 1, "type": "string" }, + "lifetime_grace_period": { + "default": 0, + "type": "integer" + }, "private_key": { "type": "string" }, - "algorithm": { + "public_key": { "type": "string" }, - "exp": { - "type": "integer" - }, - "base64_secret": { - "type": "boolean" + "secret": { + "type": "string" } }, "required": [ "key" ], - "additionalProperties": false - }, - "secretRef": { "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - } - }, - "required": [ - "name" - ], "additionalProperties": false } }, + "type": "object", "additionalProperties": false }, - "wolfRBAC": { - "type": "object", + "keyAuth": { "oneOf": [ { "required": [ @@ -207,39 +234,37 @@ } ], "properties": { - "value": { - "type": "object", + "secretRef": { "properties": { - "server": { - "type": "string" - }, - "appid": { - "type": "string" - }, - "header_prefix": { + "name": { + "minLength": 1, "type": "string" } }, + "required": [ + "name" + ], + "type": "object", "additionalProperties": false }, - "secretRef": { - "type": "object", + "value": { "properties": { - "name": { - "type": "string", - "minLength": 1 + "key": { + "minLength": 1, + "type": "string" } }, "required": [ - "name" + "key" ], + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false }, - "hmacAuth": { - "type": "object", + "wolfRBAC": { "oneOf": [ { "required": [ @@ -253,67 +278,49 @@ } ], "properties": { - "value": { - "type": "object", + "secretRef": { "properties": { - "access_key": { - "type": "string" - }, - "secret_key": { - "type": "string" - }, - "algorithm": { + "name": { + "minLength": 1, "type": "string" - }, - "clock_skew": { - "type": "integer" - }, - "signed_headers": { - "type": "array", - "items": { - "type": "string" - } - }, - "keep_headers": { - "type": "boolean" - }, - "encode_uri_params": { - "type": "boolean" - }, - "validate_request_body": { - "type": "boolean" - }, - "max_req_body": { - "type": "integer" } }, "required": [ - "access_key", - "secret_key" + "name" ], + "type": "object", "additionalProperties": false }, - "secretRef": { - "type": "object", + "value": { "properties": { - "name": { - "type": "string", - "minLength": 1 + "appid": { + "type": "string" + }, + "header_prefix": { + "type": "string" + }, + "server": { + "type": "string" } }, - "required": [ - "name" - ], + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false } }, + "required": [ + "authParameter" + ], + "type": "object", "additionalProperties": false } - } + }, + "type": "object" } diff --git a/apisix.apache.org/apisixpluginconfig_v2.json b/apisix.apache.org/apisixpluginconfig_v2.json index 9eaaf855..6b70b881 100644 --- a/apisix.apache.org/apisixpluginconfig_v2.json +++ b/apisix.apache.org/apisixpluginconfig_v2.json @@ -1,71 +1,74 @@ { - "type": "object", "properties": { "spec": { - "type": "object", - "required": [ - "plugins" - ], "properties": { + "ingressClassName": { + "type": "string" + }, "plugins": { - "type": "array", "items": { - "type": "object", "properties": { - "name": { - "type": "string", - "minLength": 1 + "config": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true }, "enable": { "type": "boolean" }, - "config": { - "type": "object", - "x-kubernetes-preserve-unknown-fields": true + "name": { + "minLength": 1, + "type": "string" }, "secretRef": { "type": "string" } }, + "type": "object", "additionalProperties": false }, "required": [ "name", "enable" - ] + ], + "type": "array" } }, + "required": [ + "plugins" + ], + "type": "object", "additionalProperties": false }, "status": { - "type": "object", "properties": { "conditions": { - "type": "array", "items": { - "type": "object", "properties": { - "type": { + "message": { "type": "string" }, + "observedGeneration": { + "type": "integer" + }, "reason": { "type": "string" }, "status": { "type": "string" }, - "message": { + "type": { "type": "string" - }, - "observedGeneration": { - "type": "integer" } }, + "type": "object", "additionalProperties": false - } + }, + "type": "array" } }, + "type": "object", "additionalProperties": false } - } + }, + "type": "object" } diff --git a/apisix.apache.org/apisixpluginconfig_v2beta3.json b/apisix.apache.org/apisixpluginconfig_v2beta3.json index d43e0be6..6c130719 100644 --- a/apisix.apache.org/apisixpluginconfig_v2beta3.json +++ b/apisix.apache.org/apisixpluginconfig_v2beta3.json @@ -1,68 +1,68 @@ { - "type": "object", "properties": { "spec": { - "type": "object", - "required": [ - "plugins" - ], "properties": { "plugins": { - "type": "array", "items": { - "type": "object", "properties": { - "name": { - "type": "string", - "minLength": 1 + "config": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true }, "enable": { "type": "boolean" }, - "config": { - "type": "object", - "x-kubernetes-preserve-unknown-fields": true + "name": { + "minLength": 1, + "type": "string" } }, + "type": "object", "additionalProperties": false }, "required": [ "name", "enable" - ] + ], + "type": "array" } }, + "required": [ + "plugins" + ], + "type": "object", "additionalProperties": false }, "status": { - "type": "object", "properties": { "conditions": { - "type": "array", "items": { - "type": "object", "properties": { - "type": { + "message": { "type": "string" }, + "observedGeneration": { + "type": "integer" + }, "reason": { "type": "string" }, "status": { "type": "string" }, - "message": { + "type": { "type": "string" - }, - "observedGeneration": { - "type": "integer" } }, + "type": "object", "additionalProperties": false - } + }, + "type": "array" } }, + "type": "object", "additionalProperties": false } - } + }, + "type": "object" } diff --git a/apisix.apache.org/apisixroute_v2.json b/apisix.apache.org/apisixroute_v2.json index 282d2d2e..1065d2f1 100644 --- a/apisix.apache.org/apisixroute_v2.json +++ b/apisix.apache.org/apisixroute_v2.json @@ -1,8 +1,6 @@ { - "type": "object", "properties": { "spec": { - "type": "object", "anyOf": [ { "required": [ @@ -17,10 +15,7 @@ ], "properties": { "http": { - "type": "array", - "minItems": 1, "items": { - "type": "object", "anyOf": [ { "required": [ @@ -38,106 +33,136 @@ } ], "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "priority": { - "type": "integer" - }, - "timeout": { - "type": "object", + "authentication": { "properties": { - "connect": { - "type": "string" + "enable": { + "type": "boolean" }, - "send": { - "type": "string" + "jwtAuth": { + "properties": { + "cookie": { + "type": "string" + }, + "header": { + "type": "string" + }, + "query": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false }, - "read": { + "keyAuth": { + "properties": { + "header": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "ldapAuth": { + "properties": { + "base_dn": { + "type": "string" + }, + "ldap_uri": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "use_tls": { + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": { + "enum": [ + "basicAuth", + "keyAuth", + "jwtAuth", + "wolfRBAC", + "hmacAuth", + "ldapAuth" + ], "type": "string" } }, - "additionalProperties": false - }, - "match": { - "type": "object", "required": [ - "paths" + "enable" ], - "properties": { - "paths": { - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^/[a-zA-Z0-9\\-._~%!$&'()+,;=:@/]*\\*?$" - } - }, - "hosts": { - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^\\*?[0-9a-zA-Z-._]+$" - } - }, - "methods": { - "type": "array", - "minItems": 1, - "items": { - "type": "string", + "type": "object", + "additionalProperties": false + }, + "backends": { + "items": { + "properties": { + "resolveGranularity": { "enum": [ - "CONNECT", - "DELETE", - "GET", - "HEAD", - "OPTIONS", - "PATCH", - "POST", - "PUT", - "TRACE" - ] - } - }, - "remoteAddrs": { - "type": "array", - "minItems": 1, - "items": { + "endpoint", + "service" + ], + "type": "string" + }, + "serviceName": { + "minLength": 1, "type": "string" + }, + "servicePort": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, + "subset": { + "type": "string" + }, + "weight": { + "minimum": 0, + "type": "integer" } }, + "type": "object", + "additionalProperties": false + }, + "minItems": 1, + "required": [ + "serviceName", + "servicePort" + ], + "type": "array" + }, + "match": { + "properties": { "exprs": { - "type": "array", - "minItems": 1, "items": { - "type": "object", - "properties": { - "subject": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "enum": [ - "Cookie", - "Header", - "Path", - "Query", - "Variable" - ] - }, - "name": { - "type": "string", - "minLength": 1 - } - }, + "oneOf": [ + { "required": [ - "scope" - ], - "additionalProperties": false + "subject", + "op", + "value" + ] }, + { + "required": [ + "subject", + "op", + "set" + ] + } + ], + "properties": { "op": { - "type": "string", "enum": [ "Equal", "NotEqual", @@ -151,230 +176,197 @@ "RegexNotMatch", "RegexMatchCaseInsensitive", "RegexNotMatchCaseInsensitive" - ] - }, - "value": { + ], "type": "string" }, "set": { - "type": "array", "items": { "type": "string" - } - } - }, - "oneOf": [ - { - "required": [ - "subject", - "op", - "value" - ] + }, + "type": "array" }, - { + "subject": { + "properties": { + "name": { + "minLength": 1, + "type": "string" + }, + "scope": { + "enum": [ + "Cookie", + "Header", + "Path", + "Query", + "Variable" + ], + "type": "string" + } + }, "required": [ - "subject", - "op", - "set" - ] + "scope" + ], + "type": "object", + "additionalProperties": false + }, + "value": { + "type": "string" } - ], + }, + "type": "object", "additionalProperties": false - } - } - }, - "additionalProperties": false - }, - "websocket": { - "type": "boolean" - }, - "plugin_config_name": { - "type": "string", - "minLength": 1 - }, - "upstreams": { - "description": "Upstreams refer to ApisixUpstream CRD", - "type": "array", - "items": { - "description": "ApisixRouteUpstreamReference contains a ApisixUpstream CRD reference", - "type": "object", - "properties": { - "name": { - "type": "string" }, - "weight": { - "type": "integer" - } + "minItems": 1, + "type": "array" }, - "additionalProperties": false - } - }, - "backends": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "serviceName": { - "type": "string", - "minLength": 1 - }, - "servicePort": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "x-kubernetes-int-or-string": true + "filter_func": { + "type": "string" + }, + "hosts": { + "items": { + "pattern": "^\\*?[0-9a-zA-Z-._]+$", + "type": "string" }, - "resolveGranularity": { - "type": "string", + "minItems": 1, + "type": "array" + }, + "methods": { + "items": { "enum": [ - "endpoint", - "service" - ] - }, - "weight": { - "type": "integer", - "minimum": 0 + "CONNECT", + "DELETE", + "GET", + "HEAD", + "OPTIONS", + "PATCH", + "POST", + "PUT", + "TRACE" + ], + "type": "string" }, - "subset": { + "minItems": 1, + "type": "array" + }, + "paths": { + "items": { + "pattern": "^/[a-zA-Z0-9\\-._~%!$&'()+,;=:@/\\*]*\\*?$", "type": "string" - } + }, + "minItems": 1, + "type": "array" }, - "additionalProperties": false + "remoteAddrs": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + } }, "required": [ - "serviceName", - "servicePort" - ] + "paths" + ], + "type": "object", + "additionalProperties": false + }, + "name": { + "minLength": 1, + "type": "string" + }, + "plugin_config_name": { + "minLength": 1, + "type": "string" }, "plugins": { - "type": "array", "items": { - "type": "object", "properties": { - "name": { - "type": "string", - "minLength": 1 + "config": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true }, "enable": { "type": "boolean" }, - "config": { - "type": "object", - "x-kubernetes-preserve-unknown-fields": true + "name": { + "minLength": 1, + "type": "string" }, "secretRef": { "type": "string" } }, + "type": "object", "additionalProperties": false }, "required": [ "name", "enable" - ] + ], + "type": "array" }, - "authentication": { - "type": "object", + "priority": { + "type": "integer" + }, + "timeout": { "properties": { - "enable": { - "type": "boolean" - }, - "type": { - "type": "string", - "enum": [ - "basicAuth", - "keyAuth", - "jwtAuth", - "wolfRBAC", - "hmacAuth" - ] + "connect": { + "type": "string" }, - "keyAuth": { - "type": "object", - "properties": { - "header": { - "type": "string" - } - }, - "additionalProperties": false + "read": { + "type": "string" }, - "jwtAuth": { - "type": "object", - "properties": { - "header": { - "type": "string" - }, - "query": { - "type": "string" - }, - "cookie": { - "type": "string" - } - }, - "additionalProperties": false + "send": { + "type": "string" } }, - "required": [ - "enable" - ], + "type": "object", "additionalProperties": false + }, + "upstreams": { + "description": "Upstreams refer to ApisixUpstream CRD", + "items": { + "description": "ApisixRouteUpstreamReference contains a ApisixUpstream CRD reference", + "properties": { + "name": { + "type": "string" + }, + "weight": { + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "websocket": { + "type": "boolean" } }, + "type": "object", "additionalProperties": false - } + }, + "minItems": 1, + "type": "array" + }, + "ingressClassName": { + "type": "string" }, "stream": { - "type": "array", - "minItems": 1, "items": { - "type": "object", - "required": [ - "name", - "match", - "backend", - "protocol" - ], "properties": { - "protocol": { - "type": "string", - "enum": [ - "TCP", - "UDP" - ] - }, - "name": { - "type": "string", - "minLength": 1 - }, - "match": { - "type": "object", + "backend": { "properties": { - "host": { + "resolveGranularity": { + "enum": [ + "endpoint", + "service" + ], "type": "string" }, - "ingressPort": { - "type": "integer", - "minimum": 1, - "maximum": 65535 - } - }, - "required": [ - "ingressPort" - ], - "additionalProperties": false - }, - "backend": { - "type": "object", - "properties": { "serviceName": { - "type": "string", - "minLength": 1 + "minLength": 1, + "type": "string" }, "servicePort": { "anyOf": [ @@ -387,13 +379,6 @@ ], "x-kubernetes-int-or-string": true }, - "resolveGranularity": { - "type": "string", - "enum": [ - "endpoint", - "service" - ] - }, "subset": { "type": "string" } @@ -402,71 +387,111 @@ "serviceName", "servicePort" ], + "type": "object", "additionalProperties": false }, + "match": { + "properties": { + "host": { + "type": "string" + }, + "ingressPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "ingressPort" + ], + "type": "object", + "additionalProperties": false + }, + "name": { + "minLength": 1, + "type": "string" + }, "plugins": { - "type": "array", "items": { - "type": "object", "properties": { - "name": { - "type": "string", - "minLength": 1 + "config": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true }, "enable": { "type": "boolean" }, - "config": { - "type": "object", - "x-kubernetes-preserve-unknown-fields": true + "name": { + "minLength": 1, + "type": "string" }, "secretRef": { "type": "string" } }, + "type": "object", "additionalProperties": false }, "required": [ "name", "enable" - ] + ], + "type": "array" + }, + "protocol": { + "enum": [ + "TCP", + "UDP" + ], + "type": "string" } }, + "required": [ + "name", + "match", + "backend", + "protocol" + ], + "type": "object", "additionalProperties": false - } + }, + "minItems": 1, + "type": "array" } }, + "type": "object", "additionalProperties": false }, "status": { - "type": "object", "properties": { "conditions": { - "type": "array", "items": { - "type": "object", "properties": { - "type": { + "message": { "type": "string" }, + "observedGeneration": { + "type": "integer" + }, "reason": { "type": "string" }, "status": { "type": "string" }, - "message": { + "type": { "type": "string" - }, - "observedGeneration": { - "type": "integer" } }, + "type": "object", "additionalProperties": false - } + }, + "type": "array" } }, + "type": "object", "additionalProperties": false } - } + }, + "type": "object" } diff --git a/apisix.apache.org/apisixroute_v2beta3.json b/apisix.apache.org/apisixroute_v2beta3.json index edb3d322..9125e4c3 100644 --- a/apisix.apache.org/apisixroute_v2beta3.json +++ b/apisix.apache.org/apisixroute_v2beta3.json @@ -1,8 +1,6 @@ { - "type": "object", "properties": { "spec": { - "type": "object", "anyOf": [ { "required": [ @@ -17,115 +15,119 @@ ], "properties": { "http": { - "type": "array", - "minItems": 1, "items": { - "type": "object", - "required": [ - "name", - "match", - "backends" - ], "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "priority": { - "type": "integer" - }, - "timeout": { - "type": "object", + "authentication": { "properties": { - "connect": { - "type": "string" + "enable": { + "type": "boolean" }, - "send": { - "type": "string" + "jwtAuth": { + "properties": { + "cookie": { + "type": "string" + }, + "header": { + "type": "string" + }, + "query": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false }, - "read": { + "keyAuth": { + "properties": { + "header": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": { + "enum": [ + "basicAuth", + "keyAuth", + "jwtAuth", + "wolfRBAC", + "hmacAuth" + ], "type": "string" } }, - "additionalProperties": false - }, - "match": { - "type": "object", "required": [ - "paths" + "enable" ], - "properties": { - "paths": { - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^/[a-zA-Z0-9\\-._~%!$&'()+,;=:@/]*\\*?$" - } - }, - "hosts": { - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^\\*?[0-9a-zA-Z-._]+$" - } - }, - "methods": { - "type": "array", - "minItems": 1, - "items": { - "type": "string", + "type": "object", + "additionalProperties": false + }, + "backends": { + "items": { + "properties": { + "resolveGranularity": { "enum": [ - "CONNECT", - "DELETE", - "GET", - "HEAD", - "OPTIONS", - "PATCH", - "POST", - "PUT", - "TRACE" - ] - } - }, - "remoteAddrs": { - "type": "array", - "minItems": 1, - "items": { + "endpoint", + "service" + ], + "type": "string" + }, + "serviceName": { + "minLength": 1, "type": "string" + }, + "servicePort": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, + "subset": { + "type": "string" + }, + "weight": { + "minimum": 0, + "type": "integer" } }, + "type": "object", + "additionalProperties": false + }, + "minItems": 1, + "required": [ + "serviceName", + "servicePort" + ], + "type": "array" + }, + "match": { + "properties": { "exprs": { - "type": "array", - "minItems": 1, "items": { - "type": "object", - "properties": { - "subject": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "enum": [ - "Cookie", - "Header", - "Path", - "Query" - ] - }, - "name": { - "type": "string", - "minLength": 1 - } - }, + "oneOf": [ + { "required": [ - "scope" - ], - "additionalProperties": false + "subject", + "op", + "value" + ] }, + { + "required": [ + "subject", + "op", + "set" + ] + } + ], + "properties": { "op": { - "type": "string", "enum": [ "Equal", "NotEqual", @@ -137,207 +139,175 @@ "RegexNotMatch", "RegexMatchCaseInsensitive", "RegexNotMatchCaseInsensitive" - ] - }, - "value": { + ], "type": "string" }, "set": { - "type": "array", "items": { "type": "string" - } - } - }, - "oneOf": [ - { - "required": [ - "subject", - "op", - "value" - ] + }, + "type": "array" }, - { + "subject": { + "properties": { + "name": { + "minLength": 1, + "type": "string" + }, + "scope": { + "enum": [ + "Cookie", + "Header", + "Path", + "Query" + ], + "type": "string" + } + }, "required": [ - "subject", - "op", - "set" - ] - } - ], - "additionalProperties": false - } - } - }, - "additionalProperties": false - }, - "websocket": { - "type": "boolean" - }, - "plugin_config_name": { - "type": "string", - "minLength": 1 - }, - "backends": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "serviceName": { - "type": "string", - "minLength": 1 - }, - "servicePort": { - "anyOf": [ - { - "type": "integer" + "scope" + ], + "type": "object", + "additionalProperties": false }, - { + "value": { "type": "string" } - ], - "x-kubernetes-int-or-string": true + }, + "type": "object", + "additionalProperties": false }, - "resolveGranularity": { - "type": "string", - "enum": [ - "endpoint", - "service" - ] + "minItems": 1, + "type": "array" + }, + "hosts": { + "items": { + "pattern": "^\\*?[0-9a-zA-Z-._]+$", + "type": "string" }, - "weight": { - "type": "integer", - "minimum": 0 + "minItems": 1, + "type": "array" + }, + "methods": { + "items": { + "enum": [ + "CONNECT", + "DELETE", + "GET", + "HEAD", + "OPTIONS", + "PATCH", + "POST", + "PUT", + "TRACE" + ], + "type": "string" }, - "subset": { + "minItems": 1, + "type": "array" + }, + "paths": { + "items": { + "pattern": "^/[a-zA-Z0-9\\-._~%!$&'()+,;=:@/\\*]*\\*?$", "type": "string" - } + }, + "minItems": 1, + "type": "array" }, - "additionalProperties": false + "remoteAddrs": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + } }, "required": [ - "serviceName", - "servicePort" - ] + "paths" + ], + "type": "object", + "additionalProperties": false + }, + "name": { + "minLength": 1, + "type": "string" + }, + "plugin_config_name": { + "minLength": 1, + "type": "string" }, "plugins": { - "type": "array", "items": { - "type": "object", "properties": { - "name": { - "type": "string", - "minLength": 1 + "config": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true }, "enable": { "type": "boolean" }, - "config": { - "type": "object", - "x-kubernetes-preserve-unknown-fields": true + "name": { + "minLength": 1, + "type": "string" } }, + "type": "object", "additionalProperties": false }, "required": [ "name", "enable" - ] + ], + "type": "array" }, - "authentication": { - "type": "object", + "priority": { + "type": "integer" + }, + "timeout": { "properties": { - "enable": { - "type": "boolean" - }, - "type": { - "type": "string", - "enum": [ - "basicAuth", - "keyAuth", - "jwtAuth", - "wolfRBAC", - "hmacAuth" - ] + "connect": { + "type": "string" }, - "keyAuth": { - "type": "object", - "properties": { - "header": { - "type": "string" - } - }, - "additionalProperties": false + "read": { + "type": "string" }, - "jwtAuth": { - "type": "object", - "properties": { - "header": { - "type": "string" - }, - "query": { - "type": "string" - }, - "cookie": { - "type": "string" - } - }, - "additionalProperties": false + "send": { + "type": "string" } }, - "required": [ - "enable" - ], + "type": "object", "additionalProperties": false + }, + "websocket": { + "type": "boolean" } }, - "additionalProperties": false - } - }, - "stream": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", "required": [ "name", "match", - "backend", - "protocol" + "backends" ], + "type": "object", + "additionalProperties": false + }, + "minItems": 1, + "type": "array" + }, + "stream": { + "items": { "properties": { - "protocol": { - "type": "string", - "enum": [ - "TCP", - "UDP" - ] - }, - "name": { - "type": "string", - "minLength": 1 - }, - "match": { - "type": "object", - "properties": { - "ingressPort": { - "type": "integer", - "minimum": 1, - "maximum": 65535 - } - }, - "required": [ - "ingressPort" - ], - "additionalProperties": false - }, "backend": { - "type": "object", "properties": { + "resolveGranularity": { + "enum": [ + "endpoint", + "service" + ], + "type": "string" + }, "serviceName": { - "type": "string", - "minLength": 1 + "minLength": 1, + "type": "string" }, "servicePort": { "anyOf": [ @@ -350,13 +320,6 @@ ], "x-kubernetes-int-or-string": true }, - "resolveGranularity": { - "type": "string", - "enum": [ - "endpoint", - "service" - ] - }, "subset": { "type": "string" } @@ -365,44 +328,81 @@ "serviceName", "servicePort" ], + "type": "object", "additionalProperties": false + }, + "match": { + "properties": { + "ingressPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "ingressPort" + ], + "type": "object", + "additionalProperties": false + }, + "name": { + "minLength": 1, + "type": "string" + }, + "protocol": { + "enum": [ + "TCP", + "UDP" + ], + "type": "string" } }, + "required": [ + "name", + "match", + "backend", + "protocol" + ], + "type": "object", "additionalProperties": false - } + }, + "minItems": 1, + "type": "array" } }, + "type": "object", "additionalProperties": false }, "status": { - "type": "object", "properties": { "conditions": { - "type": "array", "items": { - "type": "object", "properties": { - "type": { + "message": { "type": "string" }, + "observedGeneration": { + "type": "integer" + }, "reason": { "type": "string" }, "status": { "type": "string" }, - "message": { + "type": { "type": "string" - }, - "observedGeneration": { - "type": "integer" } }, + "type": "object", "additionalProperties": false - } + }, + "type": "array" } }, + "type": "object", "additionalProperties": false } - } + }, + "type": "object" } diff --git a/apisix.apache.org/apisixtls_v2.json b/apisix.apache.org/apisixtls_v2.json index e46b42d2..7a31a9f0 100644 --- a/apisix.apache.org/apisixtls_v2.json +++ b/apisix.apache.org/apisixtls_v2.json @@ -1,6 +1,5 @@ { "description": "ApisixTls defines SSL resource in APISIX.", - "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", @@ -15,132 +14,136 @@ }, "spec": { "description": "ApisixTlsSpec is the specification of ApisixSSL.", - "type": "object", - "required": [ - "hosts", - "secret" - ], "properties": { "client": { "description": "ApisixMutualTlsClientConfig describes the mutual TLS CA and verify depth", - "type": "object", "properties": { "caSecret": { "description": "ApisixSecret describes the Kubernetes Secret name and namespace.", - "type": "object", - "required": [ - "name", - "namespace" - ], "properties": { "name": { - "type": "string", - "minLength": 1 + "minLength": 1, + "type": "string" }, "namespace": { - "type": "string", - "minLength": 1 + "minLength": 1, + "type": "string" } }, + "required": [ + "name", + "namespace" + ], + "type": "object", "additionalProperties": false }, "depth": { "type": "integer" } }, + "type": "object", "additionalProperties": false }, "hosts": { - "type": "array", - "minItems": 1, "items": { - "type": "string", - "pattern": "^\\*?[0-9a-zA-Z-.]+$" - } + "pattern": "^\\*?[0-9a-zA-Z-.]+$", + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "ingressClassName": { + "type": "string" }, "secret": { "description": "ApisixSecret describes the Kubernetes Secret name and namespace.", - "type": "object", - "required": [ - "name", - "namespace" - ], "properties": { "name": { - "type": "string", - "minLength": 1 + "minLength": 1, + "type": "string" }, "namespace": { - "type": "string", - "minLength": 1 + "minLength": 1, + "type": "string" } }, + "required": [ + "name", + "namespace" + ], + "type": "object", "additionalProperties": false } }, + "required": [ + "hosts", + "secret" + ], + "type": "object", "additionalProperties": false }, "status": { "description": "ApisixStatus is the status report for Apisix ingress Resources", - "type": "object", "properties": { "conditions": { - "type": "array", "items": { "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", - "type": "object", - "required": [ - "lastTransitionTime", - "message", - "reason", - "status", - "type" - ], "properties": { "lastTransitionTime": { "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", - "type": "string", - "format": "date-time" + "format": "date-time", + "type": "string" }, "message": { "description": "message is a human readable message indicating details about the transition. This may be an empty string.", - "type": "string", - "maxLength": 32768 + "maxLength": 32768, + "type": "string" }, "observedGeneration": { "description": "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.", - "type": "integer", "format": "int64", - "minimum": 0 + "minimum": 0, + "type": "integer" }, "reason": { "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.", - "type": "string", "maxLength": 1024, "minLength": 1, - "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" + "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", + "type": "string" }, "status": { "description": "status of the condition, one of True, False, Unknown.", - "type": "string", "enum": [ "True", "False", "Unknown" - ] + ], + "type": "string" }, "type": { "description": "type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", - "type": "string", "maxLength": 316, - "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$" + "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", + "type": "string" } }, + "required": [ + "lastTransitionTime", + "message", + "reason", + "status", + "type" + ], + "type": "object", "additionalProperties": false - } + }, + "type": "array" } }, + "type": "object", "additionalProperties": false } - } + }, + "type": "object" } diff --git a/apisix.apache.org/apisixtls_v2beta3.json b/apisix.apache.org/apisixtls_v2beta3.json index e46b42d2..0177a281 100644 --- a/apisix.apache.org/apisixtls_v2beta3.json +++ b/apisix.apache.org/apisixtls_v2beta3.json @@ -1,6 +1,5 @@ { "description": "ApisixTls defines SSL resource in APISIX.", - "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", @@ -15,132 +14,133 @@ }, "spec": { "description": "ApisixTlsSpec is the specification of ApisixSSL.", - "type": "object", - "required": [ - "hosts", - "secret" - ], "properties": { "client": { "description": "ApisixMutualTlsClientConfig describes the mutual TLS CA and verify depth", - "type": "object", "properties": { "caSecret": { "description": "ApisixSecret describes the Kubernetes Secret name and namespace.", - "type": "object", - "required": [ - "name", - "namespace" - ], "properties": { "name": { - "type": "string", - "minLength": 1 + "minLength": 1, + "type": "string" }, "namespace": { - "type": "string", - "minLength": 1 + "minLength": 1, + "type": "string" } }, + "required": [ + "name", + "namespace" + ], + "type": "object", "additionalProperties": false }, "depth": { "type": "integer" } }, + "type": "object", "additionalProperties": false }, "hosts": { - "type": "array", - "minItems": 1, "items": { - "type": "string", - "pattern": "^\\*?[0-9a-zA-Z-.]+$" - } + "pattern": "^\\*?[0-9a-zA-Z-.]+$", + "type": "string" + }, + "minItems": 1, + "type": "array" }, "secret": { "description": "ApisixSecret describes the Kubernetes Secret name and namespace.", - "type": "object", - "required": [ - "name", - "namespace" - ], "properties": { "name": { - "type": "string", - "minLength": 1 + "minLength": 1, + "type": "string" }, "namespace": { - "type": "string", - "minLength": 1 + "minLength": 1, + "type": "string" } }, + "required": [ + "name", + "namespace" + ], + "type": "object", "additionalProperties": false } }, + "required": [ + "hosts", + "secret" + ], + "type": "object", "additionalProperties": false }, "status": { "description": "ApisixStatus is the status report for Apisix ingress Resources", - "type": "object", "properties": { "conditions": { - "type": "array", "items": { "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", - "type": "object", - "required": [ - "lastTransitionTime", - "message", - "reason", - "status", - "type" - ], "properties": { "lastTransitionTime": { "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", - "type": "string", - "format": "date-time" + "format": "date-time", + "type": "string" }, "message": { "description": "message is a human readable message indicating details about the transition. This may be an empty string.", - "type": "string", - "maxLength": 32768 + "maxLength": 32768, + "type": "string" }, "observedGeneration": { "description": "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.", - "type": "integer", "format": "int64", - "minimum": 0 + "minimum": 0, + "type": "integer" }, "reason": { "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.", - "type": "string", "maxLength": 1024, "minLength": 1, - "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" + "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", + "type": "string" }, "status": { "description": "status of the condition, one of True, False, Unknown.", - "type": "string", "enum": [ "True", "False", "Unknown" - ] + ], + "type": "string" }, "type": { "description": "type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", - "type": "string", "maxLength": 316, - "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$" + "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", + "type": "string" } }, + "required": [ + "lastTransitionTime", + "message", + "reason", + "status", + "type" + ], + "type": "object", "additionalProperties": false - } + }, + "type": "array" } }, + "type": "object", "additionalProperties": false } - } + }, + "type": "object" } diff --git a/apisix.apache.org/apisixupstream_v2.json b/apisix.apache.org/apisixupstream_v2.json index 6d1571f3..ded3c269 100644 --- a/apisix.apache.org/apisixupstream_v2.json +++ b/apisix.apache.org/apisixupstream_v2.json @@ -1,150 +1,48 @@ { - "type": "object", "properties": { "spec": { - "type": "object", "properties": { "discovery": { "description": "Discovery is used to configure service discovery for upstream", - "type": "object", "properties": { + "args": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, "serviceName": { "type": "string" }, "type": { "type": "string" - }, - "args": { - "type": "object", - "x-kubernetes-preserve-unknown-fields": true } }, + "type": "object", "additionalProperties": false }, "externalNodes": { "description": "ExternalNodes contains external nodes the Upstream should use If this field is set, the upstream will use these nodes directly without any further resolves", - "type": "array", "items": { "description": "ApisixUpstreamExternalNode is the external node conf", - "type": "object", "properties": { "name": { "type": "string" }, + "port": { + "type": "integer" + }, "type": { "type": "string" }, "weight": { "type": "integer" - }, - "port": { - "type": "integer" } }, - "additionalProperties": false - } - }, - "subsets": { - "type": "array", - "items": { "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "labels": { - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "required": [ - "name", - "labels" - ], "additionalProperties": false - } - }, - "loadbalancer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "roundrobin", - "chash", - "ewma", - "least_conn" - ] - }, - "hashOn": { - "type": "string", - "enum": [ - "vars", - "vars_combinations", - "header", - "cookie", - "consumer" - ] - }, - "key": { - "type": "string" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "scheme": { - "type": "string", - "enum": [ - "http", - "grpc", - "https", - "grpcs" - ] - }, - "retries": { - "type": "integer", - "minimum": 0 - }, - "timeout": { - "type": "object", - "properties": { - "connect": { - "type": "string" - }, - "read": { - "type": "string" - }, - "send": { - "type": "string" - } - }, - "additionalProperties": false - }, - "tlsSecret": { - "description": "ApisixSecret describes the Kubernetes Secret name and namespace.", - "type": "object", - "required": [ - "name", - "namespace" - ], - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "namespace": { - "type": "string", - "minLength": 1 - } }, - "additionalProperties": false + "type": "array" }, "healthCheck": { - "type": "object", "anyOf": [ { "required": [ @@ -160,244 +58,222 @@ ], "properties": { "active": { - "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "http", - "https", - "tcp" - ] - }, - "timeout": { - "type": "number", - "minimum": 0 - }, "concurrency": { - "type": "integer", - "minimum": 1 - }, - "host": { - "type": "string", - "pattern": "^\\*?[0-9a-zA-Z-._]+$" - }, - "port": { - "type": "integer", "minimum": 1, - "maximum": 65535 - }, - "httpPath": { - "type": "string", - "minLength": 1 - }, - "strictTLS": { - "type": "boolean" - }, - "requestHeaders": { - "type": "array", - "minItems": 1, - "items": { - "type": "string" - } + "type": "integer" }, "healthy": { - "type": "object", "properties": { - "interval": { - "type": "string" - }, "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" + }, + "interval": { + "type": "string" }, "successes": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" } }, + "type": "object", "additionalProperties": false }, + "host": { + "pattern": "^\\*?[0-9a-zA-Z-._]+$", + "type": "string" + }, + "httpPath": { + "minLength": 1, + "type": "string" + }, + "port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "requestHeaders": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "strictTLS": { + "type": "boolean" + }, + "timeout": { + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "http", + "https", + "tcp" + ], + "type": "string" + }, "unhealthy": { - "type": "object", "properties": { - "interval": { - "type": "string" - }, "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" }, "httpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" + }, + "interval": { + "type": "string" }, "tcpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" }, "timeouts": { - "type": "integer", - "minimum": 0 + "minimum": 0, + "type": "integer" } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false }, "passive": { - "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "http", - "https", - "tcp" - ] - }, "healthy": { - "type": "object", "properties": { "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" }, "successes": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" } }, + "type": "object", "additionalProperties": false }, + "type": { + "enum": [ + "http", + "https", + "tcp" + ], + "type": "string" + }, "unhealthy": { - "type": "object", "properties": { "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" }, "httpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" }, "tcpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" }, "timeouts": { - "type": "integer", - "minimum": 0 + "minimum": 0, + "type": "integer" } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false } }, + "type": "object", + "additionalProperties": false + }, + "ingressClassName": { + "type": "string" + }, + "loadbalancer": { + "properties": { + "hashOn": { + "enum": [ + "vars", + "vars_combinations", + "header", + "cookie", + "consumer" + ], + "type": "string" + }, + "key": { + "type": "string" + }, + "type": { + "enum": [ + "roundrobin", + "chash", + "ewma", + "least_conn" + ], + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object", "additionalProperties": false }, + "passHost": { + "enum": [ + "pass", + "node", + "rewrite" + ], + "type": "string" + }, "portLevelSettings": { - "type": "array", "items": { - "type": "object", "properties": { - "port": { - "type": "integer", - "minimum": 1, - "maximum": 65535 - }, - "loadbalancer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "roundrobin", - "chash", - "ewma", - "least_conn" - ] - }, - "hashOn": { - "type": "string", - "enum": [ - "vars", - "vars_combinations", - "header", - "cookie", - "consumer" - ] - }, - "key": { - "type": "string" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "scheme": { - "type": "string", - "enum": [ - "http", - "grpc" - ] - }, - "retries": { - "type": "integer", - "minimum": 0 - }, - "timeout": { - "type": "object", - "properties": { - "connect": { - "type": "string" - }, - "read": { - "type": "string" - }, - "send": { - "type": "string" - } - }, - "additionalProperties": false - }, - "healthCheck": { - "type": "object", - "anyOf": [ - { - "required": [ - "active" + "healthCheck": { + "anyOf": [ + { + "required": [ + "active" ] }, { @@ -409,175 +285,344 @@ ], "properties": { "active": { - "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "http", - "https", - "tcp" - ] - }, - "timeout": { - "type": "number", - "minimum": 0 - }, "concurrency": { - "type": "integer", - "minimum": 1 - }, - "host": { - "type": "string", - "pattern": "^\\*?[0-9a-zA-Z-._]+$" - }, - "port": { - "type": "integer", "minimum": 1, - "maximum": 65535 - }, - "httpPath": { - "type": "string", - "minLength": 1 - }, - "strictTLS": { - "type": "boolean" - }, - "requestHeaders": { - "type": "array", - "minItems": 1, - "items": { - "type": "string" - } + "type": "integer" }, "healthy": { - "type": "object", "properties": { - "interval": { - "type": "string" - }, "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" + }, + "interval": { + "type": "string" }, "successes": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" } }, + "type": "object", "additionalProperties": false }, + "host": { + "pattern": "^\\*?[0-9a-zA-Z-._]+$", + "type": "string" + }, + "httpPath": { + "minLength": 1, + "type": "string" + }, + "port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "requestHeaders": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "strictTLS": { + "type": "boolean" + }, + "timeout": { + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "http", + "https", + "tcp" + ], + "type": "string" + }, "unhealthy": { - "type": "object", "properties": { - "interval": { - "type": "string" - }, "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" }, "httpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" + }, + "interval": { + "type": "string" }, "tcpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" }, "timeout": { "type": "string" } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false }, "passive": { - "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "http", - "https", - "tcp" - ] - }, "healthy": { - "type": "object", "properties": { "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" }, "successes": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" } }, + "type": "object", "additionalProperties": false }, + "type": { + "enum": [ + "http", + "https", + "tcp" + ], + "type": "string" + }, "unhealthy": { - "type": "object", "properties": { "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" }, "httpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" }, "tcpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" }, "timeout": { "type": "string" } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false + }, + "loadbalancer": { + "properties": { + "hashOn": { + "enum": [ + "vars", + "vars_combinations", + "header", + "cookie", + "consumer" + ], + "type": "string" + }, + "key": { + "type": "string" + }, + "type": { + "enum": [ + "roundrobin", + "chash", + "ewma", + "least_conn" + ], + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object", + "additionalProperties": false + }, + "port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "retries": { + "minimum": 0, + "type": "integer" + }, + "scheme": { + "enum": [ + "http", + "grpc" + ], + "type": "string" + }, + "timeout": { + "properties": { + "connect": { + "type": "string" + }, + "read": { + "type": "string" + }, + "send": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "retries": { + "minimum": 0, + "type": "integer" + }, + "scheme": { + "enum": [ + "http", + "grpc", + "https", + "grpcs" + ], + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name", + "labels" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "timeout": { + "properties": { + "connect": { + "type": "string" + }, + "read": { + "type": "string" + }, + "send": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "tlsSecret": { + "description": "ApisixSecret describes the Kubernetes Secret name and namespace.", + "properties": { + "name": { + "minLength": 1, + "type": "string" + }, + "namespace": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object", + "additionalProperties": false + }, + "upstreamHost": { + "pattern": "^\\*?[0-9a-zA-Z-._]+$", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "status": { + "properties": { + "conditions": { + "items": { + "properties": { + "message": { + "type": "string" + }, + "observedGeneration": { + "type": "integer" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" } }, + "type": "object", "additionalProperties": false - } + }, + "type": "array" } }, + "type": "object", "additionalProperties": false } - } + }, + "type": "object" } diff --git a/apisix.apache.org/apisixupstream_v2beta3.json b/apisix.apache.org/apisixupstream_v2beta3.json index 194d94a2..e2417b4b 100644 --- a/apisix.apache.org/apisixupstream_v2beta3.json +++ b/apisix.apache.org/apisixupstream_v2beta3.json @@ -1,110 +1,8 @@ { - "type": "object", "properties": { "spec": { - "type": "object", "properties": { - "subsets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "labels": { - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "required": [ - "name", - "labels" - ], - "additionalProperties": false - } - }, - "loadbalancer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "roundrobin", - "chash", - "ewma", - "least_conn" - ] - }, - "hashOn": { - "type": "string", - "enum": [ - "vars", - "vars_combinations", - "header", - "cookie", - "consumer" - ] - }, - "key": { - "type": "string" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "scheme": { - "type": "string", - "enum": [ - "http", - "grpc", - "https", - "grpcs" - ] - }, - "retries": { - "type": "integer", - "minimum": 0 - }, - "timeout": { - "type": "object", - "properties": { - "connect": { - "type": "string" - }, - "read": { - "type": "string" - }, - "send": { - "type": "string" - } - }, - "additionalProperties": false - }, - "tlsSecret": { - "description": "ApisixSecret describes the Kubernetes Secret name and namespace.", - "type": "object", - "required": [ - "name", - "namespace" - ], - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "namespace": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, "healthCheck": { - "type": "object", "anyOf": [ { "required": [ @@ -120,240 +18,207 @@ ], "properties": { "active": { - "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "http", - "https", - "tcp" - ] - }, - "timeout": { - "type": "number", - "minimum": 0 - }, "concurrency": { - "type": "integer", - "minimum": 1 - }, - "host": { - "type": "string", - "pattern": "^\\*?[0-9a-zA-Z-._]+$" - }, - "port": { - "type": "integer", "minimum": 1, - "maximum": 65535 - }, - "httpPath": { - "type": "string", - "minLength": 1 - }, - "strictTLS": { - "type": "boolean" - }, - "requestHeaders": { - "type": "array", - "minItems": 1, - "items": { - "type": "string" - } + "type": "integer" }, "healthy": { - "type": "object", "properties": { - "interval": { - "type": "string" - }, "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" + }, + "interval": { + "type": "string" }, "successes": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" } }, + "type": "object", "additionalProperties": false }, + "host": { + "pattern": "^\\*?[0-9a-zA-Z-._]+$", + "type": "string" + }, + "httpPath": { + "minLength": 1, + "type": "string" + }, + "port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "requestHeaders": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "strictTLS": { + "type": "boolean" + }, + "timeout": { + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "http", + "https", + "tcp" + ], + "type": "string" + }, "unhealthy": { - "type": "object", "properties": { - "interval": { - "type": "string" - }, "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" }, "httpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" + }, + "interval": { + "type": "string" }, "tcpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" }, "timeouts": { - "type": "integer", - "minimum": 0 + "minimum": 0, + "type": "integer" } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false }, "passive": { - "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "http", - "https", - "tcp" - ] - }, "healthy": { - "type": "object", "properties": { "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" }, "successes": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" } }, + "type": "object", "additionalProperties": false }, + "type": { + "enum": [ + "http", + "https", + "tcp" + ], + "type": "string" + }, "unhealthy": { - "type": "object", "properties": { "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" }, "httpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" }, "tcpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" }, "timeouts": { - "type": "integer", - "minimum": 0 + "minimum": 0, + "type": "integer" } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false } }, + "type": "object", + "additionalProperties": false + }, + "loadbalancer": { + "properties": { + "hashOn": { + "enum": [ + "vars", + "vars_combinations", + "header", + "cookie", + "consumer" + ], + "type": "string" + }, + "key": { + "type": "string" + }, + "type": { + "enum": [ + "roundrobin", + "chash", + "ewma", + "least_conn" + ], + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object", "additionalProperties": false }, "portLevelSettings": { - "type": "array", "items": { - "type": "object", "properties": { - "port": { - "type": "integer", - "minimum": 1, - "maximum": 65535 - }, - "loadbalancer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "roundrobin", - "chash", - "ewma", - "least_conn" - ] - }, - "hashOn": { - "type": "string", - "enum": [ - "vars", - "vars_combinations", - "header", - "cookie", - "consumer" - ] - }, - "key": { - "type": "string" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "scheme": { - "type": "string", - "enum": [ - "http", - "grpc" - ] - }, - "retries": { - "type": "integer", - "minimum": 0 - }, - "timeout": { - "type": "object", - "properties": { - "connect": { - "type": "string" - }, - "read": { - "type": "string" - }, - "send": { - "type": "string" - } - }, - "additionalProperties": false - }, "healthCheck": { - "type": "object", "anyOf": [ { "required": [ @@ -369,175 +234,340 @@ ], "properties": { "active": { - "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "http", - "https", - "tcp" - ] - }, - "timeout": { - "type": "number", - "minimum": 0 - }, "concurrency": { - "type": "integer", - "minimum": 1 - }, - "host": { - "type": "string", - "pattern": "^\\*?[0-9a-zA-Z-._]+$" - }, - "port": { - "type": "integer", "minimum": 1, - "maximum": 65535 - }, - "httpPath": { - "type": "string", - "minLength": 1 - }, - "strictTLS": { - "type": "boolean" - }, - "requestHeaders": { - "type": "array", - "minItems": 1, - "items": { - "type": "string" - } + "type": "integer" }, "healthy": { - "type": "object", "properties": { - "interval": { - "type": "string" - }, "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" + }, + "interval": { + "type": "string" }, "successes": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" } }, + "type": "object", "additionalProperties": false }, + "host": { + "pattern": "^\\*?[0-9a-zA-Z-._]+$", + "type": "string" + }, + "httpPath": { + "minLength": 1, + "type": "string" + }, + "port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "requestHeaders": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "strictTLS": { + "type": "boolean" + }, + "timeout": { + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "http", + "https", + "tcp" + ], + "type": "string" + }, "unhealthy": { - "type": "object", "properties": { - "interval": { - "type": "string" - }, "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" }, "httpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" + }, + "interval": { + "type": "string" }, "tcpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" }, "timeout": { "type": "string" } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false }, "passive": { - "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "http", - "https", - "tcp" - ] - }, "healthy": { - "type": "object", "properties": { "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" }, "successes": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" } }, + "type": "object", "additionalProperties": false }, + "type": { + "enum": [ + "http", + "https", + "tcp" + ], + "type": "string" + }, "unhealthy": { - "type": "object", "properties": { "httpCodes": { - "type": "array", - "minItems": 1, "items": { - "type": "integer", + "maximum": 599, "minimum": 200, - "maximum": 599 - } + "type": "integer" + }, + "minItems": 1, + "type": "array" }, "httpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" }, "tcpFailures": { - "type": "integer", + "maximum": 254, "minimum": 1, - "maximum": 254 + "type": "integer" }, "timeout": { "type": "string" } }, + "type": "object", "additionalProperties": false } }, + "type": "object", "additionalProperties": false } }, + "type": "object", + "additionalProperties": false + }, + "loadbalancer": { + "properties": { + "hashOn": { + "enum": [ + "vars", + "vars_combinations", + "header", + "cookie", + "consumer" + ], + "type": "string" + }, + "key": { + "type": "string" + }, + "type": { + "enum": [ + "roundrobin", + "chash", + "ewma", + "least_conn" + ], + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object", + "additionalProperties": false + }, + "port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "retries": { + "minimum": 0, + "type": "integer" + }, + "scheme": { + "enum": [ + "http", + "grpc" + ], + "type": "string" + }, + "timeout": { + "properties": { + "connect": { + "type": "string" + }, + "read": { + "type": "string" + }, + "send": { + "type": "string" + } + }, + "type": "object", "additionalProperties": false } }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "retries": { + "minimum": 0, + "type": "integer" + }, + "scheme": { + "enum": [ + "http", + "grpc", + "https", + "grpcs" + ], + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name", + "labels" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "timeout": { + "properties": { + "connect": { + "type": "string" + }, + "read": { + "type": "string" + }, + "send": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "tlsSecret": { + "description": "ApisixSecret describes the Kubernetes Secret name and namespace.", + "properties": { + "name": { + "minLength": 1, + "type": "string" + }, + "namespace": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "status": { + "properties": { + "conditions": { + "items": { + "properties": { + "message": { + "type": "string" + }, + "observedGeneration": { + "type": "integer" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object", "additionalProperties": false - } + }, + "type": "array" } }, + "type": "object", "additionalProperties": false } - } + }, + "type": "object" }