{
  "description": "NATGateway is the Schema for the NATGateways 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": "NatGatewaySpec defines the desired state of NatGateway.\n\nDescribes a NAT gateway.",
      "properties": {
        "allocationID": {
          "description": "[Public NAT gateways only] The allocation ID of an Elastic IP address to\nassociate with the NAT gateway. You cannot specify an Elastic IP address\nwith a private NAT gateway. If the Elastic IP address is associated with\nanother resource, you must first disassociate it.",
          "type": "string"
        },
        "allocationRef": {
          "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
        },
        "connectivityType": {
          "description": "Indicates whether the NAT gateway supports public or private connectivity.\nThe default is public connectivity.",
          "type": "string"
        },
        "subnetID": {
          "description": "The ID of the subnet in which to create the NAT gateway.",
          "type": "string"
        },
        "subnetRef": {
          "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
        },
        "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"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "NATGatewayStatus defines the observed state of NATGateway",
      "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
        },
        "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"
        },
        "createTime": {
          "description": "The date and time the NAT gateway was created.",
          "format": "date-time",
          "type": "string"
        },
        "deleteTime": {
          "description": "The date and time the NAT gateway was deleted, if applicable.",
          "format": "date-time",
          "type": "string"
        },
        "failureCode": {
          "description": "If the NAT gateway could not be created, specifies the error code for the\nfailure. (InsufficientFreeAddressesInSubnet | Gateway.NotAttached | InvalidAllocationID.NotFound\n| Resource.AlreadyAssociated | InternalError | InvalidSubnetID.NotFound)",
          "type": "string"
        },
        "failureMessage": {
          "description": "If the NAT gateway could not be created, specifies the error message for\nthe failure, that corresponds to the error code.\n\n   * For InsufficientFreeAddressesInSubnet: \"Subnet has insufficient free\n   addresses to create this NAT gateway\"\n\n   * For Gateway.NotAttached: \"Network vpc-xxxxxxxx has no Internet gateway\n   attached\"\n\n   * For InvalidAllocationID.NotFound: \"Elastic IP address eipalloc-xxxxxxxx\n   could not be associated with this NAT gateway\"\n\n   * For Resource.AlreadyAssociated: \"Elastic IP address eipalloc-xxxxxxxx\n   is already associated\"\n\n   * For InternalError: \"Network interface eni-xxxxxxxx, created and used\n   internally by this NAT gateway is in an invalid state. Please try again.\"\n\n   * For InvalidSubnetID.NotFound: \"The specified subnet subnet-xxxxxxxx\n   does not exist or could not be found.\"",
          "type": "string"
        },
        "natGatewayAddresses": {
          "description": "Information about the IP addresses and network interface associated with\nthe NAT gateway.",
          "items": {
            "description": "Describes the IP addresses and network interface associated with a NAT gateway.",
            "properties": {
              "allocationID": {
                "type": "string"
              },
              "networkInterfaceID": {
                "type": "string"
              },
              "privateIP": {
                "type": "string"
              },
              "publicIP": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "natGatewayID": {
          "description": "The ID of the NAT gateway.",
          "type": "string"
        },
        "provisionedBandwidth": {
          "description": "Reserved. If you need to sustain traffic greater than the documented limits\n(https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-gateways),\ncontact Amazon Web Services Support.",
          "properties": {
            "provisionTime": {
              "format": "date-time",
              "type": "string"
            },
            "provisioned": {
              "type": "string"
            },
            "requestTime": {
              "format": "date-time",
              "type": "string"
            },
            "requested": {
              "type": "string"
            },
            "status": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "state": {
          "description": "The state of the NAT gateway.\n\n   * pending: The NAT gateway is being created and is not ready to process\n   traffic.\n\n   * failed: The NAT gateway could not be created. Check the failureCode\n   and failureMessage fields for the reason.\n\n   * available: The NAT gateway is able to process traffic. This status remains\n   until you delete the NAT gateway, and does not indicate the health of\n   the NAT gateway.\n\n   * deleting: The NAT gateway is in the process of being terminated and\n   may still be processing traffic.\n\n   * deleted: The NAT gateway has been terminated and is no longer processing\n   traffic.",
          "type": "string"
        },
        "vpcID": {
          "description": "The ID of the VPC in which the NAT gateway is located.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
