{
  "description": "Subnet is the Schema for the Subnets 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": "SubnetSpec defines the desired state of Subnet.\n\nDescribes a subnet.",
      "properties": {
        "assignIPv6AddressOnCreation": {
          "type": "boolean"
        },
        "availabilityZone": {
          "description": "The Availability Zone or Local Zone for the subnet.\n\nDefault: Amazon Web Services selects one for you. If you create more than\none subnet in your VPC, we do not necessarily select a different zone for\neach subnet.\n\nTo create a subnet in a Local Zone, set this value to the Local Zone ID,\nfor example us-west-2-lax-1a. For information about the Regions that support\nLocal Zones, see Available Local Zones (https://docs.aws.amazon.com/local-zones/latest/ug/available-local-zones.html).\n\nTo create a subnet in an Outpost, set this value to the Availability Zone\nfor the Outpost and specify the Outpost ARN.",
          "type": "string"
        },
        "availabilityZoneID": {
          "description": "The AZ ID or the Local Zone ID of the subnet.",
          "type": "string"
        },
        "cidrBlock": {
          "description": "The IPv4 network range for the subnet, in CIDR notation. For example, 10.0.0.0/24.\nWe modify the specified CIDR block to its canonical form; for example, if\nyou specify 100.68.0.18/18, we modify it to 100.68.0.0/18.\n\nThis parameter is not supported for an IPv6 only subnet.",
          "type": "string"
        },
        "customerOwnedIPv4Pool": {
          "type": "string"
        },
        "enableDNS64": {
          "type": "boolean"
        },
        "enableResourceNameDNSAAAARecord": {
          "type": "boolean"
        },
        "enableResourceNameDNSARecord": {
          "type": "boolean"
        },
        "hostnameType": {
          "type": "string"
        },
        "ipv6CIDRBlock": {
          "description": "The IPv6 network range for the subnet, in CIDR notation. This parameter is\nrequired for an IPv6 only subnet.",
          "type": "string"
        },
        "ipv6Native": {
          "description": "Indicates whether to create an IPv6 only subnet.",
          "type": "boolean"
        },
        "mapPublicIPOnLaunch": {
          "type": "boolean"
        },
        "outpostARN": {
          "description": "The Amazon Resource Name (ARN) of the Outpost. If you specify an Outpost\nARN, you must also specify the Availability Zone of the Outpost subnet.",
          "type": "string"
        },
        "routeTableRefs": {
          "items": {
            "description": "AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\ntype to provide more user friendly syntax for references using 'from' field\nEx:\nAPIIDRef:\n\n\tfrom:\n\t  name: my-api",
            "properties": {
              "from": {
                "description": "AWSResourceReference provides all the values necessary to reference another\nk8s resource for finding the identifier(Id/ARN/Name)",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "namespace": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "routeTables": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "tags": {
          "description": "The tags. The value parameter is required, but if you don't want the tag\nto have a value, specify the parameter with no value, and we set the value\nto an empty string.",
          "items": {
            "description": "Describes a tag.",
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "vpcID": {
          "description": "The ID of the VPC.",
          "type": "string"
        },
        "vpcRef": {
          "description": "AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\ntype to provide more user friendly syntax for references using 'from' field\nEx:\nAPIIDRef:\n\n\tfrom:\n\t  name: my-api",
          "properties": {
            "from": {
              "description": "AWSResourceReference provides all the values necessary to reference another\nk8s resource for finding the identifier(Id/ARN/Name)",
              "properties": {
                "name": {
                  "type": "string"
                },
                "namespace": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "SubnetStatus defines the observed state of Subnet",
      "properties": {
        "ackResourceMetadata": {
          "description": "All CRs managed by ACK have a common `Status.ACKResourceMetadata` member\nthat is used to contain resource sync state, account ownership,\nconstructed ARN for the resource",
          "properties": {
            "arn": {
              "description": "ARN is the Amazon Resource Name for the resource. This is a\nglobally-unique identifier and is set only by the ACK service controller\nonce the controller has orchestrated the creation of the resource OR\nwhen it has verified that an \"adopted\" resource (a resource where the\nARN annotation was set by the Kubernetes user on the CR) exists and\nmatches the supplied CR's Spec field values.\nhttps://github.com/aws/aws-controllers-k8s/issues/270",
              "type": "string"
            },
            "ownerAccountID": {
              "description": "OwnerAccountID is the AWS Account ID of the account that owns the\nbackend AWS service API resource.",
              "type": "string"
            },
            "region": {
              "description": "Region is the AWS region in which the resource exists or will exist.",
              "type": "string"
            }
          },
          "required": [
            "ownerAccountID",
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "availableIPAddressCount": {
          "description": "The number of unused private IPv4 addresses in the subnet. The IPv4 addresses\nfor any stopped instances are considered unavailable.",
          "format": "int64",
          "type": "integer"
        },
        "conditions": {
          "description": "All CRs managed by ACK have a common `Status.Conditions` member that\ncontains a collection of `ackv1alpha1.Condition` objects that describe\nthe various terminal states of the CR and its backend AWS service API\nresource",
          "items": {
            "description": "Condition is the common struct used by all CRDs managed by ACK service\ncontrollers to indicate terminal states  of the CR and its backend AWS\nservice API resource",
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A human readable message indicating details about the transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the Condition",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "defaultForAZ": {
          "description": "Indicates whether this is the default subnet for the Availability Zone.",
          "type": "boolean"
        },
        "enableLniAtDeviceIndex": {
          "description": "Indicates the device position for local network interfaces in this subnet.\nFor example, 1 indicates local network interfaces in this subnet are the\nsecondary network interface (eth1).",
          "format": "int64",
          "type": "integer"
        },
        "ipv6CIDRBlockAssociationSet": {
          "description": "Information about the IPv6 CIDR blocks associated with the subnet.",
          "items": {
            "description": "Describes an association between a subnet and an IPv6 CIDR block.",
            "properties": {
              "associationID": {
                "type": "string"
              },
              "ipv6CIDRBlock": {
                "type": "string"
              },
              "ipv6CIDRBlockState": {
                "description": "Describes the state of a CIDR block.",
                "properties": {
                  "state": {
                    "type": "string"
                  },
                  "statusMessage": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "mapCustomerOwnedIPOnLaunch": {
          "description": "Indicates whether a network interface created in this subnet (including a\nnetwork interface created by RunInstances) receives a customer-owned IPv4\naddress.",
          "type": "boolean"
        },
        "ownerID": {
          "description": "The ID of the Amazon Web Services account that owns the subnet.",
          "type": "string"
        },
        "privateDNSNameOptionsOnLaunch": {
          "description": "The type of hostnames to assign to instances in the subnet at launch. An\ninstance hostname is based on the IPv4 address or ID of the instance.",
          "properties": {
            "enableResourceNameDNSAAAARecord": {
              "type": "boolean"
            },
            "enableResourceNameDNSARecord": {
              "type": "boolean"
            },
            "hostnameType": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "state": {
          "description": "The current state of the subnet.",
          "type": "string"
        },
        "subnetID": {
          "description": "The ID of the subnet.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
