{
  "properties": {
    "spec": {
      "properties": {
        "cachingServer": {
          "properties": {
            "allowedVaryHeaders": {
              "items": {
                "properties": {
                  "exact": {
                    "type": "string"
                  },
                  "ignoreCase": {
                    "type": "boolean"
                  },
                  "prefix": {
                    "type": "string"
                  },
                  "safeRegex": {
                    "properties": {
                      "googleRe2": {
                        "properties": {
                          "maxProgramSize": {
                            "maximum": 4294967295,
                            "minimum": 0,
                            "nullable": true,
                            "type": "integer"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "regex": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "suffix": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "cachingServiceRef": {
              "properties": {
                "name": {
                  "type": "string"
                },
                "namespace": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "maxPayloadSize": {
              "properties": {
                "value": {
                  "format": "int64",
                  "type": "integer",
                  "x-kubernetes-int-or-string": true
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "timeout": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "consoleOptions": {
          "properties": {
            "apiExplorerEnabled": {
              "nullable": true,
              "type": "boolean"
            },
            "readOnly": {
              "nullable": true,
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "consul": {
          "properties": {
            "address": {
              "type": "string"
            },
            "caFile": {
              "type": "string"
            },
            "caPath": {
              "type": "string"
            },
            "certFile": {
              "type": "string"
            },
            "datacenter": {
              "type": "string"
            },
            "dnsAddress": {
              "type": "string"
            },
            "dnsPollingInterval": {
              "type": "string"
            },
            "httpAddress": {
              "type": "string"
            },
            "insecureSkipVerify": {
              "nullable": true,
              "type": "boolean"
            },
            "keyFile": {
              "type": "string"
            },
            "password": {
              "type": "string"
            },
            "serviceDiscovery": {
              "properties": {
                "dataCenters": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "token": {
              "type": "string"
            },
            "username": {
              "type": "string"
            },
            "waitTime": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "consulDiscovery": {
          "properties": {
            "consistencyMode": {
              "type": "string",
              "x-kubernetes-int-or-string": true
            },
            "edsBlockingQueries": {
              "nullable": true,
              "type": "boolean"
            },
            "queryOptions": {
              "properties": {
                "useCache": {
                  "nullable": true,
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "rootCa": {
              "properties": {
                "name": {
                  "type": "string"
                },
                "namespace": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "serviceTagsAllowlist": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "splitTlsServices": {
              "type": "boolean"
            },
            "tlsTagName": {
              "type": "string"
            },
            "useTlsTagging": {
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "consulKvArtifactSource": {
          "properties": {
            "rootKey": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "consulKvSource": {
          "properties": {
            "rootKey": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "devMode": {
          "type": "boolean"
        },
        "directoryArtifactSource": {
          "properties": {
            "directory": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "directoryConfigSource": {
          "properties": {
            "directory": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "directorySecretSource": {
          "properties": {
            "directory": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "discovery": {
          "properties": {
            "fdsMode": {
              "type": "string",
              "x-kubernetes-int-or-string": true
            },
            "fdsOptions": {
              "properties": {
                "graphqlEnabled": {
                  "nullable": true,
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "udsOptions": {
              "properties": {
                "enabled": {
                  "nullable": true,
                  "type": "boolean"
                },
                "watchLabels": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "discoveryNamespace": {
          "type": "string"
        },
        "extauth": {
          "properties": {
            "clearRouteCache": {
              "type": "boolean"
            },
            "extauthzServerRef": {
              "properties": {
                "name": {
                  "type": "string"
                },
                "namespace": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "failureModeAllow": {
              "type": "boolean"
            },
            "grpcService": {
              "properties": {
                "authority": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "httpService": {
              "properties": {
                "pathPrefix": {
                  "type": "string"
                },
                "request": {
                  "properties": {
                    "allowedHeaders": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "allowedHeadersRegex": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "headersToAdd": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "response": {
                  "properties": {
                    "allowedClientHeaders": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "allowedUpstreamHeaders": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "allowedUpstreamHeadersToAppend": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "requestBody": {
              "properties": {
                "allowPartialMessage": {
                  "type": "boolean"
                },
                "maxRequestBytes": {
                  "format": "int32",
                  "type": "integer"
                },
                "packAsBytes": {
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "requestTimeout": {
              "type": "string"
            },
            "statPrefix": {
              "type": "string"
            },
            "statusOnError": {
              "format": "int32",
              "type": "integer"
            },
            "transportApiVersion": {
              "type": "string",
              "x-kubernetes-int-or-string": true
            },
            "userIdHeader": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "extensions": {
          "properties": {
            "configs": {
              "additionalProperties": {
                "type": "object",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "type": "object"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "gateway": {
          "properties": {
            "alwaysSortRouteTableRoutes": {
              "type": "boolean"
            },
            "compressedProxySpec": {
              "type": "boolean"
            },
            "enableGatewayController": {
              "nullable": true,
              "type": "boolean"
            },
            "isolateVirtualHostsBySslConfig": {
              "nullable": true,
              "type": "boolean"
            },
            "persistProxySpec": {
              "nullable": true,
              "type": "boolean"
            },
            "readGatewaysFromAllNamespaces": {
              "type": "boolean"
            },
            "validation": {
              "properties": {
                "allowWarnings": {
                  "nullable": true,
                  "type": "boolean"
                },
                "alwaysAccept": {
                  "nullable": true,
                  "type": "boolean"
                },
                "disableTransformationValidation": {
                  "nullable": true,
                  "type": "boolean"
                },
                "ignoreGlooValidationFailure": {
                  "type": "boolean"
                },
                "proxyValidationServerAddr": {
                  "type": "string"
                },
                "serverEnabled": {
                  "nullable": true,
                  "type": "boolean"
                },
                "validationServerGrpcMaxSizeBytes": {
                  "maximum": 2147483647,
                  "minimum": -2147483648,
                  "nullable": true,
                  "type": "integer"
                },
                "validationWebhookTlsCert": {
                  "type": "string"
                },
                "validationWebhookTlsKey": {
                  "type": "string"
                },
                "warnRouteShortCircuiting": {
                  "nullable": true,
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "validationServerAddr": {
              "type": "string"
            },
            "virtualServiceOptions": {
              "properties": {
                "oneWayTls": {
                  "nullable": true,
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "gloo": {
          "properties": {
            "awsOptions": {
              "properties": {
                "credentialRefreshDelay": {
                  "type": "string"
                },
                "enableCredentialsDiscovey": {
                  "type": "boolean"
                },
                "fallbackToFirstFunction": {
                  "nullable": true,
                  "type": "boolean"
                },
                "propagateOriginalRouting": {
                  "nullable": true,
                  "type": "boolean"
                },
                "serviceAccountCredentials": {
                  "properties": {
                    "cluster": {
                      "type": "string"
                    },
                    "timeout": {
                      "type": "string"
                    },
                    "uri": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "circuitBreakers": {
              "properties": {
                "maxConnections": {
                  "maximum": 4294967295,
                  "minimum": 0,
                  "nullable": true,
                  "type": "integer"
                },
                "maxPendingRequests": {
                  "maximum": 4294967295,
                  "minimum": 0,
                  "nullable": true,
                  "type": "integer"
                },
                "maxRequests": {
                  "maximum": 4294967295,
                  "minimum": 0,
                  "nullable": true,
                  "type": "integer"
                },
                "maxRetries": {
                  "maximum": 4294967295,
                  "minimum": 0,
                  "nullable": true,
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "disableGrpcWeb": {
              "nullable": true,
              "type": "boolean"
            },
            "disableKubernetesDestinations": {
              "type": "boolean"
            },
            "disableProxyGarbageCollection": {
              "nullable": true,
              "type": "boolean"
            },
            "enableRestEds": {
              "nullable": true,
              "type": "boolean"
            },
            "endpointsWarmingTimeout": {
              "type": "string"
            },
            "failoverUpstreamDnsPollingInterval": {
              "type": "string"
            },
            "invalidConfigPolicy": {
              "properties": {
                "invalidRouteResponseBody": {
                  "type": "string"
                },
                "invalidRouteResponseCode": {
                  "format": "int32",
                  "type": "integer"
                },
                "replaceInvalidRoutes": {
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "proxyDebugBindAddr": {
              "type": "string"
            },
            "regexMaxProgramSize": {
              "maximum": 4294967295,
              "minimum": 0,
              "nullable": true,
              "type": "integer"
            },
            "removeUnusedFilters": {
              "nullable": true,
              "type": "boolean"
            },
            "restXdsBindAddr": {
              "type": "string"
            },
            "validationBindAddr": {
              "type": "string"
            },
            "xdsBindAddr": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "graphqlOptions": {
          "properties": {
            "schemaChangeValidationOptions": {
              "properties": {
                "processingRules": {
                  "items": {
                    "type": "string",
                    "x-kubernetes-int-or-string": true
                  },
                  "type": "array"
                },
                "rejectBreakingChanges": {
                  "nullable": true,
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "knative": {
          "properties": {
            "clusterIngressProxyAddress": {
              "type": "string"
            },
            "knativeExternalProxyAddress": {
              "type": "string"
            },
            "knativeInternalProxyAddress": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "kubernetes": {
          "properties": {
            "rateLimits": {
              "properties": {
                "QPS": {
                  "type": "number"
                },
                "burst": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "kubernetesArtifactSource": {
          "type": "object"
        },
        "kubernetesConfigSource": {
          "type": "object"
        },
        "kubernetesSecretSource": {
          "type": "object"
        },
        "linkerd": {
          "type": "boolean"
        },
        "namedExtauth": {
          "additionalProperties": {
            "properties": {
              "clearRouteCache": {
                "type": "boolean"
              },
              "extauthzServerRef": {
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "namespace": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "failureModeAllow": {
                "type": "boolean"
              },
              "grpcService": {
                "properties": {
                  "authority": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "httpService": {
                "properties": {
                  "pathPrefix": {
                    "type": "string"
                  },
                  "request": {
                    "properties": {
                      "allowedHeaders": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "allowedHeadersRegex": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "headersToAdd": {
                        "additionalProperties": {
                          "type": "string"
                        },
                        "type": "object"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "response": {
                    "properties": {
                      "allowedClientHeaders": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "allowedUpstreamHeaders": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "allowedUpstreamHeadersToAppend": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "requestBody": {
                "properties": {
                  "allowPartialMessage": {
                    "type": "boolean"
                  },
                  "maxRequestBytes": {
                    "format": "int32",
                    "type": "integer"
                  },
                  "packAsBytes": {
                    "type": "boolean"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "requestTimeout": {
                "type": "string"
              },
              "statPrefix": {
                "type": "string"
              },
              "statusOnError": {
                "format": "int32",
                "type": "integer"
              },
              "transportApiVersion": {
                "type": "string",
                "x-kubernetes-int-or-string": true
              },
              "userIdHeader": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "object"
        },
        "namespacedStatuses": {
          "properties": {
            "statuses": {
              "additionalProperties": {
                "type": "object",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "type": "object"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "observabilityOptions": {
          "properties": {
            "configStatusMetricLabels": {
              "additionalProperties": {
                "properties": {
                  "labelToPath": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "type": "object"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "object"
            },
            "grafanaIntegration": {
              "properties": {
                "defaultDashboardFolderId": {
                  "maximum": 4294967295,
                  "minimum": 0,
                  "nullable": true,
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "ratelimit": {
          "properties": {
            "descriptors": {
              "items": {
                "type": "object",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "type": "array"
            },
            "setDescriptors": {
              "items": {
                "properties": {
                  "alwaysApply": {
                    "type": "boolean"
                  },
                  "rateLimit": {
                    "properties": {
                      "requestsPerUnit": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "unit": {
                        "type": "string",
                        "x-kubernetes-int-or-string": true
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "simpleDescriptors": {
                    "items": {
                      "properties": {
                        "key": {
                          "type": "string"
                        },
                        "value": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "ratelimitServer": {
          "properties": {
            "denyOnFail": {
              "type": "boolean"
            },
            "enableXRatelimitHeaders": {
              "type": "boolean"
            },
            "rateLimitBeforeAuth": {
              "type": "boolean"
            },
            "ratelimitServerRef": {
              "properties": {
                "name": {
                  "type": "string"
                },
                "namespace": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "requestTimeout": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "rbac": {
          "properties": {
            "requireRbac": {
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "refreshRate": {
          "type": "string"
        },
        "upstreamOptions": {
          "properties": {
            "globalAnnotations": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "sslParameters": {
              "properties": {
                "cipherSuites": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "ecdhCurves": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "maximumProtocolVersion": {
                  "type": "string",
                  "x-kubernetes-int-or-string": true
                },
                "minimumProtocolVersion": {
                  "type": "string",
                  "x-kubernetes-int-or-string": true
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "vaultSecretSource": {
          "properties": {
            "address": {
              "type": "string"
            },
            "caCert": {
              "type": "string"
            },
            "caPath": {
              "type": "string"
            },
            "clientCert": {
              "type": "string"
            },
            "clientKey": {
              "type": "string"
            },
            "insecure": {
              "nullable": true,
              "type": "boolean"
            },
            "pathPrefix": {
              "type": "string"
            },
            "rootKey": {
              "type": "string"
            },
            "tlsServerName": {
              "type": "string"
            },
            "token": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "watchNamespaces": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "default": {},
      "properties": {
        "statuses": {
          "default": {},
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true
        }
      },
      "type": "object",
      "x-kubernetes-preserve-unknown-fields": true,
      "additionalProperties": false
    }
  },
  "type": "object"
}
