{
  "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": {
        "PrefixListsIDs": {
          "description": "PrefixListsIDs defines the security group prefix lists for all Ingresses that belong to IngressClass with this IngressClassParams.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "certificateArn": {
          "description": "CertificateArn specifies the ARN 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.",
              "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"
        },
        "ipamConfiguration": {
          "description": "IPAMConfiguration defines the IPAM settings for a Load Balancer.",
          "properties": {
            "ipv4IPAMPoolId": {
              "description": "IPv4IPAMPoolId defines the IPAM pool ID used for IPv4 Addresses on the ALB.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "listeners": {
          "description": "Listeners define a list of listeners with their protocol, port and attributes.",
          "items": {
            "properties": {
              "listenerAttributes": {
                "description": "The attributes of the listener",
                "items": {
                  "description": "Attributes defines custom attributes on resources.",
                  "properties": {
                    "key": {
                      "description": "The key of the attribute.",
                      "type": "string"
                    },
                    "value": {
                      "description": "The value of the attribute.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "value"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "port": {
                "description": "The port of the listener",
                "format": "int32",
                "type": "integer"
              },
              "protocol": {
                "description": "The protocol of the listener",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "loadBalancerAttributes": {
          "description": "LoadBalancerAttributes define the custom attributes to LoadBalancers for all Ingress that that belong to IngressClass with this IngressClassParams.",
          "items": {
            "description": "Attributes defines custom attributes on resources.",
            "properties": {
              "key": {
                "description": "The key of the attribute.",
                "type": "string"
              },
              "value": {
                "description": "The value of the attribute.",
                "type": "string"
              }
            },
            "required": [
              "key",
              "value"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "minimumLoadBalancerCapacity": {
          "description": "MinimumLoadBalancerCapacity define the capacity reservation for LoadBalancers for all Ingress that belong to IngressClass with this IngressClassParams.",
          "properties": {
            "capacityUnits": {
              "description": "The Capacity Units Value.",
              "format": "int32",
              "type": "integer"
            }
          },
          "required": [
            "capacityUnits"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "namespaceSelector": {
          "description": "NamespaceSelector restrict the namespaces of Ingresses that are allowed to specify the IngressClass with this IngressClassParams.\n* if 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. Exactly one of this or `tags` must be specified.",
              "items": {
                "description": "SubnetID specifies a subnet ID.",
                "pattern": "subnet-[0-9a-f]+",
                "type": "string"
              },
              "minItems": 1,
              "type": "array"
            },
            "tags": {
              "additionalProperties": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "description": "Tags specifies subnets in the load balancer's VPC where each\ntag specified in the map key contains one of the values in the corresponding\nvalue list.\nExactly one of this or `ids` must be specified.",
              "type": "object"
            }
          },
          "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 a AWS Tag on resources.",
            "properties": {
              "key": {
                "description": "The key of the tag.",
                "type": "string"
              },
              "value": {
                "description": "The value of the tag.",
                "type": "string"
              }
            },
            "required": [
              "key",
              "value"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "targetType": {
          "description": "TargetType defines the target type of target groups for all Ingresses that belong to IngressClass with this IngressClassParams.",
          "enum": [
            "instance",
            "ip"
          ],
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
