{
  "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/api-conventions.md#resources",
      "type": "string"
    },
    "bastion": {
      "properties": {
        "ebsOptimized": {
          "description": "Indicates whether the instance is optimized for Amazon EBS I/O.",
          "type": "boolean"
        },
        "enaSupport": {
          "description": "Specifies whether enhanced networking with ENA is enabled.",
          "type": "boolean"
        },
        "iamProfile": {
          "description": "The name of the IAM instance profile associated with the instance, if applicable.",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "imageId": {
          "description": "The ID of the AMI used to launch the instance.",
          "type": "string"
        },
        "instanceState": {
          "description": "The current state of the instance.",
          "type": "string"
        },
        "keyName": {
          "description": "The name of the SSH key pair.",
          "type": "string"
        },
        "privateIp": {
          "description": "The private IPv4 address assigned to the instance.",
          "type": "string"
        },
        "publicIp": {
          "description": "The public IPv4 address assigned to the instance, if applicable.",
          "type": "string"
        },
        "rootDeviceSize": {
          "description": "Specifies size (in Gi) of the root storage device",
          "format": "int64",
          "type": "integer"
        },
        "securityGroupIds": {
          "description": "SecurityGroupIDs are one or more security group IDs this instance belongs to.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "subnetId": {
          "description": "The ID of the subnet of the instance.",
          "type": "string"
        },
        "tags": {
          "description": "The tags associated with the instance.",
          "type": "object"
        },
        "type": {
          "description": "The instance type.",
          "type": "string"
        },
        "userData": {
          "description": "UserData is the raw data script passed to the instance which is run upon bootstrap. This field must not be base64 encoded and should only be used when running a new instance.",
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "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/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "network": {
      "properties": {
        "apiServerElb": {
          "description": "APIServerELB is the Kubernetes api server classic load balancer.",
          "properties": {
            "attributes": {
              "description": "Attributes defines extra attributes associated with the load balancer.",
              "properties": {
                "idleTimeout": {
                  "description": "IdleTimeout is time that the connection is allowed to be idle (no data has been sent over the connection) before it is closed by the load balancer.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "dnsName": {
              "description": "DNSName is the dns name of the load balancer.",
              "type": "string"
            },
            "healthChecks": {
              "description": "HealthCheck is the classic elb health check associated with the load balancer.",
              "properties": {
                "healthyThreshold": {
                  "format": "int64",
                  "type": "integer"
                },
                "interval": {
                  "format": "int64",
                  "type": "integer"
                },
                "target": {
                  "type": "string"
                },
                "timeout": {
                  "format": "int64",
                  "type": "integer"
                },
                "unhealthyThreshold": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "required": [
                "target",
                "interval",
                "timeout",
                "healthyThreshold",
                "unhealthyThreshold"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "listeners": {
              "description": "Listeners is an array of classic elb listeners associated with the load balancer. There must be at least one.",
              "items": {
                "properties": {
                  "instancePort": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "instanceProtocol": {
                    "type": "string"
                  },
                  "port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "protocol": {
                    "type": "string"
                  }
                },
                "required": [
                  "protocol",
                  "port",
                  "instanceProtocol",
                  "instancePort"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "name": {
              "description": "The name of the load balancer. It must be unique within the set of load balancers defined in the region. It also serves as identifier.",
              "type": "string"
            },
            "scheme": {
              "description": "Scheme is the load balancer scheme, either internet-facing or private.",
              "type": "string"
            },
            "securityGroupIds": {
              "description": "SecurityGroupIDs is an array of security groups assigned to the load balancer.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "subnetIds": {
              "description": "SubnetIDs is an array of subnets in the VPC attached to the load balancer.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "tags": {
              "description": "Tags is a map of tags associated with the load balancer.",
              "type": "object"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "securityGroups": {
          "description": "SecurityGroups is a map from the role/kind of the security group to its unique name, if any.",
          "type": "object"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  }
}
