{
  "description": "RateLimitService is the Schema for the ratelimitservices API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "RateLimitServiceSpec defines the desired state of RateLimitService",
      "properties": {
        "ambassador_id": {
          "description": "Common to all Ambassador objects.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "domain": {
          "type": "string"
        },
        "failure_mode_deny": {
          "description": "FailureModeDeny when set to true, envoy will deny traffic if it is unable to communicate with the rate limit service.",
          "type": "boolean"
        },
        "protocol_version": {
          "description": "ProtocolVersion is the envoy api transport protocol version",
          "enum": [
            "v2",
            "v3"
          ],
          "type": "string"
        },
        "service": {
          "type": "string"
        },
        "stats_name": {
          "type": "string"
        },
        "timeout_ms": {
          "description": "TODO(lukeshu): In v3alpha2, change all of the `{foo}_ms`/`MillisecondDuration` fields to `{foo}`/`metav1.Duration`.",
          "type": "integer"
        },
        "tls": {
          "type": "string"
        },
        "v2ExplicitTLS": {
          "description": "V2ExplicitTLS controls some vanity/stylistic elements when converting from v3alpha1 to v2.  The values in an V2ExplicitTLS should not in any way affect the runtime operation of Emissary; except that it may affect internal names in the Envoy config, which may in turn affect stats names.  But it should not affect any end-user observable behavior.",
          "properties": {
            "serviceScheme": {
              "description": "ServiceScheme specifies how to spell and capitalize the scheme-part of the service URL. \n Acceptable values are \"http://\" (case-insensitive), \"https://\" (case-insensitive), or \"\".  The value is used if it agrees with whether or not this resource enables TLS origination, or if something else in the resource overrides the scheme.",
              "pattern": "^([hH][tT][tT][pP][sS]?://)?$",
              "type": "string"
            },
            "tls": {
              "description": "TLS controls whether and how to represent the \"tls\" field when its value could be implied by the \"service\" field.  In v2, there were a lot of different ways to spell an \"empty\" value, and this field specifies which way to spell it (and will therefore only be used if the value will indeed be empty). \n  | Value        | Representation                        | Meaning of representation          |  |--------------+---------------------------------------+------------------------------------|  | \"\"           | omit the field                        | defer to service (no TLSContext)   |  | \"null\"       | store an explicit \"null\" in the field | defer to service (no TLSContext)   |  | \"string\"     | store an empty string in the field    | defer to service (no TLSContext)   |  | \"bool:false\" | store a Boolean \"false\" in the field  | defer to service (no TLSContext)   |  | \"bool:true\"  | store a Boolean \"true\" in the field   | originate TLS (no TLSContext)      | \n If the meaning of the representation contradicts anything else (if a TLSContext is to be used, or in the case of \"bool:true\" if TLS is not to be originated), then this field is ignored.",
              "enum": [
                "",
                "null",
                "bool:true",
                "bool:false",
                "string"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "service"
      ],
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
