# frozen_string_literal: true

# WARNING ABOUT GENERATED CODE
#
# This file is generated. See the contributing guide for more information:
# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
#
# WARNING ABOUT GENERATED CODE

module Aws::DAX
  module Types

    # Contains all of the attributes of a specific DAX cluster.
    #
    # @!attribute [rw] cluster_name
    #   The name of the DAX cluster.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   The description of the cluster.
    #   @return [String]
    #
    # @!attribute [rw] cluster_arn
    #   The Amazon Resource Name (ARN) that uniquely identifies the cluster.
    #   @return [String]
    #
    # @!attribute [rw] total_nodes
    #   The total number of nodes in the cluster.
    #   @return [Integer]
    #
    # @!attribute [rw] active_nodes
    #   The number of nodes in the cluster that are active (i.e., capable of
    #   serving requests).
    #   @return [Integer]
    #
    # @!attribute [rw] node_type
    #   The node type for the nodes in the cluster. (All nodes in a DAX
    #   cluster are of the same type.)
    #   @return [String]
    #
    # @!attribute [rw] status
    #   The current status of the cluster.
    #   @return [String]
    #
    # @!attribute [rw] cluster_discovery_endpoint
    #   The endpoint for this DAX cluster, consisting of a DNS name, a port
    #   number, and a URL. Applications should use the URL to configure the
    #   DAX client to find their cluster.
    #   @return [Types::Endpoint]
    #
    # @!attribute [rw] node_ids_to_remove
    #   A list of nodes to be removed from the cluster.
    #   @return [Array<String>]
    #
    # @!attribute [rw] nodes
    #   A list of nodes that are currently in the cluster.
    #   @return [Array<Types::Node>]
    #
    # @!attribute [rw] preferred_maintenance_window
    #   A range of time when maintenance of DAX cluster software will be
    #   performed. For example: `sun:01:00-sun:09:00`. Cluster maintenance
    #   normally takes less than 30 minutes, and is performed automatically
    #   within the maintenance window.
    #   @return [String]
    #
    # @!attribute [rw] notification_configuration
    #   Describes a notification topic and its status. Notification topics
    #   are used for publishing DAX events to subscribers using Amazon
    #   Simple Notification Service (SNS).
    #   @return [Types::NotificationConfiguration]
    #
    # @!attribute [rw] subnet_group
    #   The subnet group where the DAX cluster is running.
    #   @return [String]
    #
    # @!attribute [rw] security_groups
    #   A list of security groups, and the status of each, for the nodes in
    #   the cluster.
    #   @return [Array<Types::SecurityGroupMembership>]
    #
    # @!attribute [rw] iam_role_arn
    #   A valid Amazon Resource Name (ARN) that identifies an IAM role. At
    #   runtime, DAX will assume this role and use the role's permissions
    #   to access DynamoDB on your behalf.
    #   @return [String]
    #
    # @!attribute [rw] parameter_group
    #   The parameter group being used by nodes in the cluster.
    #   @return [Types::ParameterGroupStatus]
    #
    # @!attribute [rw] sse_description
    #   The description of the server-side encryption status on the
    #   specified DAX cluster.
    #   @return [Types::SSEDescription]
    #
    # @!attribute [rw] cluster_endpoint_encryption_type
    #   The type of encryption supported by the cluster's endpoint. Values
    #   are:
    #
    #   * `NONE` for no encryption
    #
    #     `TLS` for Transport Layer Security
    #   @return [String]
    #
    # @!attribute [rw] network_type
    #   The IP address type of the cluster. Values are:
    #
    #   * `ipv4` - IPv4 addresses only
    #
    #   * `ipv6` - IPv6 addresses only
    #
    #   * `dual_stack` - Both IPv4 and IPv6 addresses
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/Cluster AWS API Documentation
    #
    class Cluster < Struct.new(
      :cluster_name,
      :description,
      :cluster_arn,
      :total_nodes,
      :active_nodes,
      :node_type,
      :status,
      :cluster_discovery_endpoint,
      :node_ids_to_remove,
      :nodes,
      :preferred_maintenance_window,
      :notification_configuration,
      :subnet_group,
      :security_groups,
      :iam_role_arn,
      :parameter_group,
      :sse_description,
      :cluster_endpoint_encryption_type,
      :network_type)
      SENSITIVE = []
      include Aws::Structure
    end

    # You already have a DAX cluster with the given identifier.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ClusterAlreadyExistsFault AWS API Documentation
    #
    class ClusterAlreadyExistsFault < Aws::EmptyStructure; end

    # The requested cluster ID does not refer to an existing DAX cluster.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ClusterNotFoundFault AWS API Documentation
    #
    class ClusterNotFoundFault < Aws::EmptyStructure; end

    # You have attempted to exceed the maximum number of DAX clusters for
    # your Amazon Web Services account.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ClusterQuotaForCustomerExceededFault AWS API Documentation
    #
    class ClusterQuotaForCustomerExceededFault < Aws::EmptyStructure; end

    # @!attribute [rw] cluster_name
    #   The cluster identifier. This parameter is stored as a lowercase
    #   string.
    #
    #   **Constraints:**
    #
    #   * A name must contain from 1 to 20 alphanumeric characters or
    #     hyphens.
    #
    #   * The first character must be a letter.
    #
    #   * A name cannot end with a hyphen or contain two consecutive
    #     hyphens.
    #   @return [String]
    #
    # @!attribute [rw] node_type
    #   The compute and memory capacity of the nodes in the cluster.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   A description of the cluster.
    #   @return [String]
    #
    # @!attribute [rw] replication_factor
    #   The number of nodes in the DAX cluster. A replication factor of 1
    #   will create a single-node cluster, without any read replicas. For
    #   additional fault tolerance, you can create a multiple node cluster
    #   with one or more read replicas. To do this, set `ReplicationFactor`
    #   to a number between 3 (one primary and two read replicas) and 10
    #   (one primary and nine read replicas). `If the AvailabilityZones`
    #   parameter is provided, its length must equal the
    #   `ReplicationFactor`.
    #
    #   <note markdown="1"> Amazon Web Services recommends that you have at least two read
    #   replicas per cluster.
    #
    #    </note>
    #   @return [Integer]
    #
    # @!attribute [rw] availability_zones
    #   The Availability Zones (AZs) in which the cluster nodes will reside
    #   after the cluster has been created or updated. If provided, the
    #   length of this list must equal the `ReplicationFactor` parameter. If
    #   you omit this parameter, DAX will spread the nodes across
    #   Availability Zones for the highest availability.
    #   @return [Array<String>]
    #
    # @!attribute [rw] subnet_group_name
    #   The name of the subnet group to be used for the replication group.
    #
    #   DAX clusters can only run in an Amazon VPC environment. All of the
    #   subnets that you specify in a subnet group must exist in the same
    #   VPC.
    #   @return [String]
    #
    # @!attribute [rw] security_group_ids
    #   A list of security group IDs to be assigned to each node in the DAX
    #   cluster. (Each of the security group ID is system-generated.)
    #
    #   If this parameter is not specified, DAX assigns the default VPC
    #   security group to each node.
    #   @return [Array<String>]
    #
    # @!attribute [rw] preferred_maintenance_window
    #   Specifies the weekly time range during which maintenance on the DAX
    #   cluster is performed. It is specified as a range in the format
    #   ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
    #   window is a 60 minute period. Valid values for `ddd` are:
    #
    #   * `sun`
    #
    #   * `mon`
    #
    #   * `tue`
    #
    #   * `wed`
    #
    #   * `thu`
    #
    #   * `fri`
    #
    #   * `sat`
    #
    #   Example: `sun:05:00-sun:09:00`
    #
    #   <note markdown="1"> If you don't specify a preferred maintenance window when you create
    #   or modify a cache cluster, DAX assigns a 60-minute maintenance
    #   window on a randomly selected day of the week.
    #
    #    </note>
    #   @return [String]
    #
    # @!attribute [rw] notification_topic_arn
    #   The Amazon Resource Name (ARN) of the Amazon SNS topic to which
    #   notifications will be sent.
    #
    #   <note markdown="1"> The Amazon SNS topic owner must be same as the DAX cluster owner.
    #
    #    </note>
    #   @return [String]
    #
    # @!attribute [rw] iam_role_arn
    #   A valid Amazon Resource Name (ARN) that identifies an IAM role. At
    #   runtime, DAX will assume this role and use the role's permissions
    #   to access DynamoDB on your behalf.
    #   @return [String]
    #
    # @!attribute [rw] parameter_group_name
    #   The parameter group to be associated with the DAX cluster.
    #   @return [String]
    #
    # @!attribute [rw] tags
    #   A set of tags to associate with the DAX cluster.
    #   @return [Array<Types::Tag>]
    #
    # @!attribute [rw] sse_specification
    #   Represents the settings used to enable server-side encryption on the
    #   cluster.
    #   @return [Types::SSESpecification]
    #
    # @!attribute [rw] cluster_endpoint_encryption_type
    #   The type of encryption the cluster's endpoint should support.
    #   Values are:
    #
    #   * `NONE` for no encryption
    #
    #   * `TLS` for Transport Layer Security
    #   @return [String]
    #
    # @!attribute [rw] network_type
    #   Specifies the IP protocol(s) the cluster uses for network
    #   communications. Values are:
    #
    #   * `ipv4` - The cluster is accessible only through IPv4 addresses
    #
    #   * `ipv6` - The cluster is accessible only through IPv6 addresses
    #
    #   * `dual_stack` - The cluster is accessible through both IPv4 and
    #     IPv6 addresses.
    #
    #   <note markdown="1"> If no explicit `NetworkType` is provided, the network type is
    #   derived based on the subnet group's configuration.
    #
    #    </note>
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/CreateClusterRequest AWS API Documentation
    #
    class CreateClusterRequest < Struct.new(
      :cluster_name,
      :node_type,
      :description,
      :replication_factor,
      :availability_zones,
      :subnet_group_name,
      :security_group_ids,
      :preferred_maintenance_window,
      :notification_topic_arn,
      :iam_role_arn,
      :parameter_group_name,
      :tags,
      :sse_specification,
      :cluster_endpoint_encryption_type,
      :network_type)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] cluster
    #   A description of the DAX cluster that you have created.
    #   @return [Types::Cluster]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/CreateClusterResponse AWS API Documentation
    #
    class CreateClusterResponse < Struct.new(
      :cluster)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] parameter_group_name
    #   The name of the parameter group to apply to all of the clusters in
    #   this replication group.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   A description of the parameter group.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/CreateParameterGroupRequest AWS API Documentation
    #
    class CreateParameterGroupRequest < Struct.new(
      :parameter_group_name,
      :description)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] parameter_group
    #   Represents the output of a *CreateParameterGroup* action.
    #   @return [Types::ParameterGroup]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/CreateParameterGroupResponse AWS API Documentation
    #
    class CreateParameterGroupResponse < Struct.new(
      :parameter_group)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] subnet_group_name
    #   A name for the subnet group. This value is stored as a lowercase
    #   string.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   A description for the subnet group
    #   @return [String]
    #
    # @!attribute [rw] subnet_ids
    #   A list of VPC subnet IDs for the subnet group.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/CreateSubnetGroupRequest AWS API Documentation
    #
    class CreateSubnetGroupRequest < Struct.new(
      :subnet_group_name,
      :description,
      :subnet_ids)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] subnet_group
    #   Represents the output of a *CreateSubnetGroup* operation.
    #   @return [Types::SubnetGroup]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/CreateSubnetGroupResponse AWS API Documentation
    #
    class CreateSubnetGroupResponse < Struct.new(
      :subnet_group)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] cluster_name
    #   The name of the DAX cluster from which you want to remove nodes.
    #   @return [String]
    #
    # @!attribute [rw] new_replication_factor
    #   The new number of nodes for the DAX cluster.
    #   @return [Integer]
    #
    # @!attribute [rw] availability_zones
    #   The Availability Zone(s) from which to remove nodes.
    #   @return [Array<String>]
    #
    # @!attribute [rw] node_ids_to_remove
    #   The unique identifiers of the nodes to be removed from the cluster.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DecreaseReplicationFactorRequest AWS API Documentation
    #
    class DecreaseReplicationFactorRequest < Struct.new(
      :cluster_name,
      :new_replication_factor,
      :availability_zones,
      :node_ids_to_remove)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] cluster
    #   A description of the DAX cluster, after you have decreased its
    #   replication factor.
    #   @return [Types::Cluster]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DecreaseReplicationFactorResponse AWS API Documentation
    #
    class DecreaseReplicationFactorResponse < Struct.new(
      :cluster)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] cluster_name
    #   The name of the cluster to be deleted.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DeleteClusterRequest AWS API Documentation
    #
    class DeleteClusterRequest < Struct.new(
      :cluster_name)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] cluster
    #   A description of the DAX cluster that is being deleted.
    #   @return [Types::Cluster]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DeleteClusterResponse AWS API Documentation
    #
    class DeleteClusterResponse < Struct.new(
      :cluster)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] parameter_group_name
    #   The name of the parameter group to delete.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DeleteParameterGroupRequest AWS API Documentation
    #
    class DeleteParameterGroupRequest < Struct.new(
      :parameter_group_name)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] deletion_message
    #   A user-specified message for this action (i.e., a reason for
    #   deleting the parameter group).
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DeleteParameterGroupResponse AWS API Documentation
    #
    class DeleteParameterGroupResponse < Struct.new(
      :deletion_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] subnet_group_name
    #   The name of the subnet group to delete.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DeleteSubnetGroupRequest AWS API Documentation
    #
    class DeleteSubnetGroupRequest < Struct.new(
      :subnet_group_name)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] deletion_message
    #   A user-specified message for this action (i.e., a reason for
    #   deleting the subnet group).
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DeleteSubnetGroupResponse AWS API Documentation
    #
    class DeleteSubnetGroupResponse < Struct.new(
      :deletion_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] cluster_names
    #   The names of the DAX clusters being described.
    #   @return [Array<String>]
    #
    # @!attribute [rw] max_results
    #   The maximum number of results to include in the response. If more
    #   results exist than the specified `MaxResults` value, a token is
    #   included in the response so that the remaining results can be
    #   retrieved.
    #
    #   The value for `MaxResults` must be between 20 and 100.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   An optional token returned from a prior request. Use this token for
    #   pagination of results from this action. If this parameter is
    #   specified, the response includes only results beyond the token, up
    #   to the value specified by `MaxResults`.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DescribeClustersRequest AWS API Documentation
    #
    class DescribeClustersRequest < Struct.new(
      :cluster_names,
      :max_results,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] next_token
    #   Provides an identifier to allow retrieval of paginated results.
    #   @return [String]
    #
    # @!attribute [rw] clusters
    #   The descriptions of your DAX clusters, in response to a
    #   *DescribeClusters* request.
    #   @return [Array<Types::Cluster>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DescribeClustersResponse AWS API Documentation
    #
    class DescribeClustersResponse < Struct.new(
      :next_token,
      :clusters)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] max_results
    #   The maximum number of results to include in the response. If more
    #   results exist than the specified `MaxResults` value, a token is
    #   included in the response so that the remaining results can be
    #   retrieved.
    #
    #   The value for `MaxResults` must be between 20 and 100.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   An optional token returned from a prior request. Use this token for
    #   pagination of results from this action. If this parameter is
    #   specified, the response includes only results beyond the token, up
    #   to the value specified by `MaxResults`.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DescribeDefaultParametersRequest AWS API Documentation
    #
    class DescribeDefaultParametersRequest < Struct.new(
      :max_results,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] next_token
    #   Provides an identifier to allow retrieval of paginated results.
    #   @return [String]
    #
    # @!attribute [rw] parameters
    #   A list of parameters. Each element in the list represents one
    #   parameter.
    #   @return [Array<Types::Parameter>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DescribeDefaultParametersResponse AWS API Documentation
    #
    class DescribeDefaultParametersResponse < Struct.new(
      :next_token,
      :parameters)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] source_name
    #   The identifier of the event source for which events will be
    #   returned. If not specified, then all sources are included in the
    #   response.
    #   @return [String]
    #
    # @!attribute [rw] source_type
    #   The event source to retrieve events for. If no value is specified,
    #   all events are returned.
    #   @return [String]
    #
    # @!attribute [rw] start_time
    #   The beginning of the time interval to retrieve events for, specified
    #   in ISO 8601 format.
    #   @return [Time]
    #
    # @!attribute [rw] end_time
    #   The end of the time interval for which to retrieve events, specified
    #   in ISO 8601 format.
    #   @return [Time]
    #
    # @!attribute [rw] duration
    #   The number of minutes' worth of events to retrieve.
    #   @return [Integer]
    #
    # @!attribute [rw] max_results
    #   The maximum number of results to include in the response. If more
    #   results exist than the specified `MaxResults` value, a token is
    #   included in the response so that the remaining results can be
    #   retrieved.
    #
    #   The value for `MaxResults` must be between 20 and 100.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   An optional token returned from a prior request. Use this token for
    #   pagination of results from this action. If this parameter is
    #   specified, the response includes only results beyond the token, up
    #   to the value specified by `MaxResults`.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DescribeEventsRequest AWS API Documentation
    #
    class DescribeEventsRequest < Struct.new(
      :source_name,
      :source_type,
      :start_time,
      :end_time,
      :duration,
      :max_results,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] next_token
    #   Provides an identifier to allow retrieval of paginated results.
    #   @return [String]
    #
    # @!attribute [rw] events
    #   An array of events. Each element in the array represents one event.
    #   @return [Array<Types::Event>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DescribeEventsResponse AWS API Documentation
    #
    class DescribeEventsResponse < Struct.new(
      :next_token,
      :events)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] parameter_group_names
    #   The names of the parameter groups.
    #   @return [Array<String>]
    #
    # @!attribute [rw] max_results
    #   The maximum number of results to include in the response. If more
    #   results exist than the specified `MaxResults` value, a token is
    #   included in the response so that the remaining results can be
    #   retrieved.
    #
    #   The value for `MaxResults` must be between 20 and 100.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   An optional token returned from a prior request. Use this token for
    #   pagination of results from this action. If this parameter is
    #   specified, the response includes only results beyond the token, up
    #   to the value specified by `MaxResults`.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DescribeParameterGroupsRequest AWS API Documentation
    #
    class DescribeParameterGroupsRequest < Struct.new(
      :parameter_group_names,
      :max_results,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] next_token
    #   Provides an identifier to allow retrieval of paginated results.
    #   @return [String]
    #
    # @!attribute [rw] parameter_groups
    #   An array of parameter groups. Each element in the array represents
    #   one parameter group.
    #   @return [Array<Types::ParameterGroup>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DescribeParameterGroupsResponse AWS API Documentation
    #
    class DescribeParameterGroupsResponse < Struct.new(
      :next_token,
      :parameter_groups)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] parameter_group_name
    #   The name of the parameter group.
    #   @return [String]
    #
    # @!attribute [rw] source
    #   How the parameter is defined. For example, `system` denotes a
    #   system-defined parameter.
    #   @return [String]
    #
    # @!attribute [rw] max_results
    #   The maximum number of results to include in the response. If more
    #   results exist than the specified `MaxResults` value, a token is
    #   included in the response so that the remaining results can be
    #   retrieved.
    #
    #   The value for `MaxResults` must be between 20 and 100.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   An optional token returned from a prior request. Use this token for
    #   pagination of results from this action. If this parameter is
    #   specified, the response includes only results beyond the token, up
    #   to the value specified by `MaxResults`.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DescribeParametersRequest AWS API Documentation
    #
    class DescribeParametersRequest < Struct.new(
      :parameter_group_name,
      :source,
      :max_results,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] next_token
    #   Provides an identifier to allow retrieval of paginated results.
    #   @return [String]
    #
    # @!attribute [rw] parameters
    #   A list of parameters within a parameter group. Each element in the
    #   list represents one parameter.
    #   @return [Array<Types::Parameter>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DescribeParametersResponse AWS API Documentation
    #
    class DescribeParametersResponse < Struct.new(
      :next_token,
      :parameters)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] subnet_group_names
    #   The name of the subnet group.
    #   @return [Array<String>]
    #
    # @!attribute [rw] max_results
    #   The maximum number of results to include in the response. If more
    #   results exist than the specified `MaxResults` value, a token is
    #   included in the response so that the remaining results can be
    #   retrieved.
    #
    #   The value for `MaxResults` must be between 20 and 100.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   An optional token returned from a prior request. Use this token for
    #   pagination of results from this action. If this parameter is
    #   specified, the response includes only results beyond the token, up
    #   to the value specified by `MaxResults`.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DescribeSubnetGroupsRequest AWS API Documentation
    #
    class DescribeSubnetGroupsRequest < Struct.new(
      :subnet_group_names,
      :max_results,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] next_token
    #   Provides an identifier to allow retrieval of paginated results.
    #   @return [String]
    #
    # @!attribute [rw] subnet_groups
    #   An array of subnet groups. Each element in the array represents a
    #   single subnet group.
    #   @return [Array<Types::SubnetGroup>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DescribeSubnetGroupsResponse AWS API Documentation
    #
    class DescribeSubnetGroupsResponse < Struct.new(
      :next_token,
      :subnet_groups)
      SENSITIVE = []
      include Aws::Structure
    end

    # Represents the information required for client programs to connect to
    # the endpoint for a DAX cluster.
    #
    # @!attribute [rw] address
    #   The DNS hostname of the endpoint.
    #   @return [String]
    #
    # @!attribute [rw] port
    #   The port number that applications should use to connect to the
    #   endpoint.
    #   @return [Integer]
    #
    # @!attribute [rw] url
    #   The URL that applications should use to connect to the endpoint. The
    #   default ports are 8111 for the "dax" protocol and 9111 for the
    #   "daxs" protocol.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/Endpoint AWS API Documentation
    #
    class Endpoint < Struct.new(
      :address,
      :port,
      :url)
      SENSITIVE = []
      include Aws::Structure
    end

    # Represents a single occurrence of something interesting within the
    # system. Some examples of events are creating a DAX cluster, adding or
    # removing a node, or rebooting a node.
    #
    # @!attribute [rw] source_name
    #   The source of the event. For example, if the event occurred at the
    #   node level, the source would be the node ID.
    #   @return [String]
    #
    # @!attribute [rw] source_type
    #   Specifies the origin of this event - a cluster, a parameter group, a
    #   node ID, etc.
    #   @return [String]
    #
    # @!attribute [rw] message
    #   A user-defined message associated with the event.
    #   @return [String]
    #
    # @!attribute [rw] date
    #   The date and time when the event occurred.
    #   @return [Time]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/Event AWS API Documentation
    #
    class Event < Struct.new(
      :source_name,
      :source_type,
      :message,
      :date)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] cluster_name
    #   The name of the DAX cluster that will receive additional nodes.
    #   @return [String]
    #
    # @!attribute [rw] new_replication_factor
    #   The new number of nodes for the DAX cluster.
    #   @return [Integer]
    #
    # @!attribute [rw] availability_zones
    #   The Availability Zones (AZs) in which the cluster nodes will be
    #   created. All nodes belonging to the cluster are placed in these
    #   Availability Zones. Use this parameter if you want to distribute the
    #   nodes across multiple AZs.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/IncreaseReplicationFactorRequest AWS API Documentation
    #
    class IncreaseReplicationFactorRequest < Struct.new(
      :cluster_name,
      :new_replication_factor,
      :availability_zones)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] cluster
    #   A description of the DAX cluster, with its new replication factor.
    #   @return [Types::Cluster]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/IncreaseReplicationFactorResponse AWS API Documentation
    #
    class IncreaseReplicationFactorResponse < Struct.new(
      :cluster)
      SENSITIVE = []
      include Aws::Structure
    end

    # There are not enough system resources to create the cluster you
    # requested (or to resize an already-existing cluster).
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/InsufficientClusterCapacityFault AWS API Documentation
    #
    class InsufficientClusterCapacityFault < Aws::EmptyStructure; end

    # The Amazon Resource Name (ARN) supplied in the request is not valid.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/InvalidARNFault AWS API Documentation
    #
    class InvalidARNFault < Aws::EmptyStructure; end

    # The requested DAX cluster is not in the *available* state.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/InvalidClusterStateFault AWS API Documentation
    #
    class InvalidClusterStateFault < Aws::EmptyStructure; end

    # Two or more incompatible parameters were specified.
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/InvalidParameterCombinationException AWS API Documentation
    #
    class InvalidParameterCombinationException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # One or more parameters in a parameter group are in an invalid state.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/InvalidParameterGroupStateFault AWS API Documentation
    #
    class InvalidParameterGroupStateFault < Aws::EmptyStructure; end

    # The value for a parameter is invalid.
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/InvalidParameterValueException AWS API Documentation
    #
    class InvalidParameterValueException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # An invalid subnet identifier was specified.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/InvalidSubnet AWS API Documentation
    #
    class InvalidSubnet < Aws::EmptyStructure; end

    # The VPC network is in an invalid state.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/InvalidVPCNetworkStateFault AWS API Documentation
    #
    class InvalidVPCNetworkStateFault < Aws::EmptyStructure; end

    # @!attribute [rw] resource_name
    #   The name of the DAX resource to which the tags belong.
    #   @return [String]
    #
    # @!attribute [rw] next_token
    #   An optional token returned from a prior request. Use this token for
    #   pagination of results from this action. If this parameter is
    #   specified, the response includes only results beyond the token.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ListTagsRequest AWS API Documentation
    #
    class ListTagsRequest < Struct.new(
      :resource_name,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] tags
    #   A list of tags currently associated with the DAX cluster.
    #   @return [Array<Types::Tag>]
    #
    # @!attribute [rw] next_token
    #   If this value is present, there are additional results to be
    #   displayed. To retrieve them, call `ListTags` again, with `NextToken`
    #   set to this value.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ListTagsResponse AWS API Documentation
    #
    class ListTagsResponse < Struct.new(
      :tags,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # Represents an individual node within a DAX cluster.
    #
    # @!attribute [rw] node_id
    #   A system-generated identifier for the node.
    #   @return [String]
    #
    # @!attribute [rw] endpoint
    #   The endpoint for the node, consisting of a DNS name and a port
    #   number. Client applications can connect directly to a node endpoint,
    #   if desired (as an alternative to allowing DAX client software to
    #   intelligently route requests and responses to nodes in the DAX
    #   cluster.
    #   @return [Types::Endpoint]
    #
    # @!attribute [rw] node_create_time
    #   The date and time (in UNIX epoch format) when the node was launched.
    #   @return [Time]
    #
    # @!attribute [rw] availability_zone
    #   The Availability Zone (AZ) in which the node has been deployed.
    #   @return [String]
    #
    # @!attribute [rw] node_status
    #   The current status of the node. For example: `available`.
    #   @return [String]
    #
    # @!attribute [rw] parameter_group_status
    #   The status of the parameter group associated with this node. For
    #   example, `in-sync`.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/Node AWS API Documentation
    #
    class Node < Struct.new(
      :node_id,
      :endpoint,
      :node_create_time,
      :availability_zone,
      :node_status,
      :parameter_group_status)
      SENSITIVE = []
      include Aws::Structure
    end

    # None of the nodes in the cluster have the given node ID.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/NodeNotFoundFault AWS API Documentation
    #
    class NodeNotFoundFault < Aws::EmptyStructure; end

    # You have attempted to exceed the maximum number of nodes for a DAX
    # cluster.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/NodeQuotaForClusterExceededFault AWS API Documentation
    #
    class NodeQuotaForClusterExceededFault < Aws::EmptyStructure; end

    # You have attempted to exceed the maximum number of nodes for your
    # Amazon Web Services account.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/NodeQuotaForCustomerExceededFault AWS API Documentation
    #
    class NodeQuotaForCustomerExceededFault < Aws::EmptyStructure; end

    # Represents a parameter value that is applicable to a particular node
    # type.
    #
    # @!attribute [rw] node_type
    #   A node type to which the parameter value applies.
    #   @return [String]
    #
    # @!attribute [rw] value
    #   The parameter value for this node type.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/NodeTypeSpecificValue AWS API Documentation
    #
    class NodeTypeSpecificValue < Struct.new(
      :node_type,
      :value)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a notification topic and its status. Notification topics are
    # used for publishing DAX events to subscribers using Amazon Simple
    # Notification Service (SNS).
    #
    # @!attribute [rw] topic_arn
    #   The Amazon Resource Name (ARN) that identifies the topic.
    #   @return [String]
    #
    # @!attribute [rw] topic_status
    #   The current state of the topic. A value of “active” means that
    #   notifications will be sent to the topic. A value of “inactive” means
    #   that notifications will not be sent to the topic.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/NotificationConfiguration AWS API Documentation
    #
    class NotificationConfiguration < Struct.new(
      :topic_arn,
      :topic_status)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes an individual setting that controls some aspect of DAX
    # behavior.
    #
    # @!attribute [rw] parameter_name
    #   The name of the parameter.
    #   @return [String]
    #
    # @!attribute [rw] parameter_type
    #   Determines whether the parameter can be applied to any nodes, or
    #   only nodes of a particular type.
    #   @return [String]
    #
    # @!attribute [rw] parameter_value
    #   The value for the parameter.
    #   @return [String]
    #
    # @!attribute [rw] node_type_specific_values
    #   A list of node types, and specific parameter values for each node.
    #   @return [Array<Types::NodeTypeSpecificValue>]
    #
    # @!attribute [rw] description
    #   A description of the parameter
    #   @return [String]
    #
    # @!attribute [rw] source
    #   How the parameter is defined. For example, `system` denotes a
    #   system-defined parameter.
    #   @return [String]
    #
    # @!attribute [rw] data_type
    #   The data type of the parameter. For example, `integer`:
    #   @return [String]
    #
    # @!attribute [rw] allowed_values
    #   A range of values within which the parameter can be set.
    #   @return [String]
    #
    # @!attribute [rw] is_modifiable
    #   Whether the customer is allowed to modify the parameter.
    #   @return [String]
    #
    # @!attribute [rw] change_type
    #   The conditions under which changes to this parameter can be applied.
    #   For example, `requires-reboot` indicates that a new value for this
    #   parameter will only take effect if a node is rebooted.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/Parameter AWS API Documentation
    #
    class Parameter < Struct.new(
      :parameter_name,
      :parameter_type,
      :parameter_value,
      :node_type_specific_values,
      :description,
      :source,
      :data_type,
      :allowed_values,
      :is_modifiable,
      :change_type)
      SENSITIVE = []
      include Aws::Structure
    end

    # A named set of parameters that are applied to all of the nodes in a
    # DAX cluster.
    #
    # @!attribute [rw] parameter_group_name
    #   The name of the parameter group.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   A description of the parameter group.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ParameterGroup AWS API Documentation
    #
    class ParameterGroup < Struct.new(
      :parameter_group_name,
      :description)
      SENSITIVE = []
      include Aws::Structure
    end

    # The specified parameter group already exists.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ParameterGroupAlreadyExistsFault AWS API Documentation
    #
    class ParameterGroupAlreadyExistsFault < Aws::EmptyStructure; end

    # The specified parameter group does not exist.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ParameterGroupNotFoundFault AWS API Documentation
    #
    class ParameterGroupNotFoundFault < Aws::EmptyStructure; end

    # You have attempted to exceed the maximum number of parameter groups.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ParameterGroupQuotaExceededFault AWS API Documentation
    #
    class ParameterGroupQuotaExceededFault < Aws::EmptyStructure; end

    # The status of a parameter group.
    #
    # @!attribute [rw] parameter_group_name
    #   The name of the parameter group.
    #   @return [String]
    #
    # @!attribute [rw] parameter_apply_status
    #   The status of parameter updates.
    #   @return [String]
    #
    # @!attribute [rw] node_ids_to_reboot
    #   The node IDs of one or more nodes to be rebooted.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ParameterGroupStatus AWS API Documentation
    #
    class ParameterGroupStatus < Struct.new(
      :parameter_group_name,
      :parameter_apply_status,
      :node_ids_to_reboot)
      SENSITIVE = []
      include Aws::Structure
    end

    # An individual DAX parameter.
    #
    # @!attribute [rw] parameter_name
    #   The name of the parameter.
    #   @return [String]
    #
    # @!attribute [rw] parameter_value
    #   The value of the parameter.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ParameterNameValue AWS API Documentation
    #
    class ParameterNameValue < Struct.new(
      :parameter_name,
      :parameter_value)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] cluster_name
    #   The name of the DAX cluster containing the node to be rebooted.
    #   @return [String]
    #
    # @!attribute [rw] node_id
    #   The system-assigned ID of the node to be rebooted.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/RebootNodeRequest AWS API Documentation
    #
    class RebootNodeRequest < Struct.new(
      :cluster_name,
      :node_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] cluster
    #   A description of the DAX cluster after a node has been rebooted.
    #   @return [Types::Cluster]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/RebootNodeResponse AWS API Documentation
    #
    class RebootNodeResponse < Struct.new(
      :cluster)
      SENSITIVE = []
      include Aws::Structure
    end

    # The description of the server-side encryption status on the specified
    # DAX cluster.
    #
    # @!attribute [rw] status
    #   The current state of server-side encryption:
    #
    #   * `ENABLING` - Server-side encryption is being enabled.
    #
    #   * `ENABLED` - Server-side encryption is enabled.
    #
    #   * `DISABLING` - Server-side encryption is being disabled.
    #
    #   * `DISABLED` - Server-side encryption is disabled.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/SSEDescription AWS API Documentation
    #
    class SSEDescription < Struct.new(
      :status)
      SENSITIVE = []
      include Aws::Structure
    end

    # Represents the settings used to enable server-side encryption.
    #
    # @!attribute [rw] enabled
    #   Indicates whether server-side encryption is enabled (true) or
    #   disabled (false) on the cluster.
    #   @return [Boolean]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/SSESpecification AWS API Documentation
    #
    class SSESpecification < Struct.new(
      :enabled)
      SENSITIVE = []
      include Aws::Structure
    end

    # An individual VPC security group and its status.
    #
    # @!attribute [rw] security_group_identifier
    #   The unique ID for this security group.
    #   @return [String]
    #
    # @!attribute [rw] status
    #   The status of this security group.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/SecurityGroupMembership AWS API Documentation
    #
    class SecurityGroupMembership < Struct.new(
      :security_group_identifier,
      :status)
      SENSITIVE = []
      include Aws::Structure
    end

    # The specified service linked role (SLR) was not found.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ServiceLinkedRoleNotFoundFault AWS API Documentation
    #
    class ServiceLinkedRoleNotFoundFault < Aws::EmptyStructure; end

    # You have reached the maximum number of x509 certificates that can be
    # created for encrypted clusters in a 30 day period. Contact Amazon Web
    # Services customer support to discuss options for continuing to create
    # encrypted clusters.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/ServiceQuotaExceededException AWS API Documentation
    #
    class ServiceQuotaExceededException < Aws::EmptyStructure; end

    # Represents the subnet associated with a DAX cluster. This parameter
    # refers to subnets defined in Amazon Virtual Private Cloud (Amazon VPC)
    # and used with DAX.
    #
    # @!attribute [rw] subnet_identifier
    #   The system-assigned identifier for the subnet.
    #   @return [String]
    #
    # @!attribute [rw] subnet_availability_zone
    #   The Availability Zone (AZ) for the subnet.
    #   @return [String]
    #
    # @!attribute [rw] supported_network_types
    #   The network types supported by this subnet. Returns an array of
    #   strings that can include `ipv4`, `ipv6`, or both, indicating whether
    #   the subnet supports IPv4 only, IPv6 only, or dual-stack deployments.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/Subnet AWS API Documentation
    #
    class Subnet < Struct.new(
      :subnet_identifier,
      :subnet_availability_zone,
      :supported_network_types)
      SENSITIVE = []
      include Aws::Structure
    end

    # Represents the output of one of the following actions:
    #
    # * *CreateSubnetGroup*
    #
    # * *ModifySubnetGroup*
    #
    # @!attribute [rw] subnet_group_name
    #   The name of the subnet group.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   The description of the subnet group.
    #   @return [String]
    #
    # @!attribute [rw] vpc_id
    #   The Amazon Virtual Private Cloud identifier (VPC ID) of the subnet
    #   group.
    #   @return [String]
    #
    # @!attribute [rw] subnets
    #   A list of subnets associated with the subnet group.
    #   @return [Array<Types::Subnet>]
    #
    # @!attribute [rw] supported_network_types
    #   The network types supported by this subnet. Returns an array of
    #   strings that can include `ipv4`, `ipv6`, or both, indicating whether
    #   the subnet group supports IPv4 only, IPv6 only, or dual-stack
    #   deployments.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/SubnetGroup AWS API Documentation
    #
    class SubnetGroup < Struct.new(
      :subnet_group_name,
      :description,
      :vpc_id,
      :subnets,
      :supported_network_types)
      SENSITIVE = []
      include Aws::Structure
    end

    # The specified subnet group already exists.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/SubnetGroupAlreadyExistsFault AWS API Documentation
    #
    class SubnetGroupAlreadyExistsFault < Aws::EmptyStructure; end

    # The specified subnet group is currently in use.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/SubnetGroupInUseFault AWS API Documentation
    #
    class SubnetGroupInUseFault < Aws::EmptyStructure; end

    # The requested subnet group name does not refer to an existing subnet
    # group.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/SubnetGroupNotFoundFault AWS API Documentation
    #
    class SubnetGroupNotFoundFault < Aws::EmptyStructure; end

    # The request cannot be processed because it would exceed the allowed
    # number of subnets in a subnet group.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/SubnetGroupQuotaExceededFault AWS API Documentation
    #
    class SubnetGroupQuotaExceededFault < Aws::EmptyStructure; end

    # The requested subnet is being used by another subnet group.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/SubnetInUse AWS API Documentation
    #
    class SubnetInUse < Aws::EmptyStructure; end

    # The specified subnet can't be used for the requested network type.
    # This error occurs when either there aren't enough subnets of the
    # required network type to create the cluster, or when you try to use a
    # subnet that doesn't support the requested network type (for example,
    # trying to create a dual-stack cluster with a subnet that doesn't have
    # IPv6 CIDR).
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/SubnetNotAllowedFault AWS API Documentation
    #
    class SubnetNotAllowedFault < Aws::EmptyStructure; end

    # The request cannot be processed because it would exceed the allowed
    # number of subnets in a subnet group.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/SubnetQuotaExceededFault AWS API Documentation
    #
    class SubnetQuotaExceededFault < Aws::EmptyStructure; end

    # A description of a tag. Every tag is a key-value pair. You can add up
    # to 50 tags to a single DAX cluster.
    #
    # Amazon Web Services-assigned tag names and values are automatically
    # assigned the `aws:` prefix, which the user cannot assign. Amazon Web
    # Services-assigned tag names do not count towards the tag limit of 50.
    # User-assigned tag names have the prefix `user:`.
    #
    # You cannot backdate the application of a tag.
    #
    # @!attribute [rw] key
    #   The key for the tag. Tag keys are case sensitive. Every DAX cluster
    #   can only have one tag with the same key. If you try to add an
    #   existing tag (same key), the existing tag value will be updated to
    #   the new value.
    #   @return [String]
    #
    # @!attribute [rw] value
    #   The value of the tag. Tag values are case-sensitive and can be null.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/Tag AWS API Documentation
    #
    class Tag < Struct.new(
      :key,
      :value)
      SENSITIVE = []
      include Aws::Structure
    end

    # The tag does not exist.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/TagNotFoundFault AWS API Documentation
    #
    class TagNotFoundFault < Aws::EmptyStructure; end

    # You have exceeded the maximum number of tags for this DAX cluster.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/TagQuotaPerResourceExceeded AWS API Documentation
    #
    class TagQuotaPerResourceExceeded < Aws::EmptyStructure; end

    # @!attribute [rw] resource_name
    #   The name of the DAX resource to which tags should be added.
    #   @return [String]
    #
    # @!attribute [rw] tags
    #   The tags to be assigned to the DAX resource.
    #   @return [Array<Types::Tag>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/TagResourceRequest AWS API Documentation
    #
    class TagResourceRequest < Struct.new(
      :resource_name,
      :tags)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] tags
    #   The list of tags that are associated with the DAX resource.
    #   @return [Array<Types::Tag>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/TagResourceResponse AWS API Documentation
    #
    class TagResourceResponse < Struct.new(
      :tags)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] resource_name
    #   The name of the DAX resource from which the tags should be removed.
    #   @return [String]
    #
    # @!attribute [rw] tag_keys
    #   A list of tag keys. If the DAX cluster has any tags with these keys,
    #   then the tags are removed from the cluster.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/UntagResourceRequest AWS API Documentation
    #
    class UntagResourceRequest < Struct.new(
      :resource_name,
      :tag_keys)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] tags
    #   The tag keys that have been removed from the cluster.
    #   @return [Array<Types::Tag>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/UntagResourceResponse AWS API Documentation
    #
    class UntagResourceResponse < Struct.new(
      :tags)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] cluster_name
    #   The name of the DAX cluster to be modified.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   A description of the changes being made to the cluster.
    #   @return [String]
    #
    # @!attribute [rw] preferred_maintenance_window
    #   A range of time when maintenance of DAX cluster software will be
    #   performed. For example: `sun:01:00-sun:09:00`. Cluster maintenance
    #   normally takes less than 30 minutes, and is performed automatically
    #   within the maintenance window.
    #   @return [String]
    #
    # @!attribute [rw] notification_topic_arn
    #   The Amazon Resource Name (ARN) that identifies the topic.
    #   @return [String]
    #
    # @!attribute [rw] notification_topic_status
    #   The current state of the topic. A value of “active” means that
    #   notifications will be sent to the topic. A value of “inactive” means
    #   that notifications will not be sent to the topic.
    #   @return [String]
    #
    # @!attribute [rw] parameter_group_name
    #   The name of a parameter group for this cluster.
    #   @return [String]
    #
    # @!attribute [rw] security_group_ids
    #   A list of user-specified security group IDs to be assigned to each
    #   node in the DAX cluster. If this parameter is not specified, DAX
    #   assigns the default VPC security group to each node.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/UpdateClusterRequest AWS API Documentation
    #
    class UpdateClusterRequest < Struct.new(
      :cluster_name,
      :description,
      :preferred_maintenance_window,
      :notification_topic_arn,
      :notification_topic_status,
      :parameter_group_name,
      :security_group_ids)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] cluster
    #   A description of the DAX cluster, after it has been modified.
    #   @return [Types::Cluster]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/UpdateClusterResponse AWS API Documentation
    #
    class UpdateClusterResponse < Struct.new(
      :cluster)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] parameter_group_name
    #   The name of the parameter group.
    #   @return [String]
    #
    # @!attribute [rw] parameter_name_values
    #   An array of name-value pairs for the parameters in the group. Each
    #   element in the array represents a single parameter.
    #
    #   <note markdown="1"> `record-ttl-millis` and `query-ttl-millis` are the only supported
    #   parameter names. For more details, see [Configuring TTL
    #   Settings][1].
    #
    #    </note>
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.cluster-management.html#DAX.cluster-management.custom-settings.ttl
    #   @return [Array<Types::ParameterNameValue>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/UpdateParameterGroupRequest AWS API Documentation
    #
    class UpdateParameterGroupRequest < Struct.new(
      :parameter_group_name,
      :parameter_name_values)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] parameter_group
    #   The parameter group that has been modified.
    #   @return [Types::ParameterGroup]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/UpdateParameterGroupResponse AWS API Documentation
    #
    class UpdateParameterGroupResponse < Struct.new(
      :parameter_group)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] subnet_group_name
    #   The name of the subnet group.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   A description of the subnet group.
    #   @return [String]
    #
    # @!attribute [rw] subnet_ids
    #   A list of subnet IDs in the subnet group.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/UpdateSubnetGroupRequest AWS API Documentation
    #
    class UpdateSubnetGroupRequest < Struct.new(
      :subnet_group_name,
      :description,
      :subnet_ids)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] subnet_group
    #   The subnet group that has been modified.
    #   @return [Types::SubnetGroup]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/UpdateSubnetGroupResponse AWS API Documentation
    #
    class UpdateSubnetGroupResponse < Struct.new(
      :subnet_group)
      SENSITIVE = []
      include Aws::Structure
    end

  end
end

