{
  "properties": {
    "spec": {
      "description": "Spec is the custom resource spec",
      "properties": {
        "dstOverrides": {
          "items": {
            "description": "WeightedDst is a weighted alternate destination.",
            "properties": {
              "authority": {
                "type": "string"
              },
              "weight": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  }
                ],
                "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                "x-kubernetes-int-or-string": true
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "required": [
            "authority",
            "weight"
          ],
          "type": "array"
        },
        "opaquePorts": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "retryBudget": {
          "description": "RetryBudget describes the maximum number of retries that should be issued to this service.",
          "properties": {
            "minRetriesPerSecond": {
              "format": "int32",
              "type": "integer"
            },
            "retryRatio": {
              "format": "float",
              "type": "number"
            },
            "ttl": {
              "type": "string"
            }
          },
          "required": [
            "minRetriesPerSecond",
            "retryRatio",
            "ttl"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "routes": {
          "items": {
            "description": "RouteSpec specifies a Route resource.",
            "properties": {
              "condition": {
                "description": "RequestMatch describes the conditions under which to match a Route.",
                "properties": {
                  "all": {
                    "items": {
                      "type": "object",
                      "x-kubernetes-preserve-unknown-fields": true
                    },
                    "type": "array"
                  },
                  "any": {
                    "items": {
                      "type": "object",
                      "x-kubernetes-preserve-unknown-fields": true
                    },
                    "type": "array"
                  },
                  "method": {
                    "type": "string"
                  },
                  "not": {
                    "items": {
                      "type": "object",
                      "x-kubernetes-preserve-unknown-fields": true
                    },
                    "type": "array"
                  },
                  "pathRegex": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "isRetryable": {
                "type": "boolean"
              },
              "name": {
                "type": "string"
              },
              "responseClasses": {
                "items": {
                  "description": "ResponseClass describes how to classify a response (e.g. success or failures).",
                  "properties": {
                    "condition": {
                      "description": "ResponseMatch describes the conditions under which to classify a response.",
                      "properties": {
                        "all": {
                          "items": {
                            "type": "object",
                            "x-kubernetes-preserve-unknown-fields": true
                          },
                          "type": "array"
                        },
                        "any": {
                          "items": {
                            "type": "object",
                            "x-kubernetes-preserve-unknown-fields": true
                          },
                          "type": "array"
                        },
                        "not": {
                          "items": {
                            "type": "object",
                            "x-kubernetes-preserve-unknown-fields": true
                          },
                          "type": "array"
                        },
                        "status": {
                          "description": "Range describes a range of integers (e.g. status codes).",
                          "properties": {
                            "max": {
                              "format": "int32",
                              "type": "integer"
                            },
                            "min": {
                              "format": "int32",
                              "type": "integer"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "isFailure": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "condition"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "timeout": {
                "type": "string"
              }
            },
            "required": [
              "condition",
              "name"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        }
      },
      "required": [
        "routes"
      ],
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
