{
  "description": "HTTPScaledObject is the Schema for the httpscaledobjects 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",
        "null"
      ]
    },
    "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",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "description": "HTTPScaledObjectSpec defines the desired state of HTTPScaledObject",
      "properties": {
        "hosts": {
          "description": "The hosts to route. All requests which the \"Host\" header matches any .spec.hosts and the Request Target matches any .spec.pathPrefixes will be routed to the Service and Port specified in the scaleTargetRef. The .spec.hosts field is mutually exclusive with the .spec.host field.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "pathPrefixes": {
          "description": "(optional) The paths to route. All requests which the Request Target matches any .spec.pathPrefixes and the \"Host\" header matches any .spec.hosts will be routed to the Service and Port specified in the scaleTargetRef. The .spec.hosts field is mutually exclusive with the .spec.host field. When this field is null, any path is matched.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "replicas": {
          "additionalProperties": false,
          "description": "(optional) Replica information",
          "properties": {
            "max": {
              "description": "Maximum amount of replicas to have in the deployment (Default 100)",
              "format": "int32",
              "type": [
                "integer",
                "null"
              ]
            },
            "min": {
              "description": "Minimum amount of replicas to have in the deployment (Default 0)",
              "format": "int32",
              "type": [
                "integer",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "scaleTargetRef": {
          "additionalProperties": false,
          "description": "The name of the deployment to route HTTP requests to (and to autoscale).",
          "properties": {
            "apiVersion": {
              "type": [
                "string",
                "null"
              ]
            },
            "deployment": {
              "description": "Deprecated: The name of the deployment to scale according to HTTP traffic",
              "type": [
                "string",
                "null"
              ]
            },
            "kind": {
              "type": [
                "string",
                "null"
              ]
            },
            "name": {
              "type": [
                "string",
                "null"
              ]
            },
            "port": {
              "description": "The port to route to",
              "format": "int32",
              "type": "integer"
            },
            "service": {
              "description": "The name of the service to route to",
              "type": "string"
            }
          },
          "required": [
            "port",
            "service"
          ],
          "type": "object"
        },
        "scaledownPeriod": {
          "description": "(optional) Cooldown period value",
          "format": "int32",
          "type": [
            "integer",
            "null"
          ]
        },
        "targetPendingRequests": {
          "description": "(optional) Target metric value",
          "format": "int32",
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "required": [
        "scaleTargetRef"
      ],
      "type": [
        "object",
        "null"
      ]
    },
    "status": {
      "additionalProperties": false,
      "description": "HTTPScaledObjectStatus defines the observed state of HTTPScaledObject",
      "properties": {
        "conditions": {
          "description": "Conditions of the operator",
          "items": {
            "additionalProperties": false,
            "description": "HTTPScaledObjectCondition stores the condition state",
            "properties": {
              "message": {
                "description": "Message indicating details about the transition.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "reason": {
                "description": "Reason for the condition's last transition.",
                "enum": [
                  "ErrorCreatingAppScaledObject",
                  "AppScaledObjectCreated",
                  "TerminatingResources",
                  "AppScaledObjectTerminated",
                  "AppScaledObjectTerminationError",
                  "PendingCreation",
                  "HTTPScaledObjectIsReady"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "timestamp": {
                "description": "Timestamp of the condition",
                "type": [
                  "string",
                  "null"
                ]
              },
              "type": {
                "description": "Type of condition",
                "enum": [
                  "Created",
                  "Terminated",
                  "Error",
                  "Pending",
                  "Terminating",
                  "Unknown",
                  "Ready"
                ],
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "targetService": {
          "description": "TargetService reflects details about the scaled service.",
          "type": [
            "string",
            "null"
          ]
        },
        "targetWorkload": {
          "description": "TargetWorkload reflects details about the scaled workload.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}