{
  "description": "IngressClassParams is the Schema for the IngressClassParams API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "IngressClassParamsSpec defines the desired state of IngressClassParams",
      "properties": {
        "certificateARNs": {
          "description": "CertificateARNs specifies ARNs of the certificates for all Ingresses that belong to IngressClass with this IngressClassParams.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "group": {
          "description": "Group defines the IngressGroup for all Ingresses that belong to IngressClass with this IngressClassParams.",
          "properties": {
            "name": {
              "description": "Name is the name of IngressGroup.",
              "maxLength": 63,
              "minLength": 1,
              "pattern": "^([a-z0-9][-a-z0-9.]*)?[a-z0-9]$",
              "type": "string"
            }
          },
          "required": [
            "name"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "inboundCIDRs": {
          "description": "InboundCIDRs specifies the CIDRs that are allowed to access the Ingresses that belong to IngressClass with this IngressClassParams.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "ipAddressType": {
          "description": "IPAddressType defines the ip address type for all Ingresses that belong to IngressClass with this IngressClassParams.",
          "enum": [
            "ipv4",
            "dualstack",
            "dualstack-without-public-ipv4"
          ],
          "type": "string"
        },
        "listeners": {
          "description": "Listeners define a list of listeners with their protocol, port and attributes.",
          "items": {
            "description": "Listener defines listeners settings for load balancers",
            "properties": {
              "attributes": {
                "description": "The attributes of the listener",
                "items": {
                  "description": "ListenerAttribute defines attributes on listeners",
                  "properties": {
                    "key": {
                      "description": "The key of the attribute.",
                      "maxLength": 256,
                      "minLength": 1,
                      "type": "string"
                    },
                    "value": {
                      "description": "The value of the attribute.",
                      "maxLength": 1024,
                      "minLength": 0,
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "value"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "port": {
                "description": "The port of the listener",
                "format": "int32",
                "maximum": 65535,
                "minimum": 1,
                "type": "integer"
              },
              "protocol": {
                "description": "The protocol of the listener",
                "enum": [
                  "HTTP",
                  "HTTPS"
                ],
                "type": "string"
              }
            },
            "required": [
              "port",
              "protocol"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "loadBalancerAttributes": {
          "description": "LoadBalancerAttributes define the custom attributes to LoadBalancers for all Ingress that belong to IngressClass with this IngressClassParams.",
          "items": {
            "description": "LoadBalancerAttribute defines attributes on load balancer",
            "properties": {
              "key": {
                "description": "The key of the attribute.",
                "maxLength": 256,
                "minLength": 1,
                "type": "string"
              },
              "value": {
                "description": "The value of the attribute.",
                "maxLength": 1024,
                "minLength": 0,
                "type": "string"
              }
            },
            "required": [
              "key",
              "value"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "namespaceSelector": {
          "description": "NamespaceSelector restrict the namespaces of Ingresses that are allowed to specify the IngressClass with this IngressClassParams.\nIf absent or present but empty, it selects all namespaces.",
          "properties": {
            "matchExpressions": {
              "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
              "items": {
                "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.",
                "properties": {
                  "key": {
                    "description": "key is the label key that the selector applies to.",
                    "type": "string"
                  },
                  "operator": {
                    "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.",
                    "type": "string"
                  },
                  "values": {
                    "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array",
                    "x-kubernetes-list-type": "atomic"
                  }
                },
                "required": [
                  "key",
                  "operator"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array",
              "x-kubernetes-list-type": "atomic"
            },
            "matchLabels": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
              "type": "object"
            }
          },
          "type": "object",
          "x-kubernetes-map-type": "atomic",
          "additionalProperties": false
        },
        "scheme": {
          "description": "Scheme defines the scheme for all Ingresses that belong to IngressClass with this IngressClassParams.",
          "enum": [
            "internal",
            "internet-facing"
          ],
          "type": "string"
        },
        "sslPolicy": {
          "description": "SSLPolicy specifies the SSL Policy for all Ingresses that belong to IngressClass with this IngressClassParams.",
          "type": "string"
        },
        "subnets": {
          "description": "Subnets defines the subnets for all Ingresses that belong to IngressClass with this IngressClassParams.",
          "properties": {
            "ids": {
              "description": "ids specify the resource IDs of subnets within the load balancer's VPC\nMust specify exactly one of `ids` or `matchTags`\"",
              "items": {
                "pattern": "^subnet-[0-9a-f]+$",
                "type": "string"
              },
              "type": "array"
            },
            "matchTags": {
              "description": "matchTags specify the tag requirements of subnets within the load balancer's VPC.\nMust specify exactly one of `ids` or `matchTags`\"",
              "items": {
                "description": "TagSelectorRequirement is the tag requirement to select subnets by tags",
                "properties": {
                  "key": {
                    "description": "key is the tag key that the selector applies to.",
                    "maxLength": 128,
                    "minLength": 1,
                    "type": "string"
                  },
                  "values": {
                    "description": "values is an array of string values.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "key"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tags": {
          "description": "Tags defines list of Tags on AWS resources provisioned for Ingresses that belong to IngressClass with this IngressClassParams.",
          "items": {
            "description": "Tag defines an AWS Tag assigned to resources.",
            "properties": {
              "key": {
                "description": "The key of the tag.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "value": {
                "description": "The value of the tag.",
                "maxLength": 256,
                "minLength": 0,
                "type": "string"
              }
            },
            "required": [
              "key",
              "value"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
