diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,30 +8,27 @@
 
 ## Version
 
-`1.4.4`
+`1.4.5`
 
 
 ## Description
 
-Amazon ElastiCache
-
-Amazon ElastiCache is a web service that makes it easier to set up, operate, and scale a distributed cache in the cloud.
-
-With ElastiCache, customers gain all of the benefits of a high-performance, in-memory cache with far less of the administrative burden of launching and managing a distributed cache. The service makes setup, scaling, and cluster failure handling much simpler than in a self-managed cache deployment.
-
-In addition, through integration with Amazon CloudWatch, customers get enhanced visibility into the key performance statistics associated with their cache and can receive alarms if a part of their cache runs hot.
-
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-elasticache)
 and the [AWS API Reference](https://aws.amazon.com/documentation/).
 
 The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
-which provides mechanisms for specifying AuthN/AuthZ information and sending requests.
+which provides mechanisms for specifying AuthN/AuthZ information, sending requests,
+and receiving responses.
 
-Use of lenses is required for constructing and manipulating types.
-This is due to the amount of nesting of AWS types and transparency regarding
+Lenses are used for constructing and manipulating types,
+due to the depth of nesting of AWS types and transparency regarding
 de/serialisation into more palatable Haskell values.
 The provided lenses should be compatible with any of the major lens libraries
 [lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
+
+See [Network.AWS.ElastiCache](http://hackage.haskell.org/package/amazonka-elasticache/docs/Network-AWS-ElastiCache.html)
+or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
+
 
 ## Contribute
 
diff --git a/amazonka-elasticache.cabal b/amazonka-elasticache.cabal
--- a/amazonka-elasticache.cabal
+++ b/amazonka-elasticache.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-elasticache
-version:               1.4.4
+version:               1.4.5
 synopsis:              Amazon ElastiCache SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -13,26 +13,19 @@
 cabal-version:         >= 1.10
 extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
 description:
-    Amazon ElastiCache
-
-    Amazon ElastiCache is a web service that makes it easier to set up, operate, and scale a distributed cache in the cloud.
-
-    With ElastiCache, customers gain all of the benefits of a high-performance, in-memory cache with far less of the administrative burden of launching and managing a distributed cache. The service makes setup, scaling, and cluster failure handling much simpler than in a self-managed cache deployment.
-
-    In addition, through integration with Amazon CloudWatch, customers get enhanced visibility into the key performance statistics associated with their cache and can receive alarms if a part of their cache runs hot.
-    .
     The types from this library are intended to be used with
     <http://hackage.haskell.org/package/amazonka amazonka>, which provides
-    mechanisms for specifying AuthN/AuthZ information and sending requests.
+    mechanisms for specifying AuthN/AuthZ information, sending requests,
+    and receiving responses.
     .
-    Use of lenses is required for constructing and manipulating types.
-    This is due to the amount of nesting of AWS types and transparency regarding
+    Lenses are used for constructing and manipulating types,
+    due to the depth of nesting of AWS types and transparency regarding
     de/serialisation into more palatable Haskell values.
     The provided lenses should be compatible with any of the major lens libraries
     such as <http://hackage.haskell.org/package/lens lens> or
     <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
     .
-    See "Network.AWS.ElastiCache" or <https://aws.amazon.com/documentation/ the AWS Documentation>
+    See "Network.AWS.ElastiCache" or <https://aws.amazon.com/documentation/ the AWS documentation>
     to get started.
 
 source-repository head
@@ -93,7 +86,7 @@
         , Network.AWS.ElastiCache.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.4.*
+          amazonka-core == 1.4.5.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-elasticache-test
@@ -113,9 +106,9 @@
         , Test.AWS.ElastiCache.Internal
 
     build-depends:
-          amazonka-core == 1.4.4.*
-        , amazonka-test == 1.4.4.*
-        , amazonka-elasticache == 1.4.4.*
+          amazonka-core == 1.4.5.*
+        , amazonka-test == 1.4.5.*
+        , amazonka-elasticache == 1.4.5.*
         , base
         , bytestring
         , tasty
diff --git a/gen/Network/AWS/ElastiCache.hs b/gen/Network/AWS/ElastiCache.hs
--- a/gen/Network/AWS/ElastiCache.hs
+++ b/gen/Network/AWS/ElastiCache.hs
@@ -11,13 +11,14 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Amazon ElastiCache
+-- __Amazon ElastiCache__
 --
 -- Amazon ElastiCache is a web service that makes it easier to set up, operate, and scale a distributed cache in the cloud.
 --
--- With ElastiCache, customers gain all of the benefits of a high-performance, in-memory cache with far less of the administrative burden of launching and managing a distributed cache. The service makes setup, scaling, and cluster failure handling much simpler than in a self-managed cache deployment.
+-- With ElastiCache, customers get all of the benefits of a high-performance, in-memory cache with less of the administrative burden involved in launching and managing a distributed cache. The service makes setup, scaling, and cluster failure handling much simpler than in a self-managed cache deployment.
 --
 -- In addition, through integration with Amazon CloudWatch, customers get enhanced visibility into the key performance statistics associated with their cache and can receive alarms if a part of their cache runs hot.
+--
 module Network.AWS.ElastiCache
     (
     -- * Service Configuration
@@ -38,6 +39,9 @@
     -- ** CacheSubnetGroupAlreadyExistsFault
     , _CacheSubnetGroupAlreadyExistsFault
 
+    -- ** NodeGroupsPerReplicationGroupQuotaExceededFault
+    , _NodeGroupsPerReplicationGroupQuotaExceededFault
+
     -- ** CacheSubnetGroupQuotaExceededFault
     , _CacheSubnetGroupQuotaExceededFault
 
@@ -446,9 +450,18 @@
     , nodeGroup
     , ngStatus
     , ngPrimaryEndpoint
+    , ngSlots
     , ngNodeGroupMembers
     , ngNodeGroupId
 
+    -- ** NodeGroupConfiguration
+    , NodeGroupConfiguration
+    , nodeGroupConfiguration
+    , ngcSlots
+    , ngcReplicaCount
+    , ngcPrimaryAvailabilityZone
+    , ngcReplicaAvailabilityZones
+
     -- ** NodeGroupMember
     , NodeGroupMember
     , nodeGroupMember
@@ -461,8 +474,11 @@
     -- ** NodeSnapshot
     , NodeSnapshot
     , nodeSnapshot
+    , nsNodeGroupConfiguration
     , nsCacheNodeCreateTime
+    , nsCacheClusterId
     , nsCacheNodeId
+    , nsNodeGroupId
     , nsSnapshotCreateTime
     , nsCacheSize
 
@@ -511,7 +527,10 @@
     , rgStatus
     , rgNodeGroups
     , rgSnapshottingClusterId
+    , rgSnapshotWindow
+    , rgConfigurationEndpoint
     , rgMemberClusters
+    , rgSnapshotRetentionLimit
     , rgDescription
     , rgReplicationGroupId
     , rgPendingModifiedValues
@@ -565,6 +584,7 @@
     , sCacheClusterCreateTime
     , sAutoMinorVersionUpgrade
     , sCacheParameterGroupName
+    , sReplicationGroupDescription
     , sVPCId
     , sSnapshotStatus
     , sSnapshotWindow
@@ -575,10 +595,13 @@
     , sNodeSnapshots
     , sCacheSubnetGroupName
     , sPreferredAvailabilityZone
+    , sNumNodeGroups
     , sSnapshotRetentionLimit
     , sSnapshotName
+    , sReplicationGroupId
     , sNumCacheNodes
     , sPort
+    , sAutomaticFailover
     , sSnapshotSource
 
     -- ** Subnet
diff --git a/gen/Network/AWS/ElastiCache/AddTagsToResource.hs b/gen/Network/AWS/ElastiCache/AddTagsToResource.hs
--- a/gen/Network/AWS/ElastiCache/AddTagsToResource.hs
+++ b/gen/Network/AWS/ElastiCache/AddTagsToResource.hs
@@ -18,9 +18,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /AddTagsToResource/ action adds up to 10 cost allocation tags to the named resource. A /cost allocation tag/ is a key-value pair where the key and value are case-sensitive. Cost allocation tags can be used to categorize and track your AWS costs.
+-- Adds up to 10 cost allocation tags to the named resource. A cost allocation tag is a key-value pair where the key and value are case-sensitive. You can use cost allocation tags to categorize and track your AWS costs.
 --
--- When you apply tags to your ElastiCache resources, AWS generates a cost allocation report as a comma-separated value (CSV) file with your usage and costs aggregated by your tags. You can apply tags that represent business categories (such as cost centers, application names, or owners) to organize your costs across multiple services. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Tagging.html Using Cost Allocation Tags in Amazon ElastiCache> in the /ElastiCache User Guide/.
+--
+-- When you apply tags to your ElastiCache resources, AWS generates a cost allocation report as a comma-separated value (CSV) file with your usage and costs aggregated by your tags. You can apply tags that represent business categories (such as cost centers, application names, or owners) to organize your costs across multiple services. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Tagging.html Using Cost Allocation Tags in Amazon ElastiCache> in the /ElastiCache User Guide/ .
+--
 module Network.AWS.ElastiCache.AddTagsToResource
     (
     -- * Creating a Request
@@ -44,8 +46,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of an /AddTagsToResource/ action.
+-- | Represents the input of an AddTagsToResource operation.
 --
+--
+--
 -- /See:/ 'addTagsToResource' smart constructor.
 data AddTagsToResource = AddTagsToResource'
     { _attrResourceName :: !Text
@@ -56,9 +60,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'attrResourceName'
+-- * 'attrResourceName' - The Amazon Resource Name (ARN) of the resource to which the tags are to be added, for example @arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster@ or @arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot@ . For more information about ARNs, see <http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces> .
 --
--- * 'attrTags'
+-- * 'attrTags' - A list of cost allocation tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value.
 addTagsToResource
     :: Text -- ^ 'attrResourceName'
     -> AddTagsToResource
@@ -68,9 +72,7 @@
     , _attrTags = mempty
     }
 
--- | The Amazon Resource Name (ARN) of the resource to which the tags are to be added, for example 'arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster' or 'arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot'.
---
--- For more information on ARNs, go to <http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces>.
+-- | The Amazon Resource Name (ARN) of the resource to which the tags are to be added, for example @arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster@ or @arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot@ . For more information about ARNs, see <http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces> .
 attrResourceName :: Lens' AddTagsToResource Text
 attrResourceName = lens _attrResourceName (\ s a -> s{_attrResourceName = a});
 
diff --git a/gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs b/gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs
--- a/gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs
+++ b/gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs
@@ -18,9 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /AuthorizeCacheSecurityGroupIngress/ action allows network ingress to a cache security group. Applications using ElastiCache must be running on Amazon EC2, and Amazon EC2 security groups are used as the authorization mechanism.
+-- Allows network ingress to a cache security group. Applications using ElastiCache must be running on Amazon EC2, and Amazon EC2 security groups are used as the authorization mechanism.
 --
--- You cannot authorize ingress from an Amazon EC2 security group in one region to an ElastiCache cluster in another region.
+--
 module Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress
     (
     -- * Creating a Request
@@ -46,8 +46,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of an /AuthorizeCacheSecurityGroupIngress/ action.
+-- | Represents the input of an AuthorizeCacheSecurityGroupIngress operation.
 --
+--
+--
 -- /See:/ 'authorizeCacheSecurityGroupIngress' smart constructor.
 data AuthorizeCacheSecurityGroupIngress = AuthorizeCacheSecurityGroupIngress'
     { _acsgiCacheSecurityGroupName  :: !Text
@@ -59,11 +61,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'acsgiCacheSecurityGroupName'
+-- * 'acsgiCacheSecurityGroupName' - The cache security group that allows network ingress.
 --
--- * 'acsgiEC2SecurityGroupName'
+-- * 'acsgiEC2SecurityGroupName' - The Amazon EC2 security group to be authorized for ingress to the cache security group.
 --
--- * 'acsgiEC2SecurityGroupOwnerId'
+-- * 'acsgiEC2SecurityGroupOwnerId' - The AWS account number of the Amazon EC2 security group owner. Note that this is not the same thing as an AWS access key ID - you must provide a valid AWS account number for this parameter.
 authorizeCacheSecurityGroupIngress
     :: Text -- ^ 'acsgiCacheSecurityGroupName'
     -> Text -- ^ 'acsgiEC2SecurityGroupName'
@@ -76,7 +78,7 @@
     , _acsgiEC2SecurityGroupOwnerId = pEC2SecurityGroupOwnerId_
     }
 
--- | The cache security group which will allow network ingress.
+-- | The cache security group that allows network ingress.
 acsgiCacheSecurityGroupName :: Lens' AuthorizeCacheSecurityGroupIngress Text
 acsgiCacheSecurityGroupName = lens _acsgiCacheSecurityGroupName (\ s a -> s{_acsgiCacheSecurityGroupName = a});
 
@@ -135,9 +137,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'acsgirsCacheSecurityGroup'
+-- * 'acsgirsCacheSecurityGroup' - Undocumented member.
 --
--- * 'acsgirsResponseStatus'
+-- * 'acsgirsResponseStatus' - -- | The response status code.
 authorizeCacheSecurityGroupIngressResponse
     :: Int -- ^ 'acsgirsResponseStatus'
     -> AuthorizeCacheSecurityGroupIngressResponse
@@ -151,7 +153,7 @@
 acsgirsCacheSecurityGroup :: Lens' AuthorizeCacheSecurityGroupIngressResponse (Maybe CacheSecurityGroup)
 acsgirsCacheSecurityGroup = lens _acsgirsCacheSecurityGroup (\ s a -> s{_acsgirsCacheSecurityGroup = a});
 
--- | The response status code.
+-- | -- | The response status code.
 acsgirsResponseStatus :: Lens' AuthorizeCacheSecurityGroupIngressResponse Int
 acsgirsResponseStatus = lens _acsgirsResponseStatus (\ s a -> s{_acsgirsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/CopySnapshot.hs b/gen/Network/AWS/ElastiCache/CopySnapshot.hs
--- a/gen/Network/AWS/ElastiCache/CopySnapshot.hs
+++ b/gen/Network/AWS/ElastiCache/CopySnapshot.hs
@@ -18,16 +18,49 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /CopySnapshot/ action makes a copy of an existing snapshot.
+-- Makes a copy of an existing snapshot.
 --
--- Users or groups that have permissions to use the /CopySnapshot/ API can create their own Amazon S3 buckets and copy snapshots to it. To control access to your snapshots, use an IAM policy to control who has the ability to use the /CopySnapshot/ API. For more information about using IAM to control the use of ElastiCache APIs, see <http://docs.aws.amazon.com/ElastiCache/latest/Snapshots.Exporting.html Exporting Snapshots> and <http://docs.aws.amazon.com/ElastiCache/latest/IAM.html Authentication & Access Control>.
 --
--- __Erorr Message:__
+-- /Important:/ Users or groups that have permissions to use the @CopySnapshot@ operation can create their own Amazon S3 buckets and copy snapshots to it. To control access to your snapshots, use an IAM policy to control who has the ability to use the @CopySnapshot@ operation. For more information about using IAM to control the use of ElastiCache operations, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html Exporting Snapshots> and <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/IAM.html Authentication & Access Control> .
 --
--- -   __Error Message:__ The authenticated user does not have sufficient permissions to perform the desired activity.
+-- You could receive the following error messages.
 --
---     __Solution:__ Contact your system administrator to get the needed permissions.
+-- __Error Messages__
 --
+--     * __Error Message:__ The S3 bucket %s is outside of the region.
+--
+-- __Solution:__ Create an Amazon S3 bucket in the same region as your snapshot. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.CreateBucket Step 1: Create an Amazon S3 Bucket> in the ElastiCache User Guide.
+--
+--     * __Error Message:__ The S3 bucket %s does not exist.
+--
+-- __Solution:__ Create an Amazon S3 bucket in the same region as your snapshot. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.CreateBucket Step 1: Create an Amazon S3 Bucket> in the ElastiCache User Guide.
+--
+--     * __Error Message:__ The S3 bucket %s is not owned by the authenticated user.
+--
+-- __Solution:__ Create an Amazon S3 bucket in the same region as your snapshot. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.CreateBucket Step 1: Create an Amazon S3 Bucket> in the ElastiCache User Guide.
+--
+--     * __Error Message:__ The authenticated user does not have sufficient permissions to perform the desired activity.
+--
+-- __Solution:__ Contact your system administrator to get the needed permissions.
+--
+--     * __Error Message:__ The S3 bucket %s already contains an object with key %s.
+--
+-- __Solution:__ Give the @TargetSnapshotName@ a new and unique value. If exporting a snapshot, you could alternatively create a new Amazon S3 bucket and use this same value for @TargetSnapshotName@ .
+--
+--     * __Error Message: __ ElastiCache has not been granted READ permissions %s on the S3 Bucket.
+--
+-- __Solution:__ Add List and Read permissions on the bucket. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.GrantAccess Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket> in the ElastiCache User Guide.
+--
+--     * __Error Message: __ ElastiCache has not been granted WRITE permissions %s on the S3 Bucket.
+--
+-- __Solution:__ Add Upload/Delete permissions on the bucket. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.GrantAccess Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket> in the ElastiCache User Guide.
+--
+--     * __Error Message: __ ElastiCache has not been granted READ_ACP permissions %s on the S3 Bucket.
+--
+-- __Solution:__ Add View Permissions on the bucket. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.GrantAccess Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket> in the ElastiCache User Guide.
+--
+--
+--
 module Network.AWS.ElastiCache.CopySnapshot
     (
     -- * Creating a Request
@@ -53,8 +86,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /CopySnapshotMessage/ action.
+-- | Represents the input of a @CopySnapshotMessage@ operation.
 --
+--
+--
 -- /See:/ 'copySnapshot' smart constructor.
 data CopySnapshot = CopySnapshot'
     { _csTargetBucket       :: !(Maybe Text)
@@ -66,11 +101,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csTargetBucket'
+-- * 'csTargetBucket' - The Amazon S3 bucket to which the snapshot is exported. This parameter is used only when exporting a snapshot for external access. When using this parameter to export a snapshot, be sure Amazon ElastiCache has the needed permissions to this S3 bucket. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.GrantAccess Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket> in the /Amazon ElastiCache User Guide/ . For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html Exporting a Snapshot> in the /Amazon ElastiCache User Guide/ .
 --
--- * 'csSourceSnapshotName'
+-- * 'csSourceSnapshotName' - The name of an existing snapshot from which to make a copy.
 --
--- * 'csTargetSnapshotName'
+-- * 'csTargetSnapshotName' - A name for the snapshot copy. ElastiCache does not permit overwriting a snapshot, therefore this name must be unique within its context - ElastiCache or an Amazon S3 bucket if exporting.
 copySnapshot
     :: Text -- ^ 'csSourceSnapshotName'
     -> Text -- ^ 'csTargetSnapshotName'
@@ -82,45 +117,7 @@
     , _csTargetSnapshotName = pTargetSnapshotName_
     }
 
--- | The Amazon S3 bucket to which the snapshot will be exported. This parameter is used only when exporting a snapshot for external access.
---
--- When using this parameter to export a snapshot, be sure Amazon ElastiCache has the needed permissions to this S3 bucket. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.GrantAccess Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket> in the /Amazon ElastiCache User Guide/.
---
--- __Error Messages:__
---
--- You could receive one of the following error messages.
---
--- __Erorr Messages__
---
--- -   __Error Message:__ ElastiCache has not been granted READ permissions %s on the S3 Bucket.
---
---     __Solution:__ Add List and Read permissions on the bucket.
---
--- -   __Error Message:__ ElastiCache has not been granted WRITE permissions %s on the S3 Bucket.
---
---     __Solution:__ Add Upload\/Delete permissions on the bucket.
---
--- -   __Error Message:__ ElastiCache has not been granted READ_ACP permissions %s on the S3 Bucket.
---
---     __Solution:__ Add View Permissions permissions on the bucket.
---
--- -   __Error Message:__ The S3 bucket %s is outside of the region.
---
---     __Solution:__ Before exporting your snapshot, create a new Amazon S3 bucket in the same region as your snapshot. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.CreateBucket Step 1: Create an Amazon S3 Bucket>.
---
--- -   __Error Message:__ The S3 bucket %s does not exist.
---
---     __Solution:__ Create an Amazon S3 bucket in the same region as your snapshot. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.CreateBucket Step 1: Create an Amazon S3 Bucket>.
---
--- -   __Error Message:__ The S3 bucket %s is not owned by the authenticated user.
---
---     __Solution:__ Create an Amazon S3 bucket in the same region as your snapshot. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.CreateBucket Step 1: Create an Amazon S3 Bucket>.
---
--- -   __Error Message:__ The authenticated user does not have sufficient permissions to perform the desired activity.
---
---     __Solution:__ Contact your system administrator to get the needed permissions.
---
--- For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html Exporting a Snapshot> in the /Amazon ElastiCache User Guide/.
+-- | The Amazon S3 bucket to which the snapshot is exported. This parameter is used only when exporting a snapshot for external access. When using this parameter to export a snapshot, be sure Amazon ElastiCache has the needed permissions to this S3 bucket. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.GrantAccess Step 2: Grant ElastiCache Access to Your Amazon S3 Bucket> in the /Amazon ElastiCache User Guide/ . For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html Exporting a Snapshot> in the /Amazon ElastiCache User Guide/ .
 csTargetBucket :: Lens' CopySnapshot (Maybe Text)
 csTargetBucket = lens _csTargetBucket (\ s a -> s{_csTargetBucket = a});
 
@@ -129,13 +126,6 @@
 csSourceSnapshotName = lens _csSourceSnapshotName (\ s a -> s{_csSourceSnapshotName = a});
 
 -- | A name for the snapshot copy. ElastiCache does not permit overwriting a snapshot, therefore this name must be unique within its context - ElastiCache or an Amazon S3 bucket if exporting.
---
--- __Error Message__
---
--- -   __Error Message:__ The S3 bucket %s already contains an object with key %s.
---
---     __Solution:__ Give the /TargetSnapshotName/ a new and unique value. If exporting a snapshot, you could alternatively create a new Amazon S3 bucket and use this same value for /TargetSnapshotName/.
---
 csTargetSnapshotName :: Lens' CopySnapshot Text
 csTargetSnapshotName = lens _csTargetSnapshotName (\ s a -> s{_csTargetSnapshotName = a});
 
@@ -177,9 +167,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csrsSnapshot'
+-- * 'csrsSnapshot' - Undocumented member.
 --
--- * 'csrsResponseStatus'
+-- * 'csrsResponseStatus' - -- | The response status code.
 copySnapshotResponse
     :: Int -- ^ 'csrsResponseStatus'
     -> CopySnapshotResponse
@@ -193,7 +183,7 @@
 csrsSnapshot :: Lens' CopySnapshotResponse (Maybe Snapshot)
 csrsSnapshot = lens _csrsSnapshot (\ s a -> s{_csrsSnapshot = a});
 
--- | The response status code.
+-- | -- | The response status code.
 csrsResponseStatus :: Lens' CopySnapshotResponse Int
 csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/CreateCacheCluster.hs b/gen/Network/AWS/ElastiCache/CreateCacheCluster.hs
--- a/gen/Network/AWS/ElastiCache/CreateCacheCluster.hs
+++ b/gen/Network/AWS/ElastiCache/CreateCacheCluster.hs
@@ -18,7 +18,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /CreateCacheCluster/ action creates a cache cluster. All nodes in the cache cluster run the same protocol-compliant cache engine software, either Memcached or Redis.
+-- Creates a cache cluster. All nodes in the cache cluster run the same protocol-compliant cache engine software, either Memcached or Redis.
+--
+--
+-- /Important:/ Due to current limitations on Redis (cluster mode disabled), this operation or parameter is not supported on Redis (cluster mode enabled) replication groups.
+--
 module Network.AWS.ElastiCache.CreateCacheCluster
     (
     -- * Creating a Request
@@ -32,6 +36,7 @@
     , cccAutoMinorVersionUpgrade
     , cccCacheParameterGroupName
     , cccSnapshotWindow
+    , cccAuthToken
     , cccEngine
     , cccPreferredAvailabilityZones
     , cccPreferredMaintenanceWindow
@@ -63,8 +68,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /CreateCacheCluster/ action.
+-- | Represents the input of a CreateCacheCluster operation.
 --
+--
+--
 -- /See:/ 'createCacheCluster' smart constructor.
 data CreateCacheCluster = CreateCacheCluster'
     { _cccEngineVersion              :: !(Maybe Text)
@@ -74,6 +81,7 @@
     , _cccAutoMinorVersionUpgrade    :: !(Maybe Bool)
     , _cccCacheParameterGroupName    :: !(Maybe Text)
     , _cccSnapshotWindow             :: !(Maybe Text)
+    , _cccAuthToken                  :: !(Maybe Text)
     , _cccEngine                     :: !(Maybe Text)
     , _cccPreferredAvailabilityZones :: !(Maybe [Text])
     , _cccPreferredMaintenanceWindow :: !(Maybe Text)
@@ -95,49 +103,51 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cccEngineVersion'
+-- * 'cccEngineVersion' - The version number of the cache engine to be used for this cache cluster. To view the supported cache engine versions, use the DescribeCacheEngineVersions operation. __Important:__ You can upgrade to a newer engine version (see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version> ), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cache cluster or replication group and create it anew with the earlier engine version.
 --
--- * 'cccCacheNodeType'
+-- * 'cccCacheNodeType' - The compute and memory capacity of the nodes in the node group (shard). Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 --
--- * 'cccSecurityGroupIds'
+-- * 'cccSecurityGroupIds' - One or more VPC security groups associated with the cache cluster. Use this parameter only when you are creating a cache cluster in an Amazon Virtual Private Cloud (Amazon VPC).
 --
--- * 'cccSnapshotARNs'
+-- * 'cccSnapshotARNs' - A single-element string list containing an Amazon Resource Name (ARN) that uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot file is used to populate the node group (shard). The Amazon S3 object name in the ARN cannot contain any commas. Example of an Amazon S3 ARN: @arn:aws:s3:::my_bucket/snapshot1.rdb@
 --
--- * 'cccAutoMinorVersionUpgrade'
+-- * 'cccAutoMinorVersionUpgrade' - This parameter is currently disabled.
 --
--- * 'cccCacheParameterGroupName'
+-- * 'cccCacheParameterGroupName' - The name of the parameter group to associate with this cache cluster. If this argument is omitted, the default parameter group for the specified engine is used. You cannot use any parameter group which has @cluster-enabled='yes'@ when creating a cluster.
 --
--- * 'cccSnapshotWindow'
+-- * 'cccSnapshotWindow' - The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard). Example: @05:00-09:00@  If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range. __Note:__ This parameter is only valid if the @Engine@ parameter is @redis@ .
 --
--- * 'cccEngine'
+-- * 'cccAuthToken' - The password used to access a password protected server. Password constraints:     * Must be only printable ASCII characters.     * Must be at least 16 characters and no more than 128 characters in length.     * Cannot contain any of the following characters: '/', '"', or "@".  For more information, see <http://redis.io/commands/AUTH AUTH password> at Redis.
 --
--- * 'cccPreferredAvailabilityZones'
+-- * 'cccEngine' - The name of the cache engine to be used for this cache cluster. Valid values for this parameter are: @memcached@ | @redis@
 --
--- * 'cccPreferredMaintenanceWindow'
+-- * 'cccPreferredAvailabilityZones' - A list of the Availability Zones in which cache nodes are created. The order of the zones in the list is not important. This option is only supported on Memcached. If you want all the nodes in the same Availability Zone, use @PreferredAvailabilityZone@ instead, or repeat the Availability Zone multiple times in the list. Default: System chosen Availability Zones.
 --
--- * 'cccCacheSubnetGroupName'
+-- * 'cccPreferredMaintenanceWindow' - Specifies the weekly time range during which maintenance on the cache 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: Specifies the weekly time range during which maintenance on the 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:23:00-mon:01:30@
 --
--- * 'cccPreferredAvailabilityZone'
+-- * 'cccCacheSubnetGroupName' - The name of the subnet group to be used for the cache cluster. Use this parameter only when you are creating a cache cluster in an Amazon Virtual Private Cloud (Amazon VPC). /Important:/ If you're going to launch your cluster in an Amazon VPC, you need to create a subnet group before you start creating a cluster. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SubnetGroups.html Subnets and Subnet Groups> .
 --
--- * 'cccSnapshotRetentionLimit'
+-- * 'cccPreferredAvailabilityZone' - The EC2 Availability Zone in which the cache cluster is created. All nodes belonging to this Memcached cache cluster are placed in the preferred Availability Zone. If you want to create your nodes across multiple Availability Zones, use @PreferredAvailabilityZones@ . Default: System chosen Availability Zone.
 --
--- * 'cccAZMode'
+-- * 'cccSnapshotRetentionLimit' - The number of days for which ElastiCache retains automatic snapshots before deleting them. For example, if you set @SnapshotRetentionLimit@ to 5, a snapshot taken today is retained for 5 days before being deleted. Default: 0 (i.e., automatic backups are disabled for this cache cluster).
 --
--- * 'cccSnapshotName'
+-- * 'cccAZMode' - Specifies whether the nodes in this Memcached cluster are created in a single Availability Zone or created across multiple Availability Zones in the cluster's region. This parameter is only supported for Memcached cache clusters. If the @AZMode@ and @PreferredAvailabilityZones@ are not specified, ElastiCache assumes @single-az@ mode.
 --
--- * 'cccReplicationGroupId'
+-- * 'cccSnapshotName' - The name of a Redis snapshot from which to restore data into the new node group (shard). The snapshot status changes to @restoring@ while the new node group (shard) is being created.
 --
--- * 'cccNotificationTopicARN'
+-- * 'cccReplicationGroupId' - /Important:/ Due to current limitations on Redis (cluster mode disabled), this operation or parameter is not supported on Redis (cluster mode enabled) replication groups. The ID of the replication group to which this cache cluster should belong. If this parameter is specified, the cache cluster is added to the specified replication group as a read replica; otherwise, the cache cluster is a standalone primary that is not part of any replication group. If the specified replication group is Multi-AZ enabled and the Availability Zone is not specified, the cache cluster is created in Availability Zones that provide the best spread of read replicas across Availability Zones.
 --
--- * 'cccNumCacheNodes'
+-- * 'cccNotificationTopicARN' - The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.
 --
--- * 'cccTags'
+-- * 'cccNumCacheNodes' - The initial number of cache nodes that the cache cluster has. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20. If you need more than 20 nodes for your Memcached cluster, please fill out the ElastiCache Limit Increase Request form at <http://aws.amazon.com/contact-us/elasticache-node-limit-request/ http://aws.amazon.com/contact-us/elasticache-node-limit-request/> .
 --
--- * 'cccPort'
+-- * 'cccTags' - A list of cost allocation tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value.
 --
--- * 'cccCacheSecurityGroupNames'
+-- * 'cccPort' - The port number on which each of the cache nodes accepts connections.
 --
--- * 'cccCacheClusterId'
+-- * 'cccCacheSecurityGroupNames' - A list of security group names to associate with this cache cluster. Use this parameter only when you are creating a cache cluster outside of an Amazon Virtual Private Cloud (Amazon VPC).
+--
+-- * 'cccCacheClusterId' - The node group (shard) 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.
 createCacheCluster
     :: Text -- ^ 'cccCacheClusterId'
     -> CreateCacheCluster
@@ -150,6 +160,7 @@
     , _cccAutoMinorVersionUpgrade = Nothing
     , _cccCacheParameterGroupName = Nothing
     , _cccSnapshotWindow = Nothing
+    , _cccAuthToken = Nothing
     , _cccEngine = Nothing
     , _cccPreferredAvailabilityZones = Nothing
     , _cccPreferredMaintenanceWindow = Nothing
@@ -167,53 +178,19 @@
     , _cccCacheClusterId = pCacheClusterId_
     }
 
--- | The version number of the cache engine to be used for this cache cluster. To view the supported cache engine versions, use the /DescribeCacheEngineVersions/ action.
---
--- __Important:__ You can upgrade to a newer engine version (see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version>), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cache cluster or replication group and create it anew with the earlier engine version.
+-- | The version number of the cache engine to be used for this cache cluster. To view the supported cache engine versions, use the DescribeCacheEngineVersions operation. __Important:__ You can upgrade to a newer engine version (see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version> ), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cache cluster or replication group and create it anew with the earlier engine version.
 cccEngineVersion :: Lens' CreateCacheCluster (Maybe Text)
 cccEngineVersion = lens _cccEngineVersion (\ s a -> s{_cccEngineVersion = a});
 
--- | The compute and memory capacity of the nodes in the node group.
---
--- Valid node types are as follows:
---
--- -   General purpose:
---
---     -   Current generation: 'cache.t2.micro', 'cache.t2.small', 'cache.t2.medium', 'cache.m3.medium', 'cache.m3.large', 'cache.m3.xlarge', 'cache.m3.2xlarge'
---
---     -   Previous generation: 'cache.t1.micro', 'cache.m1.small', 'cache.m1.medium', 'cache.m1.large', 'cache.m1.xlarge'
---
--- -   Compute optimized: 'cache.c1.xlarge'
---
--- -   Memory optimized:
---
---     -   Current generation: 'cache.r3.large', 'cache.r3.xlarge', 'cache.r3.2xlarge', 'cache.r3.4xlarge', 'cache.r3.8xlarge'
---
---     -   Previous generation: 'cache.m2.xlarge', 'cache.m2.2xlarge', 'cache.m2.4xlarge'
---
--- __Notes:__
---
--- -   All t2 instances are created in an Amazon Virtual Private Cloud (VPC).
---
--- -   Redis backup\/restore is not supported for t2 instances.
---
--- -   Redis Append-only files (AOF) functionality is not supported for t1 or t2 instances.
---
--- For a complete listing of cache node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#CacheParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#CacheParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis>.
+-- | The compute and memory capacity of the nodes in the node group (shard). Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 cccCacheNodeType :: Lens' CreateCacheCluster (Maybe Text)
 cccCacheNodeType = lens _cccCacheNodeType (\ s a -> s{_cccCacheNodeType = a});
 
--- | One or more VPC security groups associated with the cache cluster.
---
--- Use this parameter only when you are creating a cache cluster in an Amazon Virtual Private Cloud (VPC).
+-- | One or more VPC security groups associated with the cache cluster. Use this parameter only when you are creating a cache cluster in an Amazon Virtual Private Cloud (Amazon VPC).
 cccSecurityGroupIds :: Lens' CreateCacheCluster [Text]
 cccSecurityGroupIds = lens _cccSecurityGroupIds (\ s a -> s{_cccSecurityGroupIds = a}) . _Default . _Coerce;
 
--- | A single-element string list containing an Amazon Resource Name (ARN) that uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot file will be used to populate the node group. The Amazon S3 object name in the ARN cannot contain any commas.
---
--- This parameter is only valid if the 'Engine' parameter is 'redis'.
---
--- Example of an Amazon S3 ARN: 'arn:aws:s3:::my_bucket\/snapshot1.rdb'
+-- | A single-element string list containing an Amazon Resource Name (ARN) that uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot file is used to populate the node group (shard). The Amazon S3 object name in the ARN cannot contain any commas. Example of an Amazon S3 ARN: @arn:aws:s3:::my_bucket/snapshot1.rdb@
 cccSnapshotARNs :: Lens' CreateCacheCluster [Text]
 cccSnapshotARNs = lens _cccSnapshotARNs (\ s a -> s{_cccSnapshotARNs = a}) . _Default . _Coerce;
 
@@ -221,121 +198,59 @@
 cccAutoMinorVersionUpgrade :: Lens' CreateCacheCluster (Maybe Bool)
 cccAutoMinorVersionUpgrade = lens _cccAutoMinorVersionUpgrade (\ s a -> s{_cccAutoMinorVersionUpgrade = a});
 
--- | The name of the parameter group to associate with this cache cluster. If this argument is omitted, the default parameter group for the specified engine is used.
+-- | The name of the parameter group to associate with this cache cluster. If this argument is omitted, the default parameter group for the specified engine is used. You cannot use any parameter group which has @cluster-enabled='yes'@ when creating a cluster.
 cccCacheParameterGroupName :: Lens' CreateCacheCluster (Maybe Text)
 cccCacheParameterGroupName = lens _cccCacheParameterGroupName (\ s a -> s{_cccCacheParameterGroupName = a});
 
--- | The daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your node group.
---
--- Example: '05:00-09:00'
---
--- If you do not specify this parameter, then ElastiCache will automatically choose an appropriate time range.
---
--- __Note:__ This parameter is only valid if the 'Engine' parameter is 'redis'.
+-- | The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard). Example: @05:00-09:00@  If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range. __Note:__ This parameter is only valid if the @Engine@ parameter is @redis@ .
 cccSnapshotWindow :: Lens' CreateCacheCluster (Maybe Text)
 cccSnapshotWindow = lens _cccSnapshotWindow (\ s a -> s{_cccSnapshotWindow = a});
 
--- | The name of the cache engine to be used for this cache cluster.
---
--- Valid values for this parameter are:
---
--- 'memcached' | 'redis'
+-- | The password used to access a password protected server. Password constraints:     * Must be only printable ASCII characters.     * Must be at least 16 characters and no more than 128 characters in length.     * Cannot contain any of the following characters: '/', '"', or "@".  For more information, see <http://redis.io/commands/AUTH AUTH password> at Redis.
+cccAuthToken :: Lens' CreateCacheCluster (Maybe Text)
+cccAuthToken = lens _cccAuthToken (\ s a -> s{_cccAuthToken = a});
+
+-- | The name of the cache engine to be used for this cache cluster. Valid values for this parameter are: @memcached@ | @redis@
 cccEngine :: Lens' CreateCacheCluster (Maybe Text)
 cccEngine = lens _cccEngine (\ s a -> s{_cccEngine = a});
 
--- | A list of the Availability Zones in which cache nodes will be created. The order of the zones in the list is not important.
---
--- This option is only supported on Memcached.
---
--- If you are creating your cache cluster in an Amazon VPC (recommended) you can only locate nodes in Availability Zones that are associated with the subnets in the selected subnet group.
---
--- The number of Availability Zones listed must equal the value of 'NumCacheNodes'.
---
--- If you want all the nodes in the same Availability Zone, use 'PreferredAvailabilityZone' instead, or repeat the Availability Zone multiple times in the list.
---
--- Default: System chosen Availability Zones.
---
--- Example: One Memcached node in each of three different Availability Zones: 'PreferredAvailabilityZones.member.1=us-west-2a&amp;PreferredAvailabilityZones.member.2=us-west-2b&amp;PreferredAvailabilityZones.member.3=us-west-2c'
---
--- Example: All three Memcached nodes in one Availability Zone: 'PreferredAvailabilityZones.member.1=us-west-2a&amp;PreferredAvailabilityZones.member.2=us-west-2a&amp;PreferredAvailabilityZones.member.3=us-west-2a'
+-- | A list of the Availability Zones in which cache nodes are created. The order of the zones in the list is not important. This option is only supported on Memcached. If you want all the nodes in the same Availability Zone, use @PreferredAvailabilityZone@ instead, or repeat the Availability Zone multiple times in the list. Default: System chosen Availability Zones.
 cccPreferredAvailabilityZones :: Lens' CreateCacheCluster [Text]
 cccPreferredAvailabilityZones = lens _cccPreferredAvailabilityZones (\ s a -> s{_cccPreferredAvailabilityZones = a}) . _Default . _Coerce;
 
--- | Specifies the weekly time range during which maintenance on the cache 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'
+-- | Specifies the weekly time range during which maintenance on the cache 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: Specifies the weekly time range during which maintenance on the 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:23:00-mon:01:30@
 cccPreferredMaintenanceWindow :: Lens' CreateCacheCluster (Maybe Text)
 cccPreferredMaintenanceWindow = lens _cccPreferredMaintenanceWindow (\ s a -> s{_cccPreferredMaintenanceWindow = a});
 
--- | The name of the subnet group to be used for the cache cluster.
---
--- Use this parameter only when you are creating a cache cluster in an Amazon Virtual Private Cloud (VPC).
+-- | The name of the subnet group to be used for the cache cluster. Use this parameter only when you are creating a cache cluster in an Amazon Virtual Private Cloud (Amazon VPC). /Important:/ If you're going to launch your cluster in an Amazon VPC, you need to create a subnet group before you start creating a cluster. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SubnetGroups.html Subnets and Subnet Groups> .
 cccCacheSubnetGroupName :: Lens' CreateCacheCluster (Maybe Text)
 cccCacheSubnetGroupName = lens _cccCacheSubnetGroupName (\ s a -> s{_cccCacheSubnetGroupName = a});
 
--- | The EC2 Availability Zone in which the cache cluster will be created.
---
--- All nodes belonging to this Memcached cache cluster are placed in the preferred Availability Zone. If you want to create your nodes across multiple Availability Zones, use 'PreferredAvailabilityZones'.
---
--- Default: System chosen Availability Zone.
+-- | The EC2 Availability Zone in which the cache cluster is created. All nodes belonging to this Memcached cache cluster are placed in the preferred Availability Zone. If you want to create your nodes across multiple Availability Zones, use @PreferredAvailabilityZones@ . Default: System chosen Availability Zone.
 cccPreferredAvailabilityZone :: Lens' CreateCacheCluster (Maybe Text)
 cccPreferredAvailabilityZone = lens _cccPreferredAvailabilityZone (\ s a -> s{_cccPreferredAvailabilityZone = a});
 
--- | The number of days for which ElastiCache will retain automatic snapshots before deleting them. For example, if you set 'SnapshotRetentionLimit' to 5, then a snapshot that was taken today will be retained for 5 days before being deleted.
---
--- This parameter is only valid if the 'Engine' parameter is 'redis'.
---
--- Default: 0 (i.e., automatic backups are disabled for this cache cluster).
+-- | The number of days for which ElastiCache retains automatic snapshots before deleting them. For example, if you set @SnapshotRetentionLimit@ to 5, a snapshot taken today is retained for 5 days before being deleted. Default: 0 (i.e., automatic backups are disabled for this cache cluster).
 cccSnapshotRetentionLimit :: Lens' CreateCacheCluster (Maybe Int)
 cccSnapshotRetentionLimit = lens _cccSnapshotRetentionLimit (\ s a -> s{_cccSnapshotRetentionLimit = a});
 
--- | Specifies whether the nodes in this Memcached node group are created in a single Availability Zone or created across multiple Availability Zones in the cluster\'s region.
---
--- This parameter is only supported for Memcached cache clusters.
---
--- If the 'AZMode' and 'PreferredAvailabilityZones' are not specified, ElastiCache assumes 'single-az' mode.
+-- | Specifies whether the nodes in this Memcached cluster are created in a single Availability Zone or created across multiple Availability Zones in the cluster's region. This parameter is only supported for Memcached cache clusters. If the @AZMode@ and @PreferredAvailabilityZones@ are not specified, ElastiCache assumes @single-az@ mode.
 cccAZMode :: Lens' CreateCacheCluster (Maybe AZMode)
 cccAZMode = lens _cccAZMode (\ s a -> s{_cccAZMode = a});
 
--- | The name of a snapshot from which to restore data into the new node group. The snapshot status changes to 'restoring' while the new node group is being created.
---
--- This parameter is only valid if the 'Engine' parameter is 'redis'.
+-- | The name of a Redis snapshot from which to restore data into the new node group (shard). The snapshot status changes to @restoring@ while the new node group (shard) is being created.
 cccSnapshotName :: Lens' CreateCacheCluster (Maybe Text)
 cccSnapshotName = lens _cccSnapshotName (\ s a -> s{_cccSnapshotName = a});
 
--- | The ID of the replication group to which this cache cluster should belong. If this parameter is specified, the cache cluster will be added to the specified replication group as a read replica; otherwise, the cache cluster will be a standalone primary that is not part of any replication group.
---
--- If the specified replication group is Multi-AZ enabled and the availability zone is not specified, the cache cluster will be created in availability zones that provide the best spread of read replicas across availability zones.
---
--- This parameter is only valid if the 'Engine' parameter is 'redis'.
+-- | /Important:/ Due to current limitations on Redis (cluster mode disabled), this operation or parameter is not supported on Redis (cluster mode enabled) replication groups. The ID of the replication group to which this cache cluster should belong. If this parameter is specified, the cache cluster is added to the specified replication group as a read replica; otherwise, the cache cluster is a standalone primary that is not part of any replication group. If the specified replication group is Multi-AZ enabled and the Availability Zone is not specified, the cache cluster is created in Availability Zones that provide the best spread of read replicas across Availability Zones.
 cccReplicationGroupId :: Lens' CreateCacheCluster (Maybe Text)
 cccReplicationGroupId = lens _cccReplicationGroupId (\ s a -> s{_cccReplicationGroupId = a});
 
--- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications will be sent.
---
--- The Amazon SNS topic owner must be the same as the cache cluster owner.
+-- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.
 cccNotificationTopicARN :: Lens' CreateCacheCluster (Maybe Text)
 cccNotificationTopicARN = lens _cccNotificationTopicARN (\ s a -> s{_cccNotificationTopicARN = a});
 
--- | The initial number of cache nodes that the cache cluster will have.
---
--- For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
---
--- If you need more than 20 nodes for your Memcached cluster, please fill out the ElastiCache Limit Increase Request form at <http://aws.amazon.com/contact-us/elasticache-node-limit-request/>.
+-- | The initial number of cache nodes that the cache cluster has. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20. If you need more than 20 nodes for your Memcached cluster, please fill out the ElastiCache Limit Increase Request form at <http://aws.amazon.com/contact-us/elasticache-node-limit-request/ http://aws.amazon.com/contact-us/elasticache-node-limit-request/> .
 cccNumCacheNodes :: Lens' CreateCacheCluster (Maybe Int)
 cccNumCacheNodes = lens _cccNumCacheNodes (\ s a -> s{_cccNumCacheNodes = a});
 
@@ -343,26 +258,15 @@
 cccTags :: Lens' CreateCacheCluster [Tag]
 cccTags = lens _cccTags (\ s a -> s{_cccTags = a}) . _Default . _Coerce;
 
--- | The port number on which each of the cache nodes will accept connections.
+-- | The port number on which each of the cache nodes accepts connections.
 cccPort :: Lens' CreateCacheCluster (Maybe Int)
 cccPort = lens _cccPort (\ s a -> s{_cccPort = a});
 
--- | A list of security group names to associate with this cache cluster.
---
--- Use this parameter only when you are creating a cache cluster outside of an Amazon Virtual Private Cloud (VPC).
+-- | A list of security group names to associate with this cache cluster. Use this parameter only when you are creating a cache cluster outside of an Amazon Virtual Private Cloud (Amazon VPC).
 cccCacheSecurityGroupNames :: Lens' CreateCacheCluster [Text]
 cccCacheSecurityGroupNames = lens _cccCacheSecurityGroupNames (\ s a -> s{_cccCacheSecurityGroupNames = a}) . _Default . _Coerce;
 
--- | The node group 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.
---
+-- | The node group (shard) 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.
 cccCacheClusterId :: Lens' CreateCacheCluster Text
 cccCacheClusterId = lens _cccCacheClusterId (\ s a -> s{_cccCacheClusterId = a});
 
@@ -405,7 +309,7 @@
                "CacheParameterGroupName" =:
                  _cccCacheParameterGroupName,
                "SnapshotWindow" =: _cccSnapshotWindow,
-               "Engine" =: _cccEngine,
+               "AuthToken" =: _cccAuthToken, "Engine" =: _cccEngine,
                "PreferredAvailabilityZones" =:
                  toQuery
                    (toQueryList "PreferredAvailabilityZone" <$>
@@ -440,9 +344,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cccrsCacheCluster'
+-- * 'cccrsCacheCluster' - Undocumented member.
 --
--- * 'cccrsResponseStatus'
+-- * 'cccrsResponseStatus' - -- | The response status code.
 createCacheClusterResponse
     :: Int -- ^ 'cccrsResponseStatus'
     -> CreateCacheClusterResponse
@@ -456,7 +360,7 @@
 cccrsCacheCluster :: Lens' CreateCacheClusterResponse (Maybe CacheCluster)
 cccrsCacheCluster = lens _cccrsCacheCluster (\ s a -> s{_cccrsCacheCluster = a});
 
--- | The response status code.
+-- | -- | The response status code.
 cccrsResponseStatus :: Lens' CreateCacheClusterResponse Int
 cccrsResponseStatus = lens _cccrsResponseStatus (\ s a -> s{_cccrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs b/gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs
--- a/gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs
+++ b/gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /CreateCacheParameterGroup/ action creates a new cache parameter group. A cache parameter group is a collection of parameters that you apply to all of the nodes in a cache cluster.
+-- Creates a new cache parameter group. A cache parameter group is a collection of parameters that you apply to all of the nodes in a cache cluster.
+--
+--
 module Network.AWS.ElastiCache.CreateCacheParameterGroup
     (
     -- * Creating a Request
@@ -44,8 +46,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /CreateCacheParameterGroup/ action.
+-- | Represents the input of a @CreateCacheParameterGroup@ operation.
 --
+--
+--
 -- /See:/ 'createCacheParameterGroup' smart constructor.
 data CreateCacheParameterGroup = CreateCacheParameterGroup'
     { _ccpgCacheParameterGroupName   :: !Text
@@ -57,11 +61,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ccpgCacheParameterGroupName'
+-- * 'ccpgCacheParameterGroupName' - A user-specified name for the cache parameter group.
 --
--- * 'ccpgCacheParameterGroupFamily'
+-- * 'ccpgCacheParameterGroupFamily' - The name of the cache parameter group family that the cache parameter group can be used with. Valid values are: @memcached1.4@ | @redis2.6@ | @redis2.8@ | @redis3.2@
 --
--- * 'ccpgDescription'
+-- * 'ccpgDescription' - A user-specified description for the cache parameter group.
 createCacheParameterGroup
     :: Text -- ^ 'ccpgCacheParameterGroupName'
     -> Text -- ^ 'ccpgCacheParameterGroupFamily'
@@ -78,9 +82,7 @@
 ccpgCacheParameterGroupName :: Lens' CreateCacheParameterGroup Text
 ccpgCacheParameterGroupName = lens _ccpgCacheParameterGroupName (\ s a -> s{_ccpgCacheParameterGroupName = a});
 
--- | The name of the cache parameter group family the cache parameter group can be used with.
---
--- Valid values are: 'memcached1.4' | 'redis2.6' | 'redis2.8'
+-- | The name of the cache parameter group family that the cache parameter group can be used with. Valid values are: @memcached1.4@ | @redis2.6@ | @redis2.8@ | @redis3.2@
 ccpgCacheParameterGroupFamily :: Lens' CreateCacheParameterGroup Text
 ccpgCacheParameterGroupFamily = lens _ccpgCacheParameterGroupFamily (\ s a -> s{_ccpgCacheParameterGroupFamily = a});
 
@@ -131,9 +133,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ccpgrsCacheParameterGroup'
+-- * 'ccpgrsCacheParameterGroup' - Undocumented member.
 --
--- * 'ccpgrsResponseStatus'
+-- * 'ccpgrsResponseStatus' - -- | The response status code.
 createCacheParameterGroupResponse
     :: Int -- ^ 'ccpgrsResponseStatus'
     -> CreateCacheParameterGroupResponse
@@ -147,7 +149,7 @@
 ccpgrsCacheParameterGroup :: Lens' CreateCacheParameterGroupResponse (Maybe CacheParameterGroup)
 ccpgrsCacheParameterGroup = lens _ccpgrsCacheParameterGroup (\ s a -> s{_ccpgrsCacheParameterGroup = a});
 
--- | The response status code.
+-- | -- | The response status code.
 ccpgrsResponseStatus :: Lens' CreateCacheParameterGroupResponse Int
 ccpgrsResponseStatus = lens _ccpgrsResponseStatus (\ s a -> s{_ccpgrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs b/gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs
--- a/gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs
+++ b/gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs
@@ -18,9 +18,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /CreateCacheSecurityGroup/ action creates a new cache security group. Use a cache security group to control access to one or more cache clusters.
+-- Creates a new cache security group. Use a cache security group to control access to one or more cache clusters.
 --
--- Cache security groups are only used when you are creating a cache cluster outside of an Amazon Virtual Private Cloud (VPC). If you are creating a cache cluster inside of a VPC, use a cache subnet group instead. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheSubnetGroup.html CreateCacheSubnetGroup>.
+--
+-- Cache security groups are only used when you are creating a cache cluster outside of an Amazon Virtual Private Cloud (Amazon VPC). If you are creating a cache cluster inside of a VPC, use a cache subnet group instead. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheSubnetGroup.html CreateCacheSubnetGroup> .
+--
 module Network.AWS.ElastiCache.CreateCacheSecurityGroup
     (
     -- * Creating a Request
@@ -45,8 +47,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /CreateCacheSecurityGroup/ action.
+-- | Represents the input of a @CreateCacheSecurityGroup@ operation.
 --
+--
+--
 -- /See:/ 'createCacheSecurityGroup' smart constructor.
 data CreateCacheSecurityGroup = CreateCacheSecurityGroup'
     { _ccsgCacheSecurityGroupName :: !Text
@@ -57,9 +61,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ccsgCacheSecurityGroupName'
+-- * 'ccsgCacheSecurityGroupName' - A name for the cache security group. This value is stored as a lowercase string. Constraints: Must contain no more than 255 alphanumeric characters. Cannot be the word "Default". Example: @mysecuritygroup@
 --
--- * 'ccsgDescription'
+-- * 'ccsgDescription' - A description for the cache security group.
 createCacheSecurityGroup
     :: Text -- ^ 'ccsgCacheSecurityGroupName'
     -> Text -- ^ 'ccsgDescription'
@@ -70,11 +74,7 @@
     , _ccsgDescription = pDescription_
     }
 
--- | A name for the cache security group. This value is stored as a lowercase string.
---
--- Constraints: Must contain no more than 255 alphanumeric characters. Cannot be the word \"Default\".
---
--- Example: 'mysecuritygroup'
+-- | A name for the cache security group. This value is stored as a lowercase string. Constraints: Must contain no more than 255 alphanumeric characters. Cannot be the word "Default". Example: @mysecuritygroup@
 ccsgCacheSecurityGroupName :: Lens' CreateCacheSecurityGroup Text
 ccsgCacheSecurityGroupName = lens _ccsgCacheSecurityGroupName (\ s a -> s{_ccsgCacheSecurityGroupName = a});
 
@@ -122,9 +122,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ccsgrsCacheSecurityGroup'
+-- * 'ccsgrsCacheSecurityGroup' - Undocumented member.
 --
--- * 'ccsgrsResponseStatus'
+-- * 'ccsgrsResponseStatus' - -- | The response status code.
 createCacheSecurityGroupResponse
     :: Int -- ^ 'ccsgrsResponseStatus'
     -> CreateCacheSecurityGroupResponse
@@ -138,7 +138,7 @@
 ccsgrsCacheSecurityGroup :: Lens' CreateCacheSecurityGroupResponse (Maybe CacheSecurityGroup)
 ccsgrsCacheSecurityGroup = lens _ccsgrsCacheSecurityGroup (\ s a -> s{_ccsgrsCacheSecurityGroup = a});
 
--- | The response status code.
+-- | -- | The response status code.
 ccsgrsResponseStatus :: Lens' CreateCacheSecurityGroupResponse Int
 ccsgrsResponseStatus = lens _ccsgrsResponseStatus (\ s a -> s{_ccsgrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs b/gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs
--- a/gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs
+++ b/gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs
@@ -18,9 +18,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /CreateCacheSubnetGroup/ action creates a new cache subnet group.
+-- Creates a new cache subnet group.
 --
--- Use this parameter only when you are creating a cluster in an Amazon Virtual Private Cloud (VPC).
+--
+-- Use this parameter only when you are creating a cluster in an Amazon Virtual Private Cloud (Amazon VPC).
+--
 module Network.AWS.ElastiCache.CreateCacheSubnetGroup
     (
     -- * Creating a Request
@@ -46,8 +48,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /CreateCacheSubnetGroup/ action.
+-- | Represents the input of a @CreateCacheSubnetGroup@ operation.
 --
+--
+--
 -- /See:/ 'createCacheSubnetGroup' smart constructor.
 data CreateCacheSubnetGroup = CreateCacheSubnetGroup'
     { _ccsgCacheSubnetGroupName        :: !Text
@@ -59,11 +63,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ccsgCacheSubnetGroupName'
+-- * 'ccsgCacheSubnetGroupName' - A name for the cache subnet group. This value is stored as a lowercase string. Constraints: Must contain no more than 255 alphanumeric characters or hyphens. Example: @mysubnetgroup@
 --
--- * 'ccsgCacheSubnetGroupDescription'
+-- * 'ccsgCacheSubnetGroupDescription' - A description for the cache subnet group.
 --
--- * 'ccsgSubnetIds'
+-- * 'ccsgSubnetIds' - A list of VPC subnet IDs for the cache subnet group.
 createCacheSubnetGroup
     :: Text -- ^ 'ccsgCacheSubnetGroupName'
     -> Text -- ^ 'ccsgCacheSubnetGroupDescription'
@@ -75,11 +79,7 @@
     , _ccsgSubnetIds = mempty
     }
 
--- | A name for the cache subnet group. This value is stored as a lowercase string.
---
--- Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
---
--- Example: 'mysubnetgroup'
+-- | A name for the cache subnet group. This value is stored as a lowercase string. Constraints: Must contain no more than 255 alphanumeric characters or hyphens. Example: @mysubnetgroup@
 ccsgCacheSubnetGroupName :: Lens' CreateCacheSubnetGroup Text
 ccsgCacheSubnetGroupName = lens _ccsgCacheSubnetGroupName (\ s a -> s{_ccsgCacheSubnetGroupName = a});
 
@@ -133,9 +133,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'crsCacheSubnetGroup'
+-- * 'crsCacheSubnetGroup' - Undocumented member.
 --
--- * 'crsResponseStatus'
+-- * 'crsResponseStatus' - -- | The response status code.
 createCacheSubnetGroupResponse
     :: Int -- ^ 'crsResponseStatus'
     -> CreateCacheSubnetGroupResponse
@@ -149,7 +149,7 @@
 crsCacheSubnetGroup :: Lens' CreateCacheSubnetGroupResponse (Maybe CacheSubnetGroup)
 crsCacheSubnetGroup = lens _crsCacheSubnetGroup (\ s a -> s{_crsCacheSubnetGroup = a});
 
--- | The response status code.
+-- | -- | The response status code.
 crsResponseStatus :: Lens' CreateCacheSubnetGroupResponse Int
 crsResponseStatus = lens _crsResponseStatus (\ s a -> s{_crsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs b/gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs
--- a/gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs
+++ b/gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs
@@ -18,11 +18,15 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /CreateReplicationGroup/ action creates a replication group. A replication group is a collection of cache clusters, where one of the cache clusters is a read\/write primary and the others are read-only replicas. Writes to the primary are automatically propagated to the replicas.
+-- Creates a Redis (cluster mode disabled) or a Redis (cluster mode enabled) replication group.
 --
--- When you create a replication group, you must specify an existing cache cluster that is in the primary role. When the replication group has been successfully created, you can add one or more read replica replicas to it, up to a total of five read replicas.
 --
--- This action is valid only for Redis.
+-- A Redis (cluster mode disabled) replication group is a collection of cache clusters, where one of the cache clusters is a read/write primary and the others are read-only replicas. Writes to the primary are asynchronously propagated to the replicas.
+--
+-- A Redis (cluster mode enabled) replication group is a collection of 1 to 15 node groups (shards). Each node group (shard) has one read/write primary node and up to 5 read-only replica nodes. Writes to the primary are asynchronously propagated to the replicas. Redis (cluster mode enabled) replication groups partition the data across node groups (shards).
+--
+-- When a Redis (cluster mode disabled) replication group has been successfully created, you can add one or more read replicas to it, up to a total of 5 read replicas. You cannot alter a Redis (cluster mode enabled) replication group after it has been created.
+--
 module Network.AWS.ElastiCache.CreateReplicationGroup
     (
     -- * Creating a Request
@@ -32,16 +36,20 @@
     , crgAutomaticFailoverEnabled
     , crgEngineVersion
     , crgCacheNodeType
+    , crgNodeGroupConfiguration
     , crgSecurityGroupIds
     , crgSnapshotARNs
     , crgAutoMinorVersionUpgrade
     , crgCacheParameterGroupName
     , crgSnapshotWindow
+    , crgAuthToken
     , crgPrimaryClusterId
     , crgEngine
     , crgPreferredMaintenanceWindow
     , crgCacheSubnetGroupName
+    , crgNumNodeGroups
     , crgSnapshotRetentionLimit
+    , crgReplicasPerNodeGroup
     , crgNumCacheClusters
     , crgPreferredCacheClusterAZs
     , crgSnapshotName
@@ -67,23 +75,29 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /CreateReplicationGroup/ action.
+-- | Represents the input of a @CreateReplicationGroup@ operation.
 --
+--
+--
 -- /See:/ 'createReplicationGroup' smart constructor.
 data CreateReplicationGroup = CreateReplicationGroup'
     { _crgAutomaticFailoverEnabled    :: !(Maybe Bool)
     , _crgEngineVersion               :: !(Maybe Text)
     , _crgCacheNodeType               :: !(Maybe Text)
+    , _crgNodeGroupConfiguration      :: !(Maybe [NodeGroupConfiguration])
     , _crgSecurityGroupIds            :: !(Maybe [Text])
     , _crgSnapshotARNs                :: !(Maybe [Text])
     , _crgAutoMinorVersionUpgrade     :: !(Maybe Bool)
     , _crgCacheParameterGroupName     :: !(Maybe Text)
     , _crgSnapshotWindow              :: !(Maybe Text)
+    , _crgAuthToken                   :: !(Maybe Text)
     , _crgPrimaryClusterId            :: !(Maybe Text)
     , _crgEngine                      :: !(Maybe Text)
     , _crgPreferredMaintenanceWindow  :: !(Maybe Text)
     , _crgCacheSubnetGroupName        :: !(Maybe Text)
+    , _crgNumNodeGroups               :: !(Maybe Int)
     , _crgSnapshotRetentionLimit      :: !(Maybe Int)
+    , _crgReplicasPerNodeGroup        :: !(Maybe Int)
     , _crgNumCacheClusters            :: !(Maybe Int)
     , _crgPreferredCacheClusterAZs    :: !(Maybe [Text])
     , _crgSnapshotName                :: !(Maybe Text)
@@ -99,49 +113,57 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'crgAutomaticFailoverEnabled'
+-- * 'crgAutomaticFailoverEnabled' - Specifies whether a read-only replica is automatically promoted to read/write primary if the existing primary fails. If @true@ , Multi-AZ is enabled for this replication group. If @false@ , Multi-AZ is disabled for this replication group. @AutomaticFailoverEnabled@ must be enabled for Redis (cluster mode enabled) replication groups. Default: false
 --
--- * 'crgEngineVersion'
+-- * 'crgEngineVersion' - The version number of the cache engine to be used for the cache clusters in this replication group. To view the supported cache engine versions, use the @DescribeCacheEngineVersions@ operation. __Important:__ You can upgrade to a newer engine version (see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version> ) in the /ElastiCache User Guide/ , but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cache cluster or replication group and create it anew with the earlier engine version.
 --
--- * 'crgCacheNodeType'
+-- * 'crgCacheNodeType' - The compute and memory capacity of the nodes in the node group (shard). Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 --
--- * 'crgSecurityGroupIds'
+-- * 'crgNodeGroupConfiguration' - A list of node group (shard) configuration options. Each node group (shard) configuration has the following: Slots, PrimaryAvailabilityZone, ReplicaAvailabilityZones, ReplicaCount. If you're creating a Redis (cluster mode disabled) or a Redis (cluster mode enabled) replication group, you can use this parameter to configure one node group (shard) or you can omit this parameter.
 --
--- * 'crgSnapshotARNs'
+-- * 'crgSecurityGroupIds' - One or more Amazon VPC security groups associated with this replication group. Use this parameter only when you are creating a replication group in an Amazon Virtual Private Cloud (Amazon VPC).
 --
--- * 'crgAutoMinorVersionUpgrade'
+-- * 'crgSnapshotARNs' - A list of Amazon Resource Names (ARN) that uniquely identify the Redis RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the replication group. The Amazon S3 object name in the ARN cannot contain any commas. The list must match the number of node groups (shards) in the replication group, which means you cannot repartition. Example of an Amazon S3 ARN: @arn:aws:s3:::my_bucket/snapshot1.rdb@
 --
--- * 'crgCacheParameterGroupName'
+-- * 'crgAutoMinorVersionUpgrade' - This parameter is currently disabled.
 --
--- * 'crgSnapshotWindow'
+-- * 'crgCacheParameterGroupName' - The name of the parameter group to associate with this replication group. If this argument is omitted, the default cache parameter group for the specified engine is used. If you are running Redis version 3.2.4 or later, only one node group (shard), and want to use a default parameter group, we recommend that you specify the parameter group by name.      * To create a Redis (cluster mode disabled) replication group, use @CacheParameterGroupName=default.redis3.2@ .     * To create a Redis (cluster mode enabled) replication group, use @CacheParameterGroupName=default.redis3.2.cluster.on@ .
 --
--- * 'crgPrimaryClusterId'
+-- * 'crgSnapshotWindow' - The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard). Example: @05:00-09:00@  If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range.
 --
--- * 'crgEngine'
+-- * 'crgAuthToken' - The password used to access a password protected server. Password constraints:     * Must be only printable ASCII characters.     * Must be at least 16 characters and no more than 128 characters in length.     * Cannot contain any of the following characters: '/', '"', or "@".  For more information, see <http://redis.io/commands/AUTH AUTH password> at Redis.
 --
--- * 'crgPreferredMaintenanceWindow'
+-- * 'crgPrimaryClusterId' - The identifier of the cache cluster that serves as the primary for this replication group. This cache cluster must already exist and have a status of @available@ . This parameter is not required if @NumCacheClusters@ , @NumNodeGroups@ , or @ReplicasPerNodeGroup@ is specified.
 --
--- * 'crgCacheSubnetGroupName'
+-- * 'crgEngine' - The name of the cache engine to be used for the cache clusters in this replication group.
 --
--- * 'crgSnapshotRetentionLimit'
+-- * 'crgPreferredMaintenanceWindow' - Specifies the weekly time range during which maintenance on the cache 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: Specifies the weekly time range during which maintenance on the 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:23:00-mon:01:30@
 --
--- * 'crgNumCacheClusters'
+-- * 'crgCacheSubnetGroupName' - The name of the cache subnet group to be used for the replication group. /Important:/ If you're going to launch your cluster in an Amazon VPC, you need to create a subnet group before you start creating a cluster. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SubnetGroups.html Subnets and Subnet Groups> .
 --
--- * 'crgPreferredCacheClusterAZs'
+-- * 'crgNumNodeGroups' - An optional parameter that specifies the number of node groups (shards) for this Redis (cluster mode enabled) replication group. For Redis (cluster mode disabled) either omit this parameter or set it to 1. Default: 1
 --
--- * 'crgSnapshotName'
+-- * 'crgSnapshotRetentionLimit' - The number of days for which ElastiCache retains automatic snapshots before deleting them. For example, if you set @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is retained for 5 days before being deleted. Default: 0 (i.e., automatic backups are disabled for this cache cluster).
 --
--- * 'crgNotificationTopicARN'
+-- * 'crgReplicasPerNodeGroup' - An optional parameter that specifies the number of replica nodes in each node group (shard). Valid values are 0 to 5.
 --
--- * 'crgTags'
+-- * 'crgNumCacheClusters' - The number of clusters this replication group initially has. This parameter is not used if there is more than one node group (shard). You should use @ReplicasPerNodeGroup@ instead. If @Multi-AZ@ is @enabled@ , the value of this parameter must be at least 2. The maximum permitted value for @NumCacheClusters@ is 6 (primary plus 5 replicas).
 --
--- * 'crgPort'
+-- * 'crgPreferredCacheClusterAZs' - A list of EC2 Availability Zones in which the replication group's cache clusters are created. The order of the Availability Zones in the list is the order in which clusters are allocated. The primary cluster is created in the first AZ in the list. This parameter is not used if there is more than one node group (shard). You should use @NodeGroupConfiguration@ instead. Default: system chosen Availability Zones.
 --
--- * 'crgCacheSecurityGroupNames'
+-- * 'crgSnapshotName' - The name of a snapshot from which to restore data into the new replication group. The snapshot status changes to @restoring@ while the new replication group is being created.
 --
--- * 'crgReplicationGroupId'
+-- * 'crgNotificationTopicARN' - The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.
 --
--- * 'crgReplicationGroupDescription'
+-- * 'crgTags' - A list of cost allocation tags to be added to this resource. A tag is a key-value pair. A tag key must be accompanied by a tag value.
+--
+-- * 'crgPort' - The port number on which each member of the replication group accepts connections.
+--
+-- * 'crgCacheSecurityGroupNames' - A list of cache security group names to associate with this replication group.
+--
+-- * 'crgReplicationGroupId' - The replication group 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.
+--
+-- * 'crgReplicationGroupDescription' - A user-created description for the replication group.
 createReplicationGroup
     :: Text -- ^ 'crgReplicationGroupId'
     -> Text -- ^ 'crgReplicationGroupDescription'
@@ -151,16 +173,20 @@
     { _crgAutomaticFailoverEnabled = Nothing
     , _crgEngineVersion = Nothing
     , _crgCacheNodeType = Nothing
+    , _crgNodeGroupConfiguration = Nothing
     , _crgSecurityGroupIds = Nothing
     , _crgSnapshotARNs = Nothing
     , _crgAutoMinorVersionUpgrade = Nothing
     , _crgCacheParameterGroupName = Nothing
     , _crgSnapshotWindow = Nothing
+    , _crgAuthToken = Nothing
     , _crgPrimaryClusterId = Nothing
     , _crgEngine = Nothing
     , _crgPreferredMaintenanceWindow = Nothing
     , _crgCacheSubnetGroupName = Nothing
+    , _crgNumNodeGroups = Nothing
     , _crgSnapshotRetentionLimit = Nothing
+    , _crgReplicasPerNodeGroup = Nothing
     , _crgNumCacheClusters = Nothing
     , _crgPreferredCacheClusterAZs = Nothing
     , _crgSnapshotName = Nothing
@@ -172,68 +198,27 @@
     , _crgReplicationGroupDescription = pReplicationGroupDescription_
     }
 
--- | Specifies whether a read-only replica will be automatically promoted to read\/write primary if the existing primary fails.
---
--- If 'true', Multi-AZ is enabled for this replication group. If 'false', Multi-AZ is disabled for this replication group.
---
--- Default: false
---
--- ElastiCache Multi-AZ replication groups is not supported on:
---
--- -   Redis versions earlier than 2.8.6.
---
--- -   T1 and T2 cache node types.
---
+-- | Specifies whether a read-only replica is automatically promoted to read/write primary if the existing primary fails. If @true@ , Multi-AZ is enabled for this replication group. If @false@ , Multi-AZ is disabled for this replication group. @AutomaticFailoverEnabled@ must be enabled for Redis (cluster mode enabled) replication groups. Default: false
 crgAutomaticFailoverEnabled :: Lens' CreateReplicationGroup (Maybe Bool)
 crgAutomaticFailoverEnabled = lens _crgAutomaticFailoverEnabled (\ s a -> s{_crgAutomaticFailoverEnabled = a});
 
--- | The version number of the cache engine to be used for the cache clusters in this replication group. To view the supported cache engine versions, use the /DescribeCacheEngineVersions/ action.
---
--- __Important:__ You can upgrade to a newer engine version (see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version>) in the /ElastiCache User Guide/, but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cache cluster or replication group and create it anew with the earlier engine version.
+-- | The version number of the cache engine to be used for the cache clusters in this replication group. To view the supported cache engine versions, use the @DescribeCacheEngineVersions@ operation. __Important:__ You can upgrade to a newer engine version (see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version> ) in the /ElastiCache User Guide/ , but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cache cluster or replication group and create it anew with the earlier engine version.
 crgEngineVersion :: Lens' CreateReplicationGroup (Maybe Text)
 crgEngineVersion = lens _crgEngineVersion (\ s a -> s{_crgEngineVersion = a});
 
--- | The compute and memory capacity of the nodes in the node group.
---
--- Valid node types are as follows:
---
--- -   General purpose:
---
---     -   Current generation: 'cache.t2.micro', 'cache.t2.small', 'cache.t2.medium', 'cache.m3.medium', 'cache.m3.large', 'cache.m3.xlarge', 'cache.m3.2xlarge'
---
---     -   Previous generation: 'cache.t1.micro', 'cache.m1.small', 'cache.m1.medium', 'cache.m1.large', 'cache.m1.xlarge'
---
--- -   Compute optimized: 'cache.c1.xlarge'
---
--- -   Memory optimized:
---
---     -   Current generation: 'cache.r3.large', 'cache.r3.xlarge', 'cache.r3.2xlarge', 'cache.r3.4xlarge', 'cache.r3.8xlarge'
---
---     -   Previous generation: 'cache.m2.xlarge', 'cache.m2.2xlarge', 'cache.m2.4xlarge'
---
--- __Notes:__
---
--- -   All t2 instances are created in an Amazon Virtual Private Cloud (VPC).
---
--- -   Redis backup\/restore is not supported for t2 instances.
---
--- -   Redis Append-only files (AOF) functionality is not supported for t1 or t2 instances.
---
--- For a complete listing of cache node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#CacheParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#CacheParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis>.
+-- | The compute and memory capacity of the nodes in the node group (shard). Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 crgCacheNodeType :: Lens' CreateReplicationGroup (Maybe Text)
 crgCacheNodeType = lens _crgCacheNodeType (\ s a -> s{_crgCacheNodeType = a});
 
--- | One or more Amazon VPC security groups associated with this replication group.
---
--- Use this parameter only when you are creating a replication group in an Amazon Virtual Private Cloud (VPC).
+-- | A list of node group (shard) configuration options. Each node group (shard) configuration has the following: Slots, PrimaryAvailabilityZone, ReplicaAvailabilityZones, ReplicaCount. If you're creating a Redis (cluster mode disabled) or a Redis (cluster mode enabled) replication group, you can use this parameter to configure one node group (shard) or you can omit this parameter.
+crgNodeGroupConfiguration :: Lens' CreateReplicationGroup [NodeGroupConfiguration]
+crgNodeGroupConfiguration = lens _crgNodeGroupConfiguration (\ s a -> s{_crgNodeGroupConfiguration = a}) . _Default . _Coerce;
+
+-- | One or more Amazon VPC security groups associated with this replication group. Use this parameter only when you are creating a replication group in an Amazon Virtual Private Cloud (Amazon VPC).
 crgSecurityGroupIds :: Lens' CreateReplicationGroup [Text]
 crgSecurityGroupIds = lens _crgSecurityGroupIds (\ s a -> s{_crgSecurityGroupIds = a}) . _Default . _Coerce;
 
--- | A single-element string list containing an Amazon Resource Name (ARN) that uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot file will be used to populate the node group. The Amazon S3 object name in the ARN cannot contain any commas.
---
--- This parameter is only valid if the 'Engine' parameter is 'redis'.
---
--- Example of an Amazon S3 ARN: 'arn:aws:s3:::my_bucket\/snapshot1.rdb'
+-- | A list of Amazon Resource Names (ARN) that uniquely identify the Redis RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the replication group. The Amazon S3 object name in the ARN cannot contain any commas. The list must match the number of node groups (shards) in the replication group, which means you cannot repartition. Example of an Amazon S3 ARN: @arn:aws:s3:::my_bucket/snapshot1.rdb@
 crgSnapshotARNs :: Lens' CreateReplicationGroup [Text]
 crgSnapshotARNs = lens _crgSnapshotARNs (\ s a -> s{_crgSnapshotARNs = a}) . _Default . _Coerce;
 
@@ -241,95 +226,59 @@
 crgAutoMinorVersionUpgrade :: Lens' CreateReplicationGroup (Maybe Bool)
 crgAutoMinorVersionUpgrade = lens _crgAutoMinorVersionUpgrade (\ s a -> s{_crgAutoMinorVersionUpgrade = a});
 
--- | The name of the parameter group to associate with this replication group. If this argument is omitted, the default cache parameter group for the specified engine is used.
+-- | The name of the parameter group to associate with this replication group. If this argument is omitted, the default cache parameter group for the specified engine is used. If you are running Redis version 3.2.4 or later, only one node group (shard), and want to use a default parameter group, we recommend that you specify the parameter group by name.      * To create a Redis (cluster mode disabled) replication group, use @CacheParameterGroupName=default.redis3.2@ .     * To create a Redis (cluster mode enabled) replication group, use @CacheParameterGroupName=default.redis3.2.cluster.on@ .
 crgCacheParameterGroupName :: Lens' CreateReplicationGroup (Maybe Text)
 crgCacheParameterGroupName = lens _crgCacheParameterGroupName (\ s a -> s{_crgCacheParameterGroupName = a});
 
--- | The daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your node group.
---
--- Example: '05:00-09:00'
---
--- If you do not specify this parameter, then ElastiCache will automatically choose an appropriate time range.
---
--- This parameter is only valid if the 'Engine' parameter is 'redis'.
+-- | The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard). Example: @05:00-09:00@  If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range.
 crgSnapshotWindow :: Lens' CreateReplicationGroup (Maybe Text)
 crgSnapshotWindow = lens _crgSnapshotWindow (\ s a -> s{_crgSnapshotWindow = a});
 
--- | The identifier of the cache cluster that will serve as the primary for this replication group. This cache cluster must already exist and have a status of /available/.
---
--- This parameter is not required if /NumCacheClusters/ is specified.
+-- | The password used to access a password protected server. Password constraints:     * Must be only printable ASCII characters.     * Must be at least 16 characters and no more than 128 characters in length.     * Cannot contain any of the following characters: '/', '"', or "@".  For more information, see <http://redis.io/commands/AUTH AUTH password> at Redis.
+crgAuthToken :: Lens' CreateReplicationGroup (Maybe Text)
+crgAuthToken = lens _crgAuthToken (\ s a -> s{_crgAuthToken = a});
+
+-- | The identifier of the cache cluster that serves as the primary for this replication group. This cache cluster must already exist and have a status of @available@ . This parameter is not required if @NumCacheClusters@ , @NumNodeGroups@ , or @ReplicasPerNodeGroup@ is specified.
 crgPrimaryClusterId :: Lens' CreateReplicationGroup (Maybe Text)
 crgPrimaryClusterId = lens _crgPrimaryClusterId (\ s a -> s{_crgPrimaryClusterId = a});
 
 -- | The name of the cache engine to be used for the cache clusters in this replication group.
---
--- Default: redis
 crgEngine :: Lens' CreateReplicationGroup (Maybe Text)
 crgEngine = lens _crgEngine (\ s a -> s{_crgEngine = a});
 
--- | Specifies the weekly time range during which maintenance on the cache 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'
+-- | Specifies the weekly time range during which maintenance on the cache 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: Specifies the weekly time range during which maintenance on the 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:23:00-mon:01:30@
 crgPreferredMaintenanceWindow :: Lens' CreateReplicationGroup (Maybe Text)
 crgPreferredMaintenanceWindow = lens _crgPreferredMaintenanceWindow (\ s a -> s{_crgPreferredMaintenanceWindow = a});
 
--- | The name of the cache subnet group to be used for the replication group.
+-- | The name of the cache subnet group to be used for the replication group. /Important:/ If you're going to launch your cluster in an Amazon VPC, you need to create a subnet group before you start creating a cluster. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SubnetGroups.html Subnets and Subnet Groups> .
 crgCacheSubnetGroupName :: Lens' CreateReplicationGroup (Maybe Text)
 crgCacheSubnetGroupName = lens _crgCacheSubnetGroupName (\ s a -> s{_crgCacheSubnetGroupName = a});
 
--- | The number of days for which ElastiCache will retain automatic snapshots before deleting them. For example, if you set 'SnapshotRetentionLimit' to 5, then a snapshot that was taken today will be retained for 5 days before being deleted.
---
--- This parameter is only valid if the 'Engine' parameter is 'redis'.
---
--- Default: 0 (i.e., automatic backups are disabled for this cache cluster).
+-- | An optional parameter that specifies the number of node groups (shards) for this Redis (cluster mode enabled) replication group. For Redis (cluster mode disabled) either omit this parameter or set it to 1. Default: 1
+crgNumNodeGroups :: Lens' CreateReplicationGroup (Maybe Int)
+crgNumNodeGroups = lens _crgNumNodeGroups (\ s a -> s{_crgNumNodeGroups = a});
+
+-- | The number of days for which ElastiCache retains automatic snapshots before deleting them. For example, if you set @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is retained for 5 days before being deleted. Default: 0 (i.e., automatic backups are disabled for this cache cluster).
 crgSnapshotRetentionLimit :: Lens' CreateReplicationGroup (Maybe Int)
 crgSnapshotRetentionLimit = lens _crgSnapshotRetentionLimit (\ s a -> s{_crgSnapshotRetentionLimit = a});
 
--- | The number of cache clusters this replication group will initially have.
---
--- If /Multi-AZ/ is 'enabled', the value of this parameter must be at least 2.
---
--- The maximum permitted value for /NumCacheClusters/ is 6 (primary plus 5 replicas). If you need to exceed this limit, please fill out the ElastiCache Limit Increase Request form at <http://aws.amazon.com/contact-us/elasticache-node-limit-request>.
+-- | An optional parameter that specifies the number of replica nodes in each node group (shard). Valid values are 0 to 5.
+crgReplicasPerNodeGroup :: Lens' CreateReplicationGroup (Maybe Int)
+crgReplicasPerNodeGroup = lens _crgReplicasPerNodeGroup (\ s a -> s{_crgReplicasPerNodeGroup = a});
+
+-- | The number of clusters this replication group initially has. This parameter is not used if there is more than one node group (shard). You should use @ReplicasPerNodeGroup@ instead. If @Multi-AZ@ is @enabled@ , the value of this parameter must be at least 2. The maximum permitted value for @NumCacheClusters@ is 6 (primary plus 5 replicas).
 crgNumCacheClusters :: Lens' CreateReplicationGroup (Maybe Int)
 crgNumCacheClusters = lens _crgNumCacheClusters (\ s a -> s{_crgNumCacheClusters = a});
 
--- | A list of EC2 availability zones in which the replication group\'s cache clusters will be created. The order of the availability zones in the list is not important.
---
--- If you are creating your replication group in an Amazon VPC (recommended), you can only locate cache clusters in availability zones associated with the subnets in the selected subnet group.
---
--- The number of availability zones listed must equal the value of /NumCacheClusters/.
---
--- Default: system chosen availability zones.
---
--- Example: One Redis cache cluster in each of three availability zones.
---
--- 'PreferredAvailabilityZones.member.1=us-west-2a PreferredAvailabilityZones.member.2=us-west-2c PreferredAvailabilityZones.member.3=us-west-2c'
+-- | A list of EC2 Availability Zones in which the replication group's cache clusters are created. The order of the Availability Zones in the list is the order in which clusters are allocated. The primary cluster is created in the first AZ in the list. This parameter is not used if there is more than one node group (shard). You should use @NodeGroupConfiguration@ instead. Default: system chosen Availability Zones.
 crgPreferredCacheClusterAZs :: Lens' CreateReplicationGroup [Text]
 crgPreferredCacheClusterAZs = lens _crgPreferredCacheClusterAZs (\ s a -> s{_crgPreferredCacheClusterAZs = a}) . _Default . _Coerce;
 
--- | The name of a snapshot from which to restore data into the new node group. The snapshot status changes to 'restoring' while the new node group is being created.
---
--- This parameter is only valid if the 'Engine' parameter is 'redis'.
+-- | The name of a snapshot from which to restore data into the new replication group. The snapshot status changes to @restoring@ while the new replication group is being created.
 crgSnapshotName :: Lens' CreateReplicationGroup (Maybe Text)
 crgSnapshotName = lens _crgSnapshotName (\ s a -> s{_crgSnapshotName = a});
 
--- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications will be sent.
---
--- The Amazon SNS topic owner must be the same as the cache cluster owner.
+-- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.
 crgNotificationTopicARN :: Lens' CreateReplicationGroup (Maybe Text)
 crgNotificationTopicARN = lens _crgNotificationTopicARN (\ s a -> s{_crgNotificationTopicARN = a});
 
@@ -337,7 +286,7 @@
 crgTags :: Lens' CreateReplicationGroup [Tag]
 crgTags = lens _crgTags (\ s a -> s{_crgTags = a}) . _Default . _Coerce;
 
--- | The port number on which each member of the replication group will accept connections.
+-- | The port number on which each member of the replication group accepts connections.
 crgPort :: Lens' CreateReplicationGroup (Maybe Int)
 crgPort = lens _crgPort (\ s a -> s{_crgPort = a});
 
@@ -345,16 +294,7 @@
 crgCacheSecurityGroupNames :: Lens' CreateReplicationGroup [Text]
 crgCacheSecurityGroupNames = lens _crgCacheSecurityGroupNames (\ s a -> s{_crgCacheSecurityGroupNames = a}) . _Default . _Coerce;
 
--- | The replication group 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.
---
+-- | The replication group 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.
 crgReplicationGroupId :: Lens' CreateReplicationGroup Text
 crgReplicationGroupId = lens _crgReplicationGroupId (\ s a -> s{_crgReplicationGroupId = a});
 
@@ -392,6 +332,10 @@
                  _crgAutomaticFailoverEnabled,
                "EngineVersion" =: _crgEngineVersion,
                "CacheNodeType" =: _crgCacheNodeType,
+               "NodeGroupConfiguration" =:
+                 toQuery
+                   (toQueryList "NodeGroupConfiguration" <$>
+                      _crgNodeGroupConfiguration),
                "SecurityGroupIds" =:
                  toQuery
                    (toQueryList "SecurityGroupId" <$>
@@ -404,13 +348,16 @@
                "CacheParameterGroupName" =:
                  _crgCacheParameterGroupName,
                "SnapshotWindow" =: _crgSnapshotWindow,
+               "AuthToken" =: _crgAuthToken,
                "PrimaryClusterId" =: _crgPrimaryClusterId,
                "Engine" =: _crgEngine,
                "PreferredMaintenanceWindow" =:
                  _crgPreferredMaintenanceWindow,
                "CacheSubnetGroupName" =: _crgCacheSubnetGroupName,
+               "NumNodeGroups" =: _crgNumNodeGroups,
                "SnapshotRetentionLimit" =:
                  _crgSnapshotRetentionLimit,
+               "ReplicasPerNodeGroup" =: _crgReplicasPerNodeGroup,
                "NumCacheClusters" =: _crgNumCacheClusters,
                "PreferredCacheClusterAZs" =:
                  toQuery
@@ -438,9 +385,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'crgrsReplicationGroup'
+-- * 'crgrsReplicationGroup' - Undocumented member.
 --
--- * 'crgrsResponseStatus'
+-- * 'crgrsResponseStatus' - -- | The response status code.
 createReplicationGroupResponse
     :: Int -- ^ 'crgrsResponseStatus'
     -> CreateReplicationGroupResponse
@@ -454,7 +401,7 @@
 crgrsReplicationGroup :: Lens' CreateReplicationGroupResponse (Maybe ReplicationGroup)
 crgrsReplicationGroup = lens _crgrsReplicationGroup (\ s a -> s{_crgrsReplicationGroup = a});
 
--- | The response status code.
+-- | -- | The response status code.
 crgrsResponseStatus :: Lens' CreateReplicationGroupResponse Int
 crgrsResponseStatus = lens _crgrsResponseStatus (\ s a -> s{_crgrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/CreateSnapshot.hs b/gen/Network/AWS/ElastiCache/CreateSnapshot.hs
--- a/gen/Network/AWS/ElastiCache/CreateSnapshot.hs
+++ b/gen/Network/AWS/ElastiCache/CreateSnapshot.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /CreateSnapshot/ action creates a copy of an entire cache cluster at a specific moment in time.
+-- Creates a copy of an entire cache cluster or replication group at a specific moment in time.
+--
+--
 module Network.AWS.ElastiCache.CreateSnapshot
     (
     -- * Creating a Request
@@ -26,6 +28,7 @@
     , CreateSnapshot
     -- * Request Lenses
     , csCacheClusterId
+    , csReplicationGroupId
     , csSnapshotName
 
     -- * Destructuring the Response
@@ -43,35 +46,44 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /CreateSnapshot/ action.
+-- | Represents the input of a @CreateSnapshot@ operation.
 --
+--
+--
 -- /See:/ 'createSnapshot' smart constructor.
 data CreateSnapshot = CreateSnapshot'
-    { _csCacheClusterId :: !Text
-    , _csSnapshotName   :: !Text
+    { _csCacheClusterId     :: !(Maybe Text)
+    , _csReplicationGroupId :: !(Maybe Text)
+    , _csSnapshotName       :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateSnapshot' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csCacheClusterId'
+-- * 'csCacheClusterId' - The identifier of an existing cache cluster. The snapshot is created from this cache cluster.
 --
--- * 'csSnapshotName'
+-- * 'csReplicationGroupId' - The identifier of an existing replication group. The snapshot is created from this replication group.
+--
+-- * 'csSnapshotName' - A name for the snapshot being created.
 createSnapshot
-    :: Text -- ^ 'csCacheClusterId'
-    -> Text -- ^ 'csSnapshotName'
+    :: Text -- ^ 'csSnapshotName'
     -> CreateSnapshot
-createSnapshot pCacheClusterId_ pSnapshotName_ =
+createSnapshot pSnapshotName_ =
     CreateSnapshot'
-    { _csCacheClusterId = pCacheClusterId_
+    { _csCacheClusterId = Nothing
+    , _csReplicationGroupId = Nothing
     , _csSnapshotName = pSnapshotName_
     }
 
--- | The identifier of an existing cache cluster. The snapshot will be created from this cache cluster.
-csCacheClusterId :: Lens' CreateSnapshot Text
+-- | The identifier of an existing cache cluster. The snapshot is created from this cache cluster.
+csCacheClusterId :: Lens' CreateSnapshot (Maybe Text)
 csCacheClusterId = lens _csCacheClusterId (\ s a -> s{_csCacheClusterId = a});
 
+-- | The identifier of an existing replication group. The snapshot is created from this replication group.
+csReplicationGroupId :: Lens' CreateSnapshot (Maybe Text)
+csReplicationGroupId = lens _csReplicationGroupId (\ s a -> s{_csReplicationGroupId = a});
+
 -- | A name for the snapshot being created.
 csSnapshotName :: Lens' CreateSnapshot Text
 csSnapshotName = lens _csSnapshotName (\ s a -> s{_csSnapshotName = a});
@@ -101,6 +113,7 @@
               ["Action" =: ("CreateSnapshot" :: ByteString),
                "Version" =: ("2015-02-02" :: ByteString),
                "CacheClusterId" =: _csCacheClusterId,
+               "ReplicationGroupId" =: _csReplicationGroupId,
                "SnapshotName" =: _csSnapshotName]
 
 -- | /See:/ 'createSnapshotResponse' smart constructor.
@@ -113,9 +126,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'crersSnapshot'
+-- * 'crersSnapshot' - Undocumented member.
 --
--- * 'crersResponseStatus'
+-- * 'crersResponseStatus' - -- | The response status code.
 createSnapshotResponse
     :: Int -- ^ 'crersResponseStatus'
     -> CreateSnapshotResponse
@@ -129,7 +142,7 @@
 crersSnapshot :: Lens' CreateSnapshotResponse (Maybe Snapshot)
 crersSnapshot = lens _crersSnapshot (\ s a -> s{_crersSnapshot = a});
 
--- | The response status code.
+-- | -- | The response status code.
 crersResponseStatus :: Lens' CreateSnapshotResponse Int
 crersResponseStatus = lens _crersResponseStatus (\ s a -> s{_crersResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs b/gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs
--- a/gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs
@@ -18,9 +18,13 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DeleteCacheCluster/ action deletes a previously provisioned cache cluster. /DeleteCacheCluster/ deletes all associated cache nodes, node endpoints and the cache cluster itself. When you receive a successful response from this action, Amazon ElastiCache immediately begins deleting the cache cluster; you cannot cancel or revert this action.
+-- Deletes a previously provisioned cache cluster. @DeleteCacheCluster@ deletes all associated cache nodes, node endpoints and the cache cluster itself. When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the cache cluster; you cannot cancel or revert this operation.
 --
--- This API cannot be used to delete a cache cluster that is the last read replica of a replication group that has Multi-AZ mode enabled.
+--
+-- This operation cannot be used to delete a cache cluster that is the last read replica of a replication group or node group (shard) that has Multi-AZ mode enabled or a cache cluster from a Redis (cluster mode enabled) replication group.
+--
+-- /Important:/ Due to current limitations on Redis (cluster mode disabled), this operation or parameter is not supported on Redis (cluster mode enabled) replication groups.
+--
 module Network.AWS.ElastiCache.DeleteCacheCluster
     (
     -- * Creating a Request
@@ -45,8 +49,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DeleteCacheCluster/ action.
+-- | Represents the input of a @DeleteCacheCluster@ operation.
 --
+--
+--
 -- /See:/ 'deleteCacheCluster' smart constructor.
 data DeleteCacheCluster = DeleteCacheCluster'
     { _dccFinalSnapshotIdentifier :: !(Maybe Text)
@@ -57,9 +63,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dccFinalSnapshotIdentifier'
+-- * 'dccFinalSnapshotIdentifier' - The user-supplied name of a final cache cluster snapshot. This is the unique name that identifies the snapshot. ElastiCache creates the snapshot, and then deletes the cache cluster immediately afterward.
 --
--- * 'dccCacheClusterId'
+-- * 'dccCacheClusterId' - The cache cluster identifier for the cluster to be deleted. This parameter is not case sensitive.
 deleteCacheCluster
     :: Text -- ^ 'dccCacheClusterId'
     -> DeleteCacheCluster
@@ -116,9 +122,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dccrsCacheCluster'
+-- * 'dccrsCacheCluster' - Undocumented member.
 --
--- * 'dccrsResponseStatus'
+-- * 'dccrsResponseStatus' - -- | The response status code.
 deleteCacheClusterResponse
     :: Int -- ^ 'dccrsResponseStatus'
     -> DeleteCacheClusterResponse
@@ -132,7 +138,7 @@
 dccrsCacheCluster :: Lens' DeleteCacheClusterResponse (Maybe CacheCluster)
 dccrsCacheCluster = lens _dccrsCacheCluster (\ s a -> s{_dccrsCacheCluster = a});
 
--- | The response status code.
+-- | -- | The response status code.
 dccrsResponseStatus :: Lens' DeleteCacheClusterResponse Int
 dccrsResponseStatus = lens _dccrsResponseStatus (\ s a -> s{_dccrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs b/gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs
--- a/gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DeleteCacheParameterGroup/ action deletes the specified cache parameter group. You cannot delete a cache parameter group if it is associated with any cache clusters.
+-- Deletes the specified cache parameter group. You cannot delete a cache parameter group if it is associated with any cache clusters.
+--
+--
 module Network.AWS.ElastiCache.DeleteCacheParameterGroup
     (
     -- * Creating a Request
@@ -39,8 +41,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DeleteCacheParameterGroup/ action.
+-- | Represents the input of a @DeleteCacheParameterGroup@ operation.
 --
+--
+--
 -- /See:/ 'deleteCacheParameterGroup' smart constructor.
 newtype DeleteCacheParameterGroup = DeleteCacheParameterGroup'
     { _dCacheParameterGroupName :: Text
@@ -50,7 +54,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dCacheParameterGroupName'
+-- * 'dCacheParameterGroupName' - The name of the cache parameter group to delete.
 deleteCacheParameterGroup
     :: Text -- ^ 'dCacheParameterGroupName'
     -> DeleteCacheParameterGroup
@@ -60,8 +64,6 @@
     }
 
 -- | The name of the cache parameter group to delete.
---
--- The specified cache security group must not be associated with any cache clusters.
 dCacheParameterGroupName :: Lens' DeleteCacheParameterGroup Text
 dCacheParameterGroupName = lens _dCacheParameterGroupName (\ s a -> s{_dCacheParameterGroupName = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs b/gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs
--- a/gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs
@@ -18,9 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DeleteCacheSecurityGroup/ action deletes a cache security group.
+-- Deletes a cache security group.
 --
--- You cannot delete a cache security group if it is associated with any cache clusters.
+--
 module Network.AWS.ElastiCache.DeleteCacheSecurityGroup
     (
     -- * Creating a Request
@@ -41,8 +41,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DeleteCacheSecurityGroup/ action.
+-- | Represents the input of a @DeleteCacheSecurityGroup@ operation.
 --
+--
+--
 -- /See:/ 'deleteCacheSecurityGroup' smart constructor.
 newtype DeleteCacheSecurityGroup = DeleteCacheSecurityGroup'
     { _dcsgCacheSecurityGroupName :: Text
@@ -52,7 +54,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcsgCacheSecurityGroupName'
+-- * 'dcsgCacheSecurityGroupName' - The name of the cache security group to delete.
 deleteCacheSecurityGroup
     :: Text -- ^ 'dcsgCacheSecurityGroupName'
     -> DeleteCacheSecurityGroup
@@ -62,8 +64,6 @@
     }
 
 -- | The name of the cache security group to delete.
---
--- You cannot delete the default security group.
 dcsgCacheSecurityGroupName :: Lens' DeleteCacheSecurityGroup Text
 dcsgCacheSecurityGroupName = lens _dcsgCacheSecurityGroupName (\ s a -> s{_dcsgCacheSecurityGroupName = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs b/gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs
--- a/gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs
@@ -18,9 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DeleteCacheSubnetGroup/ action deletes a cache subnet group.
+-- Deletes a cache subnet group.
 --
--- You cannot delete a cache subnet group if it is associated with any cache clusters.
+--
 module Network.AWS.ElastiCache.DeleteCacheSubnetGroup
     (
     -- * Creating a Request
@@ -41,8 +41,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DeleteCacheSubnetGroup/ action.
+-- | Represents the input of a @DeleteCacheSubnetGroup@ operation.
 --
+--
+--
 -- /See:/ 'deleteCacheSubnetGroup' smart constructor.
 newtype DeleteCacheSubnetGroup = DeleteCacheSubnetGroup'
     { _dCacheSubnetGroupName :: Text
@@ -52,7 +54,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dCacheSubnetGroupName'
+-- * 'dCacheSubnetGroupName' - The name of the cache subnet group to delete. Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
 deleteCacheSubnetGroup
     :: Text -- ^ 'dCacheSubnetGroupName'
     -> DeleteCacheSubnetGroup
@@ -61,9 +63,7 @@
     { _dCacheSubnetGroupName = pCacheSubnetGroupName_
     }
 
--- | The name of the cache subnet group to delete.
---
--- Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
+-- | The name of the cache subnet group to delete. Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
 dCacheSubnetGroupName :: Lens' DeleteCacheSubnetGroup Text
 dCacheSubnetGroupName = lens _dCacheSubnetGroupName (\ s a -> s{_dCacheSubnetGroupName = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs b/gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs
--- a/gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs
@@ -18,9 +18,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DeleteReplicationGroup/ action deletes an existing replication group. By default, this action deletes the entire replication group, including the primary cluster and all of the read replicas. You can optionally delete only the read replicas, while retaining the primary cluster.
+-- Deletes an existing replication group. By default, this operation deletes the entire replication group, including the primary/primaries and all of the read replicas. If the replication group has only one primary, you can optionally delete only the read replicas, while retaining the primary by setting @RetainPrimaryCluster=true@ .
 --
--- When you receive a successful response from this action, Amazon ElastiCache immediately begins deleting the selected resources; you cannot cancel or revert this action.
+--
+-- When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the selected resources; you cannot cancel or revert this operation.
+--
 module Network.AWS.ElastiCache.DeleteReplicationGroup
     (
     -- * Creating a Request
@@ -46,8 +48,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DeleteReplicationGroup/ action.
+-- | Represents the input of a @DeleteReplicationGroup@ operation.
 --
+--
+--
 -- /See:/ 'deleteReplicationGroup' smart constructor.
 data DeleteReplicationGroup = DeleteReplicationGroup'
     { _drgFinalSnapshotIdentifier :: !(Maybe Text)
@@ -59,11 +63,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drgFinalSnapshotIdentifier'
+-- * 'drgFinalSnapshotIdentifier' - The name of a final node group (shard) snapshot. ElastiCache creates the snapshot from the primary node in the cluster, rather than one of the replicas; this is to ensure that it captures the freshest data. After the final snapshot is taken, the replication group is immediately deleted.
 --
--- * 'drgRetainPrimaryCluster'
+-- * 'drgRetainPrimaryCluster' - If set to @true@ , all of the read replicas are deleted, but the primary node is retained.
 --
--- * 'drgReplicationGroupId'
+-- * 'drgReplicationGroupId' - The identifier for the cluster to be deleted. This parameter is not case sensitive.
 deleteReplicationGroup
     :: Text -- ^ 'drgReplicationGroupId'
     -> DeleteReplicationGroup
@@ -74,11 +78,11 @@
     , _drgReplicationGroupId = pReplicationGroupId_
     }
 
--- | The name of a final node group snapshot. ElastiCache creates the snapshot from the primary node in the cluster, rather than one of the replicas; this is to ensure that it captures the freshest data. After the final snapshot is taken, the cluster is immediately deleted.
+-- | The name of a final node group (shard) snapshot. ElastiCache creates the snapshot from the primary node in the cluster, rather than one of the replicas; this is to ensure that it captures the freshest data. After the final snapshot is taken, the replication group is immediately deleted.
 drgFinalSnapshotIdentifier :: Lens' DeleteReplicationGroup (Maybe Text)
 drgFinalSnapshotIdentifier = lens _drgFinalSnapshotIdentifier (\ s a -> s{_drgFinalSnapshotIdentifier = a});
 
--- | If set to /true/, all of the read replicas will be deleted, but the primary node will be retained.
+-- | If set to @true@ , all of the read replicas are deleted, but the primary node is retained.
 drgRetainPrimaryCluster :: Lens' DeleteReplicationGroup (Maybe Bool)
 drgRetainPrimaryCluster = lens _drgRetainPrimaryCluster (\ s a -> s{_drgRetainPrimaryCluster = a});
 
@@ -127,9 +131,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'delrsReplicationGroup'
+-- * 'delrsReplicationGroup' - Undocumented member.
 --
--- * 'delrsResponseStatus'
+-- * 'delrsResponseStatus' - -- | The response status code.
 deleteReplicationGroupResponse
     :: Int -- ^ 'delrsResponseStatus'
     -> DeleteReplicationGroupResponse
@@ -143,7 +147,7 @@
 delrsReplicationGroup :: Lens' DeleteReplicationGroupResponse (Maybe ReplicationGroup)
 delrsReplicationGroup = lens _delrsReplicationGroup (\ s a -> s{_delrsReplicationGroup = a});
 
--- | The response status code.
+-- | -- | The response status code.
 delrsResponseStatus :: Lens' DeleteReplicationGroupResponse Int
 delrsResponseStatus = lens _delrsResponseStatus (\ s a -> s{_delrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DeleteSnapshot.hs b/gen/Network/AWS/ElastiCache/DeleteSnapshot.hs
--- a/gen/Network/AWS/ElastiCache/DeleteSnapshot.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteSnapshot.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DeleteSnapshot/ action deletes an existing snapshot. When you receive a successful response from this action, ElastiCache immediately begins deleting the snapshot; you cannot cancel or revert this action.
+-- Deletes an existing snapshot. When you receive a successful response from this operation, ElastiCache immediately begins deleting the snapshot; you cannot cancel or revert this operation.
+--
+--
 module Network.AWS.ElastiCache.DeleteSnapshot
     (
     -- * Creating a Request
@@ -42,8 +44,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DeleteSnapshot/ action.
+-- | Represents the input of a @DeleteSnapshot@ operation.
 --
+--
+--
 -- /See:/ 'deleteSnapshot' smart constructor.
 newtype DeleteSnapshot = DeleteSnapshot'
     { _dSnapshotName :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dSnapshotName'
+-- * 'dSnapshotName' - The name of the snapshot to be deleted.
 deleteSnapshot
     :: Text -- ^ 'dSnapshotName'
     -> DeleteSnapshot
@@ -102,9 +106,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dsrsSnapshot'
+-- * 'dsrsSnapshot' - Undocumented member.
 --
--- * 'dsrsResponseStatus'
+-- * 'dsrsResponseStatus' - -- | The response status code.
 deleteSnapshotResponse
     :: Int -- ^ 'dsrsResponseStatus'
     -> DeleteSnapshotResponse
@@ -118,7 +122,7 @@
 dsrsSnapshot :: Lens' DeleteSnapshotResponse (Maybe Snapshot)
 dsrsSnapshot = lens _dsrsSnapshot (\ s a -> s{_dsrsSnapshot = a});
 
--- | The response status code.
+-- | -- | The response status code.
 dsrsResponseStatus :: Lens' DeleteSnapshotResponse Int
 dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs b/gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs
@@ -18,18 +18,20 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DescribeCacheClusters/ action returns information about all provisioned cache clusters if no cache cluster identifier is specified, or about a specific cache cluster if a cache cluster identifier is supplied.
+-- Returns information about all provisioned cache clusters if no cache cluster identifier is specified, or about a specific cache cluster if a cache cluster identifier is supplied.
 --
--- By default, abbreviated information about the cache clusters(s) will be returned. You can use the optional /ShowDetails/ flag to retrieve detailed information about the cache nodes associated with the cache clusters. These details include the DNS address and port for the cache node endpoint.
 --
--- If the cluster is in the CREATING state, only cluster level information will be displayed until all of the nodes are successfully provisioned.
+-- By default, abbreviated information about the cache clusters are returned. You can use the optional @ShowDetails@ flag to retrieve detailed information about the cache nodes associated with the cache clusters. These details include the DNS address and port for the cache node endpoint.
 --
--- If the cluster is in the DELETING state, only cluster level information will be displayed.
+-- If the cluster is in the CREATING state, only cluster-level information is displayed until all of the nodes are successfully provisioned.
 --
--- If cache nodes are currently being added to the cache cluster, node endpoint information and creation time for the additional nodes will not be displayed until they are completely provisioned. When the cache cluster state is /available/, the cluster is ready for use.
+-- If the cluster is in the DELETING state, only cluster-level information is displayed.
 --
+-- If cache nodes are currently being added to the cache cluster, node endpoint information and creation time for the additional nodes are not displayed until they are completely provisioned. When the cache cluster state is @available@ , the cluster is ready for use.
+--
 -- If cache nodes are currently being removed from the cache cluster, no endpoint information for the removed nodes is displayed.
 --
+--
 -- This operation returns paginated results.
 module Network.AWS.ElastiCache.DescribeCacheClusters
     (
@@ -59,8 +61,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DescribeCacheClusters/ action.
+-- | Represents the input of a @DescribeCacheClusters@ operation.
 --
+--
+--
 -- /See:/ 'describeCacheClusters' smart constructor.
 data DescribeCacheClusters = DescribeCacheClusters'
     { _dCacheClusterId    :: !(Maybe Text)
@@ -73,13 +77,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dCacheClusterId'
+-- * 'dCacheClusterId' - The user-supplied cluster identifier. If this parameter is specified, only information about that specific cache cluster is returned. This parameter isn't case sensitive.
 --
--- * 'dMarker'
+-- * 'dMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'dMaxRecords'
+-- * 'dMaxRecords' - The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 --
--- * 'dShowCacheNodeInfo'
+-- * 'dShowCacheNodeInfo' - An optional flag that can be included in the DescribeCacheCluster request to retrieve information about the individual cache nodes.
 describeCacheClusters
     :: DescribeCacheClusters
 describeCacheClusters =
@@ -90,19 +94,15 @@
     , _dShowCacheNodeInfo = Nothing
     }
 
--- | The user-supplied cluster identifier. If this parameter is specified, only information about that specific cache cluster is returned. This parameter isn\'t case sensitive.
+-- | The user-supplied cluster identifier. If this parameter is specified, only information about that specific cache cluster is returned. This parameter isn't case sensitive.
 dCacheClusterId :: Lens' DescribeCacheClusters (Maybe Text)
 dCacheClusterId = lens _dCacheClusterId (\ s a -> s{_dCacheClusterId = a});
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 dMarker :: Lens' DescribeCacheClusters (Maybe Text)
 dMarker = lens _dMarker (\ s a -> s{_dMarker = a});
 
--- | The maximum number of records to include in the response. If more records exist than the specified 'MaxRecords' value, a marker is included in the response so that the remaining results can be retrieved.
---
--- Default: 100
---
--- Constraints: minimum 20; maximum 100.
+-- | The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 dMaxRecords :: Lens' DescribeCacheClusters (Maybe Int)
 dMaxRecords = lens _dMaxRecords (\ s a -> s{_dMaxRecords = a});
 
@@ -148,8 +148,10 @@
                "Marker" =: _dMarker, "MaxRecords" =: _dMaxRecords,
                "ShowCacheNodeInfo" =: _dShowCacheNodeInfo]
 
--- | Represents the output of a /DescribeCacheClusters/ action.
+-- | Represents the output of a @DescribeCacheClusters@ operation.
 --
+--
+--
 -- /See:/ 'describeCacheClustersResponse' smart constructor.
 data DescribeCacheClustersResponse = DescribeCacheClustersResponse'
     { _drsCacheClusters  :: !(Maybe [CacheCluster])
@@ -161,11 +163,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drsCacheClusters'
+-- * 'drsCacheClusters' - A list of cache clusters. Each item in the list contains detailed information about one cache cluster.
 --
--- * 'drsMarker'
+-- * 'drsMarker' - Provides an identifier to allow retrieval of paginated results.
 --
--- * 'drsResponseStatus'
+-- * 'drsResponseStatus' - -- | The response status code.
 describeCacheClustersResponse
     :: Int -- ^ 'drsResponseStatus'
     -> DescribeCacheClustersResponse
@@ -184,7 +186,7 @@
 drsMarker :: Lens' DescribeCacheClustersResponse (Maybe Text)
 drsMarker = lens _drsMarker (\ s a -> s{_drsMarker = a});
 
--- | The response status code.
+-- | -- | The response status code.
 drsResponseStatus :: Lens' DescribeCacheClustersResponse Int
 drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs b/gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DescribeCacheEngineVersions/ action returns a list of the available cache engines and their versions.
+-- Returns a list of the available cache engines and their versions.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.ElastiCache.DescribeCacheEngineVersions
     (
@@ -51,8 +53,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DescribeCacheEngineVersions/ action.
+-- | Represents the input of a @DescribeCacheEngineVersions@ operation.
 --
+--
+--
 -- /See:/ 'describeCacheEngineVersions' smart constructor.
 data DescribeCacheEngineVersions = DescribeCacheEngineVersions'
     { _dcevEngineVersion             :: !(Maybe Text)
@@ -67,17 +71,17 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcevEngineVersion'
+-- * 'dcevEngineVersion' - The cache engine version to return. Example: @1.4.14@
 --
--- * 'dcevCacheParameterGroupFamily'
+-- * 'dcevCacheParameterGroupFamily' - The name of a specific cache parameter group family to return details for. Valid values are: @memcached1.4@ | @redis2.6@ | @redis2.8@ | @redis3.2@  Constraints:     * Must be 1 to 255 alphanumeric characters     * First character must be a letter     * Cannot end with a hyphen or contain two consecutive hyphens
 --
--- * 'dcevDefaultOnly'
+-- * 'dcevDefaultOnly' - If @true@ , specifies that only the default version of the specified engine or engine and major version combination is to be returned.
 --
--- * 'dcevEngine'
+-- * 'dcevEngine' - The cache engine to return. Valid values: @memcached@ | @redis@
 --
--- * 'dcevMarker'
+-- * 'dcevMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'dcevMaxRecords'
+-- * 'dcevMaxRecords' - The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 describeCacheEngineVersions
     :: DescribeCacheEngineVersions
 describeCacheEngineVersions =
@@ -90,42 +94,27 @@
     , _dcevMaxRecords = Nothing
     }
 
--- | The cache engine version to return.
---
--- Example: '1.4.14'
+-- | The cache engine version to return. Example: @1.4.14@
 dcevEngineVersion :: Lens' DescribeCacheEngineVersions (Maybe Text)
 dcevEngineVersion = lens _dcevEngineVersion (\ s a -> s{_dcevEngineVersion = a});
 
--- | The name of a specific cache parameter group family to return details for.
---
--- Constraints:
---
--- -   Must be 1 to 255 alphanumeric characters
---
--- -   First character must be a letter
---
--- -   Cannot end with a hyphen or contain two consecutive hyphens
---
+-- | The name of a specific cache parameter group family to return details for. Valid values are: @memcached1.4@ | @redis2.6@ | @redis2.8@ | @redis3.2@  Constraints:     * Must be 1 to 255 alphanumeric characters     * First character must be a letter     * Cannot end with a hyphen or contain two consecutive hyphens
 dcevCacheParameterGroupFamily :: Lens' DescribeCacheEngineVersions (Maybe Text)
 dcevCacheParameterGroupFamily = lens _dcevCacheParameterGroupFamily (\ s a -> s{_dcevCacheParameterGroupFamily = a});
 
--- | If /true/, specifies that only the default version of the specified engine or engine and major version combination is to be returned.
+-- | If @true@ , specifies that only the default version of the specified engine or engine and major version combination is to be returned.
 dcevDefaultOnly :: Lens' DescribeCacheEngineVersions (Maybe Bool)
 dcevDefaultOnly = lens _dcevDefaultOnly (\ s a -> s{_dcevDefaultOnly = a});
 
--- | The cache engine to return. Valid values: 'memcached' | 'redis'
+-- | The cache engine to return. Valid values: @memcached@ | @redis@
 dcevEngine :: Lens' DescribeCacheEngineVersions (Maybe Text)
 dcevEngine = lens _dcevEngine (\ s a -> s{_dcevEngine = a});
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 dcevMarker :: Lens' DescribeCacheEngineVersions (Maybe Text)
 dcevMarker = lens _dcevMarker (\ s a -> s{_dcevMarker = a});
 
--- | The maximum number of records to include in the response. If more records exist than the specified 'MaxRecords' value, a marker is included in the response so that the remaining results can be retrieved.
---
--- Default: 100
---
--- Constraints: minimum 20; maximum 100.
+-- | The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 dcevMaxRecords :: Lens' DescribeCacheEngineVersions (Maybe Int)
 dcevMaxRecords = lens _dcevMaxRecords (\ s a -> s{_dcevMaxRecords = a});
 
@@ -173,8 +162,10 @@
                "Engine" =: _dcevEngine, "Marker" =: _dcevMarker,
                "MaxRecords" =: _dcevMaxRecords]
 
--- | Represents the output of a < DescribeCacheEngineVersions> action.
+-- | Represents the output of a 'DescribeCacheEngineVersions' operation.
 --
+--
+--
 -- /See:/ 'describeCacheEngineVersionsResponse' smart constructor.
 data DescribeCacheEngineVersionsResponse = DescribeCacheEngineVersionsResponse'
     { _dcevrsCacheEngineVersions :: !(Maybe [CacheEngineVersion])
@@ -186,11 +177,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcevrsCacheEngineVersions'
+-- * 'dcevrsCacheEngineVersions' - A list of cache engine version details. Each element in the list contains detailed information about one cache engine version.
 --
--- * 'dcevrsMarker'
+-- * 'dcevrsMarker' - Provides an identifier to allow retrieval of paginated results.
 --
--- * 'dcevrsResponseStatus'
+-- * 'dcevrsResponseStatus' - -- | The response status code.
 describeCacheEngineVersionsResponse
     :: Int -- ^ 'dcevrsResponseStatus'
     -> DescribeCacheEngineVersionsResponse
@@ -209,7 +200,7 @@
 dcevrsMarker :: Lens' DescribeCacheEngineVersionsResponse (Maybe Text)
 dcevrsMarker = lens _dcevrsMarker (\ s a -> s{_dcevrsMarker = a});
 
--- | The response status code.
+-- | -- | The response status code.
 dcevrsResponseStatus :: Lens' DescribeCacheEngineVersionsResponse Int
 dcevrsResponseStatus = lens _dcevrsResponseStatus (\ s a -> s{_dcevrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs b/gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DescribeCacheParameterGroups/ action returns a list of cache parameter group descriptions. If a cache parameter group name is specified, the list will contain only the descriptions for that group.
+-- Returns a list of cache parameter group descriptions. If a cache parameter group name is specified, the list contains only the descriptions for that group.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.ElastiCache.DescribeCacheParameterGroups
     (
@@ -48,8 +50,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DescribeCacheParameterGroups/ action.
+-- | Represents the input of a @DescribeCacheParameterGroups@ operation.
 --
+--
+--
 -- /See:/ 'describeCacheParameterGroups' smart constructor.
 data DescribeCacheParameterGroups = DescribeCacheParameterGroups'
     { _dcpgCacheParameterGroupName :: !(Maybe Text)
@@ -61,11 +65,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcpgCacheParameterGroupName'
+-- * 'dcpgCacheParameterGroupName' - The name of a specific cache parameter group to return details for.
 --
--- * 'dcpgMarker'
+-- * 'dcpgMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'dcpgMaxRecords'
+-- * 'dcpgMaxRecords' - The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 describeCacheParameterGroups
     :: DescribeCacheParameterGroups
 describeCacheParameterGroups =
@@ -79,15 +83,11 @@
 dcpgCacheParameterGroupName :: Lens' DescribeCacheParameterGroups (Maybe Text)
 dcpgCacheParameterGroupName = lens _dcpgCacheParameterGroupName (\ s a -> s{_dcpgCacheParameterGroupName = a});
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 dcpgMarker :: Lens' DescribeCacheParameterGroups (Maybe Text)
 dcpgMarker = lens _dcpgMarker (\ s a -> s{_dcpgMarker = a});
 
--- | The maximum number of records to include in the response. If more records exist than the specified 'MaxRecords' value, a marker is included in the response so that the remaining results can be retrieved.
---
--- Default: 100
---
--- Constraints: minimum 20; maximum 100.
+-- | The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 dcpgMaxRecords :: Lens' DescribeCacheParameterGroups (Maybe Int)
 dcpgMaxRecords = lens _dcpgMaxRecords (\ s a -> s{_dcpgMaxRecords = a});
 
@@ -134,8 +134,10 @@
                "Marker" =: _dcpgMarker,
                "MaxRecords" =: _dcpgMaxRecords]
 
--- | Represents the output of a /DescribeCacheParameterGroups/ action.
+-- | Represents the output of a @DescribeCacheParameterGroups@ operation.
 --
+--
+--
 -- /See:/ 'describeCacheParameterGroupsResponse' smart constructor.
 data DescribeCacheParameterGroupsResponse = DescribeCacheParameterGroupsResponse'
     { _dcpgrsCacheParameterGroups :: !(Maybe [CacheParameterGroup])
@@ -147,11 +149,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcpgrsCacheParameterGroups'
+-- * 'dcpgrsCacheParameterGroups' - A list of cache parameter groups. Each element in the list contains detailed information about one cache parameter group.
 --
--- * 'dcpgrsMarker'
+-- * 'dcpgrsMarker' - Provides an identifier to allow retrieval of paginated results.
 --
--- * 'dcpgrsResponseStatus'
+-- * 'dcpgrsResponseStatus' - -- | The response status code.
 describeCacheParameterGroupsResponse
     :: Int -- ^ 'dcpgrsResponseStatus'
     -> DescribeCacheParameterGroupsResponse
@@ -170,7 +172,7 @@
 dcpgrsMarker :: Lens' DescribeCacheParameterGroupsResponse (Maybe Text)
 dcpgrsMarker = lens _dcpgrsMarker (\ s a -> s{_dcpgrsMarker = a});
 
--- | The response status code.
+-- | -- | The response status code.
 dcpgrsResponseStatus :: Lens' DescribeCacheParameterGroupsResponse Int
 dcpgrsResponseStatus = lens _dcpgrsResponseStatus (\ s a -> s{_dcpgrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs b/gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DescribeCacheParameters/ action returns the detailed parameter list for a particular cache parameter group.
+-- Returns the detailed parameter list for a particular cache parameter group.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.ElastiCache.DescribeCacheParameters
     (
@@ -50,8 +52,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DescribeCacheParameters/ action.
+-- | Represents the input of a @DescribeCacheParameters@ operation.
 --
+--
+--
 -- /See:/ 'describeCacheParameters' smart constructor.
 data DescribeCacheParameters = DescribeCacheParameters'
     { _dcpMarker                  :: !(Maybe Text)
@@ -64,13 +68,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcpMarker'
+-- * 'dcpMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'dcpMaxRecords'
+-- * 'dcpMaxRecords' - The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 --
--- * 'dcpSource'
+-- * 'dcpSource' - The parameter types to return. Valid values: @user@ | @system@ | @engine-default@
 --
--- * 'dcpCacheParameterGroupName'
+-- * 'dcpCacheParameterGroupName' - The name of a specific cache parameter group to return details for.
 describeCacheParameters
     :: Text -- ^ 'dcpCacheParameterGroupName'
     -> DescribeCacheParameters
@@ -82,21 +86,15 @@
     , _dcpCacheParameterGroupName = pCacheParameterGroupName_
     }
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 dcpMarker :: Lens' DescribeCacheParameters (Maybe Text)
 dcpMarker = lens _dcpMarker (\ s a -> s{_dcpMarker = a});
 
--- | The maximum number of brecords to include in the response. If more records exist than the specified 'MaxRecords' value, a marker is included in the response so that the remaining results can be retrieved.
---
--- Default: 100
---
--- Constraints: minimum 20; maximum 100.
+-- | The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 dcpMaxRecords :: Lens' DescribeCacheParameters (Maybe Int)
 dcpMaxRecords = lens _dcpMaxRecords (\ s a -> s{_dcpMaxRecords = a});
 
--- | The parameter types to return.
---
--- Valid values: 'user' | 'system' | 'engine-default'
+-- | The parameter types to return. Valid values: @user@ | @system@ | @engine-default@
 dcpSource :: Lens' DescribeCacheParameters (Maybe Text)
 dcpSource = lens _dcpSource (\ s a -> s{_dcpSource = a});
 
@@ -150,8 +148,10 @@
                "CacheParameterGroupName" =:
                  _dcpCacheParameterGroupName]
 
--- | Represents the output of a /DescribeCacheParameters/ action.
+-- | Represents the output of a @DescribeCacheParameters@ operation.
 --
+--
+--
 -- /See:/ 'describeCacheParametersResponse' smart constructor.
 data DescribeCacheParametersResponse = DescribeCacheParametersResponse'
     { _dcprsCacheNodeTypeSpecificParameters :: !(Maybe [CacheNodeTypeSpecificParameter])
@@ -164,13 +164,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcprsCacheNodeTypeSpecificParameters'
+-- * 'dcprsCacheNodeTypeSpecificParameters' - A list of parameters specific to a particular cache node type. Each element in the list contains detailed information about one parameter.
 --
--- * 'dcprsMarker'
+-- * 'dcprsMarker' - Provides an identifier to allow retrieval of paginated results.
 --
--- * 'dcprsParameters'
+-- * 'dcprsParameters' - A list of 'Parameter' instances.
 --
--- * 'dcprsResponseStatus'
+-- * 'dcprsResponseStatus' - -- | The response status code.
 describeCacheParametersResponse
     :: Int -- ^ 'dcprsResponseStatus'
     -> DescribeCacheParametersResponse
@@ -190,11 +190,11 @@
 dcprsMarker :: Lens' DescribeCacheParametersResponse (Maybe Text)
 dcprsMarker = lens _dcprsMarker (\ s a -> s{_dcprsMarker = a});
 
--- | A list of < Parameter> instances.
+-- | A list of 'Parameter' instances.
 dcprsParameters :: Lens' DescribeCacheParametersResponse [Parameter]
 dcprsParameters = lens _dcprsParameters (\ s a -> s{_dcprsParameters = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 dcprsResponseStatus :: Lens' DescribeCacheParametersResponse Int
 dcprsResponseStatus = lens _dcprsResponseStatus (\ s a -> s{_dcprsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs b/gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DescribeCacheSecurityGroups/ action returns a list of cache security group descriptions. If a cache security group name is specified, the list will contain only the description of that group.
+-- Returns a list of cache security group descriptions. If a cache security group name is specified, the list contains only the description of that group.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.ElastiCache.DescribeCacheSecurityGroups
     (
@@ -48,8 +50,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DescribeCacheSecurityGroups/ action.
+-- | Represents the input of a @DescribeCacheSecurityGroups@ operation.
 --
+--
+--
 -- /See:/ 'describeCacheSecurityGroups' smart constructor.
 data DescribeCacheSecurityGroups = DescribeCacheSecurityGroups'
     { _dcsgsCacheSecurityGroupName :: !(Maybe Text)
@@ -61,11 +65,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcsgsCacheSecurityGroupName'
+-- * 'dcsgsCacheSecurityGroupName' - The name of the cache security group to return details for.
 --
--- * 'dcsgsMarker'
+-- * 'dcsgsMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'dcsgsMaxRecords'
+-- * 'dcsgsMaxRecords' - The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 describeCacheSecurityGroups
     :: DescribeCacheSecurityGroups
 describeCacheSecurityGroups =
@@ -79,15 +83,11 @@
 dcsgsCacheSecurityGroupName :: Lens' DescribeCacheSecurityGroups (Maybe Text)
 dcsgsCacheSecurityGroupName = lens _dcsgsCacheSecurityGroupName (\ s a -> s{_dcsgsCacheSecurityGroupName = a});
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 dcsgsMarker :: Lens' DescribeCacheSecurityGroups (Maybe Text)
 dcsgsMarker = lens _dcsgsMarker (\ s a -> s{_dcsgsMarker = a});
 
--- | The maximum number of records to include in the response. If more records exist than the specified 'MaxRecords' value, a marker is included in the response so that the remaining results can be retrieved.
---
--- Default: 100
---
--- Constraints: minimum 20; maximum 100.
+-- | The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 dcsgsMaxRecords :: Lens' DescribeCacheSecurityGroups (Maybe Int)
 dcsgsMaxRecords = lens _dcsgsMaxRecords (\ s a -> s{_dcsgsMaxRecords = a});
 
@@ -133,8 +133,10 @@
                "Marker" =: _dcsgsMarker,
                "MaxRecords" =: _dcsgsMaxRecords]
 
--- | Represents the output of a /DescribeCacheSecurityGroups/ action.
+-- | Represents the output of a @DescribeCacheSecurityGroups@ operation.
 --
+--
+--
 -- /See:/ 'describeCacheSecurityGroupsResponse' smart constructor.
 data DescribeCacheSecurityGroupsResponse = DescribeCacheSecurityGroupsResponse'
     { _dcsgsrsCacheSecurityGroups :: !(Maybe [CacheSecurityGroup])
@@ -146,11 +148,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcsgsrsCacheSecurityGroups'
+-- * 'dcsgsrsCacheSecurityGroups' - A list of cache security groups. Each element in the list contains detailed information about one group.
 --
--- * 'dcsgsrsMarker'
+-- * 'dcsgsrsMarker' - Provides an identifier to allow retrieval of paginated results.
 --
--- * 'dcsgsrsResponseStatus'
+-- * 'dcsgsrsResponseStatus' - -- | The response status code.
 describeCacheSecurityGroupsResponse
     :: Int -- ^ 'dcsgsrsResponseStatus'
     -> DescribeCacheSecurityGroupsResponse
@@ -169,7 +171,7 @@
 dcsgsrsMarker :: Lens' DescribeCacheSecurityGroupsResponse (Maybe Text)
 dcsgsrsMarker = lens _dcsgsrsMarker (\ s a -> s{_dcsgsrsMarker = a});
 
--- | The response status code.
+-- | -- | The response status code.
 dcsgsrsResponseStatus :: Lens' DescribeCacheSecurityGroupsResponse Int
 dcsgsrsResponseStatus = lens _dcsgsrsResponseStatus (\ s a -> s{_dcsgsrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs b/gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DescribeCacheSubnetGroups/ action returns a list of cache subnet group descriptions. If a subnet group name is specified, the list will contain only the description of that group.
+-- Returns a list of cache subnet group descriptions. If a subnet group name is specified, the list contains only the description of that group.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.ElastiCache.DescribeCacheSubnetGroups
     (
@@ -48,8 +50,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DescribeCacheSubnetGroups/ action.
+-- | Represents the input of a @DescribeCacheSubnetGroups@ operation.
 --
+--
+--
 -- /See:/ 'describeCacheSubnetGroups' smart constructor.
 data DescribeCacheSubnetGroups = DescribeCacheSubnetGroups'
     { _dcsgCacheSubnetGroupName :: !(Maybe Text)
@@ -61,11 +65,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcsgCacheSubnetGroupName'
+-- * 'dcsgCacheSubnetGroupName' - The name of the cache subnet group to return details for.
 --
--- * 'dcsgMarker'
+-- * 'dcsgMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'dcsgMaxRecords'
+-- * 'dcsgMaxRecords' - The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 describeCacheSubnetGroups
     :: DescribeCacheSubnetGroups
 describeCacheSubnetGroups =
@@ -79,15 +83,11 @@
 dcsgCacheSubnetGroupName :: Lens' DescribeCacheSubnetGroups (Maybe Text)
 dcsgCacheSubnetGroupName = lens _dcsgCacheSubnetGroupName (\ s a -> s{_dcsgCacheSubnetGroupName = a});
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 dcsgMarker :: Lens' DescribeCacheSubnetGroups (Maybe Text)
 dcsgMarker = lens _dcsgMarker (\ s a -> s{_dcsgMarker = a});
 
--- | The maximum number of records to include in the response. If more records exist than the specified 'MaxRecords' value, a marker is included in the response so that the remaining results can be retrieved.
---
--- Default: 100
---
--- Constraints: minimum 20; maximum 100.
+-- | The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 dcsgMaxRecords :: Lens' DescribeCacheSubnetGroups (Maybe Int)
 dcsgMaxRecords = lens _dcsgMaxRecords (\ s a -> s{_dcsgMaxRecords = a});
 
@@ -131,8 +131,10 @@
                "Marker" =: _dcsgMarker,
                "MaxRecords" =: _dcsgMaxRecords]
 
--- | Represents the output of a /DescribeCacheSubnetGroups/ action.
+-- | Represents the output of a @DescribeCacheSubnetGroups@ operation.
 --
+--
+--
 -- /See:/ 'describeCacheSubnetGroupsResponse' smart constructor.
 data DescribeCacheSubnetGroupsResponse = DescribeCacheSubnetGroupsResponse'
     { _dcsgrsMarker            :: !(Maybe Text)
@@ -144,11 +146,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcsgrsMarker'
+-- * 'dcsgrsMarker' - Provides an identifier to allow retrieval of paginated results.
 --
--- * 'dcsgrsCacheSubnetGroups'
+-- * 'dcsgrsCacheSubnetGroups' - A list of cache subnet groups. Each element in the list contains detailed information about one group.
 --
--- * 'dcsgrsResponseStatus'
+-- * 'dcsgrsResponseStatus' - -- | The response status code.
 describeCacheSubnetGroupsResponse
     :: Int -- ^ 'dcsgrsResponseStatus'
     -> DescribeCacheSubnetGroupsResponse
@@ -167,7 +169,7 @@
 dcsgrsCacheSubnetGroups :: Lens' DescribeCacheSubnetGroupsResponse [CacheSubnetGroup]
 dcsgrsCacheSubnetGroups = lens _dcsgrsCacheSubnetGroups (\ s a -> s{_dcsgrsCacheSubnetGroups = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 dcsgrsResponseStatus :: Lens' DescribeCacheSubnetGroupsResponse Int
 dcsgrsResponseStatus = lens _dcsgrsResponseStatus (\ s a -> s{_dcsgrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs b/gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs
--- a/gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DescribeEngineDefaultParameters/ action returns the default engine and system parameter information for the specified cache engine.
+-- Returns the default engine and system parameter information for the specified cache engine.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.ElastiCache.DescribeEngineDefaultParameters
     (
@@ -47,8 +49,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DescribeEngineDefaultParameters/ action.
+-- | Represents the input of a @DescribeEngineDefaultParameters@ operation.
 --
+--
+--
 -- /See:/ 'describeEngineDefaultParameters' smart constructor.
 data DescribeEngineDefaultParameters = DescribeEngineDefaultParameters'
     { _dedpMarker                    :: !(Maybe Text)
@@ -60,11 +64,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dedpMarker'
+-- * 'dedpMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'dedpMaxRecords'
+-- * 'dedpMaxRecords' - The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 --
--- * 'dedpCacheParameterGroupFamily'
+-- * 'dedpCacheParameterGroupFamily' - The name of the cache parameter group family. Valid values are: @memcached1.4@ | @redis2.6@ | @redis2.8@ | @redis3.2@
 describeEngineDefaultParameters
     :: Text -- ^ 'dedpCacheParameterGroupFamily'
     -> DescribeEngineDefaultParameters
@@ -75,19 +79,15 @@
     , _dedpCacheParameterGroupFamily = pCacheParameterGroupFamily_
     }
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 dedpMarker :: Lens' DescribeEngineDefaultParameters (Maybe Text)
 dedpMarker = lens _dedpMarker (\ s a -> s{_dedpMarker = a});
 
--- | The maximum number of records to include in the response. If more records exist than the specified 'MaxRecords' value, a marker is included in the response so that the remaining results can be retrieved.
---
--- Default: 100
---
--- Constraints: minimum 20; maximum 100.
+-- | The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 dedpMaxRecords :: Lens' DescribeEngineDefaultParameters (Maybe Int)
 dedpMaxRecords = lens _dedpMaxRecords (\ s a -> s{_dedpMaxRecords = a});
 
--- | The name of the cache parameter group family. Valid values are: 'memcached1.4' | 'redis2.6' | 'redis2.8'
+-- | The name of the cache parameter group family. Valid values are: @memcached1.4@ | @redis2.6@ | @redis2.8@ | @redis3.2@
 dedpCacheParameterGroupFamily :: Lens' DescribeEngineDefaultParameters Text
 dedpCacheParameterGroupFamily = lens _dedpCacheParameterGroupFamily (\ s a -> s{_dedpCacheParameterGroupFamily = a});
 
@@ -149,9 +149,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dedprsResponseStatus'
+-- * 'dedprsResponseStatus' - -- | The response status code.
 --
--- * 'dedprsEngineDefaults'
+-- * 'dedprsEngineDefaults' - Undocumented member.
 describeEngineDefaultParametersResponse
     :: Int -- ^ 'dedprsResponseStatus'
     -> EngineDefaults -- ^ 'dedprsEngineDefaults'
@@ -162,7 +162,7 @@
     , _dedprsEngineDefaults = pEngineDefaults_
     }
 
--- | The response status code.
+-- | -- | The response status code.
 dedprsResponseStatus :: Lens' DescribeEngineDefaultParametersResponse Int
 dedprsResponseStatus = lens _dedprsResponseStatus (\ s a -> s{_dedprsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeEvents.hs b/gen/Network/AWS/ElastiCache/DescribeEvents.hs
--- a/gen/Network/AWS/ElastiCache/DescribeEvents.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeEvents.hs
@@ -18,10 +18,12 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DescribeEvents/ action returns events related to cache clusters, cache security groups, and cache parameter groups. You can obtain events specific to a particular cache cluster, cache security group, or cache parameter group by providing the name as a parameter.
+-- Returns events related to cache clusters, cache security groups, and cache parameter groups. You can obtain events specific to a particular cache cluster, cache security group, or cache parameter group by providing the name as a parameter.
 --
--- By default, only the events occurring within the last hour are returned; however, you can retrieve up to 14 days\' worth of events if necessary.
 --
+-- By default, only the events occurring within the last hour are returned; however, you can retrieve up to 14 days' worth of events if necessary.
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.ElastiCache.DescribeEvents
     (
@@ -54,8 +56,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DescribeEvents/ action.
+-- | Represents the input of a @DescribeEvents@ operation.
 --
+--
+--
 -- /See:/ 'describeEvents' smart constructor.
 data DescribeEvents = DescribeEvents'
     { _deStartTime        :: !(Maybe ISO8601)
@@ -71,19 +75,19 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'deStartTime'
+-- * 'deStartTime' - The beginning of the time interval to retrieve events for, specified in ISO 8601 format.
 --
--- * 'deSourceType'
+-- * 'deSourceType' - The event source to retrieve events for. If no value is specified, all events are returned.
 --
--- * 'deSourceIdentifier'
+-- * 'deSourceIdentifier' - The identifier of the event source for which events are returned. If not specified, all sources are included in the response.
 --
--- * 'deMarker'
+-- * 'deMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'deMaxRecords'
+-- * 'deMaxRecords' - The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 --
--- * 'deEndTime'
+-- * 'deEndTime' - The end of the time interval for which to retrieve events, specified in ISO 8601 format.
 --
--- * 'deDuration'
+-- * 'deDuration' - The number of minutes' worth of events to retrieve.
 describeEvents
     :: DescribeEvents
 describeEvents =
@@ -102,24 +106,18 @@
 deStartTime = lens _deStartTime (\ s a -> s{_deStartTime = a}) . mapping _Time;
 
 -- | The event source to retrieve events for. If no value is specified, all events are returned.
---
--- Valid values are: 'cache-cluster' | 'cache-parameter-group' | 'cache-security-group' | 'cache-subnet-group'
 deSourceType :: Lens' DescribeEvents (Maybe SourceType)
 deSourceType = lens _deSourceType (\ s a -> s{_deSourceType = a});
 
--- | The identifier of the event source for which events will be returned. If not specified, then all sources are included in the response.
+-- | The identifier of the event source for which events are returned. If not specified, all sources are included in the response.
 deSourceIdentifier :: Lens' DescribeEvents (Maybe Text)
 deSourceIdentifier = lens _deSourceIdentifier (\ s a -> s{_deSourceIdentifier = a});
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 deMarker :: Lens' DescribeEvents (Maybe Text)
 deMarker = lens _deMarker (\ s a -> s{_deMarker = a});
 
--- | The maximum number of records to include in the response. If more records exist than the specified 'MaxRecords' value, a marker is included in the response so that the remaining results can be retrieved.
---
--- Default: 100
---
--- Constraints: minimum 20; maximum 100.
+-- | The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 deMaxRecords :: Lens' DescribeEvents (Maybe Int)
 deMaxRecords = lens _deMaxRecords (\ s a -> s{_deMaxRecords = a});
 
@@ -127,7 +125,7 @@
 deEndTime :: Lens' DescribeEvents (Maybe UTCTime)
 deEndTime = lens _deEndTime (\ s a -> s{_deEndTime = a}) . mapping _Time;
 
--- | The number of minutes\' worth of events to retrieve.
+-- | The number of minutes' worth of events to retrieve.
 deDuration :: Lens' DescribeEvents (Maybe Int)
 deDuration = lens _deDuration (\ s a -> s{_deDuration = a});
 
@@ -171,8 +169,10 @@
                "Marker" =: _deMarker, "MaxRecords" =: _deMaxRecords,
                "EndTime" =: _deEndTime, "Duration" =: _deDuration]
 
--- | Represents the output of a /DescribeEvents/ action.
+-- | Represents the output of a @DescribeEvents@ operation.
 --
+--
+--
 -- /See:/ 'describeEventsResponse' smart constructor.
 data DescribeEventsResponse = DescribeEventsResponse'
     { _dersEvents         :: !(Maybe [Event])
@@ -184,11 +184,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dersEvents'
+-- * 'dersEvents' - A list of events. Each element in the list contains detailed information about one event.
 --
--- * 'dersMarker'
+-- * 'dersMarker' - Provides an identifier to allow retrieval of paginated results.
 --
--- * 'dersResponseStatus'
+-- * 'dersResponseStatus' - -- | The response status code.
 describeEventsResponse
     :: Int -- ^ 'dersResponseStatus'
     -> DescribeEventsResponse
@@ -207,7 +207,7 @@
 dersMarker :: Lens' DescribeEventsResponse (Maybe Text)
 dersMarker = lens _dersMarker (\ s a -> s{_dersMarker = a});
 
--- | The response status code.
+-- | -- | The response status code.
 dersResponseStatus :: Lens' DescribeEventsResponse Int
 dersResponseStatus = lens _dersResponseStatus (\ s a -> s{_dersResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs b/gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs
--- a/gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DescribeReplicationGroups/ action returns information about a particular replication group. If no identifier is specified, /DescribeReplicationGroups/ returns information about all replication groups.
+-- Returns information about a particular replication group. If no identifier is specified, @DescribeReplicationGroups@ returns information about all replication groups.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.ElastiCache.DescribeReplicationGroups
     (
@@ -48,8 +50,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DescribeReplicationGroups/ action.
+-- | Represents the input of a @DescribeReplicationGroups@ operation.
 --
+--
+--
 -- /See:/ 'describeReplicationGroups' smart constructor.
 data DescribeReplicationGroups = DescribeReplicationGroups'
     { _drgsMarker             :: !(Maybe Text)
@@ -61,11 +65,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drgsMarker'
+-- * 'drgsMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'drgsMaxRecords'
+-- * 'drgsMaxRecords' - The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 --
--- * 'drgsReplicationGroupId'
+-- * 'drgsReplicationGroupId' - The identifier for the replication group to be described. This parameter is not case sensitive. If you do not specify this parameter, information about all replication groups is returned.
 describeReplicationGroups
     :: DescribeReplicationGroups
 describeReplicationGroups =
@@ -75,21 +79,15 @@
     , _drgsReplicationGroupId = Nothing
     }
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 drgsMarker :: Lens' DescribeReplicationGroups (Maybe Text)
 drgsMarker = lens _drgsMarker (\ s a -> s{_drgsMarker = a});
 
--- | The maximum number of records to include in the response. If more records exist than the specified 'MaxRecords' value, a marker is included in the response so that the remaining results can be retrieved.
---
--- Default: 100
---
--- Constraints: minimum 20; maximum 100.
+-- | The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 drgsMaxRecords :: Lens' DescribeReplicationGroups (Maybe Int)
 drgsMaxRecords = lens _drgsMaxRecords (\ s a -> s{_drgsMaxRecords = a});
 
--- | The identifier for the replication group to be described. This parameter is not case sensitive.
---
--- If you do not specify this parameter, information about all replication groups is returned.
+-- | The identifier for the replication group to be described. This parameter is not case sensitive. If you do not specify this parameter, information about all replication groups is returned.
 drgsReplicationGroupId :: Lens' DescribeReplicationGroups (Maybe Text)
 drgsReplicationGroupId = lens _drgsReplicationGroupId (\ s a -> s{_drgsReplicationGroupId = a});
 
@@ -133,8 +131,10 @@
                "MaxRecords" =: _drgsMaxRecords,
                "ReplicationGroupId" =: _drgsReplicationGroupId]
 
--- | Represents the output of a /DescribeReplicationGroups/ action.
+-- | Represents the output of a @DescribeReplicationGroups@ operation.
 --
+--
+--
 -- /See:/ 'describeReplicationGroupsResponse' smart constructor.
 data DescribeReplicationGroupsResponse = DescribeReplicationGroupsResponse'
     { _drgrsMarker            :: !(Maybe Text)
@@ -146,11 +146,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drgrsMarker'
+-- * 'drgrsMarker' - Provides an identifier to allow retrieval of paginated results.
 --
--- * 'drgrsReplicationGroups'
+-- * 'drgrsReplicationGroups' - A list of replication groups. Each item in the list contains detailed information about one replication group.
 --
--- * 'drgrsResponseStatus'
+-- * 'drgrsResponseStatus' - -- | The response status code.
 describeReplicationGroupsResponse
     :: Int -- ^ 'drgrsResponseStatus'
     -> DescribeReplicationGroupsResponse
@@ -169,7 +169,7 @@
 drgrsReplicationGroups :: Lens' DescribeReplicationGroupsResponse [ReplicationGroup]
 drgrsReplicationGroups = lens _drgrsReplicationGroups (\ s a -> s{_drgrsReplicationGroups = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 drgrsResponseStatus :: Lens' DescribeReplicationGroupsResponse Int
 drgrsResponseStatus = lens _drgrsResponseStatus (\ s a -> s{_drgrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs b/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs
--- a/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DescribeReservedCacheNodes/ action returns information about reserved cache nodes for this account, or about a specified reserved cache node.
+-- Returns information about reserved cache nodes for this account, or about a specified reserved cache node.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.ElastiCache.DescribeReservedCacheNodes
     (
@@ -53,8 +55,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DescribeReservedCacheNodes/ action.
+-- | Represents the input of a @DescribeReservedCacheNodes@ operation.
 --
+--
+--
 -- /See:/ 'describeReservedCacheNodes' smart constructor.
 data DescribeReservedCacheNodes = DescribeReservedCacheNodes'
     { _drcnCacheNodeType                :: !(Maybe Text)
@@ -71,21 +75,21 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drcnCacheNodeType'
+-- * 'drcnCacheNodeType' - The cache node type filter value. Use this parameter to show only those reservations matching the specified cache node type. Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 --
--- * 'drcnProductDescription'
+-- * 'drcnProductDescription' - The product description filter value. Use this parameter to show only those reservations matching the specified product description.
 --
--- * 'drcnMarker'
+-- * 'drcnMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'drcnMaxRecords'
+-- * 'drcnMaxRecords' - The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 --
--- * 'drcnReservedCacheNodeId'
+-- * 'drcnReservedCacheNodeId' - The reserved cache node identifier filter value. Use this parameter to show only the reservation that matches the specified reservation ID.
 --
--- * 'drcnOfferingType'
+-- * 'drcnOfferingType' - The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type. Valid values: @"Light Utilization"|"Medium Utilization"|"Heavy Utilization"@
 --
--- * 'drcnDuration'
+-- * 'drcnDuration' - The duration filter value, specified in years or seconds. Use this parameter to show only reservations for this duration. Valid Values: @1 | 3 | 31536000 | 94608000@
 --
--- * 'drcnReservedCacheNodesOfferingId'
+-- * 'drcnReservedCacheNodesOfferingId' - The offering identifier filter value. Use this parameter to show only purchased reservations matching the specified offering identifier.
 describeReservedCacheNodes
     :: DescribeReservedCacheNodes
 describeReservedCacheNodes =
@@ -100,33 +104,7 @@
     , _drcnReservedCacheNodesOfferingId = Nothing
     }
 
--- | The cache node type filter value. Use this parameter to show only those reservations matching the specified cache node type.
---
--- Valid node types are as follows:
---
--- -   General purpose:
---
---     -   Current generation: 'cache.t2.micro', 'cache.t2.small', 'cache.t2.medium', 'cache.m3.medium', 'cache.m3.large', 'cache.m3.xlarge', 'cache.m3.2xlarge'
---
---     -   Previous generation: 'cache.t1.micro', 'cache.m1.small', 'cache.m1.medium', 'cache.m1.large', 'cache.m1.xlarge'
---
--- -   Compute optimized: 'cache.c1.xlarge'
---
--- -   Memory optimized:
---
---     -   Current generation: 'cache.r3.large', 'cache.r3.xlarge', 'cache.r3.2xlarge', 'cache.r3.4xlarge', 'cache.r3.8xlarge'
---
---     -   Previous generation: 'cache.m2.xlarge', 'cache.m2.2xlarge', 'cache.m2.4xlarge'
---
--- __Notes:__
---
--- -   All t2 instances are created in an Amazon Virtual Private Cloud (VPC).
---
--- -   Redis backup\/restore is not supported for t2 instances.
---
--- -   Redis Append-only files (AOF) functionality is not supported for t1 or t2 instances.
---
--- For a complete listing of cache node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#CacheParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#CacheParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis>.
+-- | The cache node type filter value. Use this parameter to show only those reservations matching the specified cache node type. Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 drcnCacheNodeType :: Lens' DescribeReservedCacheNodes (Maybe Text)
 drcnCacheNodeType = lens _drcnCacheNodeType (\ s a -> s{_drcnCacheNodeType = a});
 
@@ -134,15 +112,11 @@
 drcnProductDescription :: Lens' DescribeReservedCacheNodes (Maybe Text)
 drcnProductDescription = lens _drcnProductDescription (\ s a -> s{_drcnProductDescription = a});
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 drcnMarker :: Lens' DescribeReservedCacheNodes (Maybe Text)
 drcnMarker = lens _drcnMarker (\ s a -> s{_drcnMarker = a});
 
--- | The maximum number of records to include in the response. If more records exist than the specified 'MaxRecords' value, a marker is included in the response so that the remaining results can be retrieved.
---
--- Default: 100
---
--- Constraints: minimum 20; maximum 100.
+-- | The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 drcnMaxRecords :: Lens' DescribeReservedCacheNodes (Maybe Int)
 drcnMaxRecords = lens _drcnMaxRecords (\ s a -> s{_drcnMaxRecords = a});
 
@@ -150,15 +124,11 @@
 drcnReservedCacheNodeId :: Lens' DescribeReservedCacheNodes (Maybe Text)
 drcnReservedCacheNodeId = lens _drcnReservedCacheNodeId (\ s a -> s{_drcnReservedCacheNodeId = a});
 
--- | The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type.
---
--- Valid values: '\"Light Utilization\"|\"Medium Utilization\"|\"Heavy Utilization\"'
+-- | The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type. Valid values: @"Light Utilization"|"Medium Utilization"|"Heavy Utilization"@
 drcnOfferingType :: Lens' DescribeReservedCacheNodes (Maybe Text)
 drcnOfferingType = lens _drcnOfferingType (\ s a -> s{_drcnOfferingType = a});
 
--- | The duration filter value, specified in years or seconds. Use this parameter to show only reservations for this duration.
---
--- Valid Values: '1 | 3 | 31536000 | 94608000'
+-- | The duration filter value, specified in years or seconds. Use this parameter to show only reservations for this duration. Valid Values: @1 | 3 | 31536000 | 94608000@
 drcnDuration :: Lens' DescribeReservedCacheNodes (Maybe Text)
 drcnDuration = lens _drcnDuration (\ s a -> s{_drcnDuration = a});
 
@@ -213,8 +183,10 @@
                "ReservedCacheNodesOfferingId" =:
                  _drcnReservedCacheNodesOfferingId]
 
--- | Represents the output of a /DescribeReservedCacheNodes/ action.
+-- | Represents the output of a @DescribeReservedCacheNodes@ operation.
 --
+--
+--
 -- /See:/ 'describeReservedCacheNodesResponse' smart constructor.
 data DescribeReservedCacheNodesResponse = DescribeReservedCacheNodesResponse'
     { _drcnrsMarker             :: !(Maybe Text)
@@ -226,11 +198,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drcnrsMarker'
+-- * 'drcnrsMarker' - Provides an identifier to allow retrieval of paginated results.
 --
--- * 'drcnrsReservedCacheNodes'
+-- * 'drcnrsReservedCacheNodes' - A list of reserved cache nodes. Each element in the list contains detailed information about one node.
 --
--- * 'drcnrsResponseStatus'
+-- * 'drcnrsResponseStatus' - -- | The response status code.
 describeReservedCacheNodesResponse
     :: Int -- ^ 'drcnrsResponseStatus'
     -> DescribeReservedCacheNodesResponse
@@ -249,7 +221,7 @@
 drcnrsReservedCacheNodes :: Lens' DescribeReservedCacheNodesResponse [ReservedCacheNode]
 drcnrsReservedCacheNodes = lens _drcnrsReservedCacheNodes (\ s a -> s{_drcnrsReservedCacheNodes = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 drcnrsResponseStatus :: Lens' DescribeReservedCacheNodesResponse Int
 drcnrsResponseStatus = lens _drcnrsResponseStatus (\ s a -> s{_drcnrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs b/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs
--- a/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DescribeReservedCacheNodesOfferings/ action lists available reserved cache node offerings.
+-- Lists available reserved cache node offerings.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings
     (
@@ -52,8 +54,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DescribeReservedCacheNodesOfferings/ action.
+-- | Represents the input of a @DescribeReservedCacheNodesOfferings@ operation.
 --
+--
+--
 -- /See:/ 'describeReservedCacheNodesOfferings' smart constructor.
 data DescribeReservedCacheNodesOfferings = DescribeReservedCacheNodesOfferings'
     { _drcnoCacheNodeType                :: !(Maybe Text)
@@ -69,19 +73,19 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drcnoCacheNodeType'
+-- * 'drcnoCacheNodeType' - The cache node type filter value. Use this parameter to show only the available offerings matching the specified cache node type. Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 --
--- * 'drcnoProductDescription'
+-- * 'drcnoProductDescription' - The product description filter value. Use this parameter to show only the available offerings matching the specified product description.
 --
--- * 'drcnoMarker'
+-- * 'drcnoMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'drcnoMaxRecords'
+-- * 'drcnoMaxRecords' - The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 --
--- * 'drcnoOfferingType'
+-- * 'drcnoOfferingType' - The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type. Valid Values: @"Light Utilization"|"Medium Utilization"|"Heavy Utilization"@
 --
--- * 'drcnoDuration'
+-- * 'drcnoDuration' - Duration filter value, specified in years or seconds. Use this parameter to show only reservations for a given duration. Valid Values: @1 | 3 | 31536000 | 94608000@
 --
--- * 'drcnoReservedCacheNodesOfferingId'
+-- * 'drcnoReservedCacheNodesOfferingId' - The offering identifier filter value. Use this parameter to show only the available offering that matches the specified reservation identifier. Example: @438012d3-4052-4cc7-b2e3-8d3372e0e706@
 describeReservedCacheNodesOfferings
     :: DescribeReservedCacheNodesOfferings
 describeReservedCacheNodesOfferings =
@@ -95,33 +99,7 @@
     , _drcnoReservedCacheNodesOfferingId = Nothing
     }
 
--- | The cache node type filter value. Use this parameter to show only the available offerings matching the specified cache node type.
---
--- Valid node types are as follows:
---
--- -   General purpose:
---
---     -   Current generation: 'cache.t2.micro', 'cache.t2.small', 'cache.t2.medium', 'cache.m3.medium', 'cache.m3.large', 'cache.m3.xlarge', 'cache.m3.2xlarge'
---
---     -   Previous generation: 'cache.t1.micro', 'cache.m1.small', 'cache.m1.medium', 'cache.m1.large', 'cache.m1.xlarge'
---
--- -   Compute optimized: 'cache.c1.xlarge'
---
--- -   Memory optimized:
---
---     -   Current generation: 'cache.r3.large', 'cache.r3.xlarge', 'cache.r3.2xlarge', 'cache.r3.4xlarge', 'cache.r3.8xlarge'
---
---     -   Previous generation: 'cache.m2.xlarge', 'cache.m2.2xlarge', 'cache.m2.4xlarge'
---
--- __Notes:__
---
--- -   All t2 instances are created in an Amazon Virtual Private Cloud (VPC).
---
--- -   Redis backup\/restore is not supported for t2 instances.
---
--- -   Redis Append-only files (AOF) functionality is not supported for t1 or t2 instances.
---
--- For a complete listing of cache node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#CacheParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#CacheParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis>.
+-- | The cache node type filter value. Use this parameter to show only the available offerings matching the specified cache node type. Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 drcnoCacheNodeType :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)
 drcnoCacheNodeType = lens _drcnoCacheNodeType (\ s a -> s{_drcnoCacheNodeType = a});
 
@@ -129,33 +107,23 @@
 drcnoProductDescription :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)
 drcnoProductDescription = lens _drcnoProductDescription (\ s a -> s{_drcnoProductDescription = a});
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 drcnoMarker :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)
 drcnoMarker = lens _drcnoMarker (\ s a -> s{_drcnoMarker = a});
 
--- | The maximum number of records to include in the response. If more records exist than the specified 'MaxRecords' value, a marker is included in the response so that the remaining results can be retrieved.
---
--- Default: 100
---
--- Constraints: minimum 20; maximum 100.
+-- | The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 100 Constraints: minimum 20; maximum 100.
 drcnoMaxRecords :: Lens' DescribeReservedCacheNodesOfferings (Maybe Int)
 drcnoMaxRecords = lens _drcnoMaxRecords (\ s a -> s{_drcnoMaxRecords = a});
 
--- | The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type.
---
--- Valid Values: '\"Light Utilization\"|\"Medium Utilization\"|\"Heavy Utilization\"'
+-- | The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type. Valid Values: @"Light Utilization"|"Medium Utilization"|"Heavy Utilization"@
 drcnoOfferingType :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)
 drcnoOfferingType = lens _drcnoOfferingType (\ s a -> s{_drcnoOfferingType = a});
 
--- | Duration filter value, specified in years or seconds. Use this parameter to show only reservations for a given duration.
---
--- Valid Values: '1 | 3 | 31536000 | 94608000'
+-- | Duration filter value, specified in years or seconds. Use this parameter to show only reservations for a given duration. Valid Values: @1 | 3 | 31536000 | 94608000@
 drcnoDuration :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)
 drcnoDuration = lens _drcnoDuration (\ s a -> s{_drcnoDuration = a});
 
--- | The offering identifier filter value. Use this parameter to show only the available offering that matches the specified reservation identifier.
---
--- Example: '438012d3-4052-4cc7-b2e3-8d3372e0e706'
+-- | The offering identifier filter value. Use this parameter to show only the available offering that matches the specified reservation identifier. Example: @438012d3-4052-4cc7-b2e3-8d3372e0e706@
 drcnoReservedCacheNodesOfferingId :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)
 drcnoReservedCacheNodesOfferingId = lens _drcnoReservedCacheNodesOfferingId (\ s a -> s{_drcnoReservedCacheNodesOfferingId = a});
 
@@ -212,8 +180,10 @@
                "ReservedCacheNodesOfferingId" =:
                  _drcnoReservedCacheNodesOfferingId]
 
--- | Represents the output of a /DescribeReservedCacheNodesOfferings/ action.
+-- | Represents the output of a @DescribeReservedCacheNodesOfferings@ operation.
 --
+--
+--
 -- /See:/ 'describeReservedCacheNodesOfferingsResponse' smart constructor.
 data DescribeReservedCacheNodesOfferingsResponse = DescribeReservedCacheNodesOfferingsResponse'
     { _drcnorsMarker                      :: !(Maybe Text)
@@ -225,11 +195,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drcnorsMarker'
+-- * 'drcnorsMarker' - Provides an identifier to allow retrieval of paginated results.
 --
--- * 'drcnorsReservedCacheNodesOfferings'
+-- * 'drcnorsReservedCacheNodesOfferings' - A list of reserved cache node offerings. Each element in the list contains detailed information about one offering.
 --
--- * 'drcnorsResponseStatus'
+-- * 'drcnorsResponseStatus' - -- | The response status code.
 describeReservedCacheNodesOfferingsResponse
     :: Int -- ^ 'drcnorsResponseStatus'
     -> DescribeReservedCacheNodesOfferingsResponse
@@ -248,7 +218,7 @@
 drcnorsReservedCacheNodesOfferings :: Lens' DescribeReservedCacheNodesOfferingsResponse [ReservedCacheNodesOffering]
 drcnorsReservedCacheNodesOfferings = lens _drcnorsReservedCacheNodesOfferings (\ s a -> s{_drcnorsReservedCacheNodesOfferings = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 drcnorsResponseStatus :: Lens' DescribeReservedCacheNodesOfferingsResponse Int
 drcnorsResponseStatus = lens _drcnorsResponseStatus (\ s a -> s{_drcnorsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/DescribeSnapshots.hs b/gen/Network/AWS/ElastiCache/DescribeSnapshots.hs
--- a/gen/Network/AWS/ElastiCache/DescribeSnapshots.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeSnapshots.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /DescribeSnapshots/ action returns information about cache cluster snapshots. By default, /DescribeSnapshots/ lists all of your snapshots; it can optionally describe a single snapshot, or just the snapshots associated with a particular cache cluster.
+-- Returns information about cache cluster or replication group snapshots. By default, @DescribeSnapshots@ lists all of your snapshots; it can optionally describe a single snapshot, or just the snapshots associated with a particular cache cluster.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.ElastiCache.DescribeSnapshots
     (
@@ -31,6 +33,8 @@
     , dsMarker
     , dsMaxRecords
     , dsSnapshotName
+    , dsShowNodeGroupConfig
+    , dsReplicationGroupId
     , dsSnapshotSource
 
     -- * Destructuring the Response
@@ -50,30 +54,38 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /DescribeSnapshotsMessage/ action.
+-- | Represents the input of a @DescribeSnapshotsMessage@ operation.
 --
+--
+--
 -- /See:/ 'describeSnapshots' smart constructor.
 data DescribeSnapshots = DescribeSnapshots'
-    { _dsCacheClusterId :: !(Maybe Text)
-    , _dsMarker         :: !(Maybe Text)
-    , _dsMaxRecords     :: !(Maybe Int)
-    , _dsSnapshotName   :: !(Maybe Text)
-    , _dsSnapshotSource :: !(Maybe Text)
+    { _dsCacheClusterId      :: !(Maybe Text)
+    , _dsMarker              :: !(Maybe Text)
+    , _dsMaxRecords          :: !(Maybe Int)
+    , _dsSnapshotName        :: !(Maybe Text)
+    , _dsShowNodeGroupConfig :: !(Maybe Bool)
+    , _dsReplicationGroupId  :: !(Maybe Text)
+    , _dsSnapshotSource      :: !(Maybe Text)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeSnapshots' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dsCacheClusterId'
+-- * 'dsCacheClusterId' - A user-supplied cluster identifier. If this parameter is specified, only snapshots associated with that specific cache cluster are described.
 --
--- * 'dsMarker'
+-- * 'dsMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'dsMaxRecords'
+-- * 'dsMaxRecords' - The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 50 Constraints: minimum 20; maximum 50.
 --
--- * 'dsSnapshotName'
+-- * 'dsSnapshotName' - A user-supplied name of the snapshot. If this parameter is specified, only this snapshot are described.
 --
--- * 'dsSnapshotSource'
+-- * 'dsShowNodeGroupConfig' - A Boolean value which if true, the node group (shard) configuration is included in the snapshot description.
+--
+-- * 'dsReplicationGroupId' - A user-supplied replication group identifier. If this parameter is specified, only snapshots associated with that specific replication group are described.
+--
+-- * 'dsSnapshotSource' - If set to @system@ , the output shows snapshots that were automatically created by ElastiCache. If set to @user@ the output shows snapshots that were manually created. If omitted, the output shows both automatically and manually created snapshots.
 describeSnapshots
     :: DescribeSnapshots
 describeSnapshots =
@@ -82,30 +94,36 @@
     , _dsMarker = Nothing
     , _dsMaxRecords = Nothing
     , _dsSnapshotName = Nothing
+    , _dsShowNodeGroupConfig = Nothing
+    , _dsReplicationGroupId = Nothing
     , _dsSnapshotSource = Nothing
     }
 
--- | A user-supplied cluster identifier. If this parameter is specified, only snapshots associated with that specific cache cluster will be described.
+-- | A user-supplied cluster identifier. If this parameter is specified, only snapshots associated with that specific cache cluster are described.
 dsCacheClusterId :: Lens' DescribeSnapshots (Maybe Text)
 dsCacheClusterId = lens _dsCacheClusterId (\ s a -> s{_dsCacheClusterId = a});
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 dsMarker :: Lens' DescribeSnapshots (Maybe Text)
 dsMarker = lens _dsMarker (\ s a -> s{_dsMarker = a});
 
--- | The maximum number of records to include in the response. If more records exist than the specified 'MaxRecords' value, a marker is included in the response so that the remaining results can be retrieved.
---
--- Default: 50
---
--- Constraints: minimum 20; maximum 50.
+-- | The maximum number of records to include in the response. If more records exist than the specified @MaxRecords@ value, a marker is included in the response so that the remaining results can be retrieved. Default: 50 Constraints: minimum 20; maximum 50.
 dsMaxRecords :: Lens' DescribeSnapshots (Maybe Int)
 dsMaxRecords = lens _dsMaxRecords (\ s a -> s{_dsMaxRecords = a});
 
--- | A user-supplied name of the snapshot. If this parameter is specified, only this snapshot will be described.
+-- | A user-supplied name of the snapshot. If this parameter is specified, only this snapshot are described.
 dsSnapshotName :: Lens' DescribeSnapshots (Maybe Text)
 dsSnapshotName = lens _dsSnapshotName (\ s a -> s{_dsSnapshotName = a});
 
--- | If set to 'system', the output shows snapshots that were automatically created by ElastiCache. If set to 'user' the output shows snapshots that were manually created. If omitted, the output shows both automatically and manually created snapshots.
+-- | A Boolean value which if true, the node group (shard) configuration is included in the snapshot description.
+dsShowNodeGroupConfig :: Lens' DescribeSnapshots (Maybe Bool)
+dsShowNodeGroupConfig = lens _dsShowNodeGroupConfig (\ s a -> s{_dsShowNodeGroupConfig = a});
+
+-- | A user-supplied replication group identifier. If this parameter is specified, only snapshots associated with that specific replication group are described.
+dsReplicationGroupId :: Lens' DescribeSnapshots (Maybe Text)
+dsReplicationGroupId = lens _dsReplicationGroupId (\ s a -> s{_dsReplicationGroupId = a});
+
+-- | If set to @system@ , the output shows snapshots that were automatically created by ElastiCache. If set to @user@ the output shows snapshots that were manually created. If omitted, the output shows both automatically and manually created snapshots.
 dsSnapshotSource :: Lens' DescribeSnapshots (Maybe Text)
 dsSnapshotSource = lens _dsSnapshotSource (\ s a -> s{_dsSnapshotSource = a});
 
@@ -146,10 +164,14 @@
                "CacheClusterId" =: _dsCacheClusterId,
                "Marker" =: _dsMarker, "MaxRecords" =: _dsMaxRecords,
                "SnapshotName" =: _dsSnapshotName,
+               "ShowNodeGroupConfig" =: _dsShowNodeGroupConfig,
+               "ReplicationGroupId" =: _dsReplicationGroupId,
                "SnapshotSource" =: _dsSnapshotSource]
 
--- | Represents the output of a /DescribeSnapshots/ action.
+-- | Represents the output of a @DescribeSnapshots@ operation.
 --
+--
+--
 -- /See:/ 'describeSnapshotsResponse' smart constructor.
 data DescribeSnapshotsResponse = DescribeSnapshotsResponse'
     { _dssrsSnapshots      :: !(Maybe [Snapshot])
@@ -161,11 +183,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dssrsSnapshots'
+-- * 'dssrsSnapshots' - A list of snapshots. Each item in the list contains detailed information about one snapshot.
 --
--- * 'dssrsMarker'
+-- * 'dssrsMarker' - An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 --
--- * 'dssrsResponseStatus'
+-- * 'dssrsResponseStatus' - -- | The response status code.
 describeSnapshotsResponse
     :: Int -- ^ 'dssrsResponseStatus'
     -> DescribeSnapshotsResponse
@@ -180,11 +202,11 @@
 dssrsSnapshots :: Lens' DescribeSnapshotsResponse [Snapshot]
 dssrsSnapshots = lens _dssrsSnapshots (\ s a -> s{_dssrsSnapshots = a}) . _Default . _Coerce;
 
--- | An optional marker returned from a prior request. Use this marker for pagination of results from this action. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by /MaxRecords/.
+-- | An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by @MaxRecords@ .
 dssrsMarker :: Lens' DescribeSnapshotsResponse (Maybe Text)
 dssrsMarker = lens _dssrsMarker (\ s a -> s{_dssrsMarker = a});
 
--- | The response status code.
+-- | -- | The response status code.
 dssrsResponseStatus :: Lens' DescribeSnapshotsResponse Int
 dssrsResponseStatus = lens _dssrsResponseStatus (\ s a -> s{_dssrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/ListAllowedNodeTypeModifications.hs b/gen/Network/AWS/ElastiCache/ListAllowedNodeTypeModifications.hs
--- a/gen/Network/AWS/ElastiCache/ListAllowedNodeTypeModifications.hs
+++ b/gen/Network/AWS/ElastiCache/ListAllowedNodeTypeModifications.hs
@@ -18,9 +18,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The 'ListAllowedNodeTypeModifications' action lists all available node types that you can scale your Redis cluster\'s or replication group\'s current node type up to.
+-- Lists all available node types that you can scale your Redis cluster's or replication group's current node type up to.
 --
--- When you use the 'ModifyCacheCluster' or 'ModifyReplicationGroup' APIs to scale up your cluster or replication group, the value of the /CacheNodeType/ parameter must be one of the node types returned by this action.
+--
+-- When you use the @ModifyCacheCluster@ or @ModifyReplicationGroup@ operations to scale up your cluster or replication group, the value of the @CacheNodeType@ parameter must be one of the node types returned by this operation.
+--
 module Network.AWS.ElastiCache.ListAllowedNodeTypeModifications
     (
     -- * Creating a Request
@@ -45,8 +47,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input parameters for the /ListAllowedNodeTypeModifications/ action.
+-- | The input parameters for the @ListAllowedNodeTypeModifications@ operation.
 --
+--
+--
 -- /See:/ 'listAllowedNodeTypeModifications' smart constructor.
 data ListAllowedNodeTypeModifications = ListAllowedNodeTypeModifications'
     { _lantmCacheClusterId     :: !(Maybe Text)
@@ -57,9 +61,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lantmCacheClusterId'
+-- * 'lantmCacheClusterId' - The name of the cache cluster you want to scale up to a larger node instanced type. ElastiCache uses the cluster id to identify the current node type of this cluster and from that to create a list of node types you can scale up to. /Important:/ You must provide a value for either the @CacheClusterId@ or the @ReplicationGroupId@ .
 --
--- * 'lantmReplicationGroupId'
+-- * 'lantmReplicationGroupId' - The name of the replication group want to scale up to a larger node type. ElastiCache uses the replication group id to identify the current node type being used by this replication group, and from that to create a list of node types you can scale up to. /Important:/ You must provide a value for either the @CacheClusterId@ or the @ReplicationGroupId@ .
 listAllowedNodeTypeModifications
     :: ListAllowedNodeTypeModifications
 listAllowedNodeTypeModifications =
@@ -68,15 +72,11 @@
     , _lantmReplicationGroupId = Nothing
     }
 
--- | The name of the cache cluster you want to scale up to a larger node instanced type. ElastiCache uses the cluster id to identify the current node type of this cluster and from that to to create a list of node types you can scale up to.
---
--- You must provide a value for either the /CacheClusterId/ or the /ReplicationGroupId/.
+-- | The name of the cache cluster you want to scale up to a larger node instanced type. ElastiCache uses the cluster id to identify the current node type of this cluster and from that to create a list of node types you can scale up to. /Important:/ You must provide a value for either the @CacheClusterId@ or the @ReplicationGroupId@ .
 lantmCacheClusterId :: Lens' ListAllowedNodeTypeModifications (Maybe Text)
 lantmCacheClusterId = lens _lantmCacheClusterId (\ s a -> s{_lantmCacheClusterId = a});
 
--- | The name of the replication group want to scale up to a larger node type. ElastiCache uses the replication group id to identify the current node type being used by this replication group, and from that to create a list of node types you can scale up to.
---
--- You must provide a value for either the /CacheClusterId/ or the /ReplicationGroupId/.
+-- | The name of the replication group want to scale up to a larger node type. ElastiCache uses the replication group id to identify the current node type being used by this replication group, and from that to create a list of node types you can scale up to. /Important:/ You must provide a value for either the @CacheClusterId@ or the @ReplicationGroupId@ .
 lantmReplicationGroupId :: Lens' ListAllowedNodeTypeModifications (Maybe Text)
 lantmReplicationGroupId = lens _lantmReplicationGroupId (\ s a -> s{_lantmReplicationGroupId = a});
 
@@ -116,9 +116,7 @@
                "CacheClusterId" =: _lantmCacheClusterId,
                "ReplicationGroupId" =: _lantmReplicationGroupId]
 
--- | Represents the allowed node types you can use to modify your cache cluster or replication group.
---
--- /See:/ 'listAllowedNodeTypeModificationsResponse' smart constructor.
+-- | /See:/ 'listAllowedNodeTypeModificationsResponse' smart constructor.
 data ListAllowedNodeTypeModificationsResponse = ListAllowedNodeTypeModificationsResponse'
     { _lantmrsScaleUpModifications :: !(Maybe [Text])
     , _lantmrsResponseStatus       :: !Int
@@ -128,9 +126,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lantmrsScaleUpModifications'
+-- * 'lantmrsScaleUpModifications' - Undocumented member.
 --
--- * 'lantmrsResponseStatus'
+-- * 'lantmrsResponseStatus' - -- | The response status code.
 listAllowedNodeTypeModificationsResponse
     :: Int -- ^ 'lantmrsResponseStatus'
     -> ListAllowedNodeTypeModificationsResponse
@@ -140,13 +138,11 @@
     , _lantmrsResponseStatus = pResponseStatus_
     }
 
--- | A string list, each element of which specifies a cache node type which you can use to scale your cache cluster or replication group.
---
--- When scaling up a Redis cluster or replication group using 'ModifyCacheCluster' or 'ModifyReplicationGroup', use a value from this list for the /CacheNodeType/ parameter.
+-- | Undocumented member.
 lantmrsScaleUpModifications :: Lens' ListAllowedNodeTypeModificationsResponse [Text]
 lantmrsScaleUpModifications = lens _lantmrsScaleUpModifications (\ s a -> s{_lantmrsScaleUpModifications = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 lantmrsResponseStatus :: Lens' ListAllowedNodeTypeModificationsResponse Int
 lantmrsResponseStatus = lens _lantmrsResponseStatus (\ s a -> s{_lantmrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/ListTagsForResource.hs b/gen/Network/AWS/ElastiCache/ListTagsForResource.hs
--- a/gen/Network/AWS/ElastiCache/ListTagsForResource.hs
+++ b/gen/Network/AWS/ElastiCache/ListTagsForResource.hs
@@ -18,9 +18,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /ListTagsForResource/ action lists all cost allocation tags currently on the named resource. A /cost allocation tag/ is a key-value pair where the key is case-sensitive and the value is optional. Cost allocation tags can be used to categorize and track your AWS costs.
+-- Lists all cost allocation tags currently on the named resource. A @cost allocation tag@ is a key-value pair where the key is case-sensitive and the value is optional. You can use cost allocation tags to categorize and track your AWS costs.
 --
--- You can have a maximum of 10 cost allocation tags on an ElastiCache resource. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.html Using Cost Allocation Tags in Amazon ElastiCache>.
+--
+-- You can have a maximum of 10 cost allocation tags on an ElastiCache resource. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.html Using Cost Allocation Tags in Amazon ElastiCache> .
+--
 module Network.AWS.ElastiCache.ListTagsForResource
     (
     -- * Creating a Request
@@ -43,8 +45,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input parameters for the /ListTagsForResource/ action.
+-- | The input parameters for the @ListTagsForResource@ operation.
 --
+--
+--
 -- /See:/ 'listTagsForResource' smart constructor.
 newtype ListTagsForResource = ListTagsForResource'
     { _ltfrResourceName :: Text
@@ -54,7 +58,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ltfrResourceName'
+-- * 'ltfrResourceName' - The Amazon Resource Name (ARN) of the resource for which you want the list of tags, for example @arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster@ or @arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot@ . For more information about ARNs, see <http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces> .
 listTagsForResource
     :: Text -- ^ 'ltfrResourceName'
     -> ListTagsForResource
@@ -63,9 +67,7 @@
     { _ltfrResourceName = pResourceName_
     }
 
--- | The Amazon Resource Name (ARN) of the resource for which you want the list of tags, for example 'arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster' or 'arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot'.
---
--- For more information on ARNs, go to <http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces>.
+-- | The Amazon Resource Name (ARN) of the resource for which you want the list of tags, for example @arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster@ or @arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot@ . For more information about ARNs, see <http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces> .
 ltfrResourceName :: Lens' ListTagsForResource Text
 ltfrResourceName = lens _ltfrResourceName (\ s a -> s{_ltfrResourceName = a});
 
diff --git a/gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs b/gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs
--- a/gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs
+++ b/gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /ModifyCacheCluster/ action modifies the settings for a cache cluster. You can use this action to change one or more cluster configuration parameters by specifying the parameters and the new values.
+-- Modifies the settings for a cache cluster. You can use this operation to change one or more cluster configuration parameters by specifying the parameters and the new values.
+--
+--
 module Network.AWS.ElastiCache.ModifyCacheCluster
     (
     -- * Creating a Request
@@ -58,8 +60,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /ModifyCacheCluster/ action.
+-- | Represents the input of a @ModifyCacheCluster@ operation.
 --
+--
+--
 -- /See:/ 'modifyCacheCluster' smart constructor.
 data ModifyCacheCluster = ModifyCacheCluster'
     { _mccEngineVersion              :: !(Maybe Text)
@@ -85,39 +89,39 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mccEngineVersion'
+-- * 'mccEngineVersion' - The upgraded version of the cache engine to be run on the cache nodes. __Important:__ You can upgrade to a newer engine version (see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version> ), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cache cluster and create it anew with the earlier engine version.
 --
--- * 'mccCacheNodeType'
+-- * 'mccCacheNodeType' - A valid cache node type that you want to scale this cache cluster up to.
 --
--- * 'mccSecurityGroupIds'
+-- * 'mccSecurityGroupIds' - Specifies the VPC Security Groups associated with the cache cluster. This parameter can be used only with clusters that are created in an Amazon Virtual Private Cloud (Amazon VPC).
 --
--- * 'mccAutoMinorVersionUpgrade'
+-- * 'mccAutoMinorVersionUpgrade' - This parameter is currently disabled.
 --
--- * 'mccCacheParameterGroupName'
+-- * 'mccCacheParameterGroupName' - The name of the cache parameter group to apply to this cache cluster. This change is asynchronously applied as soon as possible for parameters when the @ApplyImmediately@ parameter is specified as @true@ for this request.
 --
--- * 'mccSnapshotWindow'
+-- * 'mccSnapshotWindow' - The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your cache cluster.
 --
--- * 'mccNewAvailabilityZones'
+-- * 'mccNewAvailabilityZones' - The list of Availability Zones where the new Memcached cache nodes are created. This parameter is only valid when @NumCacheNodes@ in the request is greater than the sum of the number of active cache nodes and the number of cache nodes pending creation (which may be zero). The number of Availability Zones supplied in this list must match the cache nodes being added in this request. This option is only supported on Memcached clusters. Scenarios:     * __Scenario 1:__ You have 3 active nodes and wish to add 2 nodes. Specify @NumCacheNodes=5@ (3 + 2) and optionally specify two Availability Zones for the two new nodes.     * __Scenario 2:__ You have 3 active nodes and 2 nodes pending creation (from the scenario 1 call) and want to add 1 more node. Specify @NumCacheNodes=6@ ((3 + 2) + 1) and optionally specify an Availability Zone for the new node.     * __Scenario 3:__ You want to cancel all pending operations. Specify @NumCacheNodes=3@ to cancel all pending operations. The Availability Zone placement of nodes pending creation cannot be modified. If you wish to cancel any nodes pending creation, add 0 nodes by setting @NumCacheNodes@ to the number of current nodes. If @cross-az@ is specified, existing Memcached nodes remain in their current Availability Zone. Only newly created nodes can be located in different Availability Zones. For guidance on how to move existing Memcached nodes to different Availability Zones, see the __Availability Zone Considerations__ section of <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheNode.Memcached.html Cache Node Considerations for Memcached> . __Impact of new add/remove requests upon pending requests__      * Scenario-1     * Pending Action: Delete     * New Request: Delete     * Result: The new delete, pending or immediate, replaces the pending delete.     * Scenario-2     * Pending Action: Delete     * New Request: Create     * Result: The new create, pending or immediate, replaces the pending delete.     * Scenario-3     * Pending Action: Create     * New Request: Delete     * Result: The new delete, pending or immediate, replaces the pending create.     * Scenario-4     * Pending Action: Create     * New Request: Create     * Result: The new create is added to the pending create. /Important:/ __Important:__ If the new create request is __Apply Immediately - Yes__ , all creates are performed immediately. If the new create request is __Apply Immediately - No__ , all creates are pending.
 --
--- * 'mccPreferredMaintenanceWindow'
+-- * 'mccPreferredMaintenanceWindow' - Specifies the weekly time range during which maintenance on the 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:23:00-mon:01:30@
 --
--- * 'mccCacheNodeIdsToRemove'
+-- * 'mccCacheNodeIdsToRemove' - A list of cache node IDs to be removed. A node ID is a numeric identifier (0001, 0002, etc.). This parameter is only valid when @NumCacheNodes@ is less than the existing number of cache nodes. The number of cache node IDs supplied in this parameter must match the difference between the existing number of cache nodes in the cluster or pending cache nodes, whichever is greater, and the value of @NumCacheNodes@ in the request. For example: If you have 3 active cache nodes, 7 pending cache nodes, and the number of cache nodes in this @ModifyCacheCluser@ call is 5, you must list 2 (7 - 5) cache node IDs to remove.
 --
--- * 'mccSnapshotRetentionLimit'
+-- * 'mccSnapshotRetentionLimit' - The number of days for which ElastiCache retains automatic cache cluster snapshots before deleting them. For example, if you set @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is retained for 5 days before being deleted.
 --
--- * 'mccNotificationTopicStatus'
+-- * 'mccNotificationTopicStatus' - The status of the Amazon SNS notification topic. Notifications are sent only if the status is @active@ . Valid values: @active@ | @inactive@
 --
--- * 'mccAZMode'
+-- * 'mccAZMode' - Specifies whether the new nodes in this Memcached cache cluster are all created in a single Availability Zone or created across multiple Availability Zones. Valid values: @single-az@ | @cross-az@ . This option is only supported for Memcached cache clusters.
 --
--- * 'mccApplyImmediately'
+-- * 'mccApplyImmediately' - If @true@ , this parameter causes the modifications in this request and any pending modifications to be applied, asynchronously and as soon as possible, regardless of the @PreferredMaintenanceWindow@ setting for the cache cluster. If @false@ , changes to the cache cluster are applied on the next maintenance reboot, or the next failure reboot, whichever occurs first. /Important:/ If you perform a @ModifyCacheCluster@ before a pending modification is applied, the pending modification is replaced by the newer modification. Valid values: @true@ | @false@  Default: @false@
 --
--- * 'mccNotificationTopicARN'
+-- * 'mccNotificationTopicARN' - The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications are sent.
 --
--- * 'mccNumCacheNodes'
+-- * 'mccNumCacheNodes' - The number of cache nodes that the cache cluster should have. If the value for @NumCacheNodes@ is greater than the sum of the number of current cache nodes and the number of cache nodes pending creation (which may be zero), more nodes are added. If the value is less than the number of existing cache nodes, nodes are removed. If the value is equal to the number of current cache nodes, any pending add or remove requests are canceled. If you are removing cache nodes, you must use the @CacheNodeIdsToRemove@ parameter to provide the IDs of the specific cache nodes to remove. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
 --
--- * 'mccCacheSecurityGroupNames'
+-- * 'mccCacheSecurityGroupNames' - A list of cache security group names to authorize on this cache cluster. This change is asynchronously applied as soon as possible. You can use this parameter only with clusters that are created outside of an Amazon Virtual Private Cloud (Amazon VPC). Constraints: Must contain no more than 255 alphanumeric characters. Must not be "Default".
 --
--- * 'mccCacheClusterId'
+-- * 'mccCacheClusterId' - The cache cluster identifier. This value is stored as a lowercase string.
 modifyCacheCluster
     :: Text -- ^ 'mccCacheClusterId'
     -> ModifyCacheCluster
@@ -142,19 +146,15 @@
     , _mccCacheClusterId = pCacheClusterId_
     }
 
--- | The upgraded version of the cache engine to be run on the cache nodes.
---
--- __Important:__ You can upgrade to a newer engine version (see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version>), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cache cluster and create it anew with the earlier engine version.
+-- | The upgraded version of the cache engine to be run on the cache nodes. __Important:__ You can upgrade to a newer engine version (see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version> ), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cache cluster and create it anew with the earlier engine version.
 mccEngineVersion :: Lens' ModifyCacheCluster (Maybe Text)
 mccEngineVersion = lens _mccEngineVersion (\ s a -> s{_mccEngineVersion = a});
 
--- | A valid cache node type that you want to scale this cache cluster to. The value of this parameter must be one of the /ScaleUpModifications/ values returned by the 'ListAllowedCacheNodeTypeModification' action.
+-- | A valid cache node type that you want to scale this cache cluster up to.
 mccCacheNodeType :: Lens' ModifyCacheCluster (Maybe Text)
 mccCacheNodeType = lens _mccCacheNodeType (\ s a -> s{_mccCacheNodeType = a});
 
--- | Specifies the VPC Security Groups associated with the cache cluster.
---
--- This parameter can be used only with clusters that are created in an Amazon Virtual Private Cloud (VPC).
+-- | Specifies the VPC Security Groups associated with the cache cluster. This parameter can be used only with clusters that are created in an Amazon Virtual Private Cloud (Amazon VPC).
 mccSecurityGroupIds :: Lens' ModifyCacheCluster [Text]
 mccSecurityGroupIds = lens _mccSecurityGroupIds (\ s a -> s{_mccSecurityGroupIds = a}) . _Default . _Coerce;
 
@@ -162,159 +162,51 @@
 mccAutoMinorVersionUpgrade :: Lens' ModifyCacheCluster (Maybe Bool)
 mccAutoMinorVersionUpgrade = lens _mccAutoMinorVersionUpgrade (\ s a -> s{_mccAutoMinorVersionUpgrade = a});
 
--- | The name of the cache parameter group to apply to this cache cluster. This change is asynchronously applied as soon as possible for parameters when the /ApplyImmediately/ parameter is specified as /true/ for this request.
+-- | The name of the cache parameter group to apply to this cache cluster. This change is asynchronously applied as soon as possible for parameters when the @ApplyImmediately@ parameter is specified as @true@ for this request.
 mccCacheParameterGroupName :: Lens' ModifyCacheCluster (Maybe Text)
 mccCacheParameterGroupName = lens _mccCacheParameterGroupName (\ s a -> s{_mccCacheParameterGroupName = a});
 
--- | The daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster.
+-- | The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your cache cluster.
 mccSnapshotWindow :: Lens' ModifyCacheCluster (Maybe Text)
 mccSnapshotWindow = lens _mccSnapshotWindow (\ s a -> s{_mccSnapshotWindow = a});
 
--- | The list of Availability Zones where the new Memcached cache nodes will be created.
---
--- This parameter is only valid when /NumCacheNodes/ in the request is greater than the sum of the number of active cache nodes and the number of cache nodes pending creation (which may be zero). The number of Availability Zones supplied in this list must match the cache nodes being added in this request.
---
--- This option is only supported on Memcached clusters.
---
--- Scenarios:
---
--- -   __Scenario 1:__ You have 3 active nodes and wish to add 2 nodes. Specify 'NumCacheNodes=5' (3 + 2) and optionally specify two Availability Zones for the two new nodes.
---
--- -   __Scenario 2:__ You have 3 active nodes and 2 nodes pending creation (from the scenario 1 call) and want to add 1 more node. Specify 'NumCacheNodes=6' ((3 + 2) + 1) and optionally specify an Availability Zone for the new node.
---
--- -   __Scenario 3:__ You want to cancel all pending actions. Specify 'NumCacheNodes=3' to cancel all pending actions.
---
--- The Availability Zone placement of nodes pending creation cannot be modified. If you wish to cancel any nodes pending creation, add 0 nodes by setting 'NumCacheNodes' to the number of current nodes.
---
--- If 'cross-az' is specified, existing Memcached nodes remain in their current Availability Zone. Only newly created nodes can be located in different Availability Zones. For guidance on how to move existing Memcached nodes to different Availability Zones, see the __Availability Zone Considerations__ section of <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheNode.Memcached.html Cache Node Considerations for Memcached>.
---
--- __Impact of new add\/remove requests upon pending requests__
---
--- -   Scenario-1
---
---     -   Pending Action: Delete
---
---     -   New Request: Delete
---
---     -   Result: The new delete, pending or immediate, replaces the pending delete.
---
--- -   Scenario-2
---
---     -   Pending Action: Delete
---
---     -   New Request: Create
---
---     -   Result: The new create, pending or immediate, replaces the pending delete.
---
--- -   Scenario-3
---
---     -   Pending Action: Create
---
---     -   New Request: Delete
---
---     -   Result: The new delete, pending or immediate, replaces the pending create.
---
--- -   Scenario-4
---
---     -   Pending Action: Create
---
---     -   New Request: Create
---
---     -   Result: The new create is added to the pending create.
---
---         __Important:__ If the new create request is __Apply Immediately - Yes__, all creates are performed immediately. If the new create request is __Apply Immediately - No__, all creates are pending.
---
--- Example:
---
--- 'NewAvailabilityZones.member.1=us-west-2a&amp;NewAvailabilityZones.member.2=us-west-2b&amp;NewAvailabilityZones.member.3=us-west-2c'
+-- | The list of Availability Zones where the new Memcached cache nodes are created. This parameter is only valid when @NumCacheNodes@ in the request is greater than the sum of the number of active cache nodes and the number of cache nodes pending creation (which may be zero). The number of Availability Zones supplied in this list must match the cache nodes being added in this request. This option is only supported on Memcached clusters. Scenarios:     * __Scenario 1:__ You have 3 active nodes and wish to add 2 nodes. Specify @NumCacheNodes=5@ (3 + 2) and optionally specify two Availability Zones for the two new nodes.     * __Scenario 2:__ You have 3 active nodes and 2 nodes pending creation (from the scenario 1 call) and want to add 1 more node. Specify @NumCacheNodes=6@ ((3 + 2) + 1) and optionally specify an Availability Zone for the new node.     * __Scenario 3:__ You want to cancel all pending operations. Specify @NumCacheNodes=3@ to cancel all pending operations. The Availability Zone placement of nodes pending creation cannot be modified. If you wish to cancel any nodes pending creation, add 0 nodes by setting @NumCacheNodes@ to the number of current nodes. If @cross-az@ is specified, existing Memcached nodes remain in their current Availability Zone. Only newly created nodes can be located in different Availability Zones. For guidance on how to move existing Memcached nodes to different Availability Zones, see the __Availability Zone Considerations__ section of <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheNode.Memcached.html Cache Node Considerations for Memcached> . __Impact of new add/remove requests upon pending requests__      * Scenario-1     * Pending Action: Delete     * New Request: Delete     * Result: The new delete, pending or immediate, replaces the pending delete.     * Scenario-2     * Pending Action: Delete     * New Request: Create     * Result: The new create, pending or immediate, replaces the pending delete.     * Scenario-3     * Pending Action: Create     * New Request: Delete     * Result: The new delete, pending or immediate, replaces the pending create.     * Scenario-4     * Pending Action: Create     * New Request: Create     * Result: The new create is added to the pending create. /Important:/ __Important:__ If the new create request is __Apply Immediately - Yes__ , all creates are performed immediately. If the new create request is __Apply Immediately - No__ , all creates are pending.
 mccNewAvailabilityZones :: Lens' ModifyCacheCluster [Text]
 mccNewAvailabilityZones = lens _mccNewAvailabilityZones (\ s a -> s{_mccNewAvailabilityZones = a}) . _Default . _Coerce;
 
--- | Specifies the weekly time range during which maintenance on the cache 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'
+-- | Specifies the weekly time range during which maintenance on the 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:23:00-mon:01:30@
 mccPreferredMaintenanceWindow :: Lens' ModifyCacheCluster (Maybe Text)
 mccPreferredMaintenanceWindow = lens _mccPreferredMaintenanceWindow (\ s a -> s{_mccPreferredMaintenanceWindow = a});
 
--- | A list of cache node IDs to be removed. A node ID is a numeric identifier (0001, 0002, etc.). This parameter is only valid when /NumCacheNodes/ is less than the existing number of cache nodes. The number of cache node IDs supplied in this parameter must match the difference between the existing number of cache nodes in the cluster or pending cache nodes, whichever is greater, and the value of /NumCacheNodes/ in the request.
---
--- For example: If you have 3 active cache nodes, 7 pending cache nodes, and the number of cache nodes in this 'ModifyCacheCluser' call is 5, you must list 2 (7 - 5) cache node IDs to remove.
+-- | A list of cache node IDs to be removed. A node ID is a numeric identifier (0001, 0002, etc.). This parameter is only valid when @NumCacheNodes@ is less than the existing number of cache nodes. The number of cache node IDs supplied in this parameter must match the difference between the existing number of cache nodes in the cluster or pending cache nodes, whichever is greater, and the value of @NumCacheNodes@ in the request. For example: If you have 3 active cache nodes, 7 pending cache nodes, and the number of cache nodes in this @ModifyCacheCluser@ call is 5, you must list 2 (7 - 5) cache node IDs to remove.
 mccCacheNodeIdsToRemove :: Lens' ModifyCacheCluster [Text]
 mccCacheNodeIdsToRemove = lens _mccCacheNodeIdsToRemove (\ s a -> s{_mccCacheNodeIdsToRemove = a}) . _Default . _Coerce;
 
--- | The number of days for which ElastiCache will retain automatic cache cluster snapshots before deleting them. For example, if you set /SnapshotRetentionLimit/ to 5, then a snapshot that was taken today will be retained for 5 days before being deleted.
---
--- If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.
+-- | The number of days for which ElastiCache retains automatic cache cluster snapshots before deleting them. For example, if you set @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is retained for 5 days before being deleted.
 mccSnapshotRetentionLimit :: Lens' ModifyCacheCluster (Maybe Int)
 mccSnapshotRetentionLimit = lens _mccSnapshotRetentionLimit (\ s a -> s{_mccSnapshotRetentionLimit = a});
 
--- | The status of the Amazon SNS notification topic. Notifications are sent only if the status is /active/.
---
--- Valid values: 'active' | 'inactive'
+-- | The status of the Amazon SNS notification topic. Notifications are sent only if the status is @active@ . Valid values: @active@ | @inactive@
 mccNotificationTopicStatus :: Lens' ModifyCacheCluster (Maybe Text)
 mccNotificationTopicStatus = lens _mccNotificationTopicStatus (\ s a -> s{_mccNotificationTopicStatus = a});
 
--- | Specifies whether the new nodes in this Memcached cache cluster are all created in a single Availability Zone or created across multiple Availability Zones.
---
--- Valid values: 'single-az' | 'cross-az'.
---
--- This option is only supported for Memcached cache clusters.
---
--- You cannot specify 'single-az' if the Memcached cache cluster already has cache nodes in different Availability Zones. If 'cross-az' is specified, existing Memcached nodes remain in their current Availability Zone.
---
--- Only newly created nodes will be located in different Availability Zones. For instructions on how to move existing Memcached nodes to different Availability Zones, see the __Availability Zone Considerations__ section of <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheNode.Memcached.html Cache Node Considerations for Memcached>.
+-- | Specifies whether the new nodes in this Memcached cache cluster are all created in a single Availability Zone or created across multiple Availability Zones. Valid values: @single-az@ | @cross-az@ . This option is only supported for Memcached cache clusters.
 mccAZMode :: Lens' ModifyCacheCluster (Maybe AZMode)
 mccAZMode = lens _mccAZMode (\ s a -> s{_mccAZMode = a});
 
--- | If 'true', this parameter causes the modifications in this request and any pending modifications to be applied, asynchronously and as soon as possible, regardless of the /PreferredMaintenanceWindow/ setting for the cache cluster.
---
--- If 'false', then changes to the cache cluster are applied on the next maintenance reboot, or the next failure reboot, whichever occurs first.
---
--- If you perform a 'ModifyCacheCluster' before a pending modification is applied, the pending modification is replaced by the newer modification.
---
--- Valid values: 'true' | 'false'
---
--- Default: 'false'
+-- | If @true@ , this parameter causes the modifications in this request and any pending modifications to be applied, asynchronously and as soon as possible, regardless of the @PreferredMaintenanceWindow@ setting for the cache cluster. If @false@ , changes to the cache cluster are applied on the next maintenance reboot, or the next failure reboot, whichever occurs first. /Important:/ If you perform a @ModifyCacheCluster@ before a pending modification is applied, the pending modification is replaced by the newer modification. Valid values: @true@ | @false@  Default: @false@
 mccApplyImmediately :: Lens' ModifyCacheCluster (Maybe Bool)
 mccApplyImmediately = lens _mccApplyImmediately (\ s a -> s{_mccApplyImmediately = a});
 
--- | The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications will be sent.
---
--- The Amazon SNS topic owner must be same as the cache cluster owner.
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications are sent.
 mccNotificationTopicARN :: Lens' ModifyCacheCluster (Maybe Text)
 mccNotificationTopicARN = lens _mccNotificationTopicARN (\ s a -> s{_mccNotificationTopicARN = a});
 
--- | The number of cache nodes that the cache cluster should have. If the value for 'NumCacheNodes' is greater than the sum of the number of current cache nodes and the number of cache nodes pending creation (which may be zero), then more nodes will be added. If the value is less than the number of existing cache nodes, then nodes will be removed. If the value is equal to the number of current cache nodes, then any pending add or remove requests are canceled.
---
--- If you are removing cache nodes, you must use the 'CacheNodeIdsToRemove' parameter to provide the IDs of the specific cache nodes to remove.
---
--- For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
---
--- Adding or removing Memcached cache nodes can be applied immediately or as a pending action. See 'ApplyImmediately'.
---
--- A pending action to modify the number of cache nodes in a cluster during its maintenance window, whether by adding or removing nodes in accordance with the scale out architecture, is not queued. The customer\'s latest request to add or remove nodes to the cluster overrides any previous pending actions to modify the number of cache nodes in the cluster. For example, a request to remove 2 nodes would override a previous pending action to remove 3 nodes. Similarly, a request to add 2 nodes would override a previous pending action to remove 3 nodes and vice versa. As Memcached cache nodes may now be provisioned in different Availability Zones with flexible cache node placement, a request to add nodes does not automatically override a previous pending action to add nodes. The customer can modify the previous pending action to add more nodes or explicitly cancel the pending request and retry the new request. To cancel pending actions to modify the number of cache nodes in a cluster, use the 'ModifyCacheCluster' request and set /NumCacheNodes/ equal to the number of cache nodes currently in the cache cluster.
+-- | The number of cache nodes that the cache cluster should have. If the value for @NumCacheNodes@ is greater than the sum of the number of current cache nodes and the number of cache nodes pending creation (which may be zero), more nodes are added. If the value is less than the number of existing cache nodes, nodes are removed. If the value is equal to the number of current cache nodes, any pending add or remove requests are canceled. If you are removing cache nodes, you must use the @CacheNodeIdsToRemove@ parameter to provide the IDs of the specific cache nodes to remove. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
 mccNumCacheNodes :: Lens' ModifyCacheCluster (Maybe Int)
 mccNumCacheNodes = lens _mccNumCacheNodes (\ s a -> s{_mccNumCacheNodes = a});
 
--- | A list of cache security group names to authorize on this cache cluster. This change is asynchronously applied as soon as possible.
---
--- This parameter can be used only with clusters that are created outside of an Amazon Virtual Private Cloud (VPC).
---
--- Constraints: Must contain no more than 255 alphanumeric characters. Must not be \"Default\".
+-- | A list of cache security group names to authorize on this cache cluster. This change is asynchronously applied as soon as possible. You can use this parameter only with clusters that are created outside of an Amazon Virtual Private Cloud (Amazon VPC). Constraints: Must contain no more than 255 alphanumeric characters. Must not be "Default".
 mccCacheSecurityGroupNames :: Lens' ModifyCacheCluster [Text]
 mccCacheSecurityGroupNames = lens _mccCacheSecurityGroupNames (\ s a -> s{_mccCacheSecurityGroupNames = a}) . _Default . _Coerce;
 
@@ -392,9 +284,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mccrsCacheCluster'
+-- * 'mccrsCacheCluster' - Undocumented member.
 --
--- * 'mccrsResponseStatus'
+-- * 'mccrsResponseStatus' - -- | The response status code.
 modifyCacheClusterResponse
     :: Int -- ^ 'mccrsResponseStatus'
     -> ModifyCacheClusterResponse
@@ -408,7 +300,7 @@
 mccrsCacheCluster :: Lens' ModifyCacheClusterResponse (Maybe CacheCluster)
 mccrsCacheCluster = lens _mccrsCacheCluster (\ s a -> s{_mccrsCacheCluster = a});
 
--- | The response status code.
+-- | -- | The response status code.
 mccrsResponseStatus :: Lens' ModifyCacheClusterResponse Int
 mccrsResponseStatus = lens _mccrsResponseStatus (\ s a -> s{_mccrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs b/gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs
--- a/gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs
+++ b/gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /ModifyCacheParameterGroup/ action modifies the parameters of a cache parameter group. You can modify up to 20 parameters in a single request by submitting a list parameter name and value pairs.
+-- Modifies the parameters of a cache parameter group. You can modify up to 20 parameters in a single request by submitting a list parameter name and value pairs.
+--
+--
 module Network.AWS.ElastiCache.ModifyCacheParameterGroup
     (
     -- * Creating a Request
@@ -42,8 +44,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /ModifyCacheParameterGroup/ action.
+-- | Represents the input of a @ModifyCacheParameterGroup@ operation.
 --
+--
+--
 -- /See:/ 'modifyCacheParameterGroup' smart constructor.
 data ModifyCacheParameterGroup = ModifyCacheParameterGroup'
     { _mcpgCacheParameterGroupName :: !Text
@@ -54,9 +58,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mcpgCacheParameterGroupName'
+-- * 'mcpgCacheParameterGroupName' - The name of the cache parameter group to modify.
 --
--- * 'mcpgParameterNameValues'
+-- * 'mcpgParameterNameValues' - An array of parameter names and values for the parameter update. You must supply at least one parameter name and value; subsequent arguments are optional. A maximum of 20 parameters may be modified per request.
 modifyCacheParameterGroup
     :: Text -- ^ 'mcpgCacheParameterGroupName'
     -> ModifyCacheParameterGroup
diff --git a/gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs b/gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs
--- a/gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs
+++ b/gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /ModifyCacheSubnetGroup/ action modifies an existing cache subnet group.
+-- Modifies an existing cache subnet group.
+--
+--
 module Network.AWS.ElastiCache.ModifyCacheSubnetGroup
     (
     -- * Creating a Request
@@ -44,8 +46,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /ModifyCacheSubnetGroup/ action.
+-- | Represents the input of a @ModifyCacheSubnetGroup@ operation.
 --
+--
+--
 -- /See:/ 'modifyCacheSubnetGroup' smart constructor.
 data ModifyCacheSubnetGroup = ModifyCacheSubnetGroup'
     { _mcsgSubnetIds                   :: !(Maybe [Text])
@@ -57,11 +61,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mcsgSubnetIds'
+-- * 'mcsgSubnetIds' - The EC2 subnet IDs for the cache subnet group.
 --
--- * 'mcsgCacheSubnetGroupDescription'
+-- * 'mcsgCacheSubnetGroupDescription' - A description of the cache subnet group.
 --
--- * 'mcsgCacheSubnetGroupName'
+-- * 'mcsgCacheSubnetGroupName' - The name for the cache subnet group. This value is stored as a lowercase string. Constraints: Must contain no more than 255 alphanumeric characters or hyphens. Example: @mysubnetgroup@
 modifyCacheSubnetGroup
     :: Text -- ^ 'mcsgCacheSubnetGroupName'
     -> ModifyCacheSubnetGroup
@@ -76,15 +80,11 @@
 mcsgSubnetIds :: Lens' ModifyCacheSubnetGroup [Text]
 mcsgSubnetIds = lens _mcsgSubnetIds (\ s a -> s{_mcsgSubnetIds = a}) . _Default . _Coerce;
 
--- | A description for the cache subnet group.
+-- | A description of the cache subnet group.
 mcsgCacheSubnetGroupDescription :: Lens' ModifyCacheSubnetGroup (Maybe Text)
 mcsgCacheSubnetGroupDescription = lens _mcsgCacheSubnetGroupDescription (\ s a -> s{_mcsgCacheSubnetGroupDescription = a});
 
--- | The name for the cache subnet group. This value is stored as a lowercase string.
---
--- Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
---
--- Example: 'mysubnetgroup'
+-- | The name for the cache subnet group. This value is stored as a lowercase string. Constraints: Must contain no more than 255 alphanumeric characters or hyphens. Example: @mysubnetgroup@
 mcsgCacheSubnetGroupName :: Lens' ModifyCacheSubnetGroup Text
 mcsgCacheSubnetGroupName = lens _mcsgCacheSubnetGroupName (\ s a -> s{_mcsgCacheSubnetGroupName = a});
 
@@ -131,9 +131,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mcsgrsCacheSubnetGroup'
+-- * 'mcsgrsCacheSubnetGroup' - Undocumented member.
 --
--- * 'mcsgrsResponseStatus'
+-- * 'mcsgrsResponseStatus' - -- | The response status code.
 modifyCacheSubnetGroupResponse
     :: Int -- ^ 'mcsgrsResponseStatus'
     -> ModifyCacheSubnetGroupResponse
@@ -147,7 +147,7 @@
 mcsgrsCacheSubnetGroup :: Lens' ModifyCacheSubnetGroupResponse (Maybe CacheSubnetGroup)
 mcsgrsCacheSubnetGroup = lens _mcsgrsCacheSubnetGroup (\ s a -> s{_mcsgrsCacheSubnetGroup = a});
 
--- | The response status code.
+-- | -- | The response status code.
 mcsgrsResponseStatus :: Lens' ModifyCacheSubnetGroupResponse Int
 mcsgrsResponseStatus = lens _mcsgrsResponseStatus (\ s a -> s{_mcsgrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs b/gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs
--- a/gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs
+++ b/gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs
@@ -18,7 +18,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /ModifyReplicationGroup/ action modifies the settings for a replication group.
+-- Modifies the settings for a replication group.
+--
+--
+-- /Important:/ Due to current limitations on Redis (cluster mode disabled), this operation or parameter is not supported on Redis (cluster mode enabled) replication groups.
+--
 module Network.AWS.ElastiCache.ModifyReplicationGroup
     (
     -- * Creating a Request
@@ -58,8 +62,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /ModifyReplicationGroups/ action.
+-- | Represents the input of a @ModifyReplicationGroups@ operation.
 --
+--
+--
 -- /See:/ 'modifyReplicationGroup' smart constructor.
 data ModifyReplicationGroup = ModifyReplicationGroup'
     { _mrgAutomaticFailoverEnabled    :: !(Maybe Bool)
@@ -85,39 +91,39 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mrgAutomaticFailoverEnabled'
+-- * 'mrgAutomaticFailoverEnabled' - Determines whether a read replica is automatically promoted to read/write primary if the existing primary encounters a failure. Valid values: @true@ | @false@
 --
--- * 'mrgEngineVersion'
+-- * 'mrgEngineVersion' - The upgraded version of the cache engine to be run on the cache clusters in the replication group. __Important:__ You can upgrade to a newer engine version (see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version> ), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing replication group and create it anew with the earlier engine version.
 --
--- * 'mrgCacheNodeType'
+-- * 'mrgCacheNodeType' - A valid cache node type that you want to scale this replication group to.
 --
--- * 'mrgSnapshottingClusterId'
+-- * 'mrgSnapshottingClusterId' - The cache cluster ID that is used as the daily snapshot source for the replication group. This parameter cannot be set for Redis (cluster mode enabled) replication groups.
 --
--- * 'mrgSecurityGroupIds'
+-- * 'mrgSecurityGroupIds' - Specifies the VPC Security Groups associated with the cache clusters in the replication group. This parameter can be used only with replication group containing cache clusters running in an Amazon Virtual Private Cloud (Amazon VPC).
 --
--- * 'mrgAutoMinorVersionUpgrade'
+-- * 'mrgAutoMinorVersionUpgrade' - This parameter is currently disabled.
 --
--- * 'mrgCacheParameterGroupName'
+-- * 'mrgCacheParameterGroupName' - The name of the cache parameter group to apply to all of the clusters in this replication group. This change is asynchronously applied as soon as possible for parameters when the @ApplyImmediately@ parameter is specified as @true@ for this request.
 --
--- * 'mrgReplicationGroupDescription'
+-- * 'mrgReplicationGroupDescription' - A description for the replication group. Maximum length is 255 characters.
 --
--- * 'mrgSnapshotWindow'
+-- * 'mrgSnapshotWindow' - The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of the node group (shard) specified by @SnapshottingClusterId@ . Example: @05:00-09:00@  If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range.
 --
--- * 'mrgPrimaryClusterId'
+-- * 'mrgPrimaryClusterId' - For replication groups with a single primary, if this parameter is specified, ElastiCache promotes the specified cluster in the specified replication group to the primary role. The nodes of all other clusters in the replication group are read replicas.
 --
--- * 'mrgPreferredMaintenanceWindow'
+-- * 'mrgPreferredMaintenanceWindow' - Specifies the weekly time range during which maintenance on the 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:23:00-mon:01:30@
 --
--- * 'mrgSnapshotRetentionLimit'
+-- * 'mrgSnapshotRetentionLimit' - The number of days for which ElastiCache retains automatic node group (shard) snapshots before deleting them. For example, if you set @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is retained for 5 days before being deleted. __Important__ If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.
 --
--- * 'mrgNotificationTopicStatus'
+-- * 'mrgNotificationTopicStatus' - The status of the Amazon SNS notification topic for the replication group. Notifications are sent only if the status is @active@ . Valid values: @active@ | @inactive@
 --
--- * 'mrgApplyImmediately'
+-- * 'mrgApplyImmediately' - If @true@ , this parameter causes the modifications in this request and any pending modifications to be applied, asynchronously and as soon as possible, regardless of the @PreferredMaintenanceWindow@ setting for the replication group. If @false@ , changes to the nodes in the replication group are applied on the next maintenance reboot, or the next failure reboot, whichever occurs first. Valid values: @true@ | @false@  Default: @false@
 --
--- * 'mrgNotificationTopicARN'
+-- * 'mrgNotificationTopicARN' - The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications are sent.
 --
--- * 'mrgCacheSecurityGroupNames'
+-- * 'mrgCacheSecurityGroupNames' - A list of cache security group names to authorize for the clusters in this replication group. This change is asynchronously applied as soon as possible. This parameter can be used only with replication group containing cache clusters running outside of an Amazon Virtual Private Cloud (Amazon VPC). Constraints: Must contain no more than 255 alphanumeric characters. Must not be @Default@ .
 --
--- * 'mrgReplicationGroupId'
+-- * 'mrgReplicationGroupId' - The identifier of the replication group to modify.
 modifyReplicationGroup
     :: Text -- ^ 'mrgReplicationGroupId'
     -> ModifyReplicationGroup
@@ -142,36 +148,23 @@
     , _mrgReplicationGroupId = pReplicationGroupId_
     }
 
--- | Whether a read replica will be automatically promoted to read\/write primary if the existing primary encounters a failure.
---
--- Valid values: 'true' | 'false'
---
--- ElastiCache Multi-AZ replication groups are not supported on:
---
--- -   Redis versions earlier than 2.8.6.
---
--- -   T1 and T2 cache node types.
---
+-- | Determines whether a read replica is automatically promoted to read/write primary if the existing primary encounters a failure. Valid values: @true@ | @false@
 mrgAutomaticFailoverEnabled :: Lens' ModifyReplicationGroup (Maybe Bool)
 mrgAutomaticFailoverEnabled = lens _mrgAutomaticFailoverEnabled (\ s a -> s{_mrgAutomaticFailoverEnabled = a});
 
--- | The upgraded version of the cache engine to be run on the cache clusters in the replication group.
---
--- __Important:__ You can upgrade to a newer engine version (see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version>), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing replication group and create it anew with the earlier engine version.
+-- | The upgraded version of the cache engine to be run on the cache clusters in the replication group. __Important:__ You can upgrade to a newer engine version (see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version> ), but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing replication group and create it anew with the earlier engine version.
 mrgEngineVersion :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgEngineVersion = lens _mrgEngineVersion (\ s a -> s{_mrgEngineVersion = a});
 
--- | A valid cache node type that you want to scale this replication group to. The value of this parameter must be one of the /ScaleUpModifications/ values returned by the 'ListAllowedCacheNodeTypeModification' action.
+-- | A valid cache node type that you want to scale this replication group to.
 mrgCacheNodeType :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgCacheNodeType = lens _mrgCacheNodeType (\ s a -> s{_mrgCacheNodeType = a});
 
--- | The cache cluster ID that will be used as the daily snapshot source for the replication group.
+-- | The cache cluster ID that is used as the daily snapshot source for the replication group. This parameter cannot be set for Redis (cluster mode enabled) replication groups.
 mrgSnapshottingClusterId :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgSnapshottingClusterId = lens _mrgSnapshottingClusterId (\ s a -> s{_mrgSnapshottingClusterId = a});
 
--- | Specifies the VPC Security Groups associated with the cache clusters in the replication group.
---
--- This parameter can be used only with replication group containing cache clusters running in an Amazon Virtual Private Cloud (VPC).
+-- | Specifies the VPC Security Groups associated with the cache clusters in the replication group. This parameter can be used only with replication group containing cache clusters running in an Amazon Virtual Private Cloud (Amazon VPC).
 mrgSecurityGroupIds :: Lens' ModifyReplicationGroup [Text]
 mrgSecurityGroupIds = lens _mrgSecurityGroupIds (\ s a -> s{_mrgSecurityGroupIds = a}) . _Default . _Coerce;
 
@@ -179,7 +172,7 @@
 mrgAutoMinorVersionUpgrade :: Lens' ModifyReplicationGroup (Maybe Bool)
 mrgAutoMinorVersionUpgrade = lens _mrgAutoMinorVersionUpgrade (\ s a -> s{_mrgAutoMinorVersionUpgrade = a});
 
--- | The name of the cache parameter group to apply to all of the clusters in this replication group. This change is asynchronously applied as soon as possible for parameters when the /ApplyImmediately/ parameter is specified as /true/ for this request.
+-- | The name of the cache parameter group to apply to all of the clusters in this replication group. This change is asynchronously applied as soon as possible for parameters when the @ApplyImmediately@ parameter is specified as @true@ for this request.
 mrgCacheParameterGroupName :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgCacheParameterGroupName = lens _mrgCacheParameterGroupName (\ s a -> s{_mrgCacheParameterGroupName = a});
 
@@ -187,71 +180,35 @@
 mrgReplicationGroupDescription :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgReplicationGroupDescription = lens _mrgReplicationGroupDescription (\ s a -> s{_mrgReplicationGroupDescription = a});
 
--- | The daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of the node group specified by /SnapshottingClusterId/.
---
--- Example: '05:00-09:00'
---
--- If you do not specify this parameter, then ElastiCache will automatically choose an appropriate time range.
+-- | The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of the node group (shard) specified by @SnapshottingClusterId@ . Example: @05:00-09:00@  If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range.
 mrgSnapshotWindow :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgSnapshotWindow = lens _mrgSnapshotWindow (\ s a -> s{_mrgSnapshotWindow = a});
 
--- | If this parameter is specified, ElastiCache will promote the specified cluster in the specified replication group to the primary role. The nodes of all other clusters in the replication group will be read replicas.
+-- | For replication groups with a single primary, if this parameter is specified, ElastiCache promotes the specified cluster in the specified replication group to the primary role. The nodes of all other clusters in the replication group are read replicas.
 mrgPrimaryClusterId :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgPrimaryClusterId = lens _mrgPrimaryClusterId (\ s a -> s{_mrgPrimaryClusterId = a});
 
--- | Specifies the weekly time range during which maintenance on the cache 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'
+-- | Specifies the weekly time range during which maintenance on the 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:23:00-mon:01:30@
 mrgPreferredMaintenanceWindow :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgPreferredMaintenanceWindow = lens _mrgPreferredMaintenanceWindow (\ s a -> s{_mrgPreferredMaintenanceWindow = a});
 
--- | The number of days for which ElastiCache will retain automatic node group snapshots before deleting them. For example, if you set /SnapshotRetentionLimit/ to 5, then a snapshot that was taken today will be retained for 5 days before being deleted.
---
--- __Important__ If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.
+-- | The number of days for which ElastiCache retains automatic node group (shard) snapshots before deleting them. For example, if you set @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is retained for 5 days before being deleted. __Important__ If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.
 mrgSnapshotRetentionLimit :: Lens' ModifyReplicationGroup (Maybe Int)
 mrgSnapshotRetentionLimit = lens _mrgSnapshotRetentionLimit (\ s a -> s{_mrgSnapshotRetentionLimit = a});
 
--- | The status of the Amazon SNS notification topic for the replication group. Notifications are sent only if the status is /active/.
---
--- Valid values: 'active' | 'inactive'
+-- | The status of the Amazon SNS notification topic for the replication group. Notifications are sent only if the status is @active@ . Valid values: @active@ | @inactive@
 mrgNotificationTopicStatus :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgNotificationTopicStatus = lens _mrgNotificationTopicStatus (\ s a -> s{_mrgNotificationTopicStatus = a});
 
--- | If 'true', this parameter causes the modifications in this request and any pending modifications to be applied, asynchronously and as soon as possible, regardless of the /PreferredMaintenanceWindow/ setting for the replication group.
---
--- If 'false', then changes to the nodes in the replication group are applied on the next maintenance reboot, or the next failure reboot, whichever occurs first.
---
--- Valid values: 'true' | 'false'
---
--- Default: 'false'
+-- | If @true@ , this parameter causes the modifications in this request and any pending modifications to be applied, asynchronously and as soon as possible, regardless of the @PreferredMaintenanceWindow@ setting for the replication group. If @false@ , changes to the nodes in the replication group are applied on the next maintenance reboot, or the next failure reboot, whichever occurs first. Valid values: @true@ | @false@  Default: @false@
 mrgApplyImmediately :: Lens' ModifyReplicationGroup (Maybe Bool)
 mrgApplyImmediately = lens _mrgApplyImmediately (\ s a -> s{_mrgApplyImmediately = a});
 
--- | The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications will be sent.
---
--- The Amazon SNS topic owner must be same as the replication group owner.
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications are sent.
 mrgNotificationTopicARN :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgNotificationTopicARN = lens _mrgNotificationTopicARN (\ s a -> s{_mrgNotificationTopicARN = a});
 
--- | A list of cache security group names to authorize for the clusters in this replication group. This change is asynchronously applied as soon as possible.
---
--- This parameter can be used only with replication group containing cache clusters running outside of an Amazon Virtual Private Cloud (VPC).
---
--- Constraints: Must contain no more than 255 alphanumeric characters. Must not be \"Default\".
+-- | A list of cache security group names to authorize for the clusters in this replication group. This change is asynchronously applied as soon as possible. This parameter can be used only with replication group containing cache clusters running outside of an Amazon Virtual Private Cloud (Amazon VPC). Constraints: Must contain no more than 255 alphanumeric characters. Must not be @Default@ .
 mrgCacheSecurityGroupNames :: Lens' ModifyReplicationGroup [Text]
 mrgCacheSecurityGroupNames = lens _mrgCacheSecurityGroupNames (\ s a -> s{_mrgCacheSecurityGroupNames = a}) . _Default . _Coerce;
 
@@ -326,9 +283,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mrgrsReplicationGroup'
+-- * 'mrgrsReplicationGroup' - Undocumented member.
 --
--- * 'mrgrsResponseStatus'
+-- * 'mrgrsResponseStatus' - -- | The response status code.
 modifyReplicationGroupResponse
     :: Int -- ^ 'mrgrsResponseStatus'
     -> ModifyReplicationGroupResponse
@@ -342,7 +299,7 @@
 mrgrsReplicationGroup :: Lens' ModifyReplicationGroupResponse (Maybe ReplicationGroup)
 mrgrsReplicationGroup = lens _mrgrsReplicationGroup (\ s a -> s{_mrgrsReplicationGroup = a});
 
--- | The response status code.
+-- | -- | The response status code.
 mrgrsResponseStatus :: Lens' ModifyReplicationGroupResponse Int
 mrgrsResponseStatus = lens _mrgrsResponseStatus (\ s a -> s{_mrgrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs b/gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs
--- a/gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs
+++ b/gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /PurchaseReservedCacheNodesOffering/ action allows you to purchase a reserved cache node offering.
+-- Allows you to purchase a reserved cache node offering.
+--
+--
 module Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering
     (
     -- * Creating a Request
@@ -44,8 +46,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /PurchaseReservedCacheNodesOffering/ action.
+-- | Represents the input of a @PurchaseReservedCacheNodesOffering@ operation.
 --
+--
+--
 -- /See:/ 'purchaseReservedCacheNodesOffering' smart constructor.
 data PurchaseReservedCacheNodesOffering = PurchaseReservedCacheNodesOffering'
     { _prcnoCacheNodeCount               :: !(Maybe Int)
@@ -57,11 +61,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'prcnoCacheNodeCount'
+-- * 'prcnoCacheNodeCount' - The number of cache node instances to reserve. Default: @1@
 --
--- * 'prcnoReservedCacheNodeId'
+-- * 'prcnoReservedCacheNodeId' - A customer-specified identifier to track this reservation. Example: myreservationID
 --
--- * 'prcnoReservedCacheNodesOfferingId'
+-- * 'prcnoReservedCacheNodesOfferingId' - The ID of the reserved cache node offering to purchase. Example: @438012d3-4052-4cc7-b2e3-8d3372e0e706@
 purchaseReservedCacheNodesOffering
     :: Text -- ^ 'prcnoReservedCacheNodesOfferingId'
     -> PurchaseReservedCacheNodesOffering
@@ -72,23 +76,15 @@
     , _prcnoReservedCacheNodesOfferingId = pReservedCacheNodesOfferingId_
     }
 
--- | The number of cache node instances to reserve.
---
--- Default: '1'
+-- | The number of cache node instances to reserve. Default: @1@
 prcnoCacheNodeCount :: Lens' PurchaseReservedCacheNodesOffering (Maybe Int)
 prcnoCacheNodeCount = lens _prcnoCacheNodeCount (\ s a -> s{_prcnoCacheNodeCount = a});
 
--- | A customer-specified identifier to track this reservation.
---
--- The Reserved Cache Node ID is an unique customer-specified identifier to track this reservation. If this parameter is not specified, ElastiCache automatically generates an identifier for the reservation.
---
--- Example: myreservationID
+-- | A customer-specified identifier to track this reservation. Example: myreservationID
 prcnoReservedCacheNodeId :: Lens' PurchaseReservedCacheNodesOffering (Maybe Text)
 prcnoReservedCacheNodeId = lens _prcnoReservedCacheNodeId (\ s a -> s{_prcnoReservedCacheNodeId = a});
 
--- | The ID of the reserved cache node offering to purchase.
---
--- Example: '438012d3-4052-4cc7-b2e3-8d3372e0e706'
+-- | The ID of the reserved cache node offering to purchase. Example: @438012d3-4052-4cc7-b2e3-8d3372e0e706@
 prcnoReservedCacheNodesOfferingId :: Lens' PurchaseReservedCacheNodesOffering Text
 prcnoReservedCacheNodesOfferingId = lens _prcnoReservedCacheNodesOfferingId (\ s a -> s{_prcnoReservedCacheNodesOfferingId = a});
 
@@ -138,9 +134,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'prcnorsReservedCacheNode'
+-- * 'prcnorsReservedCacheNode' - Undocumented member.
 --
--- * 'prcnorsResponseStatus'
+-- * 'prcnorsResponseStatus' - -- | The response status code.
 purchaseReservedCacheNodesOfferingResponse
     :: Int -- ^ 'prcnorsResponseStatus'
     -> PurchaseReservedCacheNodesOfferingResponse
@@ -154,7 +150,7 @@
 prcnorsReservedCacheNode :: Lens' PurchaseReservedCacheNodesOfferingResponse (Maybe ReservedCacheNode)
 prcnorsReservedCacheNode = lens _prcnorsReservedCacheNode (\ s a -> s{_prcnorsReservedCacheNode = a});
 
--- | The response status code.
+-- | -- | The response status code.
 prcnorsResponseStatus :: Lens' PurchaseReservedCacheNodesOfferingResponse Int
 prcnorsResponseStatus = lens _prcnorsResponseStatus (\ s a -> s{_prcnorsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/RebootCacheCluster.hs b/gen/Network/AWS/ElastiCache/RebootCacheCluster.hs
--- a/gen/Network/AWS/ElastiCache/RebootCacheCluster.hs
+++ b/gen/Network/AWS/ElastiCache/RebootCacheCluster.hs
@@ -18,11 +18,13 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /RebootCacheCluster/ action reboots some, or all, of the cache nodes within a provisioned cache cluster. This API will apply any modified cache parameter groups to the cache cluster. The reboot action takes place as soon as possible, and results in a momentary outage to the cache cluster. During the reboot, the cache cluster status is set to REBOOTING.
+-- Reboots some, or all, of the cache nodes within a provisioned cache cluster. This operation applies any modified cache parameter groups to the cache cluster. The reboot operation takes place as soon as possible, and results in a momentary outage to the cache cluster. During the reboot, the cache cluster status is set to REBOOTING.
 --
+--
 -- The reboot causes the contents of the cache (for each cache node being rebooted) to be lost.
 --
 -- When the reboot is complete, a cache cluster event is created.
+--
 module Network.AWS.ElastiCache.RebootCacheCluster
     (
     -- * Creating a Request
@@ -47,8 +49,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /RebootCacheCluster/ action.
+-- | Represents the input of a @RebootCacheCluster@ operation.
 --
+--
+--
 -- /See:/ 'rebootCacheCluster' smart constructor.
 data RebootCacheCluster = RebootCacheCluster'
     { _rccCacheClusterId       :: !Text
@@ -59,9 +63,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rccCacheClusterId'
+-- * 'rccCacheClusterId' - The cache cluster identifier. This parameter is stored as a lowercase string.
 --
--- * 'rccCacheNodeIdsToReboot'
+-- * 'rccCacheNodeIdsToReboot' - A list of cache node IDs to reboot. A node ID is a numeric identifier (0001, 0002, etc.). To reboot an entire cache cluster, specify all of the cache node IDs.
 rebootCacheCluster
     :: Text -- ^ 'rccCacheClusterId'
     -> RebootCacheCluster
@@ -118,9 +122,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rccrsCacheCluster'
+-- * 'rccrsCacheCluster' - Undocumented member.
 --
--- * 'rccrsResponseStatus'
+-- * 'rccrsResponseStatus' - -- | The response status code.
 rebootCacheClusterResponse
     :: Int -- ^ 'rccrsResponseStatus'
     -> RebootCacheClusterResponse
@@ -134,7 +138,7 @@
 rccrsCacheCluster :: Lens' RebootCacheClusterResponse (Maybe CacheCluster)
 rccrsCacheCluster = lens _rccrsCacheCluster (\ s a -> s{_rccrsCacheCluster = a});
 
--- | The response status code.
+-- | -- | The response status code.
 rccrsResponseStatus :: Lens' RebootCacheClusterResponse Int
 rccrsResponseStatus = lens _rccrsResponseStatus (\ s a -> s{_rccrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/RemoveTagsFromResource.hs b/gen/Network/AWS/ElastiCache/RemoveTagsFromResource.hs
--- a/gen/Network/AWS/ElastiCache/RemoveTagsFromResource.hs
+++ b/gen/Network/AWS/ElastiCache/RemoveTagsFromResource.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /RemoveTagsFromResource/ action removes the tags identified by the 'TagKeys' list from the named resource.
+-- Removes the tags identified by the @TagKeys@ list from the named resource.
+--
+--
 module Network.AWS.ElastiCache.RemoveTagsFromResource
     (
     -- * Creating a Request
@@ -42,8 +44,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /RemoveTagsFromResource/ action.
+-- | Represents the input of a @RemoveTagsFromResource@ operation.
 --
+--
+--
 -- /See:/ 'removeTagsFromResource' smart constructor.
 data RemoveTagsFromResource = RemoveTagsFromResource'
     { _rtfrResourceName :: !Text
@@ -54,9 +58,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rtfrResourceName'
+-- * 'rtfrResourceName' - The Amazon Resource Name (ARN) of the resource from which you want the tags removed, for example @arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster@ or @arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot@ . For more information about ARNs, see <http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces> .
 --
--- * 'rtfrTagKeys'
+-- * 'rtfrTagKeys' - A list of @TagKeys@ identifying the tags you want removed from the named resource.
 removeTagsFromResource
     :: Text -- ^ 'rtfrResourceName'
     -> RemoveTagsFromResource
@@ -66,13 +70,11 @@
     , _rtfrTagKeys = mempty
     }
 
--- | The Amazon Resource Name (ARN) of the resource from which you want the tags removed, for example 'arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster' or 'arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot'.
---
--- For more information on ARNs, go to <http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces>.
+-- | The Amazon Resource Name (ARN) of the resource from which you want the tags removed, for example @arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster@ or @arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot@ . For more information about ARNs, see <http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces> .
 rtfrResourceName :: Lens' RemoveTagsFromResource Text
 rtfrResourceName = lens _rtfrResourceName (\ s a -> s{_rtfrResourceName = a});
 
--- | A list of 'TagKeys' identifying the tags you want removed from the named resource. For example, 'TagKeys.member.1=Region' removes the cost allocation tag with the key name 'Region' from the resource named by the /ResourceName/ parameter.
+-- | A list of @TagKeys@ identifying the tags you want removed from the named resource.
 rtfrTagKeys :: Lens' RemoveTagsFromResource [Text]
 rtfrTagKeys = lens _rtfrTagKeys (\ s a -> s{_rtfrTagKeys = a}) . _Coerce;
 
diff --git a/gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs b/gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs
--- a/gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs
+++ b/gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /ResetCacheParameterGroup/ action modifies the parameters of a cache parameter group to the engine or system default value. You can reset specific parameters by submitting a list of parameter names. To reset the entire cache parameter group, specify the /ResetAllParameters/ and /CacheParameterGroupName/ parameters.
+-- Modifies the parameters of a cache parameter group to the engine or system default value. You can reset specific parameters by submitting a list of parameter names. To reset the entire cache parameter group, specify the @ResetAllParameters@ and @CacheParameterGroupName@ parameters.
+--
+--
 module Network.AWS.ElastiCache.ResetCacheParameterGroup
     (
     -- * Creating a Request
@@ -43,8 +45,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /ResetCacheParameterGroup/ action.
+-- | Represents the input of a @ResetCacheParameterGroup@ operation.
 --
+--
+--
 -- /See:/ 'resetCacheParameterGroup' smart constructor.
 data ResetCacheParameterGroup = ResetCacheParameterGroup'
     { _rcpgResetAllParameters      :: !(Maybe Bool)
@@ -56,11 +60,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rcpgResetAllParameters'
+-- * 'rcpgResetAllParameters' - If @true@ , all parameters in the cache parameter group are reset to their default values. If @false@ , only the parameters listed by @ParameterNameValues@ are reset to their default values. Valid values: @true@ | @false@
 --
--- * 'rcpgParameterNameValues'
+-- * 'rcpgParameterNameValues' - An array of parameter names to reset to their default values. If @ResetAllParameters@ is @true@ , do not use @ParameterNameValues@ . If @ResetAllParameters@ is @false@ , you must specify the name of at least one parameter to reset.
 --
--- * 'rcpgCacheParameterGroupName'
+-- * 'rcpgCacheParameterGroupName' - The name of the cache parameter group to reset.
 resetCacheParameterGroup
     :: Text -- ^ 'rcpgCacheParameterGroupName'
     -> ResetCacheParameterGroup
@@ -71,13 +75,11 @@
     , _rcpgCacheParameterGroupName = pCacheParameterGroupName_
     }
 
--- | If /true/, all parameters in the cache parameter group will be reset to their default values. If /false/, only the parameters listed by /ParameterNameValues/ are reset to their default values.
---
--- Valid values: 'true' | 'false'
+-- | If @true@ , all parameters in the cache parameter group are reset to their default values. If @false@ , only the parameters listed by @ParameterNameValues@ are reset to their default values. Valid values: @true@ | @false@
 rcpgResetAllParameters :: Lens' ResetCacheParameterGroup (Maybe Bool)
 rcpgResetAllParameters = lens _rcpgResetAllParameters (\ s a -> s{_rcpgResetAllParameters = a});
 
--- | An array of parameter names to reset to their default values. If /ResetAllParameters/ is /false/, you must specify the name of at least one parameter to reset.
+-- | An array of parameter names to reset to their default values. If @ResetAllParameters@ is @true@ , do not use @ParameterNameValues@ . If @ResetAllParameters@ is @false@ , you must specify the name of at least one parameter to reset.
 rcpgParameterNameValues :: Lens' ResetCacheParameterGroup [ParameterNameValue]
 rcpgParameterNameValues = lens _rcpgParameterNameValues (\ s a -> s{_rcpgParameterNameValues = a}) . _Default . _Coerce;
 
diff --git a/gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs b/gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs
--- a/gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs
+++ b/gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The /RevokeCacheSecurityGroupIngress/ action revokes ingress from a cache security group. Use this action to disallow access from an Amazon EC2 security group that had been previously authorized.
+-- Revokes ingress from a cache security group. Use this operation to disallow access from an Amazon EC2 security group that had been previously authorized.
+--
+--
 module Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress
     (
     -- * Creating a Request
@@ -44,8 +46,10 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input of a /RevokeCacheSecurityGroupIngress/ action.
+-- | Represents the input of a @RevokeCacheSecurityGroupIngress@ operation.
 --
+--
+--
 -- /See:/ 'revokeCacheSecurityGroupIngress' smart constructor.
 data RevokeCacheSecurityGroupIngress = RevokeCacheSecurityGroupIngress'
     { _rcsgiCacheSecurityGroupName  :: !Text
@@ -57,11 +61,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rcsgiCacheSecurityGroupName'
+-- * 'rcsgiCacheSecurityGroupName' - The name of the cache security group to revoke ingress from.
 --
--- * 'rcsgiEC2SecurityGroupName'
+-- * 'rcsgiEC2SecurityGroupName' - The name of the Amazon EC2 security group to revoke access from.
 --
--- * 'rcsgiEC2SecurityGroupOwnerId'
+-- * 'rcsgiEC2SecurityGroupOwnerId' - The AWS account number of the Amazon EC2 security group owner. Note that this is not the same thing as an AWS access key ID - you must provide a valid AWS account number for this parameter.
 revokeCacheSecurityGroupIngress
     :: Text -- ^ 'rcsgiCacheSecurityGroupName'
     -> Text -- ^ 'rcsgiEC2SecurityGroupName'
@@ -132,9 +136,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rcsgirsCacheSecurityGroup'
+-- * 'rcsgirsCacheSecurityGroup' - Undocumented member.
 --
--- * 'rcsgirsResponseStatus'
+-- * 'rcsgirsResponseStatus' - -- | The response status code.
 revokeCacheSecurityGroupIngressResponse
     :: Int -- ^ 'rcsgirsResponseStatus'
     -> RevokeCacheSecurityGroupIngressResponse
@@ -148,7 +152,7 @@
 rcsgirsCacheSecurityGroup :: Lens' RevokeCacheSecurityGroupIngressResponse (Maybe CacheSecurityGroup)
 rcsgirsCacheSecurityGroup = lens _rcsgirsCacheSecurityGroup (\ s a -> s{_rcsgirsCacheSecurityGroup = a});
 
--- | The response status code.
+-- | -- | The response status code.
 rcsgirsResponseStatus :: Lens' RevokeCacheSecurityGroupIngressResponse Int
 rcsgirsResponseStatus = lens _rcsgirsResponseStatus (\ s a -> s{_rcsgirsResponseStatus = a});
 
diff --git a/gen/Network/AWS/ElastiCache/Types.hs b/gen/Network/AWS/ElastiCache/Types.hs
--- a/gen/Network/AWS/ElastiCache/Types.hs
+++ b/gen/Network/AWS/ElastiCache/Types.hs
@@ -20,6 +20,7 @@
     , _ReservedCacheNodeAlreadyExistsFault
     , _CacheSecurityGroupNotFoundFault
     , _CacheSubnetGroupAlreadyExistsFault
+    , _NodeGroupsPerReplicationGroupQuotaExceededFault
     , _CacheSubnetGroupQuotaExceededFault
     , _AuthorizationAlreadyExistsFault
     , _ReservedCacheNodeQuotaExceededFault
@@ -219,9 +220,18 @@
     , nodeGroup
     , ngStatus
     , ngPrimaryEndpoint
+    , ngSlots
     , ngNodeGroupMembers
     , ngNodeGroupId
 
+    -- * NodeGroupConfiguration
+    , NodeGroupConfiguration
+    , nodeGroupConfiguration
+    , ngcSlots
+    , ngcReplicaCount
+    , ngcPrimaryAvailabilityZone
+    , ngcReplicaAvailabilityZones
+
     -- * NodeGroupMember
     , NodeGroupMember
     , nodeGroupMember
@@ -234,8 +244,11 @@
     -- * NodeSnapshot
     , NodeSnapshot
     , nodeSnapshot
+    , nsNodeGroupConfiguration
     , nsCacheNodeCreateTime
+    , nsCacheClusterId
     , nsCacheNodeId
+    , nsNodeGroupId
     , nsSnapshotCreateTime
     , nsCacheSize
 
@@ -284,7 +297,10 @@
     , rgStatus
     , rgNodeGroups
     , rgSnapshottingClusterId
+    , rgSnapshotWindow
+    , rgConfigurationEndpoint
     , rgMemberClusters
+    , rgSnapshotRetentionLimit
     , rgDescription
     , rgReplicationGroupId
     , rgPendingModifiedValues
@@ -338,6 +354,7 @@
     , sCacheClusterCreateTime
     , sAutoMinorVersionUpgrade
     , sCacheParameterGroupName
+    , sReplicationGroupDescription
     , sVPCId
     , sSnapshotStatus
     , sSnapshotWindow
@@ -348,10 +365,13 @@
     , sNodeSnapshots
     , sCacheSubnetGroupName
     , sPreferredAvailabilityZone
+    , sNumNodeGroups
     , sSnapshotRetentionLimit
     , sSnapshotName
+    , sReplicationGroupId
     , sNumCacheNodes
     , sPort
+    , sAutomaticFailover
     , sSnapshotSource
 
     -- * Subnet
@@ -378,7 +398,7 @@
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
--- | API version '2015-02-02' of the Amazon ElastiCache SDK configuration.
+-- | API version @2015-02-02@ of the Amazon ElastiCache SDK configuration.
 elastiCache :: Service
 elastiCache =
     Service
@@ -413,214 +433,308 @@
       | otherwise = Nothing
 
 -- | The requested cache subnet group is currently in use.
+--
+--
 _CacheSubnetGroupInUse :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheSubnetGroupInUse =
     _ServiceError . hasStatus 400 . hasCode "CacheSubnetGroupInUse"
 
 -- | You already have a reservation with the given identifier.
+--
+--
 _ReservedCacheNodeAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
 _ReservedCacheNodeAlreadyExistsFault =
     _ServiceError . hasStatus 404 . hasCode "ReservedCacheNodeAlreadyExists"
 
 -- | The requested cache security group name does not refer to an existing cache security group.
+--
+--
 _CacheSecurityGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheSecurityGroupNotFoundFault =
     _ServiceError . hasStatus 404 . hasCode "CacheSecurityGroupNotFound"
 
 -- | The requested cache subnet group name is already in use by an existing cache subnet group.
+--
+--
 _CacheSubnetGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheSubnetGroupAlreadyExistsFault =
     _ServiceError . hasStatus 400 . hasCode "CacheSubnetGroupAlreadyExists"
 
+-- | The request cannot be processed because it would exceed the maximum of 15 node groups (shards) in a single replication group.
+--
+--
+_NodeGroupsPerReplicationGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_NodeGroupsPerReplicationGroupQuotaExceededFault =
+    _ServiceError .
+    hasStatus 400 . hasCode "NodeGroupsPerReplicationGroupQuotaExceeded"
+
 -- | The request cannot be processed because it would exceed the allowed number of cache subnet groups.
+--
+--
 _CacheSubnetGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheSubnetGroupQuotaExceededFault =
     _ServiceError . hasStatus 400 . hasCode "CacheSubnetGroupQuotaExceeded"
 
 -- | The specified Amazon EC2 security group is already authorized for the specified cache security group.
+--
+--
 _AuthorizationAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
 _AuthorizationAlreadyExistsFault =
     _ServiceError . hasStatus 400 . hasCode "AuthorizationAlreadyExists"
 
--- | The request cannot be processed because it would exceed the user\'s cache node quota.
+-- | The request cannot be processed because it would exceed the user's cache node quota.
+--
+--
 _ReservedCacheNodeQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
 _ReservedCacheNodeQuotaExceededFault =
     _ServiceError . hasStatus 400 . hasCode "ReservedCacheNodeQuotaExceeded"
 
 -- | The requested cache node offering does not exist.
+--
+--
 _ReservedCacheNodesOfferingNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
 _ReservedCacheNodesOfferingNotFoundFault =
     _ServiceError .
     hasStatus 404 . hasCode "ReservedCacheNodesOfferingNotFound"
 
 -- | The specified replication group does not exist.
+--
+--
 _ReplicationGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
 _ReplicationGroupNotFoundFault =
     _ServiceError . hasStatus 404 . hasCode "ReplicationGroupNotFoundFault"
 
 -- | An invalid subnet identifier was specified.
+--
+--
 _InvalidSubnet :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidSubnet = _ServiceError . hasStatus 400 . hasCode "InvalidSubnet"
 
 -- | The request cannot be processed because it would cause the resource to have more than the allowed number of tags. The maximum number of tags permitted on a resource is 10.
+--
+--
 _TagQuotaPerResourceExceeded :: AsError a => Getting (First ServiceError) a ServiceError
 _TagQuotaPerResourceExceeded =
     _ServiceError . hasStatus 400 . hasCode "TagQuotaPerResourceExceeded"
 
 -- | The requested snapshot name does not refer to an existing snapshot.
+--
+--
 _SnapshotNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
 _SnapshotNotFoundFault =
     _ServiceError . hasStatus 404 . hasCode "SnapshotNotFoundFault"
 
 -- | The requested cache node type is not available in the specified Availability Zone.
+--
+--
 _InsufficientCacheClusterCapacityFault :: AsError a => Getting (First ServiceError) a ServiceError
 _InsufficientCacheClusterCapacityFault =
     _ServiceError . hasStatus 400 . hasCode "InsufficientCacheClusterCapacity"
 
--- | The current state of the snapshot does not allow the requested action to occur.
+-- | The current state of the snapshot does not allow the requested operation to occur.
+--
+--
 _InvalidSnapshotStateFault :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidSnapshotStateFault =
     _ServiceError . hasStatus 400 . hasCode "InvalidSnapshotState"
 
 -- | You already have a snapshot with the given name.
+--
+--
 _SnapshotAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
 _SnapshotAlreadyExistsFault =
     _ServiceError . hasStatus 400 . hasCode "SnapshotAlreadyExistsFault"
 
 -- | The requested tag was not found on this resource.
+--
+--
 _TagNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
 _TagNotFoundFault = _ServiceError . hasStatus 404 . hasCode "TagNotFound"
 
 -- | The request cannot be processed because it would exceed the maximum number of snapshots.
+--
+--
 _SnapshotQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
 _SnapshotQuotaExceededFault =
     _ServiceError . hasStatus 400 . hasCode "SnapshotQuotaExceededFault"
 
 -- | The request cannot be processed because it would exceed the allowed number of cache nodes in a single cache cluster.
+--
+--
 _NodeQuotaForClusterExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
 _NodeQuotaForClusterExceededFault =
     _ServiceError . hasStatus 400 . hasCode "NodeQuotaForClusterExceeded"
 
 -- | A cache parameter group with the requested name already exists.
+--
+--
 _CacheParameterGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheParameterGroupAlreadyExistsFault =
     _ServiceError . hasStatus 400 . hasCode "CacheParameterGroupAlreadyExists"
 
 -- | The requested reserved cache node was not found.
+--
+--
 _ReservedCacheNodeNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
 _ReservedCacheNodeNotFoundFault =
     _ServiceError . hasStatus 404 . hasCode "ReservedCacheNodeNotFound"
 
 -- | The requested cache subnet group name does not refer to an existing cache subnet group.
+--
+--
 _CacheSubnetGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheSubnetGroupNotFoundFault =
     _ServiceError . hasStatus 400 . hasCode "CacheSubnetGroupNotFoundFault"
 
--- | You attempted one of the following actions:
+-- | You attempted one of the following operations:
 --
--- -   Creating a snapshot of a Redis cache cluster running on a /t1.micro/ cache node.
 --
--- -   Creating a snapshot of a cache cluster that is running Memcached rather than Redis.
+--     * Creating a snapshot of a Redis cache cluster running on a @cache.t1.micro@ cache node.
 --
+--     * Creating a snapshot of a cache cluster that is running Memcached rather than Redis.
+--
+--
+--
 -- Neither of these are supported by ElastiCache.
+--
 _SnapshotFeatureNotSupportedFault :: AsError a => Getting (First ServiceError) a ServiceError
 _SnapshotFeatureNotSupportedFault =
     _ServiceError . hasStatus 400 . hasCode "SnapshotFeatureNotSupportedFault"
 
 -- | The value for a parameter is invalid.
+--
+--
 _InvalidParameterValueException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidParameterValueException =
     _ServiceError . hasStatus 400 . hasCode "InvalidParameterValue"
 
--- | The requested replication group is not in the /available/ state.
+-- | The requested replication group is not in the @available@ state.
+--
+--
 _InvalidReplicationGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidReplicationGroupStateFault =
     _ServiceError . hasStatus 400 . hasCode "InvalidReplicationGroupState"
 
 -- | The specified replication group already exists.
+--
+--
 _ReplicationGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
 _ReplicationGroupAlreadyExistsFault =
     _ServiceError . hasStatus 400 . hasCode "ReplicationGroupAlreadyExists"
 
 -- | The VPC network is in an invalid state.
+--
+--
 _InvalidVPCNetworkStateFault :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidVPCNetworkStateFault =
     _ServiceError . hasStatus 400 . hasCode "InvalidVPCNetworkStateFault"
 
 -- | The requested subnet is being used by another cache subnet group.
+--
+--
 _SubnetInUse :: AsError a => Getting (First ServiceError) a ServiceError
 _SubnetInUse = _ServiceError . hasStatus 400 . hasCode "SubnetInUse"
 
 -- | The requested cache cluster ID does not refer to an existing cache cluster.
+--
+--
 _CacheClusterNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheClusterNotFoundFault =
     _ServiceError . hasStatus 404 . hasCode "CacheClusterNotFound"
 
 -- | The request cannot be processed because it would exceed the allowed number of cache clusters per customer.
+--
+--
 _ClusterQuotaForCustomerExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
 _ClusterQuotaForCustomerExceededFault =
     _ServiceError . hasStatus 400 . hasCode "ClusterQuotaForCustomerExceeded"
 
 -- | The specified Amazon EC2 security group is not authorized for the specified cache security group.
+--
+--
 _AuthorizationNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
 _AuthorizationNotFoundFault =
     _ServiceError . hasStatus 404 . hasCode "AuthorizationNotFound"
 
--- | The requested cache cluster is not in the /available/ state.
+-- | The requested cache cluster is not in the @available@ state.
+--
+--
 _InvalidCacheClusterStateFault :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidCacheClusterStateFault =
     _ServiceError . hasStatus 400 . hasCode "InvalidCacheClusterState"
 
 -- | The request cannot be processed because it would exceed the allowed number of cache security groups.
+--
+--
 _CacheSecurityGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheSecurityGroupQuotaExceededFault =
     _ServiceError . hasStatus 400 . hasCode "QuotaExceeded.CacheSecurityGroup"
 
 -- | You already have a cache cluster with the given identifier.
+--
+--
 _CacheClusterAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheClusterAlreadyExistsFault =
     _ServiceError . hasStatus 400 . hasCode "CacheClusterAlreadyExists"
 
 -- | The request cannot be processed because it would exceed the maximum number of cache security groups.
+--
+--
 _CacheParameterGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheParameterGroupQuotaExceededFault =
     _ServiceError . hasStatus 400 . hasCode "CacheParameterGroupQuotaExceeded"
 
 -- | The request cannot be processed because it would exceed the allowed number of cache nodes per customer.
+--
+--
 _NodeQuotaForCustomerExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
 _NodeQuotaForCustomerExceededFault =
     _ServiceError . hasStatus 400 . hasCode "NodeQuotaForCustomerExceeded"
 
 -- | The request cannot be processed because it would exceed the allowed number of subnets in a cache subnet group.
+--
+--
 _CacheSubnetQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheSubnetQuotaExceededFault =
     _ServiceError . hasStatus 400 . hasCode "CacheSubnetQuotaExceededFault"
 
 -- | The requested cache parameter group name does not refer to an existing cache parameter group.
+--
+--
 _CacheParameterGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheParameterGroupNotFoundFault =
     _ServiceError . hasStatus 404 . hasCode "CacheParameterGroupNotFound"
 
 -- | The requested Amazon Resource Name (ARN) does not refer to an existing resource.
+--
+--
 _InvalidARNFault :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidARNFault = _ServiceError . hasStatus 400 . hasCode "InvalidARN"
 
--- | The current state of the cache parameter group does not allow the requested action to occur.
+-- | The current state of the cache parameter group does not allow the requested operation to occur.
+--
+--
 _InvalidCacheParameterGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidCacheParameterGroupStateFault =
     _ServiceError . hasStatus 400 . hasCode "InvalidCacheParameterGroupState"
 
 -- | Two or more incompatible parameters were specified.
+--
+--
 _InvalidParameterCombinationException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidParameterCombinationException =
     _ServiceError . hasStatus 400 . hasCode "InvalidParameterCombination"
 
 -- | The current state of the cache security group does not allow deletion.
+--
+--
 _InvalidCacheSecurityGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidCacheSecurityGroupStateFault =
     _ServiceError . hasStatus 400 . hasCode "InvalidCacheSecurityGroupState"
 
 -- | A cache security group with the specified name already exists.
+--
+--
 _CacheSecurityGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
 _CacheSecurityGroupAlreadyExistsFault =
     _ServiceError . hasStatus 400 . hasCode "CacheSecurityGroupAlreadyExists"
diff --git a/gen/Network/AWS/ElastiCache/Types/Product.hs b/gen/Network/AWS/ElastiCache/Types/Product.hs
--- a/gen/Network/AWS/ElastiCache/Types/Product.hs
+++ b/gen/Network/AWS/ElastiCache/Types/Product.hs
@@ -23,6 +23,8 @@
 
 -- | Describes an Availability Zone in which the cache cluster is launched.
 --
+--
+--
 -- /See:/ 'availabilityZone' smart constructor.
 newtype AvailabilityZone = AvailabilityZone'
     { _azName :: Maybe Text
@@ -32,7 +34,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'azName'
+-- * 'azName' - The name of the Availability Zone.
 availabilityZone
     :: AvailabilityZone
 availabilityZone =
@@ -53,6 +55,8 @@
 
 -- | Contains all of the attributes of a specific cache cluster.
 --
+--
+--
 -- /See:/ 'cacheCluster' smart constructor.
 data CacheCluster = CacheCluster'
     { _ccEngineVersion              :: !(Maybe Text)
@@ -83,49 +87,49 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ccEngineVersion'
+-- * 'ccEngineVersion' - The version of the cache engine that is used in this cache cluster.
 --
--- * 'ccCacheNodeType'
+-- * 'ccCacheNodeType' - The name of the compute and memory capacity node type for the cache cluster. Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 --
--- * 'ccCacheNodes'
+-- * 'ccCacheNodes' - A list of cache nodes that are members of the cache cluster.
 --
--- * 'ccCacheClusterCreateTime'
+-- * 'ccCacheClusterCreateTime' - The date and time when the cache cluster was created.
 --
--- * 'ccAutoMinorVersionUpgrade'
+-- * 'ccAutoMinorVersionUpgrade' - This parameter is currently disabled.
 --
--- * 'ccSecurityGroups'
+-- * 'ccSecurityGroups' - A list of VPC Security Groups associated with the cache cluster.
 --
--- * 'ccNotificationConfiguration'
+-- * 'ccNotificationConfiguration' - Undocumented member.
 --
--- * 'ccSnapshotWindow'
+-- * 'ccSnapshotWindow' - The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your cache cluster. Example: @05:00-09:00@
 --
--- * 'ccCacheClusterId'
+-- * 'ccCacheClusterId' - The user-supplied identifier of the cache cluster. This identifier is a unique key that identifies a cache cluster.
 --
--- * 'ccConfigurationEndpoint'
+-- * 'ccConfigurationEndpoint' - Undocumented member.
 --
--- * 'ccEngine'
+-- * 'ccEngine' - The name of the cache engine (@memcached@ or @redis@ ) to be used for this cache cluster.
 --
--- * 'ccCacheSecurityGroups'
+-- * 'ccCacheSecurityGroups' - A list of cache security group elements, composed of name and status sub-elements.
 --
--- * 'ccClientDownloadLandingPage'
+-- * 'ccClientDownloadLandingPage' - The URL of the web page where you can download the latest ElastiCache client library.
 --
--- * 'ccPreferredMaintenanceWindow'
+-- * 'ccPreferredMaintenanceWindow' - Specifies the weekly time range during which maintenance on the 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:23:00-mon:01:30@
 --
--- * 'ccCacheSubnetGroupName'
+-- * 'ccCacheSubnetGroupName' - The name of the cache subnet group associated with the cache cluster.
 --
--- * 'ccPreferredAvailabilityZone'
+-- * 'ccPreferredAvailabilityZone' - The name of the Availability Zone in which the cache cluster is located or "Multiple" if the cache nodes are located in different Availability Zones.
 --
--- * 'ccCacheParameterGroup'
+-- * 'ccCacheParameterGroup' - Undocumented member.
 --
--- * 'ccCacheClusterStatus'
+-- * 'ccCacheClusterStatus' - The current state of this cache cluster, one of the following values: @available@ , @creating@ , @deleted@ , @deleting@ , @incompatible-network@ , @modifying@ , @rebooting cache cluster nodes@ , @restore-failed@ , or @snapshotting@ .
 --
--- * 'ccSnapshotRetentionLimit'
+-- * 'ccSnapshotRetentionLimit' - The number of days for which ElastiCache retains automatic cache cluster snapshots before deleting them. For example, if you set @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is retained for 5 days before being deleted. /Important:/ If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.
 --
--- * 'ccReplicationGroupId'
+-- * 'ccReplicationGroupId' - The replication group to which this cache cluster belongs. If this field is empty, the cache cluster is not associated with any replication group.
 --
--- * 'ccPendingModifiedValues'
+-- * 'ccPendingModifiedValues' - Undocumented member.
 --
--- * 'ccNumCacheNodes'
+-- * 'ccNumCacheNodes' - The number of cache nodes in the cache cluster. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
 cacheCluster
     :: CacheCluster
 cacheCluster =
@@ -158,33 +162,7 @@
 ccEngineVersion :: Lens' CacheCluster (Maybe Text)
 ccEngineVersion = lens _ccEngineVersion (\ s a -> s{_ccEngineVersion = a});
 
--- | The name of the compute and memory capacity node type for the cache cluster.
---
--- Valid node types are as follows:
---
--- -   General purpose:
---
---     -   Current generation: 'cache.t2.micro', 'cache.t2.small', 'cache.t2.medium', 'cache.m3.medium', 'cache.m3.large', 'cache.m3.xlarge', 'cache.m3.2xlarge'
---
---     -   Previous generation: 'cache.t1.micro', 'cache.m1.small', 'cache.m1.medium', 'cache.m1.large', 'cache.m1.xlarge'
---
--- -   Compute optimized: 'cache.c1.xlarge'
---
--- -   Memory optimized:
---
---     -   Current generation: 'cache.r3.large', 'cache.r3.xlarge', 'cache.r3.2xlarge', 'cache.r3.4xlarge', 'cache.r3.8xlarge'
---
---     -   Previous generation: 'cache.m2.xlarge', 'cache.m2.2xlarge', 'cache.m2.4xlarge'
---
--- __Notes:__
---
--- -   All t2 instances are created in an Amazon Virtual Private Cloud (VPC).
---
--- -   Redis backup\/restore is not supported for t2 instances.
---
--- -   Redis Append-only files (AOF) functionality is not supported for t1 or t2 instances.
---
--- For a complete listing of cache node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#CacheParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#CacheParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis>.
+-- | The name of the compute and memory capacity node type for the cache cluster. Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 ccCacheNodeType :: Lens' CacheCluster (Maybe Text)
 ccCacheNodeType = lens _ccCacheNodeType (\ s a -> s{_ccCacheNodeType = a});
 
@@ -208,9 +186,7 @@
 ccNotificationConfiguration :: Lens' CacheCluster (Maybe NotificationConfiguration)
 ccNotificationConfiguration = lens _ccNotificationConfiguration (\ s a -> s{_ccNotificationConfiguration = a});
 
--- | The daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster.
---
--- Example: '05:00-09:00'
+-- | The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your cache cluster. Example: @05:00-09:00@
 ccSnapshotWindow :: Lens' CacheCluster (Maybe Text)
 ccSnapshotWindow = lens _ccSnapshotWindow (\ s a -> s{_ccSnapshotWindow = a});
 
@@ -222,7 +198,7 @@
 ccConfigurationEndpoint :: Lens' CacheCluster (Maybe Endpoint)
 ccConfigurationEndpoint = lens _ccConfigurationEndpoint (\ s a -> s{_ccConfigurationEndpoint = a});
 
--- | The name of the cache engine (/memcached/ or /redis/) to be used for this cache cluster.
+-- | The name of the cache engine (@memcached@ or @redis@ ) to be used for this cache cluster.
 ccEngine :: Lens' CacheCluster (Maybe Text)
 ccEngine = lens _ccEngine (\ s a -> s{_ccEngine = a});
 
@@ -234,23 +210,7 @@
 ccClientDownloadLandingPage :: Lens' CacheCluster (Maybe Text)
 ccClientDownloadLandingPage = lens _ccClientDownloadLandingPage (\ s a -> s{_ccClientDownloadLandingPage = a});
 
--- | Specifies the weekly time range during which maintenance on the cache 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'
+-- | Specifies the weekly time range during which maintenance on the 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:23:00-mon:01:30@
 ccPreferredMaintenanceWindow :: Lens' CacheCluster (Maybe Text)
 ccPreferredMaintenanceWindow = lens _ccPreferredMaintenanceWindow (\ s a -> s{_ccPreferredMaintenanceWindow = a});
 
@@ -258,7 +218,7 @@
 ccCacheSubnetGroupName :: Lens' CacheCluster (Maybe Text)
 ccCacheSubnetGroupName = lens _ccCacheSubnetGroupName (\ s a -> s{_ccCacheSubnetGroupName = a});
 
--- | The name of the Availability Zone in which the cache cluster is located or \"Multiple\" if the cache nodes are located in different Availability Zones.
+-- | The name of the Availability Zone in which the cache cluster is located or "Multiple" if the cache nodes are located in different Availability Zones.
 ccPreferredAvailabilityZone :: Lens' CacheCluster (Maybe Text)
 ccPreferredAvailabilityZone = lens _ccPreferredAvailabilityZone (\ s a -> s{_ccPreferredAvailabilityZone = a});
 
@@ -266,13 +226,11 @@
 ccCacheParameterGroup :: Lens' CacheCluster (Maybe CacheParameterGroupStatus)
 ccCacheParameterGroup = lens _ccCacheParameterGroup (\ s a -> s{_ccCacheParameterGroup = a});
 
--- | The current state of this cache cluster, one of the following values: /available/, /creating/, /deleted/, /deleting/, /incompatible-network/, /modifying/, /rebooting cache cluster nodes/, /restore-failed/, or /snapshotting/.
+-- | The current state of this cache cluster, one of the following values: @available@ , @creating@ , @deleted@ , @deleting@ , @incompatible-network@ , @modifying@ , @rebooting cache cluster nodes@ , @restore-failed@ , or @snapshotting@ .
 ccCacheClusterStatus :: Lens' CacheCluster (Maybe Text)
 ccCacheClusterStatus = lens _ccCacheClusterStatus (\ s a -> s{_ccCacheClusterStatus = a});
 
--- | The number of days for which ElastiCache will retain automatic cache cluster snapshots before deleting them. For example, if you set /SnapshotRetentionLimit/ to 5, then a snapshot that was taken today will be retained for 5 days before being deleted.
---
--- If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.
+-- | The number of days for which ElastiCache retains automatic cache cluster snapshots before deleting them. For example, if you set @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is retained for 5 days before being deleted. /Important:/ If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.
 ccSnapshotRetentionLimit :: Lens' CacheCluster (Maybe Int)
 ccSnapshotRetentionLimit = lens _ccSnapshotRetentionLimit (\ s a -> s{_ccSnapshotRetentionLimit = a});
 
@@ -284,9 +242,7 @@
 ccPendingModifiedValues :: Lens' CacheCluster (Maybe PendingModifiedValues)
 ccPendingModifiedValues = lens _ccPendingModifiedValues (\ s a -> s{_ccPendingModifiedValues = a});
 
--- | The number of cache nodes in the cache cluster.
---
--- For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
+-- | The number of cache nodes in the cache cluster. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
 ccNumCacheNodes :: Lens' CacheCluster (Maybe Int)
 ccNumCacheNodes = lens _ccNumCacheNodes (\ s a -> s{_ccNumCacheNodes = a});
 
@@ -327,6 +283,8 @@
 
 -- | Provides all of the details about a particular cache engine version.
 --
+--
+--
 -- /See:/ 'cacheEngineVersion' smart constructor.
 data CacheEngineVersion = CacheEngineVersion'
     { _cevEngineVersion                 :: !(Maybe Text)
@@ -340,15 +298,15 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cevEngineVersion'
+-- * 'cevEngineVersion' - The version number of the cache engine.
 --
--- * 'cevCacheParameterGroupFamily'
+-- * 'cevCacheParameterGroupFamily' - The name of the cache parameter group family associated with this cache engine. Valid values are: @memcached1.4@ | @redis2.6@ | @redis2.8@ | @redis3.2@
 --
--- * 'cevCacheEngineDescription'
+-- * 'cevCacheEngineDescription' - The description of the cache engine.
 --
--- * 'cevEngine'
+-- * 'cevEngine' - The name of the cache engine.
 --
--- * 'cevCacheEngineVersionDescription'
+-- * 'cevCacheEngineVersionDescription' - The description of the cache engine version.
 cacheEngineVersion
     :: CacheEngineVersion
 cacheEngineVersion =
@@ -364,7 +322,7 @@
 cevEngineVersion :: Lens' CacheEngineVersion (Maybe Text)
 cevEngineVersion = lens _cevEngineVersion (\ s a -> s{_cevEngineVersion = a});
 
--- | The name of the cache parameter group family associated with this cache engine.
+-- | The name of the cache parameter group family associated with this cache engine. Valid values are: @memcached1.4@ | @redis2.6@ | @redis2.8@ | @redis3.2@
 cevCacheParameterGroupFamily :: Lens' CacheEngineVersion (Maybe Text)
 cevCacheParameterGroupFamily = lens _cevCacheParameterGroupFamily (\ s a -> s{_cevCacheParameterGroupFamily = a});
 
@@ -393,34 +351,44 @@
 
 instance NFData CacheEngineVersion
 
--- | Represents an individual cache node within a cache cluster. Each cache node runs its own instance of the cluster\'s protocol-compliant caching software - either Memcached or Redis.
+-- | Represents an individual cache node within a cache cluster. Each cache node runs its own instance of the cluster's protocol-compliant caching software - either Memcached or Redis.
 --
+--
 -- Valid node types are as follows:
 --
--- -   General purpose:
+--     * General purpose:
 --
---     -   Current generation: 'cache.t2.micro', 'cache.t2.small', 'cache.t2.medium', 'cache.m3.medium', 'cache.m3.large', 'cache.m3.xlarge', 'cache.m3.2xlarge'
+--     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@
 --
---     -   Previous generation: 'cache.t1.micro', 'cache.m1.small', 'cache.m1.medium', 'cache.m1.large', 'cache.m1.xlarge'
+--     * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@
 --
--- -   Compute optimized: 'cache.c1.xlarge'
 --
--- -   Memory optimized:
 --
---     -   Current generation: 'cache.r3.large', 'cache.r3.xlarge', 'cache.r3.2xlarge', 'cache.r3.4xlarge', 'cache.r3.8xlarge'
+--     * Compute optimized: @cache.c1.xlarge@
 --
---     -   Previous generation: 'cache.m2.xlarge', 'cache.m2.2xlarge', 'cache.m2.4xlarge'
+--     * Memory optimized:
 --
+--     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@
+--
+--     * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@
+--
+--
+--
+--
+--
 -- __Notes:__
 --
--- -   All t2 instances are created in an Amazon Virtual Private Cloud (VPC).
+--     * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).
 --
--- -   Redis backup\/restore is not supported for t2 instances.
+--     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.
 --
--- -   Redis Append-only files (AOF) functionality is not supported for t1 or t2 instances.
+--     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances.
 --
--- For a complete listing of cache node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#CacheParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#CacheParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis>.
 --
+--
+-- For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
+--
+--
 -- /See:/ 'cacheNode' smart constructor.
 data CacheNode = CacheNode'
     { _cnSourceCacheNodeId        :: !(Maybe Text)
@@ -436,19 +404,19 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cnSourceCacheNodeId'
+-- * 'cnSourceCacheNodeId' - The ID of the primary node to which this read replica node is synchronized. If this field is empty, this node is not associated with a primary cache cluster.
 --
--- * 'cnParameterGroupStatus'
+-- * 'cnParameterGroupStatus' - The status of the parameter group applied to this cache node.
 --
--- * 'cnCacheNodeCreateTime'
+-- * 'cnCacheNodeCreateTime' - The date and time when the cache node was created.
 --
--- * 'cnCustomerAvailabilityZone'
+-- * 'cnCustomerAvailabilityZone' - The Availability Zone where this node was created and now resides.
 --
--- * 'cnCacheNodeId'
+-- * 'cnCacheNodeId' - The cache node identifier. A node ID is a numeric identifier (0001, 0002, etc.). The combination of cluster ID and node ID uniquely identifies every cache node used in a customer's AWS account.
 --
--- * 'cnCacheNodeStatus'
+-- * 'cnCacheNodeStatus' - The current state of this cache node.
 --
--- * 'cnEndpoint'
+-- * 'cnEndpoint' - The hostname for connecting to this cache node.
 cacheNode
     :: CacheNode
 cacheNode =
@@ -462,7 +430,7 @@
     , _cnEndpoint = Nothing
     }
 
--- | The ID of the primary node to which this read replica node is synchronized. If this field is empty, then this node is not associated with a primary cache cluster.
+-- | The ID of the primary node to which this read replica node is synchronized. If this field is empty, this node is not associated with a primary cache cluster.
 cnSourceCacheNodeId :: Lens' CacheNode (Maybe Text)
 cnSourceCacheNodeId = lens _cnSourceCacheNodeId (\ s a -> s{_cnSourceCacheNodeId = a});
 
@@ -478,7 +446,7 @@
 cnCustomerAvailabilityZone :: Lens' CacheNode (Maybe Text)
 cnCustomerAvailabilityZone = lens _cnCustomerAvailabilityZone (\ s a -> s{_cnCustomerAvailabilityZone = a});
 
--- | The cache node identifier. A node ID is a numeric identifier (0001, 0002, etc.). The combination of cluster ID and node ID uniquely identifies every cache node used in a customer\'s AWS account.
+-- | The cache node identifier. A node ID is a numeric identifier (0001, 0002, etc.). The combination of cluster ID and node ID uniquely identifies every cache node used in a customer's AWS account.
 cnCacheNodeId :: Lens' CacheNode (Maybe Text)
 cnCacheNodeId = lens _cnCacheNodeId (\ s a -> s{_cnCacheNodeId = a});
 
@@ -505,8 +473,10 @@
 
 instance NFData CacheNode
 
--- | A parameter that has a different value for each cache node type it is applied to. For example, in a Redis cache cluster, a /cache.m1.large/ cache node type would have a larger /maxmemory/ value than a /cache.m1.small/ type.
+-- | A parameter that has a different value for each cache node type it is applied to. For example, in a Redis cache cluster, a @cache.m1.large@ cache node type would have a larger @maxmemory@ value than a @cache.m1.small@ type.
 --
+--
+--
 -- /See:/ 'cacheNodeTypeSpecificParameter' smart constructor.
 data CacheNodeTypeSpecificParameter = CacheNodeTypeSpecificParameter'
     { _cntspCacheNodeTypeSpecificValues :: !(Maybe [CacheNodeTypeSpecificValue])
@@ -524,23 +494,23 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cntspCacheNodeTypeSpecificValues'
+-- * 'cntspCacheNodeTypeSpecificValues' - A list of cache node types and their corresponding values for this parameter.
 --
--- * 'cntspMinimumEngineVersion'
+-- * 'cntspMinimumEngineVersion' - The earliest cache engine version to which the parameter can apply.
 --
--- * 'cntspSource'
+-- * 'cntspSource' - The source of the parameter value.
 --
--- * 'cntspIsModifiable'
+-- * 'cntspIsModifiable' - Indicates whether (@true@ ) or not (@false@ ) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.
 --
--- * 'cntspDataType'
+-- * 'cntspDataType' - The valid data type for the parameter.
 --
--- * 'cntspAllowedValues'
+-- * 'cntspAllowedValues' - The valid range of values for the parameter.
 --
--- * 'cntspParameterName'
+-- * 'cntspParameterName' - The name of the parameter.
 --
--- * 'cntspDescription'
+-- * 'cntspDescription' - A description of the parameter.
 --
--- * 'cntspChangeType'
+-- * 'cntspChangeType' - Indicates whether a change to the parameter is applied immediately or requires a reboot for the change to be applied. You can force a reboot or wait until the next maintenance window's reboot. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Clusters.Rebooting.html Rebooting a Cluster> .
 cacheNodeTypeSpecificParameter
     :: CacheNodeTypeSpecificParameter
 cacheNodeTypeSpecificParameter =
@@ -568,7 +538,7 @@
 cntspSource :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)
 cntspSource = lens _cntspSource (\ s a -> s{_cntspSource = a});
 
--- | Indicates whether ('true') or not ('false') the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.
+-- | Indicates whether (@true@ ) or not (@false@ ) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.
 cntspIsModifiable :: Lens' CacheNodeTypeSpecificParameter (Maybe Bool)
 cntspIsModifiable = lens _cntspIsModifiable (\ s a -> s{_cntspIsModifiable = a});
 
@@ -588,7 +558,7 @@
 cntspDescription :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)
 cntspDescription = lens _cntspDescription (\ s a -> s{_cntspDescription = a});
 
--- | ChangeType indicates whether a change to the parameter will be applied immediately or requires a reboot for the change to be applied. You can force a reboot or wait until the next maintenance window\'s reboot. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Clusters.Rebooting.html Rebooting a Cluster>.
+-- | Indicates whether a change to the parameter is applied immediately or requires a reboot for the change to be applied. You can force a reboot or wait until the next maintenance window's reboot. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Clusters.Rebooting.html Rebooting a Cluster> .
 cntspChangeType :: Lens' CacheNodeTypeSpecificParameter (Maybe ChangeType)
 cntspChangeType = lens _cntspChangeType (\ s a -> s{_cntspChangeType = a});
 
@@ -612,6 +582,8 @@
 
 -- | A value that applies only to a certain cache node type.
 --
+--
+--
 -- /See:/ 'cacheNodeTypeSpecificValue' smart constructor.
 data CacheNodeTypeSpecificValue = CacheNodeTypeSpecificValue'
     { _cntsvCacheNodeType :: !(Maybe Text)
@@ -622,9 +594,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cntsvCacheNodeType'
+-- * 'cntsvCacheNodeType' - The cache node type for which this value applies.
 --
--- * 'cntsvValue'
+-- * 'cntsvValue' - The value for the cache node type.
 cacheNodeTypeSpecificValue
     :: CacheNodeTypeSpecificValue
 cacheNodeTypeSpecificValue =
@@ -650,8 +622,10 @@
 
 instance NFData CacheNodeTypeSpecificValue
 
--- | Represents the output of a /CreateCacheParameterGroup/ action.
+-- | Represents the output of a @CreateCacheParameterGroup@ operation.
 --
+--
+--
 -- /See:/ 'cacheParameterGroup' smart constructor.
 data CacheParameterGroup = CacheParameterGroup'
     { _cpgCacheParameterGroupFamily :: !(Maybe Text)
@@ -663,11 +637,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cpgCacheParameterGroupFamily'
+-- * 'cpgCacheParameterGroupFamily' - The name of the cache parameter group family that this cache parameter group is compatible with. Valid values are: @memcached1.4@ | @redis2.6@ | @redis2.8@ | @redis3.2@
 --
--- * 'cpgCacheParameterGroupName'
+-- * 'cpgCacheParameterGroupName' - The name of the cache parameter group.
 --
--- * 'cpgDescription'
+-- * 'cpgDescription' - The description for this cache parameter group.
 cacheParameterGroup
     :: CacheParameterGroup
 cacheParameterGroup =
@@ -677,7 +651,7 @@
     , _cpgDescription = Nothing
     }
 
--- | The name of the cache parameter group family that this cache parameter group is compatible with.
+-- | The name of the cache parameter group family that this cache parameter group is compatible with. Valid values are: @memcached1.4@ | @redis2.6@ | @redis2.8@ | @redis3.2@
 cpgCacheParameterGroupFamily :: Lens' CacheParameterGroup (Maybe Text)
 cpgCacheParameterGroupFamily = lens _cpgCacheParameterGroupFamily (\ s a -> s{_cpgCacheParameterGroupFamily = a});
 
@@ -700,13 +674,16 @@
 
 instance NFData CacheParameterGroup
 
--- | Represents the output of one of the following actions:
+-- | Represents the output of one of the following operations:
 --
--- -   /ModifyCacheParameterGroup/
 --
--- -   /ResetCacheParameterGroup/
+--     * @ModifyCacheParameterGroup@
 --
+--     * @ResetCacheParameterGroup@
 --
+--
+--
+--
 -- /See:/ 'cacheParameterGroupNameMessage' smart constructor.
 newtype CacheParameterGroupNameMessage = CacheParameterGroupNameMessage'
     { _cpgnmCacheParameterGroupName :: Maybe Text
@@ -716,7 +693,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cpgnmCacheParameterGroupName'
+-- * 'cpgnmCacheParameterGroupName' - The name of the cache parameter group.
 cacheParameterGroupNameMessage
     :: CacheParameterGroupNameMessage
 cacheParameterGroupNameMessage =
@@ -737,8 +714,10 @@
 
 instance NFData CacheParameterGroupNameMessage
 
--- | The status of the cache parameter group.
+-- | Status of the cache parameter group.
 --
+--
+--
 -- /See:/ 'cacheParameterGroupStatus' smart constructor.
 data CacheParameterGroupStatus = CacheParameterGroupStatus'
     { _cpgsCacheParameterGroupName :: !(Maybe Text)
@@ -750,11 +729,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cpgsCacheParameterGroupName'
+-- * 'cpgsCacheParameterGroupName' - The name of the cache parameter group.
 --
--- * 'cpgsCacheNodeIdsToReboot'
+-- * 'cpgsCacheNodeIdsToReboot' - A list of the cache node IDs which need to be rebooted for parameter changes to be applied. A node ID is a numeric identifier (0001, 0002, etc.).
 --
--- * 'cpgsParameterApplyStatus'
+-- * 'cpgsParameterApplyStatus' - The status of parameter updates.
 cacheParameterGroupStatus
     :: CacheParameterGroupStatus
 cacheParameterGroupStatus =
@@ -788,15 +767,18 @@
 
 instance NFData CacheParameterGroupStatus
 
--- | Represents the output of one of the following actions:
+-- | Represents the output of one of the following operations:
 --
--- -   /AuthorizeCacheSecurityGroupIngress/
 --
--- -   /CreateCacheSecurityGroup/
+--     * @AuthorizeCacheSecurityGroupIngress@
 --
--- -   /RevokeCacheSecurityGroupIngress/
+--     * @CreateCacheSecurityGroup@
 --
+--     * @RevokeCacheSecurityGroupIngress@
 --
+--
+--
+--
 -- /See:/ 'cacheSecurityGroup' smart constructor.
 data CacheSecurityGroup = CacheSecurityGroup'
     { _csgCacheSecurityGroupName :: !(Maybe Text)
@@ -809,13 +791,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csgCacheSecurityGroupName'
+-- * 'csgCacheSecurityGroupName' - The name of the cache security group.
 --
--- * 'csgOwnerId'
+-- * 'csgOwnerId' - The AWS account ID of the cache security group owner.
 --
--- * 'csgEC2SecurityGroups'
+-- * 'csgEC2SecurityGroups' - A list of Amazon EC2 security groups that are associated with this cache security group.
 --
--- * 'csgDescription'
+-- * 'csgDescription' - The description of the cache security group.
 cacheSecurityGroup
     :: CacheSecurityGroup
 cacheSecurityGroup =
@@ -856,8 +838,10 @@
 
 instance NFData CacheSecurityGroup
 
--- | Represents a cache cluster\'s status within a particular cache security group.
+-- | Represents a cache cluster's status within a particular cache security group.
 --
+--
+--
 -- /See:/ 'cacheSecurityGroupMembership' smart constructor.
 data CacheSecurityGroupMembership = CacheSecurityGroupMembership'
     { _csgmStatus                 :: !(Maybe Text)
@@ -868,9 +852,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csgmStatus'
+-- * 'csgmStatus' - The membership status in the cache security group. The status changes when a cache security group is modified, or when the cache security groups assigned to a cache cluster are modified.
 --
--- * 'csgmCacheSecurityGroupName'
+-- * 'csgmCacheSecurityGroupName' - The name of the cache security group.
 cacheSecurityGroupMembership
     :: CacheSecurityGroupMembership
 cacheSecurityGroupMembership =
@@ -896,13 +880,16 @@
 
 instance NFData CacheSecurityGroupMembership
 
--- | Represents the output of one of the following actions:
+-- | Represents the output of one of the following operations:
 --
--- -   /CreateCacheSubnetGroup/
 --
--- -   /ModifyCacheSubnetGroup/
+--     * @CreateCacheSubnetGroup@
 --
+--     * @ModifyCacheSubnetGroup@
 --
+--
+--
+--
 -- /See:/ 'cacheSubnetGroup' smart constructor.
 data CacheSubnetGroup = CacheSubnetGroup'
     { _csgVPCId                       :: !(Maybe Text)
@@ -915,13 +902,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csgVPCId'
+-- * 'csgVPCId' - The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet group.
 --
--- * 'csgSubnets'
+-- * 'csgSubnets' - A list of subnets associated with the cache subnet group.
 --
--- * 'csgCacheSubnetGroupName'
+-- * 'csgCacheSubnetGroupName' - The name of the cache subnet group.
 --
--- * 'csgCacheSubnetGroupDescription'
+-- * 'csgCacheSubnetGroupDescription' - The description of the cache subnet group.
 cacheSubnetGroup
     :: CacheSubnetGroup
 cacheSubnetGroup =
@@ -963,6 +950,8 @@
 
 -- | Provides ownership and status information for an Amazon EC2 security group.
 --
+--
+--
 -- /See:/ 'ec2SecurityGroup' smart constructor.
 data EC2SecurityGroup = EC2SecurityGroup'
     { _esgStatus                  :: !(Maybe Text)
@@ -974,11 +963,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'esgStatus'
+-- * 'esgStatus' - The status of the Amazon EC2 security group.
 --
--- * 'esgEC2SecurityGroupOwnerId'
+-- * 'esgEC2SecurityGroupOwnerId' - The AWS account ID of the Amazon EC2 security group owner.
 --
--- * 'esgEC2SecurityGroupName'
+-- * 'esgEC2SecurityGroupName' - The name of the Amazon EC2 security group.
 ec2SecurityGroup
     :: EC2SecurityGroup
 ec2SecurityGroup =
@@ -1013,6 +1002,8 @@
 
 -- | Represents the information required for client programs to connect to a cache node.
 --
+--
+--
 -- /See:/ 'endpoint' smart constructor.
 data Endpoint = Endpoint'
     { _eAddress :: !(Maybe Text)
@@ -1023,9 +1014,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'eAddress'
+-- * 'eAddress' - The DNS hostname of the cache node.
 --
--- * 'ePort'
+-- * 'ePort' - The port number that the cache engine is listening on.
 endpoint
     :: Endpoint
 endpoint =
@@ -1050,8 +1041,10 @@
 
 instance NFData Endpoint
 
--- | Represents the output of a /DescribeEngineDefaultParameters/ action.
+-- | Represents the output of a @DescribeEngineDefaultParameters@ operation.
 --
+--
+--
 -- /See:/ 'engineDefaults' smart constructor.
 data EngineDefaults = EngineDefaults'
     { _edCacheParameterGroupFamily       :: !(Maybe Text)
@@ -1064,13 +1057,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'edCacheParameterGroupFamily'
+-- * 'edCacheParameterGroupFamily' - Specifies the name of the cache parameter group family to which the engine default parameters apply. Valid values are: @memcached1.4@ | @redis2.6@ | @redis2.8@ | @redis3.2@
 --
--- * 'edCacheNodeTypeSpecificParameters'
+-- * 'edCacheNodeTypeSpecificParameters' - A list of parameters specific to a particular cache node type. Each element in the list contains detailed information about one parameter.
 --
--- * 'edMarker'
+-- * 'edMarker' - Provides an identifier to allow retrieval of paginated results.
 --
--- * 'edParameters'
+-- * 'edParameters' - Contains a list of engine default parameters.
 engineDefaults
     :: EngineDefaults
 engineDefaults =
@@ -1081,7 +1074,7 @@
     , _edParameters = Nothing
     }
 
--- | Specifies the name of the cache parameter group family to which the engine default parameters apply.
+-- | Specifies the name of the cache parameter group family to which the engine default parameters apply. Valid values are: @memcached1.4@ | @redis2.6@ | @redis2.8@ | @redis3.2@
 edCacheParameterGroupFamily :: Lens' EngineDefaults (Maybe Text)
 edCacheParameterGroupFamily = lens _edCacheParameterGroupFamily (\ s a -> s{_edCacheParameterGroupFamily = a});
 
@@ -1115,6 +1108,8 @@
 
 -- | Represents a single occurrence of something interesting within the system. Some examples of events are creating a cache cluster, adding or removing a cache node, or rebooting a node.
 --
+--
+--
 -- /See:/ 'event' smart constructor.
 data Event = Event'
     { _eSourceType       :: !(Maybe SourceType)
@@ -1127,13 +1122,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'eSourceType'
+-- * 'eSourceType' - Specifies the origin of this event - a cache cluster, a parameter group, a security group, etc.
 --
--- * 'eSourceIdentifier'
+-- * 'eSourceIdentifier' - The identifier for the source of the event. For example, if the event occurred at the cache cluster level, the identifier would be the name of the cache cluster.
 --
--- * 'eDate'
+-- * 'eDate' - The date and time when the event occurred.
 --
--- * 'eMessage'
+-- * 'eMessage' - The text of the event.
 event
     :: Event
 event =
@@ -1171,12 +1166,15 @@
 
 instance NFData Event
 
--- | Represents a collection of cache nodes in a replication group.
+-- | Represents a collection of cache nodes in a replication group. One node in the node group is the read/write primary node. All the other nodes are read-only Replica nodes.
 --
+--
+--
 -- /See:/ 'nodeGroup' smart constructor.
 data NodeGroup = NodeGroup'
     { _ngStatus           :: !(Maybe Text)
     , _ngPrimaryEndpoint  :: !(Maybe Endpoint)
+    , _ngSlots            :: !(Maybe Text)
     , _ngNodeGroupMembers :: !(Maybe [NodeGroupMember])
     , _ngNodeGroupId      :: !(Maybe Text)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -1185,36 +1183,43 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ngStatus'
+-- * 'ngStatus' - The current state of this replication group - @creating@ , @available@ , etc.
 --
--- * 'ngPrimaryEndpoint'
+-- * 'ngPrimaryEndpoint' - The endpoint of the primary node in this node group (shard).
 --
--- * 'ngNodeGroupMembers'
+-- * 'ngSlots' - The keyspace for this node group (shard).
 --
--- * 'ngNodeGroupId'
+-- * 'ngNodeGroupMembers' - A list containing information about individual nodes within the node group (shard).
+--
+-- * 'ngNodeGroupId' - The identifier for the node group (shard). A Redis (cluster mode disabled) replication group contains only 1 node group; therefore, the node group ID is 0001. A Redis (cluster mode enabled) replication group contains 1 to 15 node groups numbered 0001 to 0015.
 nodeGroup
     :: NodeGroup
 nodeGroup =
     NodeGroup'
     { _ngStatus = Nothing
     , _ngPrimaryEndpoint = Nothing
+    , _ngSlots = Nothing
     , _ngNodeGroupMembers = Nothing
     , _ngNodeGroupId = Nothing
     }
 
--- | The current state of this replication group - /creating/, /available/, etc.
+-- | The current state of this replication group - @creating@ , @available@ , etc.
 ngStatus :: Lens' NodeGroup (Maybe Text)
 ngStatus = lens _ngStatus (\ s a -> s{_ngStatus = a});
 
--- | Undocumented member.
+-- | The endpoint of the primary node in this node group (shard).
 ngPrimaryEndpoint :: Lens' NodeGroup (Maybe Endpoint)
 ngPrimaryEndpoint = lens _ngPrimaryEndpoint (\ s a -> s{_ngPrimaryEndpoint = a});
 
--- | A list containing information about individual nodes within the node group.
+-- | The keyspace for this node group (shard).
+ngSlots :: Lens' NodeGroup (Maybe Text)
+ngSlots = lens _ngSlots (\ s a -> s{_ngSlots = a});
+
+-- | A list containing information about individual nodes within the node group (shard).
 ngNodeGroupMembers :: Lens' NodeGroup [NodeGroupMember]
 ngNodeGroupMembers = lens _ngNodeGroupMembers (\ s a -> s{_ngNodeGroupMembers = a}) . _Default . _Coerce;
 
--- | The identifier for the node group. A replication group contains only one node group; therefore, the node group ID is 0001.
+-- | The identifier for the node group (shard). A Redis (cluster mode disabled) replication group contains only 1 node group; therefore, the node group ID is 0001. A Redis (cluster mode enabled) replication group contains 1 to 15 node groups numbered 0001 to 0015.
 ngNodeGroupId :: Lens' NodeGroup (Maybe Text)
 ngNodeGroupId = lens _ngNodeGroupId (\ s a -> s{_ngNodeGroupId = a});
 
@@ -1222,6 +1227,8 @@
         parseXML x
           = NodeGroup' <$>
               (x .@? "Status") <*> (x .@? "PrimaryEndpoint") <*>
+                (x .@? "Slots")
+                <*>
                 (x .@? "NodeGroupMembers" .!@ mempty >>=
                    may (parseXMLList "NodeGroupMember"))
                 <*> (x .@? "NodeGroupId")
@@ -1230,8 +1237,84 @@
 
 instance NFData NodeGroup
 
--- | Represents a single node within a node group.
+-- | node group (shard) configuration options. Each node group (shard) configuration has the following: @Slots@ , @PrimaryAvailabilityZone@ , @ReplicaAvailabilityZones@ , @ReplicaCount@ .
 --
+--
+--
+-- /See:/ 'nodeGroupConfiguration' smart constructor.
+data NodeGroupConfiguration = NodeGroupConfiguration'
+    { _ngcSlots                    :: !(Maybe Text)
+    , _ngcReplicaCount             :: !(Maybe Int)
+    , _ngcPrimaryAvailabilityZone  :: !(Maybe Text)
+    , _ngcReplicaAvailabilityZones :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngcSlots' - A string that specifies the keyspaces as a series of comma separated values. Keyspaces are 0 to 16,383. The string is in the format @startkey-endkey@ . Example: @"0-3999"@
+--
+-- * 'ngcReplicaCount' - The number of read replica nodes in this node group (shard).
+--
+-- * 'ngcPrimaryAvailabilityZone' - The Availability Zone where the primary node of this node group (shard) is launched.
+--
+-- * 'ngcReplicaAvailabilityZones' - A list of Availability Zones to be used for the read replicas. The number of Availability Zones in this list must match the value of @ReplicaCount@ or @ReplicasPerNodeGroup@ if not specified.
+nodeGroupConfiguration
+    :: NodeGroupConfiguration
+nodeGroupConfiguration =
+    NodeGroupConfiguration'
+    { _ngcSlots = Nothing
+    , _ngcReplicaCount = Nothing
+    , _ngcPrimaryAvailabilityZone = Nothing
+    , _ngcReplicaAvailabilityZones = Nothing
+    }
+
+-- | A string that specifies the keyspaces as a series of comma separated values. Keyspaces are 0 to 16,383. The string is in the format @startkey-endkey@ . Example: @"0-3999"@
+ngcSlots :: Lens' NodeGroupConfiguration (Maybe Text)
+ngcSlots = lens _ngcSlots (\ s a -> s{_ngcSlots = a});
+
+-- | The number of read replica nodes in this node group (shard).
+ngcReplicaCount :: Lens' NodeGroupConfiguration (Maybe Int)
+ngcReplicaCount = lens _ngcReplicaCount (\ s a -> s{_ngcReplicaCount = a});
+
+-- | The Availability Zone where the primary node of this node group (shard) is launched.
+ngcPrimaryAvailabilityZone :: Lens' NodeGroupConfiguration (Maybe Text)
+ngcPrimaryAvailabilityZone = lens _ngcPrimaryAvailabilityZone (\ s a -> s{_ngcPrimaryAvailabilityZone = a});
+
+-- | A list of Availability Zones to be used for the read replicas. The number of Availability Zones in this list must match the value of @ReplicaCount@ or @ReplicasPerNodeGroup@ if not specified.
+ngcReplicaAvailabilityZones :: Lens' NodeGroupConfiguration [Text]
+ngcReplicaAvailabilityZones = lens _ngcReplicaAvailabilityZones (\ s a -> s{_ngcReplicaAvailabilityZones = a}) . _Default . _Coerce;
+
+instance FromXML NodeGroupConfiguration where
+        parseXML x
+          = NodeGroupConfiguration' <$>
+              (x .@? "Slots") <*> (x .@? "ReplicaCount") <*>
+                (x .@? "PrimaryAvailabilityZone")
+                <*>
+                (x .@? "ReplicaAvailabilityZones" .!@ mempty >>=
+                   may (parseXMLList "AvailabilityZone"))
+
+instance Hashable NodeGroupConfiguration
+
+instance NFData NodeGroupConfiguration
+
+instance ToQuery NodeGroupConfiguration where
+        toQuery NodeGroupConfiguration'{..}
+          = mconcat
+              ["Slots" =: _ngcSlots,
+               "ReplicaCount" =: _ngcReplicaCount,
+               "PrimaryAvailabilityZone" =:
+                 _ngcPrimaryAvailabilityZone,
+               "ReplicaAvailabilityZones" =:
+                 toQuery
+                   (toQueryList "AvailabilityZone" <$>
+                      _ngcReplicaAvailabilityZones)]
+
+-- | Represents a single node within a node group (shard).
+--
+--
+--
 -- /See:/ 'nodeGroupMember' smart constructor.
 data NodeGroupMember = NodeGroupMember'
     { _ngmCacheClusterId            :: !(Maybe Text)
@@ -1245,15 +1328,15 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ngmCacheClusterId'
+-- * 'ngmCacheClusterId' - The ID of the cache cluster to which the node belongs.
 --
--- * 'ngmCacheNodeId'
+-- * 'ngmCacheNodeId' - The ID of the node within its cache cluster. A node ID is a numeric identifier (0001, 0002, etc.).
 --
--- * 'ngmPreferredAvailabilityZone'
+-- * 'ngmPreferredAvailabilityZone' - The name of the Availability Zone in which the node is located.
 --
--- * 'ngmCurrentRole'
+-- * 'ngmCurrentRole' - The role that is currently assigned to the node - @primary@ or @replica@ .
 --
--- * 'ngmReadEndpoint'
+-- * 'ngmReadEndpoint' - Undocumented member.
 nodeGroupMember
     :: NodeGroupMember
 nodeGroupMember =
@@ -1277,7 +1360,7 @@
 ngmPreferredAvailabilityZone :: Lens' NodeGroupMember (Maybe Text)
 ngmPreferredAvailabilityZone = lens _ngmPreferredAvailabilityZone (\ s a -> s{_ngmPreferredAvailabilityZone = a});
 
--- | The role that is currently assigned to the node - /primary/ or /replica/.
+-- | The role that is currently assigned to the node - @primary@ or @replica@ .
 ngmCurrentRole :: Lens' NodeGroupMember (Maybe Text)
 ngmCurrentRole = lens _ngmCurrentRole (\ s a -> s{_ngmCurrentRole = a});
 
@@ -1299,44 +1382,70 @@
 
 -- | Represents an individual cache node in a snapshot of a cache cluster.
 --
+--
+--
 -- /See:/ 'nodeSnapshot' smart constructor.
 data NodeSnapshot = NodeSnapshot'
-    { _nsCacheNodeCreateTime :: !(Maybe ISO8601)
-    , _nsCacheNodeId         :: !(Maybe Text)
-    , _nsSnapshotCreateTime  :: !(Maybe ISO8601)
-    , _nsCacheSize           :: !(Maybe Text)
+    { _nsNodeGroupConfiguration :: !(Maybe NodeGroupConfiguration)
+    , _nsCacheNodeCreateTime    :: !(Maybe ISO8601)
+    , _nsCacheClusterId         :: !(Maybe Text)
+    , _nsCacheNodeId            :: !(Maybe Text)
+    , _nsNodeGroupId            :: !(Maybe Text)
+    , _nsSnapshotCreateTime     :: !(Maybe ISO8601)
+    , _nsCacheSize              :: !(Maybe Text)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'NodeSnapshot' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'nsCacheNodeCreateTime'
+-- * 'nsNodeGroupConfiguration' - The configuration for the source node group (shard).
 --
--- * 'nsCacheNodeId'
+-- * 'nsCacheNodeCreateTime' - The date and time when the cache node was created in the source cache cluster.
 --
--- * 'nsSnapshotCreateTime'
+-- * 'nsCacheClusterId' - A unique identifier for the source cache cluster.
 --
--- * 'nsCacheSize'
+-- * 'nsCacheNodeId' - The cache node identifier for the node in the source cache cluster.
+--
+-- * 'nsNodeGroupId' - A unique identifier for the source node group (shard).
+--
+-- * 'nsSnapshotCreateTime' - The date and time when the source node's metadata and cache data set was obtained for the snapshot.
+--
+-- * 'nsCacheSize' - The size of the cache on the source cache node.
 nodeSnapshot
     :: NodeSnapshot
 nodeSnapshot =
     NodeSnapshot'
-    { _nsCacheNodeCreateTime = Nothing
+    { _nsNodeGroupConfiguration = Nothing
+    , _nsCacheNodeCreateTime = Nothing
+    , _nsCacheClusterId = Nothing
     , _nsCacheNodeId = Nothing
+    , _nsNodeGroupId = Nothing
     , _nsSnapshotCreateTime = Nothing
     , _nsCacheSize = Nothing
     }
 
+-- | The configuration for the source node group (shard).
+nsNodeGroupConfiguration :: Lens' NodeSnapshot (Maybe NodeGroupConfiguration)
+nsNodeGroupConfiguration = lens _nsNodeGroupConfiguration (\ s a -> s{_nsNodeGroupConfiguration = a});
+
 -- | The date and time when the cache node was created in the source cache cluster.
 nsCacheNodeCreateTime :: Lens' NodeSnapshot (Maybe UTCTime)
 nsCacheNodeCreateTime = lens _nsCacheNodeCreateTime (\ s a -> s{_nsCacheNodeCreateTime = a}) . mapping _Time;
 
+-- | A unique identifier for the source cache cluster.
+nsCacheClusterId :: Lens' NodeSnapshot (Maybe Text)
+nsCacheClusterId = lens _nsCacheClusterId (\ s a -> s{_nsCacheClusterId = a});
+
 -- | The cache node identifier for the node in the source cache cluster.
 nsCacheNodeId :: Lens' NodeSnapshot (Maybe Text)
 nsCacheNodeId = lens _nsCacheNodeId (\ s a -> s{_nsCacheNodeId = a});
 
--- | The date and time when the source node\'s metadata and cache data set was obtained for the snapshot.
+-- | A unique identifier for the source node group (shard).
+nsNodeGroupId :: Lens' NodeSnapshot (Maybe Text)
+nsNodeGroupId = lens _nsNodeGroupId (\ s a -> s{_nsNodeGroupId = a});
+
+-- | The date and time when the source node's metadata and cache data set was obtained for the snapshot.
 nsSnapshotCreateTime :: Lens' NodeSnapshot (Maybe UTCTime)
 nsSnapshotCreateTime = lens _nsSnapshotCreateTime (\ s a -> s{_nsSnapshotCreateTime = a}) . mapping _Time;
 
@@ -1347,8 +1456,11 @@
 instance FromXML NodeSnapshot where
         parseXML x
           = NodeSnapshot' <$>
-              (x .@? "CacheNodeCreateTime") <*>
-                (x .@? "CacheNodeId")
+              (x .@? "NodeGroupConfiguration") <*>
+                (x .@? "CacheNodeCreateTime")
+                <*> (x .@? "CacheClusterId")
+                <*> (x .@? "CacheNodeId")
+                <*> (x .@? "NodeGroupId")
                 <*> (x .@? "SnapshotCreateTime")
                 <*> (x .@? "CacheSize")
 
@@ -1358,6 +1470,8 @@
 
 -- | Describes a notification topic and its status. Notification topics are used for publishing ElastiCache events to subscribers using Amazon Simple Notification Service (SNS).
 --
+--
+--
 -- /See:/ 'notificationConfiguration' smart constructor.
 data NotificationConfiguration = NotificationConfiguration'
     { _ncTopicStatus :: !(Maybe Text)
@@ -1368,9 +1482,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ncTopicStatus'
+-- * 'ncTopicStatus' - The current state of the topic.
 --
--- * 'ncTopicARN'
+-- * 'ncTopicARN' - The Amazon Resource Name (ARN) that identifies the topic.
 notificationConfiguration
     :: NotificationConfiguration
 notificationConfiguration =
@@ -1398,6 +1512,8 @@
 
 -- | Describes an individual setting that controls some aspect of ElastiCache behavior.
 --
+--
+--
 -- /See:/ 'parameter' smart constructor.
 data Parameter = Parameter'
     { _pParameterValue       :: !(Maybe Text)
@@ -1415,23 +1531,23 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'pParameterValue'
+-- * 'pParameterValue' - The value of the parameter.
 --
--- * 'pMinimumEngineVersion'
+-- * 'pMinimumEngineVersion' - The earliest cache engine version to which the parameter can apply.
 --
--- * 'pSource'
+-- * 'pSource' - The source of the parameter.
 --
--- * 'pIsModifiable'
+-- * 'pIsModifiable' - Indicates whether (@true@ ) or not (@false@ ) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.
 --
--- * 'pDataType'
+-- * 'pDataType' - The valid data type for the parameter.
 --
--- * 'pAllowedValues'
+-- * 'pAllowedValues' - The valid range of values for the parameter.
 --
--- * 'pParameterName'
+-- * 'pParameterName' - The name of the parameter.
 --
--- * 'pDescription'
+-- * 'pDescription' - A description of the parameter.
 --
--- * 'pChangeType'
+-- * 'pChangeType' - Indicates whether a change to the parameter is applied immediately or requires a reboot for the change to be applied. You can force a reboot or wait until the next maintenance window's reboot. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Clusters.Rebooting.html Rebooting a Cluster> .
 parameter
     :: Parameter
 parameter =
@@ -1459,7 +1575,7 @@
 pSource :: Lens' Parameter (Maybe Text)
 pSource = lens _pSource (\ s a -> s{_pSource = a});
 
--- | Indicates whether ('true') or not ('false') the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.
+-- | Indicates whether (@true@ ) or not (@false@ ) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.
 pIsModifiable :: Lens' Parameter (Maybe Bool)
 pIsModifiable = lens _pIsModifiable (\ s a -> s{_pIsModifiable = a});
 
@@ -1479,7 +1595,7 @@
 pDescription :: Lens' Parameter (Maybe Text)
 pDescription = lens _pDescription (\ s a -> s{_pDescription = a});
 
--- | ChangeType indicates whether a change to the parameter will be applied immediately or requires a reboot for the change to be applied. You can force a reboot or wait until the next maintenance window\'s reboot. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Clusters.Rebooting.html Rebooting a Cluster>.
+-- | Indicates whether a change to the parameter is applied immediately or requires a reboot for the change to be applied. You can force a reboot or wait until the next maintenance window's reboot. For more information, see <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Clusters.Rebooting.html Rebooting a Cluster> .
 pChangeType :: Lens' Parameter (Maybe ChangeType)
 pChangeType = lens _pChangeType (\ s a -> s{_pChangeType = a});
 
@@ -1502,6 +1618,8 @@
 
 -- | Describes a name-value pair that is used to update the value of a parameter.
 --
+--
+--
 -- /See:/ 'parameterNameValue' smart constructor.
 data ParameterNameValue = ParameterNameValue'
     { _pnvParameterValue :: !(Maybe Text)
@@ -1512,9 +1630,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'pnvParameterValue'
+-- * 'pnvParameterValue' - The value of the parameter.
 --
--- * 'pnvParameterName'
+-- * 'pnvParameterName' - The name of the parameter.
 parameterNameValue
     :: ParameterNameValue
 parameterNameValue =
@@ -1541,8 +1659,10 @@
               ["ParameterValue" =: _pnvParameterValue,
                "ParameterName" =: _pnvParameterName]
 
--- | A group of settings that will be applied to the cache cluster in the future, or that are currently being applied.
+-- | A group of settings that are applied to the cache cluster in the future, or that are currently being applied.
 --
+--
+--
 -- /See:/ 'pendingModifiedValues' smart constructor.
 data PendingModifiedValues = PendingModifiedValues'
     { _pmvEngineVersion        :: !(Maybe Text)
@@ -1555,13 +1675,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'pmvEngineVersion'
+-- * 'pmvEngineVersion' - The new cache engine version that the cache cluster runs.
 --
--- * 'pmvCacheNodeType'
+-- * 'pmvCacheNodeType' - The cache node type that this cache cluster or replication group is scaled to.
 --
--- * 'pmvCacheNodeIdsToRemove'
+-- * 'pmvCacheNodeIdsToRemove' - A list of cache node IDs that are being removed (or will be removed) from the cache cluster. A node ID is a numeric identifier (0001, 0002, etc.).
 --
--- * 'pmvNumCacheNodes'
+-- * 'pmvNumCacheNodes' - The new number of cache nodes for the cache cluster. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
 pendingModifiedValues
     :: PendingModifiedValues
 pendingModifiedValues =
@@ -1572,11 +1692,11 @@
     , _pmvNumCacheNodes = Nothing
     }
 
--- | The new cache engine version that the cache cluster will run.
+-- | The new cache engine version that the cache cluster runs.
 pmvEngineVersion :: Lens' PendingModifiedValues (Maybe Text)
 pmvEngineVersion = lens _pmvEngineVersion (\ s a -> s{_pmvEngineVersion = a});
 
--- | The cache node type that this cache cluster or replication group will be scaled to.
+-- | The cache node type that this cache cluster or replication group is scaled to.
 pmvCacheNodeType :: Lens' PendingModifiedValues (Maybe Text)
 pmvCacheNodeType = lens _pmvCacheNodeType (\ s a -> s{_pmvCacheNodeType = a});
 
@@ -1584,9 +1704,7 @@
 pmvCacheNodeIdsToRemove :: Lens' PendingModifiedValues [Text]
 pmvCacheNodeIdsToRemove = lens _pmvCacheNodeIdsToRemove (\ s a -> s{_pmvCacheNodeIdsToRemove = a}) . _Default . _Coerce;
 
--- | The new number of cache nodes for the cache cluster.
---
--- For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
+-- | The new number of cache nodes for the cache cluster. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
 pmvNumCacheNodes :: Lens' PendingModifiedValues (Maybe Int)
 pmvNumCacheNodes = lens _pmvNumCacheNodes (\ s a -> s{_pmvNumCacheNodes = a});
 
@@ -1605,6 +1723,8 @@
 
 -- | Contains the specific price and frequency of a recurring charges for a reserved cache node, or for a reserved cache node offering.
 --
+--
+--
 -- /See:/ 'recurringCharge' smart constructor.
 data RecurringCharge = RecurringCharge'
     { _rcRecurringChargeFrequency :: !(Maybe Text)
@@ -1615,9 +1735,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rcRecurringChargeFrequency'
+-- * 'rcRecurringChargeFrequency' - The frequency of the recurring charge.
 --
--- * 'rcRecurringChargeAmount'
+-- * 'rcRecurringChargeAmount' - The monetary amount of the recurring charge.
 recurringCharge
     :: RecurringCharge
 recurringCharge =
@@ -1644,39 +1764,50 @@
 
 instance NFData RecurringCharge
 
--- | Contains all of the attributes of a specific replication group.
+-- | Contains all of the attributes of a specific Redis replication group.
 --
+--
+--
 -- /See:/ 'replicationGroup' smart constructor.
 data ReplicationGroup = ReplicationGroup'
-    { _rgStatus                :: !(Maybe Text)
-    , _rgNodeGroups            :: !(Maybe [NodeGroup])
-    , _rgSnapshottingClusterId :: !(Maybe Text)
-    , _rgMemberClusters        :: !(Maybe [Text])
-    , _rgDescription           :: !(Maybe Text)
-    , _rgReplicationGroupId    :: !(Maybe Text)
-    , _rgPendingModifiedValues :: !(Maybe ReplicationGroupPendingModifiedValues)
-    , _rgAutomaticFailover     :: !(Maybe AutomaticFailoverStatus)
+    { _rgStatus                 :: !(Maybe Text)
+    , _rgNodeGroups             :: !(Maybe [NodeGroup])
+    , _rgSnapshottingClusterId  :: !(Maybe Text)
+    , _rgSnapshotWindow         :: !(Maybe Text)
+    , _rgConfigurationEndpoint  :: !(Maybe Endpoint)
+    , _rgMemberClusters         :: !(Maybe [Text])
+    , _rgSnapshotRetentionLimit :: !(Maybe Int)
+    , _rgDescription            :: !(Maybe Text)
+    , _rgReplicationGroupId     :: !(Maybe Text)
+    , _rgPendingModifiedValues  :: !(Maybe ReplicationGroupPendingModifiedValues)
+    , _rgAutomaticFailover      :: !(Maybe AutomaticFailoverStatus)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ReplicationGroup' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rgStatus'
+-- * 'rgStatus' - The current state of this replication group - @creating@ , @available@ , @modifying@ , @deleting@ , @create-failed@ , @snapshotting@ .
 --
--- * 'rgNodeGroups'
+-- * 'rgNodeGroups' - A single element list with information about the nodes in the replication group.
 --
--- * 'rgSnapshottingClusterId'
+-- * 'rgSnapshottingClusterId' - The cache cluster ID that is used as the daily snapshot source for the replication group.
 --
--- * 'rgMemberClusters'
+-- * 'rgSnapshotWindow' - The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard). Example: @05:00-09:00@  If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range. __Note:__ This parameter is only valid if the @Engine@ parameter is @redis@ .
 --
--- * 'rgDescription'
+-- * 'rgConfigurationEndpoint' - The configuration endpoint for this replicaiton group. Use the configuration endpoint to connect to this replication group.
 --
--- * 'rgReplicationGroupId'
+-- * 'rgMemberClusters' - The names of all the cache clusters that are part of this replication group.
 --
--- * 'rgPendingModifiedValues'
+-- * 'rgSnapshotRetentionLimit' - The number of days for which ElastiCache retains automatic cache cluster snapshots before deleting them. For example, if you set @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is retained for 5 days before being deleted. /Important:/ If the value of @SnapshotRetentionLimit@ is set to zero (0), backups are turned off.
 --
--- * 'rgAutomaticFailover'
+-- * 'rgDescription' - The description of the replication group.
+--
+-- * 'rgReplicationGroupId' - The identifier for the replication group.
+--
+-- * 'rgPendingModifiedValues' - A group of settings to be applied to the replication group, either immediately or during the next maintenance window.
+--
+-- * 'rgAutomaticFailover' - Indicates the status of Multi-AZ for this replication group.
 replicationGroup
     :: ReplicationGroup
 replicationGroup =
@@ -1684,14 +1815,17 @@
     { _rgStatus = Nothing
     , _rgNodeGroups = Nothing
     , _rgSnapshottingClusterId = Nothing
+    , _rgSnapshotWindow = Nothing
+    , _rgConfigurationEndpoint = Nothing
     , _rgMemberClusters = Nothing
+    , _rgSnapshotRetentionLimit = Nothing
     , _rgDescription = Nothing
     , _rgReplicationGroupId = Nothing
     , _rgPendingModifiedValues = Nothing
     , _rgAutomaticFailover = Nothing
     }
 
--- | The current state of this replication group - /creating/, /available/, etc.
+-- | The current state of this replication group - @creating@ , @available@ , @modifying@ , @deleting@ , @create-failed@ , @snapshotting@ .
 rgStatus :: Lens' ReplicationGroup (Maybe Text)
 rgStatus = lens _rgStatus (\ s a -> s{_rgStatus = a});
 
@@ -1703,10 +1837,22 @@
 rgSnapshottingClusterId :: Lens' ReplicationGroup (Maybe Text)
 rgSnapshottingClusterId = lens _rgSnapshottingClusterId (\ s a -> s{_rgSnapshottingClusterId = a});
 
+-- | The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard). Example: @05:00-09:00@  If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range. __Note:__ This parameter is only valid if the @Engine@ parameter is @redis@ .
+rgSnapshotWindow :: Lens' ReplicationGroup (Maybe Text)
+rgSnapshotWindow = lens _rgSnapshotWindow (\ s a -> s{_rgSnapshotWindow = a});
+
+-- | The configuration endpoint for this replicaiton group. Use the configuration endpoint to connect to this replication group.
+rgConfigurationEndpoint :: Lens' ReplicationGroup (Maybe Endpoint)
+rgConfigurationEndpoint = lens _rgConfigurationEndpoint (\ s a -> s{_rgConfigurationEndpoint = a});
+
 -- | The names of all the cache clusters that are part of this replication group.
 rgMemberClusters :: Lens' ReplicationGroup [Text]
 rgMemberClusters = lens _rgMemberClusters (\ s a -> s{_rgMemberClusters = a}) . _Default . _Coerce;
 
+-- | The number of days for which ElastiCache retains automatic cache cluster snapshots before deleting them. For example, if you set @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is retained for 5 days before being deleted. /Important:/ If the value of @SnapshotRetentionLimit@ is set to zero (0), backups are turned off.
+rgSnapshotRetentionLimit :: Lens' ReplicationGroup (Maybe Int)
+rgSnapshotRetentionLimit = lens _rgSnapshotRetentionLimit (\ s a -> s{_rgSnapshotRetentionLimit = a});
+
 -- | The description of the replication group.
 rgDescription :: Lens' ReplicationGroup (Maybe Text)
 rgDescription = lens _rgDescription (\ s a -> s{_rgDescription = a});
@@ -1720,13 +1866,6 @@
 rgPendingModifiedValues = lens _rgPendingModifiedValues (\ s a -> s{_rgPendingModifiedValues = a});
 
 -- | Indicates the status of Multi-AZ for this replication group.
---
--- ElastiCache Multi-AZ replication groups are not supported on:
---
--- -   Redis versions earlier than 2.8.6.
---
--- -   T1 and T2 cache node types.
---
 rgAutomaticFailover :: Lens' ReplicationGroup (Maybe AutomaticFailoverStatus)
 rgAutomaticFailover = lens _rgAutomaticFailover (\ s a -> s{_rgAutomaticFailover = a});
 
@@ -1737,9 +1876,12 @@
                 (x .@? "NodeGroups" .!@ mempty >>=
                    may (parseXMLList "NodeGroup"))
                 <*> (x .@? "SnapshottingClusterId")
+                <*> (x .@? "SnapshotWindow")
+                <*> (x .@? "ConfigurationEndpoint")
                 <*>
                 (x .@? "MemberClusters" .!@ mempty >>=
                    may (parseXMLList "ClusterId"))
+                <*> (x .@? "SnapshotRetentionLimit")
                 <*> (x .@? "Description")
                 <*> (x .@? "ReplicationGroupId")
                 <*> (x .@? "PendingModifiedValues")
@@ -1749,8 +1891,10 @@
 
 instance NFData ReplicationGroup
 
--- | The settings to be applied to the replication group, either immediately or during the next maintenance window.
+-- | The settings to be applied to the Redis replication group, either immediately or during the next maintenance window.
 --
+--
+--
 -- /See:/ 'replicationGroupPendingModifiedValues' smart constructor.
 data ReplicationGroupPendingModifiedValues = ReplicationGroupPendingModifiedValues'
     { _rgpmvPrimaryClusterId        :: !(Maybe Text)
@@ -1761,9 +1905,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rgpmvPrimaryClusterId'
+-- * 'rgpmvPrimaryClusterId' - The primary cluster ID that is applied immediately (if @--apply-immediately@ was specified), or during the next maintenance window.
 --
--- * 'rgpmvAutomaticFailoverStatus'
+-- * 'rgpmvAutomaticFailoverStatus' - Indicates the status of Multi-AZ for this Redis replication group.
 replicationGroupPendingModifiedValues
     :: ReplicationGroupPendingModifiedValues
 replicationGroupPendingModifiedValues =
@@ -1772,18 +1916,11 @@
     , _rgpmvAutomaticFailoverStatus = Nothing
     }
 
--- | The primary cluster ID which will be applied immediately (if '--apply-immediately' was specified), or during the next maintenance window.
+-- | The primary cluster ID that is applied immediately (if @--apply-immediately@ was specified), or during the next maintenance window.
 rgpmvPrimaryClusterId :: Lens' ReplicationGroupPendingModifiedValues (Maybe Text)
 rgpmvPrimaryClusterId = lens _rgpmvPrimaryClusterId (\ s a -> s{_rgpmvPrimaryClusterId = a});
 
--- | Indicates the status of Multi-AZ for this replication group.
---
--- ElastiCache Multi-AZ replication groups are not supported on:
---
--- -   Redis versions earlier than 2.8.6.
---
--- -   T1 and T2 cache node types.
---
+-- | Indicates the status of Multi-AZ for this Redis replication group.
 rgpmvAutomaticFailoverStatus :: Lens' ReplicationGroupPendingModifiedValues (Maybe PendingAutomaticFailoverStatus)
 rgpmvAutomaticFailoverStatus = lens _rgpmvAutomaticFailoverStatus (\ s a -> s{_rgpmvAutomaticFailoverStatus = a});
 
@@ -1799,8 +1936,10 @@
 
 instance NFData ReplicationGroupPendingModifiedValues
 
--- | Represents the output of a /PurchaseReservedCacheNodesOffering/ action.
+-- | Represents the output of a @PurchaseReservedCacheNodesOffering@ operation.
 --
+--
+--
 -- /See:/ 'reservedCacheNode' smart constructor.
 data ReservedCacheNode = ReservedCacheNode'
     { _rcnCacheNodeType                :: !(Maybe Text)
@@ -1821,29 +1960,29 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rcnCacheNodeType'
+-- * 'rcnCacheNodeType' - The cache node type for the reserved cache nodes. Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 --
--- * 'rcnState'
+-- * 'rcnState' - The state of the reserved cache node.
 --
--- * 'rcnStartTime'
+-- * 'rcnStartTime' - The time the reservation started.
 --
--- * 'rcnProductDescription'
+-- * 'rcnProductDescription' - The description of the reserved cache node.
 --
--- * 'rcnCacheNodeCount'
+-- * 'rcnCacheNodeCount' - The number of cache nodes that have been reserved.
 --
--- * 'rcnReservedCacheNodeId'
+-- * 'rcnReservedCacheNodeId' - The unique identifier for the reservation.
 --
--- * 'rcnRecurringCharges'
+-- * 'rcnRecurringCharges' - The recurring price charged to run this reserved cache node.
 --
--- * 'rcnOfferingType'
+-- * 'rcnOfferingType' - The offering type of this reserved cache node.
 --
--- * 'rcnUsagePrice'
+-- * 'rcnUsagePrice' - The hourly price charged for this reserved cache node.
 --
--- * 'rcnFixedPrice'
+-- * 'rcnFixedPrice' - The fixed price charged for this reserved cache node.
 --
--- * 'rcnDuration'
+-- * 'rcnDuration' - The duration of the reservation in seconds.
 --
--- * 'rcnReservedCacheNodesOfferingId'
+-- * 'rcnReservedCacheNodesOfferingId' - The offering identifier.
 reservedCacheNode
     :: ReservedCacheNode
 reservedCacheNode =
@@ -1862,33 +2001,7 @@
     , _rcnReservedCacheNodesOfferingId = Nothing
     }
 
--- | The cache node type for the reserved cache nodes.
---
--- Valid node types are as follows:
---
--- -   General purpose:
---
---     -   Current generation: 'cache.t2.micro', 'cache.t2.small', 'cache.t2.medium', 'cache.m3.medium', 'cache.m3.large', 'cache.m3.xlarge', 'cache.m3.2xlarge'
---
---     -   Previous generation: 'cache.t1.micro', 'cache.m1.small', 'cache.m1.medium', 'cache.m1.large', 'cache.m1.xlarge'
---
--- -   Compute optimized: 'cache.c1.xlarge'
---
--- -   Memory optimized:
---
---     -   Current generation: 'cache.r3.large', 'cache.r3.xlarge', 'cache.r3.2xlarge', 'cache.r3.4xlarge', 'cache.r3.8xlarge'
---
---     -   Previous generation: 'cache.m2.xlarge', 'cache.m2.2xlarge', 'cache.m2.4xlarge'
---
--- __Notes:__
---
--- -   All t2 instances are created in an Amazon Virtual Private Cloud (VPC).
---
--- -   Redis backup\/restore is not supported for t2 instances.
---
--- -   Redis Append-only files (AOF) functionality is not supported for t1 or t2 instances.
---
--- For a complete listing of cache node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#CacheParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#CacheParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis>.
+-- | The cache node type for the reserved cache nodes. Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 rcnCacheNodeType :: Lens' ReservedCacheNode (Maybe Text)
 rcnCacheNodeType = lens _rcnCacheNodeType (\ s a -> s{_rcnCacheNodeType = a});
 
@@ -1959,6 +2072,8 @@
 
 -- | Describes all of the attributes of a reserved cache node offering.
 --
+--
+--
 -- /See:/ 'reservedCacheNodesOffering' smart constructor.
 data ReservedCacheNodesOffering = ReservedCacheNodesOffering'
     { _rcnoCacheNodeType                :: !(Maybe Text)
@@ -1975,21 +2090,21 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rcnoCacheNodeType'
+-- * 'rcnoCacheNodeType' - The cache node type for the reserved cache node. Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 --
--- * 'rcnoProductDescription'
+-- * 'rcnoProductDescription' - The cache engine used by the offering.
 --
--- * 'rcnoRecurringCharges'
+-- * 'rcnoRecurringCharges' - The recurring price charged to run this reserved cache node.
 --
--- * 'rcnoOfferingType'
+-- * 'rcnoOfferingType' - The offering type.
 --
--- * 'rcnoUsagePrice'
+-- * 'rcnoUsagePrice' - The hourly price charged for this offering.
 --
--- * 'rcnoFixedPrice'
+-- * 'rcnoFixedPrice' - The fixed price charged for this offering.
 --
--- * 'rcnoDuration'
+-- * 'rcnoDuration' - The duration of the offering. in seconds.
 --
--- * 'rcnoReservedCacheNodesOfferingId'
+-- * 'rcnoReservedCacheNodesOfferingId' - A unique identifier for the reserved cache node offering.
 reservedCacheNodesOffering
     :: ReservedCacheNodesOffering
 reservedCacheNodesOffering =
@@ -2004,33 +2119,7 @@
     , _rcnoReservedCacheNodesOfferingId = Nothing
     }
 
--- | The cache node type for the reserved cache node.
---
--- Valid node types are as follows:
---
--- -   General purpose:
---
---     -   Current generation: 'cache.t2.micro', 'cache.t2.small', 'cache.t2.medium', 'cache.m3.medium', 'cache.m3.large', 'cache.m3.xlarge', 'cache.m3.2xlarge'
---
---     -   Previous generation: 'cache.t1.micro', 'cache.m1.small', 'cache.m1.medium', 'cache.m1.large', 'cache.m1.xlarge'
---
--- -   Compute optimized: 'cache.c1.xlarge'
---
--- -   Memory optimized:
---
---     -   Current generation: 'cache.r3.large', 'cache.r3.xlarge', 'cache.r3.2xlarge', 'cache.r3.4xlarge', 'cache.r3.8xlarge'
---
---     -   Previous generation: 'cache.m2.xlarge', 'cache.m2.2xlarge', 'cache.m2.4xlarge'
---
--- __Notes:__
---
--- -   All t2 instances are created in an Amazon Virtual Private Cloud (VPC).
---
--- -   Redis backup\/restore is not supported for t2 instances.
---
--- -   Redis Append-only files (AOF) functionality is not supported for t1 or t2 instances.
---
--- For a complete listing of cache node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#CacheParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#CacheParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis>.
+-- | The cache node type for the reserved cache node. Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 rcnoCacheNodeType :: Lens' ReservedCacheNodesOffering (Maybe Text)
 rcnoCacheNodeType = lens _rcnoCacheNodeType (\ s a -> s{_rcnoCacheNodeType = a});
 
@@ -2082,6 +2171,8 @@
 
 -- | Represents a single cache security group and its status.
 --
+--
+--
 -- /See:/ 'securityGroupMembership' smart constructor.
 data SecurityGroupMembership = SecurityGroupMembership'
     { _sgmStatus          :: !(Maybe Text)
@@ -2092,9 +2183,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sgmStatus'
+-- * 'sgmStatus' - The status of the cache security group membership. The status changes whenever a cache security group is modified, or when the cache security groups assigned to a cache cluster are modified.
 --
--- * 'sgmSecurityGroupId'
+-- * 'sgmSecurityGroupId' - The identifier of the cache security group.
 securityGroupMembership
     :: SecurityGroupMembership
 securityGroupMembership =
@@ -2120,75 +2211,89 @@
 
 instance NFData SecurityGroupMembership
 
--- | Represents a copy of an entire cache cluster as of the time when the snapshot was taken.
+-- | Represents a copy of an entire Redis cache cluster as of the time when the snapshot was taken.
 --
+--
+--
 -- /See:/ 'snapshot' smart constructor.
 data Snapshot = Snapshot'
-    { _sEngineVersion              :: !(Maybe Text)
-    , _sCacheNodeType              :: !(Maybe Text)
-    , _sCacheClusterCreateTime     :: !(Maybe ISO8601)
-    , _sAutoMinorVersionUpgrade    :: !(Maybe Bool)
-    , _sCacheParameterGroupName    :: !(Maybe Text)
-    , _sVPCId                      :: !(Maybe Text)
-    , _sSnapshotStatus             :: !(Maybe Text)
-    , _sSnapshotWindow             :: !(Maybe Text)
-    , _sCacheClusterId             :: !(Maybe Text)
-    , _sEngine                     :: !(Maybe Text)
-    , _sPreferredMaintenanceWindow :: !(Maybe Text)
-    , _sTopicARN                   :: !(Maybe Text)
-    , _sNodeSnapshots              :: !(Maybe [NodeSnapshot])
-    , _sCacheSubnetGroupName       :: !(Maybe Text)
-    , _sPreferredAvailabilityZone  :: !(Maybe Text)
-    , _sSnapshotRetentionLimit     :: !(Maybe Int)
-    , _sSnapshotName               :: !(Maybe Text)
-    , _sNumCacheNodes              :: !(Maybe Int)
-    , _sPort                       :: !(Maybe Int)
-    , _sSnapshotSource             :: !(Maybe Text)
+    { _sEngineVersion               :: !(Maybe Text)
+    , _sCacheNodeType               :: !(Maybe Text)
+    , _sCacheClusterCreateTime      :: !(Maybe ISO8601)
+    , _sAutoMinorVersionUpgrade     :: !(Maybe Bool)
+    , _sCacheParameterGroupName     :: !(Maybe Text)
+    , _sReplicationGroupDescription :: !(Maybe Text)
+    , _sVPCId                       :: !(Maybe Text)
+    , _sSnapshotStatus              :: !(Maybe Text)
+    , _sSnapshotWindow              :: !(Maybe Text)
+    , _sCacheClusterId              :: !(Maybe Text)
+    , _sEngine                      :: !(Maybe Text)
+    , _sPreferredMaintenanceWindow  :: !(Maybe Text)
+    , _sTopicARN                    :: !(Maybe Text)
+    , _sNodeSnapshots               :: !(Maybe [NodeSnapshot])
+    , _sCacheSubnetGroupName        :: !(Maybe Text)
+    , _sPreferredAvailabilityZone   :: !(Maybe Text)
+    , _sNumNodeGroups               :: !(Maybe Int)
+    , _sSnapshotRetentionLimit      :: !(Maybe Int)
+    , _sSnapshotName                :: !(Maybe Text)
+    , _sReplicationGroupId          :: !(Maybe Text)
+    , _sNumCacheNodes               :: !(Maybe Int)
+    , _sPort                        :: !(Maybe Int)
+    , _sAutomaticFailover           :: !(Maybe AutomaticFailoverStatus)
+    , _sSnapshotSource              :: !(Maybe Text)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'Snapshot' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sEngineVersion'
+-- * 'sEngineVersion' - The version of the cache engine version that is used by the source cache cluster.
 --
--- * 'sCacheNodeType'
+-- * 'sCacheNodeType' - The name of the compute and memory capacity node type for the source cache cluster. Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 --
--- * 'sCacheClusterCreateTime'
+-- * 'sCacheClusterCreateTime' - The date and time when the source cache cluster was created.
 --
--- * 'sAutoMinorVersionUpgrade'
+-- * 'sAutoMinorVersionUpgrade' - This parameter is currently disabled.
 --
--- * 'sCacheParameterGroupName'
+-- * 'sCacheParameterGroupName' - The cache parameter group that is associated with the source cache cluster.
 --
--- * 'sVPCId'
+-- * 'sReplicationGroupDescription' - A description of the source replication group.
 --
--- * 'sSnapshotStatus'
+-- * 'sVPCId' - The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet group for the source cache cluster.
 --
--- * 'sSnapshotWindow'
+-- * 'sSnapshotStatus' - The status of the snapshot. Valid values: @creating@ | @available@ | @restoring@ | @copying@ | @deleting@ .
 --
--- * 'sCacheClusterId'
+-- * 'sSnapshotWindow' - The daily time range during which ElastiCache takes daily snapshots of the source cache cluster.
 --
--- * 'sEngine'
+-- * 'sCacheClusterId' - The user-supplied identifier of the source cache cluster.
 --
--- * 'sPreferredMaintenanceWindow'
+-- * 'sEngine' - The name of the cache engine (@memcached@ or @redis@ ) used by the source cache cluster.
 --
--- * 'sTopicARN'
+-- * 'sPreferredMaintenanceWindow' - Specifies the weekly time range during which maintenance on the 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:23:00-mon:01:30@
 --
--- * 'sNodeSnapshots'
+-- * 'sTopicARN' - The Amazon Resource Name (ARN) for the topic used by the source cache cluster for publishing notifications.
 --
--- * 'sCacheSubnetGroupName'
+-- * 'sNodeSnapshots' - A list of the cache nodes in the source cache cluster.
 --
--- * 'sPreferredAvailabilityZone'
+-- * 'sCacheSubnetGroupName' - The name of the cache subnet group associated with the source cache cluster.
 --
--- * 'sSnapshotRetentionLimit'
+-- * 'sPreferredAvailabilityZone' - The name of the Availability Zone in which the source cache cluster is located.
 --
--- * 'sSnapshotName'
+-- * 'sNumNodeGroups' - The number of node groups (shards) in this snapshot. When restoring from a snapshot, the number of node groups (shards) in the snapshot and in the restored replication group must be the same.
 --
--- * 'sNumCacheNodes'
+-- * 'sSnapshotRetentionLimit' - For an automatic snapshot, the number of days for which ElastiCache retains the snapshot before deleting it. For manual snapshots, this field reflects the @SnapshotRetentionLimit@ for the source cache cluster when the snapshot was created. This field is otherwise ignored: Manual snapshots do not expire, and can only be deleted using the @DeleteSnapshot@ operation.  __Important__ If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.
 --
--- * 'sPort'
+-- * 'sSnapshotName' - The name of a snapshot. For an automatic snapshot, the name is system-generated. For a manual snapshot, this is the user-provided name.
 --
--- * 'sSnapshotSource'
+-- * 'sReplicationGroupId' - The unique identifier of the source replication group.
+--
+-- * 'sNumCacheNodes' - The number of cache nodes in the source cache cluster. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
+--
+-- * 'sPort' - The port number used by each cache nodes in the source cache cluster.
+--
+-- * 'sAutomaticFailover' - Indicates the status of Multi-AZ for the source replication group.
+--
+-- * 'sSnapshotSource' - Indicates whether the snapshot is from an automatic backup (@automated@ ) or was created manually (@manual@ ).
 snapshot
     :: Snapshot
 snapshot =
@@ -2198,6 +2303,7 @@
     , _sCacheClusterCreateTime = Nothing
     , _sAutoMinorVersionUpgrade = Nothing
     , _sCacheParameterGroupName = Nothing
+    , _sReplicationGroupDescription = Nothing
     , _sVPCId = Nothing
     , _sSnapshotStatus = Nothing
     , _sSnapshotWindow = Nothing
@@ -2208,10 +2314,13 @@
     , _sNodeSnapshots = Nothing
     , _sCacheSubnetGroupName = Nothing
     , _sPreferredAvailabilityZone = Nothing
+    , _sNumNodeGroups = Nothing
     , _sSnapshotRetentionLimit = Nothing
     , _sSnapshotName = Nothing
+    , _sReplicationGroupId = Nothing
     , _sNumCacheNodes = Nothing
     , _sPort = Nothing
+    , _sAutomaticFailover = Nothing
     , _sSnapshotSource = Nothing
     }
 
@@ -2219,33 +2328,7 @@
 sEngineVersion :: Lens' Snapshot (Maybe Text)
 sEngineVersion = lens _sEngineVersion (\ s a -> s{_sEngineVersion = a});
 
--- | The name of the compute and memory capacity node type for the source cache cluster.
---
--- Valid node types are as follows:
---
--- -   General purpose:
---
---     -   Current generation: 'cache.t2.micro', 'cache.t2.small', 'cache.t2.medium', 'cache.m3.medium', 'cache.m3.large', 'cache.m3.xlarge', 'cache.m3.2xlarge'
---
---     -   Previous generation: 'cache.t1.micro', 'cache.m1.small', 'cache.m1.medium', 'cache.m1.large', 'cache.m1.xlarge'
---
--- -   Compute optimized: 'cache.c1.xlarge'
---
--- -   Memory optimized:
---
---     -   Current generation: 'cache.r3.large', 'cache.r3.xlarge', 'cache.r3.2xlarge', 'cache.r3.4xlarge', 'cache.r3.8xlarge'
---
---     -   Previous generation: 'cache.m2.xlarge', 'cache.m2.2xlarge', 'cache.m2.4xlarge'
---
--- __Notes:__
---
--- -   All t2 instances are created in an Amazon Virtual Private Cloud (VPC).
---
--- -   Redis backup\/restore is not supported for t2 instances.
---
--- -   Redis Append-only files (AOF) functionality is not supported for t1 or t2 instances.
---
--- For a complete listing of cache node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#CacheParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#CacheParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis>.
+-- | The name of the compute and memory capacity node type for the source cache cluster. Valid node types are as follows:     * General purpose:     * Current generation: @cache.t2.micro@ , @cache.t2.small@ , @cache.t2.medium@ , @cache.m3.medium@ , @cache.m3.large@ , @cache.m3.xlarge@ , @cache.m3.2xlarge@ , @cache.m4.large@ , @cache.m4.xlarge@ , @cache.m4.2xlarge@ , @cache.m4.4xlarge@ , @cache.m4.10xlarge@      * Previous generation: @cache.t1.micro@ , @cache.m1.small@ , @cache.m1.medium@ , @cache.m1.large@ , @cache.m1.xlarge@      * Compute optimized: @cache.c1.xlarge@      * Memory optimized:     * Current generation: @cache.r3.large@ , @cache.r3.xlarge@ , @cache.r3.2xlarge@ , @cache.r3.4xlarge@ , @cache.r3.8xlarge@      * Previous generation: @cache.m2.xlarge@ , @cache.m2.2xlarge@ , @cache.m2.4xlarge@  __Notes:__      * All T2 instances are created in an Amazon Virtual Private Cloud (Amazon VPC).     * Redis backup/restore is not supported for Redis (cluster mode disabled) T1 and T2 instances. Backup/restore is supported on Redis (cluster mode enabled) T2 instances.     * Redis Append-only files (AOF) functionality is not supported for T1 or T2 instances. For a complete listing of node types and specifications, see <http://aws.amazon.com/elasticache/details Amazon ElastiCache Product Features and Details> and either <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific Cache Node Type-Specific Parameters for Memcached> or <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific Cache Node Type-Specific Parameters for Redis> .
 sCacheNodeType :: Lens' Snapshot (Maybe Text)
 sCacheNodeType = lens _sCacheNodeType (\ s a -> s{_sCacheNodeType = a});
 
@@ -2261,11 +2344,15 @@
 sCacheParameterGroupName :: Lens' Snapshot (Maybe Text)
 sCacheParameterGroupName = lens _sCacheParameterGroupName (\ s a -> s{_sCacheParameterGroupName = a});
 
+-- | A description of the source replication group.
+sReplicationGroupDescription :: Lens' Snapshot (Maybe Text)
+sReplicationGroupDescription = lens _sReplicationGroupDescription (\ s a -> s{_sReplicationGroupDescription = a});
+
 -- | The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet group for the source cache cluster.
 sVPCId :: Lens' Snapshot (Maybe Text)
 sVPCId = lens _sVPCId (\ s a -> s{_sVPCId = a});
 
--- | The status of the snapshot. Valid values: 'creating' | 'available' | 'restoring' | 'copying' | 'deleting'.
+-- | The status of the snapshot. Valid values: @creating@ | @available@ | @restoring@ | @copying@ | @deleting@ .
 sSnapshotStatus :: Lens' Snapshot (Maybe Text)
 sSnapshotStatus = lens _sSnapshotStatus (\ s a -> s{_sSnapshotStatus = a});
 
@@ -2277,27 +2364,11 @@
 sCacheClusterId :: Lens' Snapshot (Maybe Text)
 sCacheClusterId = lens _sCacheClusterId (\ s a -> s{_sCacheClusterId = a});
 
--- | The name of the cache engine (/memcached/ or /redis/) used by the source cache cluster.
+-- | The name of the cache engine (@memcached@ or @redis@ ) used by the source cache cluster.
 sEngine :: Lens' Snapshot (Maybe Text)
 sEngine = lens _sEngine (\ s a -> s{_sEngine = a});
 
--- | Specifies the weekly time range during which maintenance on the cache 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'
+-- | Specifies the weekly time range during which maintenance on the 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:23:00-mon:01:30@
 sPreferredMaintenanceWindow :: Lens' Snapshot (Maybe Text)
 sPreferredMaintenanceWindow = lens _sPreferredMaintenanceWindow (\ s a -> s{_sPreferredMaintenanceWindow = a});
 
@@ -2317,21 +2388,23 @@
 sPreferredAvailabilityZone :: Lens' Snapshot (Maybe Text)
 sPreferredAvailabilityZone = lens _sPreferredAvailabilityZone (\ s a -> s{_sPreferredAvailabilityZone = a});
 
--- | For an automatic snapshot, the number of days for which ElastiCache will retain the snapshot before deleting it.
---
--- For manual snapshots, this field reflects the /SnapshotRetentionLimit/ for the source cache cluster when the snapshot was created. This field is otherwise ignored: Manual snapshots do not expire, and can only be deleted using the /DeleteSnapshot/ action.
---
--- __Important__ If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.
+-- | The number of node groups (shards) in this snapshot. When restoring from a snapshot, the number of node groups (shards) in the snapshot and in the restored replication group must be the same.
+sNumNodeGroups :: Lens' Snapshot (Maybe Int)
+sNumNodeGroups = lens _sNumNodeGroups (\ s a -> s{_sNumNodeGroups = a});
+
+-- | For an automatic snapshot, the number of days for which ElastiCache retains the snapshot before deleting it. For manual snapshots, this field reflects the @SnapshotRetentionLimit@ for the source cache cluster when the snapshot was created. This field is otherwise ignored: Manual snapshots do not expire, and can only be deleted using the @DeleteSnapshot@ operation.  __Important__ If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.
 sSnapshotRetentionLimit :: Lens' Snapshot (Maybe Int)
 sSnapshotRetentionLimit = lens _sSnapshotRetentionLimit (\ s a -> s{_sSnapshotRetentionLimit = a});
 
--- | The name of a snapshot. For an automatic snapshot, the name is system-generated; for a manual snapshot, this is the user-provided name.
+-- | The name of a snapshot. For an automatic snapshot, the name is system-generated. For a manual snapshot, this is the user-provided name.
 sSnapshotName :: Lens' Snapshot (Maybe Text)
 sSnapshotName = lens _sSnapshotName (\ s a -> s{_sSnapshotName = a});
 
--- | The number of cache nodes in the source cache cluster.
---
--- For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
+-- | The unique identifier of the source replication group.
+sReplicationGroupId :: Lens' Snapshot (Maybe Text)
+sReplicationGroupId = lens _sReplicationGroupId (\ s a -> s{_sReplicationGroupId = a});
+
+-- | The number of cache nodes in the source cache cluster. For clusters running Redis, this value must be 1. For clusters running Memcached, this value must be between 1 and 20.
 sNumCacheNodes :: Lens' Snapshot (Maybe Int)
 sNumCacheNodes = lens _sNumCacheNodes (\ s a -> s{_sNumCacheNodes = a});
 
@@ -2339,7 +2412,11 @@
 sPort :: Lens' Snapshot (Maybe Int)
 sPort = lens _sPort (\ s a -> s{_sPort = a});
 
--- | Indicates whether the snapshot is from an automatic backup ('automated') or was created manually ('manual').
+-- | Indicates the status of Multi-AZ for the source replication group.
+sAutomaticFailover :: Lens' Snapshot (Maybe AutomaticFailoverStatus)
+sAutomaticFailover = lens _sAutomaticFailover (\ s a -> s{_sAutomaticFailover = a});
+
+-- | Indicates whether the snapshot is from an automatic backup (@automated@ ) or was created manually (@manual@ ).
 sSnapshotSource :: Lens' Snapshot (Maybe Text)
 sSnapshotSource = lens _sSnapshotSource (\ s a -> s{_sSnapshotSource = a});
 
@@ -2350,6 +2427,7 @@
                 <*> (x .@? "CacheClusterCreateTime")
                 <*> (x .@? "AutoMinorVersionUpgrade")
                 <*> (x .@? "CacheParameterGroupName")
+                <*> (x .@? "ReplicationGroupDescription")
                 <*> (x .@? "VpcId")
                 <*> (x .@? "SnapshotStatus")
                 <*> (x .@? "SnapshotWindow")
@@ -2362,10 +2440,13 @@
                    may (parseXMLList "NodeSnapshot"))
                 <*> (x .@? "CacheSubnetGroupName")
                 <*> (x .@? "PreferredAvailabilityZone")
+                <*> (x .@? "NumNodeGroups")
                 <*> (x .@? "SnapshotRetentionLimit")
                 <*> (x .@? "SnapshotName")
+                <*> (x .@? "ReplicationGroupId")
                 <*> (x .@? "NumCacheNodes")
                 <*> (x .@? "Port")
+                <*> (x .@? "AutomaticFailover")
                 <*> (x .@? "SnapshotSource")
 
 instance Hashable Snapshot
@@ -2374,6 +2455,8 @@
 
 -- | Represents the subnet associated with a cache cluster. This parameter refers to subnets defined in Amazon Virtual Private Cloud (Amazon VPC) and used with ElastiCache.
 --
+--
+--
 -- /See:/ 'subnet' smart constructor.
 data Subnet = Subnet'
     { _sSubnetIdentifier       :: !(Maybe Text)
@@ -2384,9 +2467,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sSubnetIdentifier'
+-- * 'sSubnetIdentifier' - The unique identifier for the subnet.
 --
--- * 'sSubnetAvailabilityZone'
+-- * 'sSubnetAvailabilityZone' - The Availability Zone associated with the subnet.
 subnet
     :: Subnet
 subnet =
@@ -2413,8 +2496,10 @@
 
 instance NFData Subnet
 
--- | A cost allocation Tag that can be added to an ElastiCache cluster or replication group. Tags are composed of a Key\/Value pair. A tag with a null Value is permitted.
+-- | A cost allocation Tag that can be added to an ElastiCache cluster or replication group. Tags are composed of a Key/Value pair. A tag with a null Value is permitted.
 --
+--
+--
 -- /See:/ 'tag' smart constructor.
 data Tag = Tag'
     { _tagValue :: !(Maybe Text)
@@ -2425,9 +2510,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'tagValue'
+-- * 'tagValue' - The tag's value. May not be null.
 --
--- * 'tagKey'
+-- * 'tagKey' - The key for the tag.
 tag
     :: Tag
 tag =
@@ -2436,7 +2521,7 @@
     , _tagKey = Nothing
     }
 
--- | The tag\'s value. May not be null.
+-- | The tag's value. May not be null.
 tagValue :: Lens' Tag (Maybe Text)
 tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
 
@@ -2456,8 +2541,10 @@
         toQuery Tag'{..}
           = mconcat ["Value" =: _tagValue, "Key" =: _tagKey]
 
--- | Represents the output from the /AddTagsToResource/, /ListTagsOnResource/, and /RemoveTagsFromResource/ actions.
+-- | Represents the output from the @AddTagsToResource@ , @ListTagsOnResource@ , and @RemoveTagsFromResource@ operations.
 --
+--
+--
 -- /See:/ 'tagListMessage' smart constructor.
 newtype TagListMessage = TagListMessage'
     { _tlmTagList :: Maybe [Tag]
@@ -2467,7 +2554,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'tlmTagList'
+-- * 'tlmTagList' - A list of cost allocation tags as key-value pairs.
 tagListMessage
     :: TagListMessage
 tagListMessage =
diff --git a/gen/Network/AWS/ElastiCache/Types/Sum.hs b/gen/Network/AWS/ElastiCache/Types/Sum.hs
--- a/gen/Network/AWS/ElastiCache/Types/Sum.hs
+++ b/gen/Network/AWS/ElastiCache/Types/Sum.hs
@@ -131,6 +131,7 @@
     | CacheParameterGroup
     | CacheSecurityGroup
     | CacheSubnetGroup
+    | ReplicationGroup
     deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText SourceType where
@@ -139,8 +140,9 @@
         "cache-parameter-group" -> pure CacheParameterGroup
         "cache-security-group" -> pure CacheSecurityGroup
         "cache-subnet-group" -> pure CacheSubnetGroup
+        "replication-group" -> pure ReplicationGroup
         e -> fromTextError $ "Failure parsing SourceType from value: '" <> e
-           <> "'. Accepted values: cache-cluster, cache-parameter-group, cache-security-group, cache-subnet-group"
+           <> "'. Accepted values: cache-cluster, cache-parameter-group, cache-security-group, cache-subnet-group, replication-group"
 
 instance ToText SourceType where
     toText = \case
@@ -148,6 +150,7 @@
         CacheParameterGroup -> "cache-parameter-group"
         CacheSecurityGroup -> "cache-security-group"
         CacheSubnetGroup -> "cache-subnet-group"
+        ReplicationGroup -> "replication-group"
 
 instance Hashable     SourceType
 instance NFData       SourceType
diff --git a/gen/Network/AWS/ElastiCache/Waiters.hs b/gen/Network/AWS/ElastiCache/Waiters.hs
--- a/gen/Network/AWS/ElastiCache/Waiters.hs
+++ b/gen/Network/AWS/ElastiCache/Waiters.hs
@@ -24,8 +24,7 @@
 import           Network.AWS.Prelude
 import           Network.AWS.Waiter
 
--- | Polls 'Network.AWS.ElastiCache.DescribeCacheClusters' every 30 seconds until a
--- successful state is reached. An error is returned after 60 failed checks.
+-- | Polls 'Network.AWS.ElastiCache.DescribeCacheClusters' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
 cacheClusterAvailable :: Wait DescribeCacheClusters
 cacheClusterAvailable =
     Wait
@@ -59,8 +58,7 @@
                               ccCacheClusterStatus . _Just . to toTextCI)]
     }
 
--- | Polls 'Network.AWS.ElastiCache.DescribeCacheClusters' every 30 seconds until a
--- successful state is reached. An error is returned after 60 failed checks.
+-- | Polls 'Network.AWS.ElastiCache.DescribeCacheClusters' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
 cacheClusterDeleted :: Wait DescribeCacheClusters
 cacheClusterDeleted =
     Wait
@@ -85,8 +83,7 @@
                               ccCacheClusterStatus . _Just . to toTextCI)]
     }
 
--- | Polls 'Network.AWS.ElastiCache.DescribeReplicationGroups' every 30 seconds until a
--- successful state is reached. An error is returned after 60 failed checks.
+-- | Polls 'Network.AWS.ElastiCache.DescribeReplicationGroups' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
 replicationGroupDeleted :: Wait DescribeReplicationGroups
 replicationGroupDeleted =
     Wait
@@ -113,8 +110,7 @@
                               rgStatus . _Just . to toTextCI)]
     }
 
--- | Polls 'Network.AWS.ElastiCache.DescribeReplicationGroups' every 30 seconds until a
--- successful state is reached. An error is returned after 60 failed checks.
+-- | Polls 'Network.AWS.ElastiCache.DescribeReplicationGroups' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
 replicationGroupAvailable :: Wait DescribeReplicationGroups
 replicationGroupAvailable =
     Wait
