{
  "description": "LBTargetGroup is the Schema for the LBTargetGroups API. Provides a Target Group resource for use with Load Balancers.",
  "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": "LBTargetGroupSpec defines the desired state of LBTargetGroup",
      "properties": {
        "forProvider": {
          "properties": {
            "connectionTermination": {
              "description": "Whether to terminate connections at the end of the deregistration timeout on Network Load Balancers. See doc for more information. Default is false.",
              "type": "boolean"
            },
            "deregistrationDelay": {
              "description": "Amount time for Elastic Load Balancing to wait before changing the state of a deregistering target from draining to unused. The range is 0-3600 seconds. The default value is 300 seconds.",
              "type": "string"
            },
            "healthCheck": {
              "description": "Health Check configuration block. Detailed below.",
              "properties": {
                "enabled": {
                  "description": "Whether health checks are enabled. Defaults to true.",
                  "type": "boolean"
                },
                "healthyThreshold": {
                  "description": "Number of consecutive health check successes required before considering a target healthy. The range is 2-10. Defaults to 3.",
                  "type": "number"
                },
                "interval": {
                  "description": "Approximate amount of time, in seconds, between health checks of an individual target. The range is 5-300. For lambda target groups, it needs to be greater than the timeout of the underlying lambda. Defaults to 30.",
                  "type": "number"
                },
                "matcher": {
                  "description": "separated individual values (e.g., \"200,202\") or a range of values (e.g., \"200-299\").",
                  "type": "string"
                },
                "path": {
                  "description": "(May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS.",
                  "type": "string"
                },
                "port": {
                  "description": "The port the load balancer uses when performing health checks on targets.\nValid values are either traffic-port, to use the same port as the target group, or a valid port number between 1 and 65536.\nDefault is traffic-port.",
                  "type": "string"
                },
                "protocol": {
                  "description": "Protocol the load balancer uses when performing health checks on targets.\nMust be one of TCP, HTTP, or HTTPS.\nThe TCP protocol is not supported for health checks if the protocol of the target group is HTTP or HTTPS.\nDefault is HTTP.\nCannot be specified when the target_type is lambda.",
                  "type": "string"
                },
                "timeout": {
                  "description": "Amount of time, in seconds, during which no response from a target means a failed health check. The range is 2\u2013120 seconds. For target groups with a protocol of HTTP, the default is 6 seconds. For target groups with a protocol of TCP, TLS or HTTPS, the default is 10 seconds. For target groups with a protocol of GENEVE, the default is 5 seconds. If the target type is lambda, the default is 30 seconds.",
                  "type": "number"
                },
                "unhealthyThreshold": {
                  "description": "Number of consecutive health check failures required before considering a target unhealthy. The range is 2-10. Defaults to 3.",
                  "type": "number"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "ipAddressType": {
              "description": "The type of IP addresses used by the target group, only supported when target type is set to ip. Possible values are ipv4 or ipv6.",
              "type": "string"
            },
            "lambdaMultiValueHeadersEnabled": {
              "description": "Whether the request and response headers exchanged between the load balancer and the Lambda function include arrays of values or strings. Only applies when target_type is lambda. Default is false.",
              "type": "boolean"
            },
            "loadBalancingAlgorithmType": {
              "description": "Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is round_robin, least_outstanding_requests, or weighted_random. The default is round_robin.",
              "type": "string"
            },
            "loadBalancingAnomalyMitigation": {
              "description": "Determines whether to enable target anomaly mitigation.  Target anomaly mitigation is only supported by the weighted_random load balancing algorithm type.  See doc for more information.  The value is \"on\" or \"off\". The default is \"off\".",
              "type": "string"
            },
            "loadBalancingCrossZoneEnabled": {
              "description": "Indicates whether cross zone load balancing is enabled. The value is \"true\", \"false\" or \"use_load_balancer_configuration\". The default is \"use_load_balancer_configuration\".",
              "type": "string"
            },
            "name": {
              "description": "Name of the target group. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen.",
              "type": "string"
            },
            "port": {
              "description": "(May be required, Forces new resource) Port on which targets receive traffic, unless overridden when registering a specific target. Required when target_type is instance, ip or alb. Does not apply when target_type is lambda.",
              "type": "number"
            },
            "preserveClientIp": {
              "description": "Whether client IP preservation is enabled. See doc for more information.",
              "type": "string"
            },
            "protocol": {
              "description": "(May be required, Forces new resource) Protocol to use for routing traffic to the targets.\nShould be one of GENEVE, HTTP, HTTPS, TCP, TCP_UDP, TLS, or UDP.\nRequired when target_type is instance, ip, or alb.\nDoes not apply when target_type is lambda.",
              "type": "string"
            },
            "protocolVersion": {
              "description": "Only applicable when protocol is HTTP or HTTPS. The protocol version. Specify GRPC to send requests to targets using gRPC. Specify HTTP2 to send requests to targets using HTTP/2. The default is HTTP1, which sends requests to targets using HTTP/1.1",
              "type": "string"
            },
            "proxyProtocolV2": {
              "description": "Whether to enable support for proxy protocol v2 on Network Load Balancers. See doc for more information. Default is false.",
              "type": "boolean"
            },
            "region": {
              "description": "Region where this resource will be managed. Defaults to the Region set in the provider configuration.\nRegion is the region you'd like your resource to be created in.",
              "type": "string"
            },
            "slowStart": {
              "description": "Amount time for targets to warm up before the load balancer sends them a full share of requests. The range is 30-900 seconds or 0 to disable. The default value is 0 seconds.",
              "type": "number"
            },
            "stickiness": {
              "description": "Stickiness configuration block. Detailed below.",
              "properties": {
                "cookieDuration": {
                  "description": "Only used when the type is lb_cookie. The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds).",
                  "type": "number"
                },
                "cookieName": {
                  "description": "Name of the application based cookie. AWSALB, AWSALBAPP, and AWSALBTG prefixes are reserved and cannot be used. Only needed when type is app_cookie.",
                  "type": "string"
                },
                "enabled": {
                  "description": "Whether health checks are enabled. Defaults to true.",
                  "type": "boolean"
                },
                "type": {
                  "description": "The type of sticky sessions. The only current possible values are lb_cookie, app_cookie for ALBs, source_ip for NLBs, and source_ip_dest_ip, source_ip_dest_ip_proto for GWLBs.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "tags": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Key-value map of resource tags.",
              "type": "object",
              "x-kubernetes-map-type": "granular"
            },
            "targetFailover": {
              "description": "Target failover block. Only applicable for Gateway Load Balancer target groups. See target_failover for more information.",
              "items": {
                "properties": {
                  "onDeregistration": {
                    "description": "Indicates how the GWLB handles existing flows when a target is deregistered. Possible values are rebalance and no_rebalance. Must match the attribute value set for on_unhealthy. Default: no_rebalance.",
                    "type": "string"
                  },
                  "onUnhealthy": {
                    "description": "Indicates how the GWLB handles existing flows when a target is unhealthy. Possible values are rebalance and no_rebalance. Must match the attribute value set for on_deregistration. Default: no_rebalance.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "targetGroupHealth": {
              "description": "Target health requirements block. See target_group_health for more information.",
              "properties": {
                "dnsFailover": {
                  "description": "Block to configure DNS Failover requirements. See DNS Failover below for details on attributes.",
                  "properties": {
                    "minimumHealthyTargetsCount": {
                      "description": "The minimum number of targets that must be healthy. If the number of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are off or an integer from 1 to the maximum number of targets. The default is off.",
                      "type": "string"
                    },
                    "minimumHealthyTargetsPercentage": {
                      "description": "The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are off or an integer from 1 to 100. The default is off.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "unhealthyStateRouting": {
                  "description": "Block to configure Unhealthy State Routing requirements. See Unhealthy State Routing below for details on attributes.",
                  "properties": {
                    "minimumHealthyTargetsCount": {
                      "description": "The minimum number of targets that must be healthy. If the number of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are 1 to the maximum number of targets. The default is 1.",
                      "type": "number"
                    },
                    "minimumHealthyTargetsPercentage": {
                      "description": "The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are off or an integer from 1 to 100. The default is off.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "targetHealthState": {
              "description": "Target health state block. Only applicable for Network Load Balancer target groups when protocol is TCP or TLS. See target_health_state for more information.",
              "items": {
                "properties": {
                  "enableUnhealthyConnectionTermination": {
                    "description": "Indicates whether the load balancer terminates connections to unhealthy targets. Possible values are true or false. Default: true.",
                    "type": "boolean"
                  },
                  "unhealthyDrainingInterval": {
                    "description": "Indicates the time to wait for in-flight requests to complete when a target becomes unhealthy. The range is 0-360000. This value has to be set only if enable_unhealthy_connection_termination is set to false. Default: 0.",
                    "type": "number"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "targetType": {
              "description": "Type of target that you must specify when registering targets with this target group.\nSee doc for supported values.\nThe default is instance.",
              "type": "string"
            },
            "vpcId": {
              "description": "Identifier of the VPC in which to create the target group. Required when target_type is instance, ip or alb. Does not apply when target_type is lambda.",
              "type": "string"
            },
            "vpcIdRef": {
              "description": "Reference to a VPC in ec2 to populate vpcId.",
              "properties": {
                "name": {
                  "description": "Name of the referenced object.",
                  "type": "string"
                },
                "namespace": {
                  "description": "Namespace of the referenced object",
                  "type": "string"
                },
                "policy": {
                  "description": "Policies for referencing.",
                  "properties": {
                    "resolution": {
                      "default": "Required",
                      "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                      "enum": [
                        "Required",
                        "Optional"
                      ],
                      "type": "string"
                    },
                    "resolve": {
                      "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                      "enum": [
                        "Always",
                        "IfNotPresent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "required": [
                "name"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "vpcIdSelector": {
              "description": "Selector for a VPC in ec2 to populate vpcId.",
              "properties": {
                "matchControllerRef": {
                  "description": "MatchControllerRef ensures an object with the same controller reference\nas the selecting object is selected.",
                  "type": "boolean"
                },
                "matchLabels": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "MatchLabels ensures an object with matching labels is selected.",
                  "type": "object"
                },
                "namespace": {
                  "description": "Namespace for the selector",
                  "type": "string"
                },
                "policy": {
                  "description": "Policies for selection.",
                  "properties": {
                    "resolution": {
                      "default": "Required",
                      "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                      "enum": [
                        "Required",
                        "Optional"
                      ],
                      "type": "string"
                    },
                    "resolve": {
                      "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                      "enum": [
                        "Always",
                        "IfNotPresent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "required": [
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "initProvider": {
          "description": "THIS IS A BETA FIELD. It will be honored\nunless the Management Policies feature flag is disabled.\nInitProvider holds the same fields as ForProvider, with the exception\nof Identifier and other resource reference fields. The fields that are\nin InitProvider are merged into ForProvider when the resource is created.\nThe same fields are also added to the terraform ignore_changes hook, to\navoid updating them after creation. This is useful for fields that are\nrequired on creation, but we do not desire to update them after creation,\nfor example because of an external controller is managing them, like an\nautoscaler.",
          "properties": {
            "connectionTermination": {
              "description": "Whether to terminate connections at the end of the deregistration timeout on Network Load Balancers. See doc for more information. Default is false.",
              "type": "boolean"
            },
            "deregistrationDelay": {
              "description": "Amount time for Elastic Load Balancing to wait before changing the state of a deregistering target from draining to unused. The range is 0-3600 seconds. The default value is 300 seconds.",
              "type": "string"
            },
            "healthCheck": {
              "description": "Health Check configuration block. Detailed below.",
              "properties": {
                "enabled": {
                  "description": "Whether health checks are enabled. Defaults to true.",
                  "type": "boolean"
                },
                "healthyThreshold": {
                  "description": "Number of consecutive health check successes required before considering a target healthy. The range is 2-10. Defaults to 3.",
                  "type": "number"
                },
                "interval": {
                  "description": "Approximate amount of time, in seconds, between health checks of an individual target. The range is 5-300. For lambda target groups, it needs to be greater than the timeout of the underlying lambda. Defaults to 30.",
                  "type": "number"
                },
                "matcher": {
                  "description": "separated individual values (e.g., \"200,202\") or a range of values (e.g., \"200-299\").",
                  "type": "string"
                },
                "path": {
                  "description": "(May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS.",
                  "type": "string"
                },
                "port": {
                  "description": "The port the load balancer uses when performing health checks on targets.\nValid values are either traffic-port, to use the same port as the target group, or a valid port number between 1 and 65536.\nDefault is traffic-port.",
                  "type": "string"
                },
                "protocol": {
                  "description": "Protocol the load balancer uses when performing health checks on targets.\nMust be one of TCP, HTTP, or HTTPS.\nThe TCP protocol is not supported for health checks if the protocol of the target group is HTTP or HTTPS.\nDefault is HTTP.\nCannot be specified when the target_type is lambda.",
                  "type": "string"
                },
                "timeout": {
                  "description": "Amount of time, in seconds, during which no response from a target means a failed health check. The range is 2\u2013120 seconds. For target groups with a protocol of HTTP, the default is 6 seconds. For target groups with a protocol of TCP, TLS or HTTPS, the default is 10 seconds. For target groups with a protocol of GENEVE, the default is 5 seconds. If the target type is lambda, the default is 30 seconds.",
                  "type": "number"
                },
                "unhealthyThreshold": {
                  "description": "Number of consecutive health check failures required before considering a target unhealthy. The range is 2-10. Defaults to 3.",
                  "type": "number"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "ipAddressType": {
              "description": "The type of IP addresses used by the target group, only supported when target type is set to ip. Possible values are ipv4 or ipv6.",
              "type": "string"
            },
            "lambdaMultiValueHeadersEnabled": {
              "description": "Whether the request and response headers exchanged between the load balancer and the Lambda function include arrays of values or strings. Only applies when target_type is lambda. Default is false.",
              "type": "boolean"
            },
            "loadBalancingAlgorithmType": {
              "description": "Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is round_robin, least_outstanding_requests, or weighted_random. The default is round_robin.",
              "type": "string"
            },
            "loadBalancingAnomalyMitigation": {
              "description": "Determines whether to enable target anomaly mitigation.  Target anomaly mitigation is only supported by the weighted_random load balancing algorithm type.  See doc for more information.  The value is \"on\" or \"off\". The default is \"off\".",
              "type": "string"
            },
            "loadBalancingCrossZoneEnabled": {
              "description": "Indicates whether cross zone load balancing is enabled. The value is \"true\", \"false\" or \"use_load_balancer_configuration\". The default is \"use_load_balancer_configuration\".",
              "type": "string"
            },
            "name": {
              "description": "Name of the target group. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen.",
              "type": "string"
            },
            "port": {
              "description": "(May be required, Forces new resource) Port on which targets receive traffic, unless overridden when registering a specific target. Required when target_type is instance, ip or alb. Does not apply when target_type is lambda.",
              "type": "number"
            },
            "preserveClientIp": {
              "description": "Whether client IP preservation is enabled. See doc for more information.",
              "type": "string"
            },
            "protocol": {
              "description": "(May be required, Forces new resource) Protocol to use for routing traffic to the targets.\nShould be one of GENEVE, HTTP, HTTPS, TCP, TCP_UDP, TLS, or UDP.\nRequired when target_type is instance, ip, or alb.\nDoes not apply when target_type is lambda.",
              "type": "string"
            },
            "protocolVersion": {
              "description": "Only applicable when protocol is HTTP or HTTPS. The protocol version. Specify GRPC to send requests to targets using gRPC. Specify HTTP2 to send requests to targets using HTTP/2. The default is HTTP1, which sends requests to targets using HTTP/1.1",
              "type": "string"
            },
            "proxyProtocolV2": {
              "description": "Whether to enable support for proxy protocol v2 on Network Load Balancers. See doc for more information. Default is false.",
              "type": "boolean"
            },
            "slowStart": {
              "description": "Amount time for targets to warm up before the load balancer sends them a full share of requests. The range is 30-900 seconds or 0 to disable. The default value is 0 seconds.",
              "type": "number"
            },
            "stickiness": {
              "description": "Stickiness configuration block. Detailed below.",
              "properties": {
                "cookieDuration": {
                  "description": "Only used when the type is lb_cookie. The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds).",
                  "type": "number"
                },
                "cookieName": {
                  "description": "Name of the application based cookie. AWSALB, AWSALBAPP, and AWSALBTG prefixes are reserved and cannot be used. Only needed when type is app_cookie.",
                  "type": "string"
                },
                "enabled": {
                  "description": "Whether health checks are enabled. Defaults to true.",
                  "type": "boolean"
                },
                "type": {
                  "description": "The type of sticky sessions. The only current possible values are lb_cookie, app_cookie for ALBs, source_ip for NLBs, and source_ip_dest_ip, source_ip_dest_ip_proto for GWLBs.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "tags": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Key-value map of resource tags.",
              "type": "object",
              "x-kubernetes-map-type": "granular"
            },
            "targetFailover": {
              "description": "Target failover block. Only applicable for Gateway Load Balancer target groups. See target_failover for more information.",
              "items": {
                "properties": {
                  "onDeregistration": {
                    "description": "Indicates how the GWLB handles existing flows when a target is deregistered. Possible values are rebalance and no_rebalance. Must match the attribute value set for on_unhealthy. Default: no_rebalance.",
                    "type": "string"
                  },
                  "onUnhealthy": {
                    "description": "Indicates how the GWLB handles existing flows when a target is unhealthy. Possible values are rebalance and no_rebalance. Must match the attribute value set for on_deregistration. Default: no_rebalance.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "targetGroupHealth": {
              "description": "Target health requirements block. See target_group_health for more information.",
              "properties": {
                "dnsFailover": {
                  "description": "Block to configure DNS Failover requirements. See DNS Failover below for details on attributes.",
                  "properties": {
                    "minimumHealthyTargetsCount": {
                      "description": "The minimum number of targets that must be healthy. If the number of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are off or an integer from 1 to the maximum number of targets. The default is off.",
                      "type": "string"
                    },
                    "minimumHealthyTargetsPercentage": {
                      "description": "The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are off or an integer from 1 to 100. The default is off.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "unhealthyStateRouting": {
                  "description": "Block to configure Unhealthy State Routing requirements. See Unhealthy State Routing below for details on attributes.",
                  "properties": {
                    "minimumHealthyTargetsCount": {
                      "description": "The minimum number of targets that must be healthy. If the number of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are 1 to the maximum number of targets. The default is 1.",
                      "type": "number"
                    },
                    "minimumHealthyTargetsPercentage": {
                      "description": "The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are off or an integer from 1 to 100. The default is off.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "targetHealthState": {
              "description": "Target health state block. Only applicable for Network Load Balancer target groups when protocol is TCP or TLS. See target_health_state for more information.",
              "items": {
                "properties": {
                  "enableUnhealthyConnectionTermination": {
                    "description": "Indicates whether the load balancer terminates connections to unhealthy targets. Possible values are true or false. Default: true.",
                    "type": "boolean"
                  },
                  "unhealthyDrainingInterval": {
                    "description": "Indicates the time to wait for in-flight requests to complete when a target becomes unhealthy. The range is 0-360000. This value has to be set only if enable_unhealthy_connection_termination is set to false. Default: 0.",
                    "type": "number"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "targetType": {
              "description": "Type of target that you must specify when registering targets with this target group.\nSee doc for supported values.\nThe default is instance.",
              "type": "string"
            },
            "vpcId": {
              "description": "Identifier of the VPC in which to create the target group. Required when target_type is instance, ip or alb. Does not apply when target_type is lambda.",
              "type": "string"
            },
            "vpcIdRef": {
              "description": "Reference to a VPC in ec2 to populate vpcId.",
              "properties": {
                "name": {
                  "description": "Name of the referenced object.",
                  "type": "string"
                },
                "namespace": {
                  "description": "Namespace of the referenced object",
                  "type": "string"
                },
                "policy": {
                  "description": "Policies for referencing.",
                  "properties": {
                    "resolution": {
                      "default": "Required",
                      "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                      "enum": [
                        "Required",
                        "Optional"
                      ],
                      "type": "string"
                    },
                    "resolve": {
                      "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                      "enum": [
                        "Always",
                        "IfNotPresent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "required": [
                "name"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "vpcIdSelector": {
              "description": "Selector for a VPC in ec2 to populate vpcId.",
              "properties": {
                "matchControllerRef": {
                  "description": "MatchControllerRef ensures an object with the same controller reference\nas the selecting object is selected.",
                  "type": "boolean"
                },
                "matchLabels": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "MatchLabels ensures an object with matching labels is selected.",
                  "type": "object"
                },
                "namespace": {
                  "description": "Namespace for the selector",
                  "type": "string"
                },
                "policy": {
                  "description": "Policies for selection.",
                  "properties": {
                    "resolution": {
                      "default": "Required",
                      "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                      "enum": [
                        "Required",
                        "Optional"
                      ],
                      "type": "string"
                    },
                    "resolve": {
                      "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                      "enum": [
                        "Always",
                        "IfNotPresent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "managementPolicies": {
          "default": [
            "*"
          ],
          "description": "THIS IS A BETA FIELD. It is on by default but can be opted out\nthrough a Crossplane feature flag.\nManagementPolicies specify the array of actions Crossplane is allowed to\ntake on the managed and external resources.\nSee the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223\nand this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md",
          "items": {
            "description": "A ManagementAction represents an action that the Crossplane controllers\ncan take on an external resource.",
            "enum": [
              "Observe",
              "Create",
              "Update",
              "Delete",
              "LateInitialize",
              "*"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "providerConfigRef": {
          "default": {
            "kind": "ClusterProviderConfig",
            "name": "default"
          },
          "description": "ProviderConfigReference specifies how the provider that will be used to\ncreate, observe, update, and delete this managed resource should be\nconfigured.",
          "properties": {
            "kind": {
              "description": "Kind of the referenced object.",
              "type": "string"
            },
            "name": {
              "description": "Name of the referenced object.",
              "type": "string"
            }
          },
          "required": [
            "kind",
            "name"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "writeConnectionSecretToRef": {
          "description": "WriteConnectionSecretToReference specifies the namespace and name of a\nSecret to which any connection details for this managed resource should\nbe written. Connection details frequently include the endpoint, username,\nand password required to connect to the managed resource.",
          "properties": {
            "name": {
              "description": "Name of the secret.",
              "type": "string"
            }
          },
          "required": [
            "name"
          ],
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "forProvider"
      ],
      "type": "object",
      "x-kubernetes-validations": [
        {
          "message": "spec.forProvider.name is a required parameter",
          "rule": "!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))"
        }
      ],
      "additionalProperties": false
    },
    "status": {
      "description": "LBTargetGroupStatus defines the observed state of LBTargetGroup.",
      "properties": {
        "atProvider": {
          "properties": {
            "arn": {
              "description": "ARN of the Target Group (matches id).",
              "type": "string"
            },
            "arnSuffix": {
              "description": "ARN suffix for use with CloudWatch Metrics.",
              "type": "string"
            },
            "connectionTermination": {
              "description": "Whether to terminate connections at the end of the deregistration timeout on Network Load Balancers. See doc for more information. Default is false.",
              "type": "boolean"
            },
            "deregistrationDelay": {
              "description": "Amount time for Elastic Load Balancing to wait before changing the state of a deregistering target from draining to unused. The range is 0-3600 seconds. The default value is 300 seconds.",
              "type": "string"
            },
            "healthCheck": {
              "description": "Health Check configuration block. Detailed below.",
              "properties": {
                "enabled": {
                  "description": "Whether health checks are enabled. Defaults to true.",
                  "type": "boolean"
                },
                "healthyThreshold": {
                  "description": "Number of consecutive health check successes required before considering a target healthy. The range is 2-10. Defaults to 3.",
                  "type": "number"
                },
                "interval": {
                  "description": "Approximate amount of time, in seconds, between health checks of an individual target. The range is 5-300. For lambda target groups, it needs to be greater than the timeout of the underlying lambda. Defaults to 30.",
                  "type": "number"
                },
                "matcher": {
                  "description": "separated individual values (e.g., \"200,202\") or a range of values (e.g., \"200-299\").",
                  "type": "string"
                },
                "path": {
                  "description": "(May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS.",
                  "type": "string"
                },
                "port": {
                  "description": "The port the load balancer uses when performing health checks on targets.\nValid values are either traffic-port, to use the same port as the target group, or a valid port number between 1 and 65536.\nDefault is traffic-port.",
                  "type": "string"
                },
                "protocol": {
                  "description": "Protocol the load balancer uses when performing health checks on targets.\nMust be one of TCP, HTTP, or HTTPS.\nThe TCP protocol is not supported for health checks if the protocol of the target group is HTTP or HTTPS.\nDefault is HTTP.\nCannot be specified when the target_type is lambda.",
                  "type": "string"
                },
                "timeout": {
                  "description": "Amount of time, in seconds, during which no response from a target means a failed health check. The range is 2\u2013120 seconds. For target groups with a protocol of HTTP, the default is 6 seconds. For target groups with a protocol of TCP, TLS or HTTPS, the default is 10 seconds. For target groups with a protocol of GENEVE, the default is 5 seconds. If the target type is lambda, the default is 30 seconds.",
                  "type": "number"
                },
                "unhealthyThreshold": {
                  "description": "Number of consecutive health check failures required before considering a target unhealthy. The range is 2-10. Defaults to 3.",
                  "type": "number"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "id": {
              "description": "ARN of the Target Group (matches arn).",
              "type": "string"
            },
            "ipAddressType": {
              "description": "The type of IP addresses used by the target group, only supported when target type is set to ip. Possible values are ipv4 or ipv6.",
              "type": "string"
            },
            "lambdaMultiValueHeadersEnabled": {
              "description": "Whether the request and response headers exchanged between the load balancer and the Lambda function include arrays of values or strings. Only applies when target_type is lambda. Default is false.",
              "type": "boolean"
            },
            "loadBalancerArns": {
              "description": "ARNs of the Load Balancers associated with the Target Group.",
              "items": {
                "type": "string"
              },
              "type": "array",
              "x-kubernetes-list-type": "set"
            },
            "loadBalancingAlgorithmType": {
              "description": "Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is round_robin, least_outstanding_requests, or weighted_random. The default is round_robin.",
              "type": "string"
            },
            "loadBalancingAnomalyMitigation": {
              "description": "Determines whether to enable target anomaly mitigation.  Target anomaly mitigation is only supported by the weighted_random load balancing algorithm type.  See doc for more information.  The value is \"on\" or \"off\". The default is \"off\".",
              "type": "string"
            },
            "loadBalancingCrossZoneEnabled": {
              "description": "Indicates whether cross zone load balancing is enabled. The value is \"true\", \"false\" or \"use_load_balancer_configuration\". The default is \"use_load_balancer_configuration\".",
              "type": "string"
            },
            "name": {
              "description": "Name of the target group. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen.",
              "type": "string"
            },
            "port": {
              "description": "(May be required, Forces new resource) Port on which targets receive traffic, unless overridden when registering a specific target. Required when target_type is instance, ip or alb. Does not apply when target_type is lambda.",
              "type": "number"
            },
            "preserveClientIp": {
              "description": "Whether client IP preservation is enabled. See doc for more information.",
              "type": "string"
            },
            "protocol": {
              "description": "(May be required, Forces new resource) Protocol to use for routing traffic to the targets.\nShould be one of GENEVE, HTTP, HTTPS, TCP, TCP_UDP, TLS, or UDP.\nRequired when target_type is instance, ip, or alb.\nDoes not apply when target_type is lambda.",
              "type": "string"
            },
            "protocolVersion": {
              "description": "Only applicable when protocol is HTTP or HTTPS. The protocol version. Specify GRPC to send requests to targets using gRPC. Specify HTTP2 to send requests to targets using HTTP/2. The default is HTTP1, which sends requests to targets using HTTP/1.1",
              "type": "string"
            },
            "proxyProtocolV2": {
              "description": "Whether to enable support for proxy protocol v2 on Network Load Balancers. See doc for more information. Default is false.",
              "type": "boolean"
            },
            "region": {
              "description": "Region where this resource will be managed. Defaults to the Region set in the provider configuration.\nRegion is the region you'd like your resource to be created in.",
              "type": "string"
            },
            "slowStart": {
              "description": "Amount time for targets to warm up before the load balancer sends them a full share of requests. The range is 30-900 seconds or 0 to disable. The default value is 0 seconds.",
              "type": "number"
            },
            "stickiness": {
              "description": "Stickiness configuration block. Detailed below.",
              "properties": {
                "cookieDuration": {
                  "description": "Only used when the type is lb_cookie. The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds).",
                  "type": "number"
                },
                "cookieName": {
                  "description": "Name of the application based cookie. AWSALB, AWSALBAPP, and AWSALBTG prefixes are reserved and cannot be used. Only needed when type is app_cookie.",
                  "type": "string"
                },
                "enabled": {
                  "description": "Whether health checks are enabled. Defaults to true.",
                  "type": "boolean"
                },
                "type": {
                  "description": "The type of sticky sessions. The only current possible values are lb_cookie, app_cookie for ALBs, source_ip for NLBs, and source_ip_dest_ip, source_ip_dest_ip_proto for GWLBs.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "tags": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Key-value map of resource tags.",
              "type": "object",
              "x-kubernetes-map-type": "granular"
            },
            "tagsAll": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.",
              "type": "object",
              "x-kubernetes-map-type": "granular"
            },
            "targetFailover": {
              "description": "Target failover block. Only applicable for Gateway Load Balancer target groups. See target_failover for more information.",
              "items": {
                "properties": {
                  "onDeregistration": {
                    "description": "Indicates how the GWLB handles existing flows when a target is deregistered. Possible values are rebalance and no_rebalance. Must match the attribute value set for on_unhealthy. Default: no_rebalance.",
                    "type": "string"
                  },
                  "onUnhealthy": {
                    "description": "Indicates how the GWLB handles existing flows when a target is unhealthy. Possible values are rebalance and no_rebalance. Must match the attribute value set for on_deregistration. Default: no_rebalance.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "targetGroupHealth": {
              "description": "Target health requirements block. See target_group_health for more information.",
              "properties": {
                "dnsFailover": {
                  "description": "Block to configure DNS Failover requirements. See DNS Failover below for details on attributes.",
                  "properties": {
                    "minimumHealthyTargetsCount": {
                      "description": "The minimum number of targets that must be healthy. If the number of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are off or an integer from 1 to the maximum number of targets. The default is off.",
                      "type": "string"
                    },
                    "minimumHealthyTargetsPercentage": {
                      "description": "The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are off or an integer from 1 to 100. The default is off.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "unhealthyStateRouting": {
                  "description": "Block to configure Unhealthy State Routing requirements. See Unhealthy State Routing below for details on attributes.",
                  "properties": {
                    "minimumHealthyTargetsCount": {
                      "description": "The minimum number of targets that must be healthy. If the number of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are 1 to the maximum number of targets. The default is 1.",
                      "type": "number"
                    },
                    "minimumHealthyTargetsPercentage": {
                      "description": "The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are off or an integer from 1 to 100. The default is off.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "targetHealthState": {
              "description": "Target health state block. Only applicable for Network Load Balancer target groups when protocol is TCP or TLS. See target_health_state for more information.",
              "items": {
                "properties": {
                  "enableUnhealthyConnectionTermination": {
                    "description": "Indicates whether the load balancer terminates connections to unhealthy targets. Possible values are true or false. Default: true.",
                    "type": "boolean"
                  },
                  "unhealthyDrainingInterval": {
                    "description": "Indicates the time to wait for in-flight requests to complete when a target becomes unhealthy. The range is 0-360000. This value has to be set only if enable_unhealthy_connection_termination is set to false. Default: 0.",
                    "type": "number"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "targetType": {
              "description": "Type of target that you must specify when registering targets with this target group.\nSee doc for supported values.\nThe default is instance.",
              "type": "string"
            },
            "vpcId": {
              "description": "Identifier of the VPC in which to create the target group. Required when target_type is instance, ip or alb. Does not apply when target_type is lambda.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "conditions": {
          "description": "Conditions of the resource.",
          "items": {
            "description": "A Condition that may apply to a resource.",
            "properties": {
              "lastTransitionTime": {
                "description": "LastTransitionTime is the last time this condition transitioned from one\nstatus to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A Message containing details about this condition's last transition from\none status to another, if any.",
                "type": "string"
              },
              "observedGeneration": {
                "description": "ObservedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.",
                "format": "int64",
                "type": "integer"
              },
              "reason": {
                "description": "A Reason for this condition's last transition from one status to another.",
                "type": "string"
              },
              "status": {
                "description": "Status of this condition; is it currently True, False, or Unknown?",
                "type": "string"
              },
              "type": {
                "description": "Type of this condition. At most one of each condition type may apply to\na resource at any point in time.",
                "type": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "reason",
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-map-keys": [
            "type"
          ],
          "x-kubernetes-list-type": "map"
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the latest metadata.generation\nwhich resulted in either a ready state, or stalled due to error\nit can not recover from without human intervention.",
          "format": "int64",
          "type": "integer"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
