diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,22 +1,58 @@
 # Amazon Relational Database Service SDK
 
-> _Warning:_ This is an experimental preview release which is still under heavy development and not intended for public consumption, _caveat emptor_!
-
+* [Version](#version)
 * [Description](#description)
 * [Contribute](#contribute)
 * [Licence](#licence)
 
+
+## Version
+
+`1.0.0`
+
+
 ## Description
 
-Amazon Relational Database Service (Amazon RDS) is a web service that makes
-it easy to set up, operate, and scale a relational database in the cloud. It
-provides cost-efficient and resizable capacity while managing time-consuming
-database administration tasks, freeing you up to focus on your applications
-and business.
+Amazon Relational Database Service
 
+Amazon Relational Database Service (Amazon RDS) is a web service that
+makes it easier to set up, operate, and scale a relational database in
+the cloud. It provides cost-efficient, resizeable capacity for an
+industry-standard relational database and manages common database
+administration tasks, freeing up developers to focus on what makes their
+applications and businesses unique.
+
+Amazon RDS gives you access to the capabilities of a MySQL, PostgreSQL,
+Microsoft SQL Server, Oracle, or Aurora database server. This means the
+code, applications, and tools you already use today with your existing
+databases work with Amazon RDS without modification. Amazon RDS
+automatically backs up your database and maintains the database software
+that powers your DB instance. Amazon RDS is flexible: you can scale your
+database instance\'s compute resources and storage capacity to meet your
+application\'s demand. As with all Amazon Web Services, there are no
+up-front investments, and you pay only for the resources you use.
+
+This is an interface reference for Amazon RDS. It contains documentation
+for a programming or command line interface you can use to manage Amazon
+RDS. Note that Amazon RDS is asynchronous, which means that some
+interfaces might require techniques such as polling or callback
+functions to determine when a command has been applied. In this
+reference, the parameter descriptions indicate whether a command is
+applied immediately, on the next instance reboot, or during the
+maintenance window. For a summary of the Amazon RDS interfaces, go to
+<http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html#Welcome.Interfaces Available RDS Interfaces>.
+
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-rds)
 and the [AWS API Reference](http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/Welcome.html).
 
+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.
+
+Use of lenses is required for constructing and manipulating types.
+This is due to the amount 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).
 
 ## Contribute
 
diff --git a/amazonka-rds.cabal b/amazonka-rds.cabal
--- a/amazonka-rds.cabal
+++ b/amazonka-rds.cabal
@@ -1,29 +1,60 @@
 name:                  amazonka-rds
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon Relational Database Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2014 Brendan Hay
+copyright:             Copyright (c) 2013-2015 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 extra-source-files:    README.md
 cabal-version:         >= 1.10
 
 description:
-    Amazon Relational Database Service (Amazon RDS) is a web service that makes
-    it easy to set up, operate, and scale a relational database in the cloud. It
-    provides cost-efficient and resizable capacity while managing time-consuming
-    database administration tasks, freeing you up to focus on your applications
-    and business.
+    Amazon Relational Database Service
 
+    Amazon Relational Database Service (Amazon RDS) is a web service that
+    makes it easier to set up, operate, and scale a relational database in
+    the cloud. It provides cost-efficient, resizeable capacity for an
+    industry-standard relational database and manages common database
+    administration tasks, freeing up developers to focus on what makes their
+    applications and businesses unique.
+
+    Amazon RDS gives you access to the capabilities of a MySQL, PostgreSQL,
+    Microsoft SQL Server, Oracle, or Aurora database server. This means the
+    code, applications, and tools you already use today with your existing
+    databases work with Amazon RDS without modification. Amazon RDS
+    automatically backs up your database and maintains the database software
+    that powers your DB instance. Amazon RDS is flexible: you can scale your
+    database instance\'s compute resources and storage capacity to meet your
+    application\'s demand. As with all Amazon Web Services, there are no
+    up-front investments, and you pay only for the resources you use.
+
+    This is an interface reference for Amazon RDS. It contains documentation
+    for a programming or command line interface you can use to manage Amazon
+    RDS. Note that Amazon RDS is asynchronous, which means that some
+    interfaces might require techniques such as polling or callback
+    functions to determine when a command has been applied. In this
+    reference, the parameter descriptions indicate whether a command is
+    applied immediately, on the next instance reboot, or during the
+    maintenance window. For a summary of the Amazon RDS interfaces, go to
+    <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html#Welcome.Interfaces Available RDS Interfaces>.
     .
-    /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/Welcome.html AWS API Reference>
+    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.
     .
-    /Warning:/ This is an experimental preview release which is still under
-    heavy development and not intended for public consumption, caveat emptor!
+    Use of lenses is required for constructing and manipulating types.
+    This is due to the amount 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.RDS" and the <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/Welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -41,9 +72,13 @@
         , Network.AWS.RDS.AddTagsToResource
         , Network.AWS.RDS.ApplyPendingMaintenanceAction
         , Network.AWS.RDS.AuthorizeDBSecurityGroupIngress
+        , Network.AWS.RDS.CopyDBClusterSnapshot
         , Network.AWS.RDS.CopyDBParameterGroup
         , Network.AWS.RDS.CopyDBSnapshot
         , Network.AWS.RDS.CopyOptionGroup
+        , Network.AWS.RDS.CreateDBCluster
+        , Network.AWS.RDS.CreateDBClusterParameterGroup
+        , Network.AWS.RDS.CreateDBClusterSnapshot
         , Network.AWS.RDS.CreateDBInstance
         , Network.AWS.RDS.CreateDBInstanceReadReplica
         , Network.AWS.RDS.CreateDBParameterGroup
@@ -52,6 +87,9 @@
         , Network.AWS.RDS.CreateDBSubnetGroup
         , Network.AWS.RDS.CreateEventSubscription
         , Network.AWS.RDS.CreateOptionGroup
+        , Network.AWS.RDS.DeleteDBCluster
+        , Network.AWS.RDS.DeleteDBClusterParameterGroup
+        , Network.AWS.RDS.DeleteDBClusterSnapshot
         , Network.AWS.RDS.DeleteDBInstance
         , Network.AWS.RDS.DeleteDBParameterGroup
         , Network.AWS.RDS.DeleteDBSecurityGroup
@@ -61,6 +99,10 @@
         , Network.AWS.RDS.DeleteOptionGroup
         , Network.AWS.RDS.DescribeAccountAttributes
         , Network.AWS.RDS.DescribeCertificates
+        , Network.AWS.RDS.DescribeDBClusterParameterGroups
+        , Network.AWS.RDS.DescribeDBClusterParameters
+        , Network.AWS.RDS.DescribeDBClusterSnapshots
+        , Network.AWS.RDS.DescribeDBClusters
         , Network.AWS.RDS.DescribeDBEngineVersions
         , Network.AWS.RDS.DescribeDBInstances
         , Network.AWS.RDS.DescribeDBLogFiles
@@ -69,6 +111,7 @@
         , Network.AWS.RDS.DescribeDBSecurityGroups
         , Network.AWS.RDS.DescribeDBSnapshots
         , Network.AWS.RDS.DescribeDBSubnetGroups
+        , Network.AWS.RDS.DescribeEngineDefaultClusterParameters
         , Network.AWS.RDS.DescribeEngineDefaultParameters
         , Network.AWS.RDS.DescribeEventCategories
         , Network.AWS.RDS.DescribeEventSubscriptions
@@ -80,7 +123,10 @@
         , Network.AWS.RDS.DescribeReservedDBInstances
         , Network.AWS.RDS.DescribeReservedDBInstancesOfferings
         , Network.AWS.RDS.DownloadDBLogFilePortion
+        , Network.AWS.RDS.FailoverDBCluster
         , Network.AWS.RDS.ListTagsForResource
+        , Network.AWS.RDS.ModifyDBCluster
+        , Network.AWS.RDS.ModifyDBClusterParameterGroup
         , Network.AWS.RDS.ModifyDBInstance
         , Network.AWS.RDS.ModifyDBParameterGroup
         , Network.AWS.RDS.ModifyDBSubnetGroup
@@ -91,7 +137,10 @@
         , Network.AWS.RDS.RebootDBInstance
         , Network.AWS.RDS.RemoveSourceIdentifierFromSubscription
         , Network.AWS.RDS.RemoveTagsFromResource
+        , Network.AWS.RDS.ResetDBClusterParameterGroup
         , Network.AWS.RDS.ResetDBParameterGroup
+        , Network.AWS.RDS.RestoreDBClusterFromSnapshot
+        , Network.AWS.RDS.RestoreDBClusterToPointInTime
         , Network.AWS.RDS.RestoreDBInstanceFromDBSnapshot
         , Network.AWS.RDS.RestoreDBInstanceToPointInTime
         , Network.AWS.RDS.RevokeDBSecurityGroupIngress
@@ -99,7 +148,37 @@
         , Network.AWS.RDS.Waiters
 
     other-modules:
+          Network.AWS.RDS.Types.Product
+        , Network.AWS.RDS.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-rds-test
+    type:              exitcode-stdio-1.0
+    default-language:  Haskell2010
+    hs-source-dirs:    test
+    main-is:           Main.hs
+
+    ghc-options:       -Wall -threaded
+
+    -- This is not comprehensive if modules have manually been added.
+    -- It exists to ensure cabal 'somewhat' detects test module changes.
+    other-modules:
+          Test.AWS.RDS
+        , Test.AWS.Gen.RDS
+        , Test.AWS.RDS.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-rds == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/gen/Network/AWS/RDS.hs b/gen/Network/AWS/RDS.hs
--- a/gen/Network/AWS/RDS.hs
+++ b/gen/Network/AWS/RDS.hs
@@ -1,140 +1,1126 @@
--- Module      : Network.AWS.RDS
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Amazon Relational Database Service (Amazon RDS) is a web service that makes
--- it easy to set up, operate, and scale a relational database in the cloud. It
--- provides cost-efficient and resizable capacity while managing time-consuming
--- database administration tasks, freeing you up to focus on your applications
--- and business.
-module Network.AWS.RDS
-    ( module Network.AWS.RDS.AddSourceIdentifierToSubscription
-    , module Network.AWS.RDS.AddTagsToResource
-    , module Network.AWS.RDS.ApplyPendingMaintenanceAction
-    , module Network.AWS.RDS.AuthorizeDBSecurityGroupIngress
-    , module Network.AWS.RDS.CopyDBParameterGroup
-    , module Network.AWS.RDS.CopyDBSnapshot
-    , module Network.AWS.RDS.CopyOptionGroup
-    , module Network.AWS.RDS.CreateDBInstance
-    , module Network.AWS.RDS.CreateDBInstanceReadReplica
-    , module Network.AWS.RDS.CreateDBParameterGroup
-    , module Network.AWS.RDS.CreateDBSecurityGroup
-    , module Network.AWS.RDS.CreateDBSnapshot
-    , module Network.AWS.RDS.CreateDBSubnetGroup
-    , module Network.AWS.RDS.CreateEventSubscription
-    , module Network.AWS.RDS.CreateOptionGroup
-    , module Network.AWS.RDS.DeleteDBInstance
-    , module Network.AWS.RDS.DeleteDBParameterGroup
-    , module Network.AWS.RDS.DeleteDBSecurityGroup
-    , module Network.AWS.RDS.DeleteDBSnapshot
-    , module Network.AWS.RDS.DeleteDBSubnetGroup
-    , module Network.AWS.RDS.DeleteEventSubscription
-    , module Network.AWS.RDS.DeleteOptionGroup
-    , module Network.AWS.RDS.DescribeAccountAttributes
-    , module Network.AWS.RDS.DescribeCertificates
-    , module Network.AWS.RDS.DescribeDBEngineVersions
-    , module Network.AWS.RDS.DescribeDBInstances
-    , module Network.AWS.RDS.DescribeDBLogFiles
-    , module Network.AWS.RDS.DescribeDBParameterGroups
-    , module Network.AWS.RDS.DescribeDBParameters
-    , module Network.AWS.RDS.DescribeDBSecurityGroups
-    , module Network.AWS.RDS.DescribeDBSnapshots
-    , module Network.AWS.RDS.DescribeDBSubnetGroups
-    , module Network.AWS.RDS.DescribeEngineDefaultParameters
-    , module Network.AWS.RDS.DescribeEventCategories
-    , module Network.AWS.RDS.DescribeEventSubscriptions
-    , module Network.AWS.RDS.DescribeEvents
-    , module Network.AWS.RDS.DescribeOptionGroupOptions
-    , module Network.AWS.RDS.DescribeOptionGroups
-    , module Network.AWS.RDS.DescribeOrderableDBInstanceOptions
-    , module Network.AWS.RDS.DescribePendingMaintenanceActions
-    , module Network.AWS.RDS.DescribeReservedDBInstances
-    , module Network.AWS.RDS.DescribeReservedDBInstancesOfferings
-    , module Network.AWS.RDS.DownloadDBLogFilePortion
-    , module Network.AWS.RDS.ListTagsForResource
-    , module Network.AWS.RDS.ModifyDBInstance
-    , module Network.AWS.RDS.ModifyDBParameterGroup
-    , module Network.AWS.RDS.ModifyDBSubnetGroup
-    , module Network.AWS.RDS.ModifyEventSubscription
-    , module Network.AWS.RDS.ModifyOptionGroup
-    , module Network.AWS.RDS.PromoteReadReplica
-    , module Network.AWS.RDS.PurchaseReservedDBInstancesOffering
-    , module Network.AWS.RDS.RebootDBInstance
-    , module Network.AWS.RDS.RemoveSourceIdentifierFromSubscription
-    , module Network.AWS.RDS.RemoveTagsFromResource
-    , module Network.AWS.RDS.ResetDBParameterGroup
-    , module Network.AWS.RDS.RestoreDBInstanceFromDBSnapshot
-    , module Network.AWS.RDS.RestoreDBInstanceToPointInTime
-    , module Network.AWS.RDS.RevokeDBSecurityGroupIngress
-    , module Network.AWS.RDS.Types
-    , module Network.AWS.RDS.Waiters
-    ) where
-
-import Network.AWS.RDS.AddSourceIdentifierToSubscription
-import Network.AWS.RDS.AddTagsToResource
-import Network.AWS.RDS.ApplyPendingMaintenanceAction
-import Network.AWS.RDS.AuthorizeDBSecurityGroupIngress
-import Network.AWS.RDS.CopyDBParameterGroup
-import Network.AWS.RDS.CopyDBSnapshot
-import Network.AWS.RDS.CopyOptionGroup
-import Network.AWS.RDS.CreateDBInstance
-import Network.AWS.RDS.CreateDBInstanceReadReplica
-import Network.AWS.RDS.CreateDBParameterGroup
-import Network.AWS.RDS.CreateDBSecurityGroup
-import Network.AWS.RDS.CreateDBSnapshot
-import Network.AWS.RDS.CreateDBSubnetGroup
-import Network.AWS.RDS.CreateEventSubscription
-import Network.AWS.RDS.CreateOptionGroup
-import Network.AWS.RDS.DeleteDBInstance
-import Network.AWS.RDS.DeleteDBParameterGroup
-import Network.AWS.RDS.DeleteDBSecurityGroup
-import Network.AWS.RDS.DeleteDBSnapshot
-import Network.AWS.RDS.DeleteDBSubnetGroup
-import Network.AWS.RDS.DeleteEventSubscription
-import Network.AWS.RDS.DeleteOptionGroup
-import Network.AWS.RDS.DescribeAccountAttributes
-import Network.AWS.RDS.DescribeCertificates
-import Network.AWS.RDS.DescribeDBEngineVersions
-import Network.AWS.RDS.DescribeDBInstances
-import Network.AWS.RDS.DescribeDBLogFiles
-import Network.AWS.RDS.DescribeDBParameterGroups
-import Network.AWS.RDS.DescribeDBParameters
-import Network.AWS.RDS.DescribeDBSecurityGroups
-import Network.AWS.RDS.DescribeDBSnapshots
-import Network.AWS.RDS.DescribeDBSubnetGroups
-import Network.AWS.RDS.DescribeEngineDefaultParameters
-import Network.AWS.RDS.DescribeEventCategories
-import Network.AWS.RDS.DescribeEventSubscriptions
-import Network.AWS.RDS.DescribeEvents
-import Network.AWS.RDS.DescribeOptionGroupOptions
-import Network.AWS.RDS.DescribeOptionGroups
-import Network.AWS.RDS.DescribeOrderableDBInstanceOptions
-import Network.AWS.RDS.DescribePendingMaintenanceActions
-import Network.AWS.RDS.DescribeReservedDBInstances
-import Network.AWS.RDS.DescribeReservedDBInstancesOfferings
-import Network.AWS.RDS.DownloadDBLogFilePortion
-import Network.AWS.RDS.ListTagsForResource
-import Network.AWS.RDS.ModifyDBInstance
-import Network.AWS.RDS.ModifyDBParameterGroup
-import Network.AWS.RDS.ModifyDBSubnetGroup
-import Network.AWS.RDS.ModifyEventSubscription
-import Network.AWS.RDS.ModifyOptionGroup
-import Network.AWS.RDS.PromoteReadReplica
-import Network.AWS.RDS.PurchaseReservedDBInstancesOffering
-import Network.AWS.RDS.RebootDBInstance
-import Network.AWS.RDS.RemoveSourceIdentifierFromSubscription
-import Network.AWS.RDS.RemoveTagsFromResource
-import Network.AWS.RDS.ResetDBParameterGroup
-import Network.AWS.RDS.RestoreDBInstanceFromDBSnapshot
-import Network.AWS.RDS.RestoreDBInstanceToPointInTime
-import Network.AWS.RDS.RevokeDBSecurityGroupIngress
-import Network.AWS.RDS.Types
-import Network.AWS.RDS.Waiters
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Amazon Relational Database Service
+--
+-- Amazon Relational Database Service (Amazon RDS) is a web service that
+-- makes it easier to set up, operate, and scale a relational database in
+-- the cloud. It provides cost-efficient, resizeable capacity for an
+-- industry-standard relational database and manages common database
+-- administration tasks, freeing up developers to focus on what makes their
+-- applications and businesses unique.
+--
+-- Amazon RDS gives you access to the capabilities of a MySQL, PostgreSQL,
+-- Microsoft SQL Server, Oracle, or Aurora database server. This means the
+-- code, applications, and tools you already use today with your existing
+-- databases work with Amazon RDS without modification. Amazon RDS
+-- automatically backs up your database and maintains the database software
+-- that powers your DB instance. Amazon RDS is flexible: you can scale your
+-- database instance\'s compute resources and storage capacity to meet your
+-- application\'s demand. As with all Amazon Web Services, there are no
+-- up-front investments, and you pay only for the resources you use.
+--
+-- This is an interface reference for Amazon RDS. It contains documentation
+-- for a programming or command line interface you can use to manage Amazon
+-- RDS. Note that Amazon RDS is asynchronous, which means that some
+-- interfaces might require techniques such as polling or callback
+-- functions to determine when a command has been applied. In this
+-- reference, the parameter descriptions indicate whether a command is
+-- applied immediately, on the next instance reboot, or during the
+-- maintenance window. For a summary of the Amazon RDS interfaces, go to
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html#Welcome.Interfaces Available RDS Interfaces>.
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/Welcome.html AWS API Reference>
+module Network.AWS.RDS
+    (
+    -- * Service
+      RDS
+
+    -- * Errors
+    -- $errors
+
+    -- ** CertificateNotFoundFault
+    , _CertificateNotFoundFault
+
+    -- ** ReservedDBInstanceQuotaExceededFault
+    , _ReservedDBInstanceQuotaExceededFault
+
+    -- ** DBClusterSnapshotAlreadyExistsFault
+    , _DBClusterSnapshotAlreadyExistsFault
+
+    -- ** AuthorizationQuotaExceededFault
+    , _AuthorizationQuotaExceededFault
+
+    -- ** SourceNotFoundFault
+    , _SourceNotFoundFault
+
+    -- ** InvalidDBParameterGroupStateFault
+    , _InvalidDBParameterGroupStateFault
+
+    -- ** DBParameterGroupAlreadyExistsFault
+    , _DBParameterGroupAlreadyExistsFault
+
+    -- ** PointInTimeRestoreNotEnabledFault
+    , _PointInTimeRestoreNotEnabledFault
+
+    -- ** DBParameterGroupQuotaExceededFault
+    , _DBParameterGroupQuotaExceededFault
+
+    -- ** ProvisionedIOPSNotAvailableInAZFault
+    , _ProvisionedIOPSNotAvailableInAZFault
+
+    -- ** AuthorizationAlreadyExistsFault
+    , _AuthorizationAlreadyExistsFault
+
+    -- ** InsufficientDBClusterCapacityFault
+    , _InsufficientDBClusterCapacityFault
+
+    -- ** ReservedDBInstanceAlreadyExistsFault
+    , _ReservedDBInstanceAlreadyExistsFault
+
+    -- ** SubscriptionCategoryNotFoundFault
+    , _SubscriptionCategoryNotFoundFault
+
+    -- ** DBSubnetQuotaExceededFault
+    , _DBSubnetQuotaExceededFault
+
+    -- ** SubscriptionNotFoundFault
+    , _SubscriptionNotFoundFault
+
+    -- ** InvalidSubnet
+    , _InvalidSubnet
+
+    -- ** DBClusterNotFoundFault
+    , _DBClusterNotFoundFault
+
+    -- ** OptionGroupNotFoundFault
+    , _OptionGroupNotFoundFault
+
+    -- ** DBLogFileNotFoundFault
+    , _DBLogFileNotFoundFault
+
+    -- ** OptionGroupAlreadyExistsFault
+    , _OptionGroupAlreadyExistsFault
+
+    -- ** DBClusterAlreadyExistsFault
+    , _DBClusterAlreadyExistsFault
+
+    -- ** StorageTypeNotSupportedFault
+    , _StorageTypeNotSupportedFault
+
+    -- ** DBSecurityGroupQuotaExceededFault
+    , _DBSecurityGroupQuotaExceededFault
+
+    -- ** DBSnapshotNotFoundFault
+    , _DBSnapshotNotFoundFault
+
+    -- ** InvalidEventSubscriptionStateFault
+    , _InvalidEventSubscriptionStateFault
+
+    -- ** KMSKeyNotAccessibleFault
+    , _KMSKeyNotAccessibleFault
+
+    -- ** OptionGroupQuotaExceededFault
+    , _OptionGroupQuotaExceededFault
+
+    -- ** DBSecurityGroupAlreadyExistsFault
+    , _DBSecurityGroupAlreadyExistsFault
+
+    -- ** SnapshotQuotaExceededFault
+    , _SnapshotQuotaExceededFault
+
+    -- ** SNSTopicARNNotFoundFault
+    , _SNSTopicARNNotFoundFault
+
+    -- ** DBClusterQuotaExceededFault
+    , _DBClusterQuotaExceededFault
+
+    -- ** DBClusterParameterGroupNotFoundFault
+    , _DBClusterParameterGroupNotFoundFault
+
+    -- ** DBSubnetGroupAlreadyExistsFault
+    , _DBSubnetGroupAlreadyExistsFault
+
+    -- ** InstanceQuotaExceededFault
+    , _InstanceQuotaExceededFault
+
+    -- ** SNSNoAuthorizationFault
+    , _SNSNoAuthorizationFault
+
+    -- ** DBSecurityGroupNotFoundFault
+    , _DBSecurityGroupNotFoundFault
+
+    -- ** DBSecurityGroupNotSupportedFault
+    , _DBSecurityGroupNotSupportedFault
+
+    -- ** DomainNotFoundFault
+    , _DomainNotFoundFault
+
+    -- ** DBClusterSnapshotNotFoundFault
+    , _DBClusterSnapshotNotFoundFault
+
+    -- ** ReservedDBInstancesOfferingNotFoundFault
+    , _ReservedDBInstancesOfferingNotFoundFault
+
+    -- ** InvalidDBSubnetGroupFault
+    , _InvalidDBSubnetGroupFault
+
+    -- ** InvalidDBSubnetStateFault
+    , _InvalidDBSubnetStateFault
+
+    -- ** DBParameterGroupNotFoundFault
+    , _DBParameterGroupNotFoundFault
+
+    -- ** SNSInvalidTopicFault
+    , _SNSInvalidTopicFault
+
+    -- ** SubscriptionAlreadyExistFault
+    , _SubscriptionAlreadyExistFault
+
+    -- ** InvalidDBClusterSnapshotStateFault
+    , _InvalidDBClusterSnapshotStateFault
+
+    -- ** InsufficientDBInstanceCapacityFault
+    , _InsufficientDBInstanceCapacityFault
+
+    -- ** InvalidVPCNetworkStateFault
+    , _InvalidVPCNetworkStateFault
+
+    -- ** AuthorizationNotFoundFault
+    , _AuthorizationNotFoundFault
+
+    -- ** ReservedDBInstanceNotFoundFault
+    , _ReservedDBInstanceNotFoundFault
+
+    -- ** DBSubnetGroupQuotaExceededFault
+    , _DBSubnetGroupQuotaExceededFault
+
+    -- ** DBSubnetGroupNotAllowedFault
+    , _DBSubnetGroupNotAllowedFault
+
+    -- ** EventSubscriptionQuotaExceededFault
+    , _EventSubscriptionQuotaExceededFault
+
+    -- ** InvalidOptionGroupStateFault
+    , _InvalidOptionGroupStateFault
+
+    -- ** InvalidDBClusterStateFault
+    , _InvalidDBClusterStateFault
+
+    -- ** InsufficientStorageClusterCapacityFault
+    , _InsufficientStorageClusterCapacityFault
+
+    -- ** DBInstanceAlreadyExistsFault
+    , _DBInstanceAlreadyExistsFault
+
+    -- ** ResourceNotFoundFault
+    , _ResourceNotFoundFault
+
+    -- ** DBUpgradeDependencyFailureFault
+    , _DBUpgradeDependencyFailureFault
+
+    -- ** InvalidDBSecurityGroupStateFault
+    , _InvalidDBSecurityGroupStateFault
+
+    -- ** InsufficientDomainCapacityFault
+    , _InsufficientDomainCapacityFault
+
+    -- ** DBSubnetGroupNotFoundFault
+    , _DBSubnetGroupNotFoundFault
+
+    -- ** InvalidRestoreFault
+    , _InvalidRestoreFault
+
+    -- ** InvalidDBInstanceStateFault
+    , _InvalidDBInstanceStateFault
+
+    -- ** InvalidDBSnapshotStateFault
+    , _InvalidDBSnapshotStateFault
+
+    -- ** InvalidDBSubnetGroupStateFault
+    , _InvalidDBSubnetGroupStateFault
+
+    -- ** StorageQuotaExceededFault
+    , _StorageQuotaExceededFault
+
+    -- ** DBSnapshotAlreadyExistsFault
+    , _DBSnapshotAlreadyExistsFault
+
+    -- ** DBInstanceNotFoundFault
+    , _DBInstanceNotFoundFault
+
+    -- ** SubnetAlreadyInUse
+    , _SubnetAlreadyInUse
+
+    -- ** DBSubnetGroupDoesNotCoverEnoughAZs
+    , _DBSubnetGroupDoesNotCoverEnoughAZs
+
+    -- * Waiters
+    -- $waiters
+
+    -- ** DBInstanceAvailable
+    , dbInstanceAvailable
+
+    -- ** DBSnapshotCompleted
+    , dbSnapshotCompleted
+
+    -- ** DBInstanceDeleted
+    , dbInstanceDeleted
+
+    -- * Operations
+    -- $operations
+
+    -- ** DescribeDBEngineVersions (Paginated)
+    , module Network.AWS.RDS.DescribeDBEngineVersions
+
+    -- ** DescribeDBClusterParameterGroups
+    , module Network.AWS.RDS.DescribeDBClusterParameterGroups
+
+    -- ** PromoteReadReplica
+    , module Network.AWS.RDS.PromoteReadReplica
+
+    -- ** ModifyEventSubscription
+    , module Network.AWS.RDS.ModifyEventSubscription
+
+    -- ** CopyDBSnapshot
+    , module Network.AWS.RDS.CopyDBSnapshot
+
+    -- ** AddSourceIdentifierToSubscription
+    , module Network.AWS.RDS.AddSourceIdentifierToSubscription
+
+    -- ** ModifyDBInstance
+    , module Network.AWS.RDS.ModifyDBInstance
+
+    -- ** ResetDBClusterParameterGroup
+    , module Network.AWS.RDS.ResetDBClusterParameterGroup
+
+    -- ** DescribeEvents (Paginated)
+    , module Network.AWS.RDS.DescribeEvents
+
+    -- ** DescribeEngineDefaultParameters (Paginated)
+    , module Network.AWS.RDS.DescribeEngineDefaultParameters
+
+    -- ** DescribeDBClusters
+    , module Network.AWS.RDS.DescribeDBClusters
+
+    -- ** ModifyDBSubnetGroup
+    , module Network.AWS.RDS.ModifyDBSubnetGroup
+
+    -- ** DescribeDBLogFiles (Paginated)
+    , module Network.AWS.RDS.DescribeDBLogFiles
+
+    -- ** ListTagsForResource
+    , module Network.AWS.RDS.ListTagsForResource
+
+    -- ** DescribeOptionGroups (Paginated)
+    , module Network.AWS.RDS.DescribeOptionGroups
+
+    -- ** DeleteDBCluster
+    , module Network.AWS.RDS.DeleteDBCluster
+
+    -- ** RemoveSourceIdentifierFromSubscription
+    , module Network.AWS.RDS.RemoveSourceIdentifierFromSubscription
+
+    -- ** CopyDBParameterGroup
+    , module Network.AWS.RDS.CopyDBParameterGroup
+
+    -- ** DescribeReservedDBInstances (Paginated)
+    , module Network.AWS.RDS.DescribeReservedDBInstances
+
+    -- ** DeleteOptionGroup
+    , module Network.AWS.RDS.DeleteOptionGroup
+
+    -- ** DescribeEngineDefaultClusterParameters
+    , module Network.AWS.RDS.DescribeEngineDefaultClusterParameters
+
+    -- ** CreateEventSubscription
+    , module Network.AWS.RDS.CreateEventSubscription
+
+    -- ** RemoveTagsFromResource
+    , module Network.AWS.RDS.RemoveTagsFromResource
+
+    -- ** CreateDBInstance
+    , module Network.AWS.RDS.CreateDBInstance
+
+    -- ** RestoreDBInstanceFromDBSnapshot
+    , module Network.AWS.RDS.RestoreDBInstanceFromDBSnapshot
+
+    -- ** AuthorizeDBSecurityGroupIngress
+    , module Network.AWS.RDS.AuthorizeDBSecurityGroupIngress
+
+    -- ** DeleteDBClusterParameterGroup
+    , module Network.AWS.RDS.DeleteDBClusterParameterGroup
+
+    -- ** PurchaseReservedDBInstancesOffering
+    , module Network.AWS.RDS.PurchaseReservedDBInstancesOffering
+
+    -- ** DescribeCertificates
+    , module Network.AWS.RDS.DescribeCertificates
+
+    -- ** RestoreDBClusterFromSnapshot
+    , module Network.AWS.RDS.RestoreDBClusterFromSnapshot
+
+    -- ** CreateDBSnapshot
+    , module Network.AWS.RDS.CreateDBSnapshot
+
+    -- ** DeleteEventSubscription
+    , module Network.AWS.RDS.DeleteEventSubscription
+
+    -- ** DescribeDBParameterGroups (Paginated)
+    , module Network.AWS.RDS.DescribeDBParameterGroups
+
+    -- ** DescribeOrderableDBInstanceOptions (Paginated)
+    , module Network.AWS.RDS.DescribeOrderableDBInstanceOptions
+
+    -- ** CreateDBClusterParameterGroup
+    , module Network.AWS.RDS.CreateDBClusterParameterGroup
+
+    -- ** DescribeEventSubscriptions (Paginated)
+    , module Network.AWS.RDS.DescribeEventSubscriptions
+
+    -- ** AddTagsToResource
+    , module Network.AWS.RDS.AddTagsToResource
+
+    -- ** DescribeOptionGroupOptions (Paginated)
+    , module Network.AWS.RDS.DescribeOptionGroupOptions
+
+    -- ** DescribeDBParameters (Paginated)
+    , module Network.AWS.RDS.DescribeDBParameters
+
+    -- ** DeleteDBClusterSnapshot
+    , module Network.AWS.RDS.DeleteDBClusterSnapshot
+
+    -- ** DescribeDBSnapshots (Paginated)
+    , module Network.AWS.RDS.DescribeDBSnapshots
+
+    -- ** DescribeDBSubnetGroups (Paginated)
+    , module Network.AWS.RDS.DescribeDBSubnetGroups
+
+    -- ** CreateDBParameterGroup
+    , module Network.AWS.RDS.CreateDBParameterGroup
+
+    -- ** CreateDBClusterSnapshot
+    , module Network.AWS.RDS.CreateDBClusterSnapshot
+
+    -- ** ModifyOptionGroup
+    , module Network.AWS.RDS.ModifyOptionGroup
+
+    -- ** ModifyDBCluster
+    , module Network.AWS.RDS.ModifyDBCluster
+
+    -- ** DescribeEventCategories
+    , module Network.AWS.RDS.DescribeEventCategories
+
+    -- ** ModifyDBClusterParameterGroup
+    , module Network.AWS.RDS.ModifyDBClusterParameterGroup
+
+    -- ** DescribePendingMaintenanceActions
+    , module Network.AWS.RDS.DescribePendingMaintenanceActions
+
+    -- ** RestoreDBInstanceToPointInTime
+    , module Network.AWS.RDS.RestoreDBInstanceToPointInTime
+
+    -- ** ResetDBParameterGroup
+    , module Network.AWS.RDS.ResetDBParameterGroup
+
+    -- ** CopyDBClusterSnapshot
+    , module Network.AWS.RDS.CopyDBClusterSnapshot
+
+    -- ** ModifyDBParameterGroup
+    , module Network.AWS.RDS.ModifyDBParameterGroup
+
+    -- ** FailoverDBCluster
+    , module Network.AWS.RDS.FailoverDBCluster
+
+    -- ** CreateDBCluster
+    , module Network.AWS.RDS.CreateDBCluster
+
+    -- ** CreateOptionGroup
+    , module Network.AWS.RDS.CreateOptionGroup
+
+    -- ** ApplyPendingMaintenanceAction
+    , module Network.AWS.RDS.ApplyPendingMaintenanceAction
+
+    -- ** RevokeDBSecurityGroupIngress
+    , module Network.AWS.RDS.RevokeDBSecurityGroupIngress
+
+    -- ** DeleteDBSnapshot
+    , module Network.AWS.RDS.DeleteDBSnapshot
+
+    -- ** DescribeDBClusterParameters
+    , module Network.AWS.RDS.DescribeDBClusterParameters
+
+    -- ** CreateDBSecurityGroup
+    , module Network.AWS.RDS.CreateDBSecurityGroup
+
+    -- ** DeleteDBSubnetGroup
+    , module Network.AWS.RDS.DeleteDBSubnetGroup
+
+    -- ** DescribeAccountAttributes
+    , module Network.AWS.RDS.DescribeAccountAttributes
+
+    -- ** DeleteDBSecurityGroup
+    , module Network.AWS.RDS.DeleteDBSecurityGroup
+
+    -- ** RebootDBInstance
+    , module Network.AWS.RDS.RebootDBInstance
+
+    -- ** DescribeDBClusterSnapshots
+    , module Network.AWS.RDS.DescribeDBClusterSnapshots
+
+    -- ** CreateDBSubnetGroup
+    , module Network.AWS.RDS.CreateDBSubnetGroup
+
+    -- ** DescribeReservedDBInstancesOfferings (Paginated)
+    , module Network.AWS.RDS.DescribeReservedDBInstancesOfferings
+
+    -- ** DeleteDBInstance
+    , module Network.AWS.RDS.DeleteDBInstance
+
+    -- ** DescribeDBInstances (Paginated)
+    , module Network.AWS.RDS.DescribeDBInstances
+
+    -- ** CopyOptionGroup
+    , module Network.AWS.RDS.CopyOptionGroup
+
+    -- ** DownloadDBLogFilePortion (Paginated)
+    , module Network.AWS.RDS.DownloadDBLogFilePortion
+
+    -- ** CreateDBInstanceReadReplica
+    , module Network.AWS.RDS.CreateDBInstanceReadReplica
+
+    -- ** RestoreDBClusterToPointInTime
+    , module Network.AWS.RDS.RestoreDBClusterToPointInTime
+
+    -- ** DeleteDBParameterGroup
+    , module Network.AWS.RDS.DeleteDBParameterGroup
+
+    -- ** DescribeDBSecurityGroups (Paginated)
+    , module Network.AWS.RDS.DescribeDBSecurityGroups
+
+    -- * Types
+
+    -- ** ApplyMethod
+    , ApplyMethod (..)
+
+    -- ** SourceType
+    , SourceType (..)
+
+    -- ** AccountQuota
+    , AccountQuota
+    , accountQuota
+    , aqMax
+    , aqUsed
+    , aqAccountQuotaName
+
+    -- ** AvailabilityZone
+    , AvailabilityZone
+    , availabilityZone
+    , azName
+
+    -- ** Certificate
+    , Certificate
+    , certificate
+    , cCertificateType
+    , cValidTill
+    , cCertificateIdentifier
+    , cThumbprint
+    , cValidFrom
+
+    -- ** CharacterSet
+    , CharacterSet
+    , characterSet
+    , csCharacterSetName
+    , csCharacterSetDescription
+
+    -- ** DBCluster
+    , DBCluster
+    , dbCluster
+    , dcEngineVersion
+    , dcStatus
+    , dcDBClusterIdentifier
+    , dcDBClusterMembers
+    , dcDBClusterParameterGroup
+    , dcMasterUsername
+    , dcEarliestRestorableTime
+    , dcEngine
+    , dcLatestRestorableTime
+    , dcPreferredMaintenanceWindow
+    , dcCharacterSetName
+    , dcAvailabilityZones
+    , dcPreferredBackupWindow
+    , dcVPCSecurityGroups
+    , dcBackupRetentionPeriod
+    , dcDatabaseName
+    , dcDBSubnetGroup
+    , dcAllocatedStorage
+    , dcEndpoint
+    , dcPercentProgress
+    , dcPort
+    , dcDBClusterOptionGroupMemberships
+
+    -- ** DBClusterMember
+    , DBClusterMember
+    , dbClusterMember
+    , dcmDBInstanceIdentifier
+    , dcmIsClusterWriter
+    , dcmDBClusterParameterGroupStatus
+
+    -- ** DBClusterOptionGroupStatus
+    , DBClusterOptionGroupStatus
+    , dbClusterOptionGroupStatus
+    , dcogsStatus
+    , dcogsDBClusterOptionGroupName
+
+    -- ** DBClusterParameterGroup
+    , DBClusterParameterGroup
+    , dbClusterParameterGroup
+    , dcpgDBParameterGroupFamily
+    , dcpgDBClusterParameterGroupName
+    , dcpgDescription
+
+    -- ** DBClusterParameterGroupNameMessage
+    , DBClusterParameterGroupNameMessage
+    , dbClusterParameterGroupNameMessage
+    , dcpgnmDBClusterParameterGroupName
+
+    -- ** DBClusterSnapshot
+    , DBClusterSnapshot
+    , dbClusterSnapshot
+    , dcsEngineVersion
+    , dcsStatus
+    , dcsDBClusterIdentifier
+    , dcsMasterUsername
+    , dcsVPCId
+    , dcsDBClusterSnapshotIdentifier
+    , dcsEngine
+    , dcsLicenseModel
+    , dcsSnapshotType
+    , dcsAvailabilityZones
+    , dcsSnapshotCreateTime
+    , dcsAllocatedStorage
+    , dcsClusterCreateTime
+    , dcsPercentProgress
+    , dcsPort
+
+    -- ** DBEngineVersion
+    , DBEngineVersion
+    , dbEngineVersion
+    , devDBEngineVersionDescription
+    , devEngineVersion
+    , devDefaultCharacterSet
+    , devSupportedCharacterSets
+    , devEngine
+    , devDBParameterGroupFamily
+    , devDBEngineDescription
+
+    -- ** DBInstance
+    , DBInstance
+    , dbInstance
+    , diDBSecurityGroups
+    , diEngineVersion
+    , diStorageEncrypted
+    , diDBClusterIdentifier
+    , diAutoMinorVersionUpgrade
+    , diMasterUsername
+    , diPubliclyAccessible
+    , diReadReplicaDBInstanceIdentifiers
+    , diIOPS
+    , diInstanceCreateTime
+    , diReadReplicaSourceDBInstanceIdentifier
+    , diEngine
+    , diLatestRestorableTime
+    , diDBInstanceClass
+    , diLicenseModel
+    , diPreferredMaintenanceWindow
+    , diCharacterSetName
+    , diDBInstanceIdentifier
+    , diCACertificateIdentifier
+    , diPreferredBackupWindow
+    , diAvailabilityZone
+    , diVPCSecurityGroups
+    , diBackupRetentionPeriod
+    , diKMSKeyId
+    , diDBSubnetGroup
+    , diMultiAZ
+    , diSecondaryAvailabilityZone
+    , diOptionGroupMemberships
+    , diDBiResourceId
+    , diAllocatedStorage
+    , diEndpoint
+    , diDBParameterGroups
+    , diTDECredentialARN
+    , diCopyTagsToSnapshot
+    , diDBInstanceStatus
+    , diDBInstancePort
+    , diPendingModifiedValues
+    , diStatusInfos
+    , diDBName
+    , diDomainMemberships
+    , diStorageType
+
+    -- ** DBInstanceStatusInfo
+    , DBInstanceStatusInfo
+    , dbInstanceStatusInfo
+    , disiStatus
+    , disiNormal
+    , disiStatusType
+    , disiMessage
+
+    -- ** DBParameterGroup
+    , DBParameterGroup
+    , dbParameterGroup
+    , dpgDBParameterGroupFamily
+    , dpgDBParameterGroupName
+    , dpgDescription
+
+    -- ** DBParameterGroupNameMessage
+    , DBParameterGroupNameMessage
+    , dbParameterGroupNameMessage
+    , dpgnmDBParameterGroupName
+
+    -- ** DBParameterGroupStatus
+    , DBParameterGroupStatus
+    , dbParameterGroupStatus
+    , dpgsDBParameterGroupName
+    , dpgsParameterApplyStatus
+
+    -- ** DBSecurityGroup
+    , DBSecurityGroup
+    , dbSecurityGroup
+    , dsgVPCId
+    , dsgOwnerId
+    , dsgIPRanges
+    , dsgDBSecurityGroupName
+    , dsgEC2SecurityGroups
+    , dsgDBSecurityGroupDescription
+
+    -- ** DBSecurityGroupMembership
+    , DBSecurityGroupMembership
+    , dbSecurityGroupMembership
+    , dsgmStatus
+    , dsgmDBSecurityGroupName
+
+    -- ** DBSnapshot
+    , DBSnapshot
+    , dbSnapshot
+    , dsEngineVersion
+    , dsStatus
+    , dsMasterUsername
+    , dsSourceRegion
+    , dsIOPS
+    , dsInstanceCreateTime
+    , dsVPCId
+    , dsEngine
+    , dsEncrypted
+    , dsDBSnapshotIdentifier
+    , dsLicenseModel
+    , dsSnapshotType
+    , dsDBInstanceIdentifier
+    , dsSourceDBSnapshotIdentifier
+    , dsAvailabilityZone
+    , dsKMSKeyId
+    , dsSnapshotCreateTime
+    , dsAllocatedStorage
+    , dsTDECredentialARN
+    , dsOptionGroupName
+    , dsPercentProgress
+    , dsPort
+    , dsStorageType
+
+    -- ** DBSubnetGroup
+    , DBSubnetGroup
+    , dbSubnetGroup
+    , dbsgDBSubnetGroupName
+    , dbsgVPCId
+    , dbsgSubnets
+    , dbsgDBSubnetGroupDescription
+    , dbsgSubnetGroupStatus
+
+    -- ** DescribeDBLogFilesDetails
+    , DescribeDBLogFilesDetails
+    , describeDBLogFilesDetails
+    , ddlfdLastWritten
+    , ddlfdSize
+    , ddlfdLogFileName
+
+    -- ** DomainMembership
+    , DomainMembership
+    , domainMembership
+    , dmStatus
+    , dmDomain
+    , dmConnectivity
+
+    -- ** EC2SecurityGroup
+    , EC2SecurityGroup
+    , ec2SecurityGroup
+    , esgStatus
+    , esgEC2SecurityGroupOwnerId
+    , esgEC2SecurityGroupName
+    , esgEC2SecurityGroupId
+
+    -- ** Endpoint
+    , Endpoint
+    , endpoint
+    , eAddress
+    , ePort
+
+    -- ** EngineDefaults
+    , EngineDefaults
+    , engineDefaults
+    , edDBParameterGroupFamily
+    , edParameters
+    , edMarker
+
+    -- ** Event
+    , Event
+    , event
+    , eSourceType
+    , eSourceIdentifier
+    , eDate
+    , eEventCategories
+    , eMessage
+
+    -- ** EventCategoriesMap
+    , EventCategoriesMap
+    , eventCategoriesMap
+    , ecmSourceType
+    , ecmEventCategories
+
+    -- ** EventSubscription
+    , EventSubscription
+    , eventSubscription
+    , esCustomerAWSId
+    , esStatus
+    , esCustSubscriptionId
+    , esSNSTopicARN
+    , esEnabled
+    , esSourceType
+    , esSubscriptionCreationTime
+    , esEventCategoriesList
+    , esSourceIdsList
+
+    -- ** Filter
+    , Filter
+    , filter'
+    , fName
+    , fValues
+
+    -- ** IPRange
+    , IPRange
+    , ipRange
+    , irStatus
+    , irCIdRIP
+
+    -- ** Option
+    , Option
+    , option
+    , oOptionName
+    , oPermanent
+    , oPersistent
+    , oOptionDescription
+    , oOptionSettings
+    , oVPCSecurityGroupMemberships
+    , oDBSecurityGroupMemberships
+    , oPort
+
+    -- ** OptionConfiguration
+    , OptionConfiguration
+    , optionConfiguration
+    , ocOptionSettings
+    , ocVPCSecurityGroupMemberships
+    , ocDBSecurityGroupMemberships
+    , ocPort
+    , ocOptionName
+
+    -- ** OptionGroup
+    , OptionGroup
+    , optionGroup
+    , ogOptionGroupDescription
+    , ogVPCId
+    , ogAllowsVPCAndNonVPCInstanceMemberships
+    , ogEngineName
+    , ogMajorEngineVersion
+    , ogOptions
+    , ogOptionGroupName
+
+    -- ** OptionGroupMembership
+    , OptionGroupMembership
+    , optionGroupMembership
+    , ogmStatus
+    , ogmOptionGroupName
+
+    -- ** OptionGroupOption
+    , OptionGroupOption
+    , optionGroupOption
+    , ogoMinimumRequiredMinorEngineVersion
+    , ogoPermanent
+    , ogoPersistent
+    , ogoEngineName
+    , ogoName
+    , ogoMajorEngineVersion
+    , ogoDefaultPort
+    , ogoOptionGroupOptionSettings
+    , ogoPortRequired
+    , ogoOptionsDependedOn
+    , ogoDescription
+
+    -- ** OptionGroupOptionSetting
+    , OptionGroupOptionSetting
+    , optionGroupOptionSetting
+    , ogosApplyType
+    , ogosSettingName
+    , ogosDefaultValue
+    , ogosIsModifiable
+    , ogosAllowedValues
+    , ogosSettingDescription
+
+    -- ** OptionSetting
+    , OptionSetting
+    , optionSetting
+    , osIsCollection
+    , osApplyType
+    , osValue
+    , osName
+    , osDefaultValue
+    , osIsModifiable
+    , osAllowedValues
+    , osDataType
+    , osDescription
+
+    -- ** OrderableDBInstanceOption
+    , OrderableDBInstanceOption
+    , orderableDBInstanceOption
+    , odioEngineVersion
+    , odioMultiAZCapable
+    , odioEngine
+    , odioSupportsIOPS
+    , odioDBInstanceClass
+    , odioLicenseModel
+    , odioAvailabilityZones
+    , odioReadReplicaCapable
+    , odioSupportsStorageEncryption
+    , odioVPC
+    , odioStorageType
+
+    -- ** Parameter
+    , Parameter
+    , parameter
+    , pApplyType
+    , pParameterValue
+    , pApplyMethod
+    , pMinimumEngineVersion
+    , pSource
+    , pIsModifiable
+    , pAllowedValues
+    , pDataType
+    , pParameterName
+    , pDescription
+
+    -- ** PendingMaintenanceAction
+    , PendingMaintenanceAction
+    , pendingMaintenanceAction
+    , pmaAutoAppliedAfterDate
+    , pmaAction
+    , pmaOptInStatus
+    , pmaDescription
+    , pmaCurrentApplyDate
+    , pmaForcedApplyDate
+
+    -- ** PendingModifiedValues
+    , PendingModifiedValues
+    , pendingModifiedValues
+    , pmvEngineVersion
+    , pmvMasterUserPassword
+    , pmvIOPS
+    , pmvDBInstanceClass
+    , pmvDBInstanceIdentifier
+    , pmvCACertificateIdentifier
+    , pmvBackupRetentionPeriod
+    , pmvMultiAZ
+    , pmvAllocatedStorage
+    , pmvPort
+    , pmvStorageType
+
+    -- ** RecurringCharge
+    , RecurringCharge
+    , recurringCharge
+    , rcRecurringChargeFrequency
+    , rcRecurringChargeAmount
+
+    -- ** ReservedDBInstance
+    , ReservedDBInstance
+    , reservedDBInstance
+    , rdiDBInstanceCount
+    , rdiState
+    , rdiCurrencyCode
+    , rdiProductDescription
+    , rdiStartTime
+    , rdiReservedDBInstanceId
+    , rdiDBInstanceClass
+    , rdiMultiAZ
+    , rdiReservedDBInstancesOfferingId
+    , rdiOfferingType
+    , rdiUsagePrice
+    , rdiRecurringCharges
+    , rdiFixedPrice
+    , rdiDuration
+
+    -- ** ReservedDBInstancesOffering
+    , ReservedDBInstancesOffering
+    , reservedDBInstancesOffering
+    , rdioCurrencyCode
+    , rdioProductDescription
+    , rdioDBInstanceClass
+    , rdioMultiAZ
+    , rdioReservedDBInstancesOfferingId
+    , rdioOfferingType
+    , rdioUsagePrice
+    , rdioRecurringCharges
+    , rdioFixedPrice
+    , rdioDuration
+
+    -- ** ResourcePendingMaintenanceActions
+    , ResourcePendingMaintenanceActions
+    , resourcePendingMaintenanceActions
+    , rpmaPendingMaintenanceActionDetails
+    , rpmaResourceIdentifier
+
+    -- ** Subnet
+    , Subnet
+    , subnet
+    , sSubnetStatus
+    , sSubnetIdentifier
+    , sSubnetAvailabilityZone
+
+    -- ** Tag
+    , Tag
+    , tag
+    , tagValue
+    , tagKey
+
+    -- ** VPCSecurityGroupMembership
+    , VPCSecurityGroupMembership
+    , vpcSecurityGroupMembership
+    , vsgmStatus
+    , vsgmVPCSecurityGroupId
+    ) where
+
+import           Network.AWS.RDS.AddSourceIdentifierToSubscription
+import           Network.AWS.RDS.AddTagsToResource
+import           Network.AWS.RDS.ApplyPendingMaintenanceAction
+import           Network.AWS.RDS.AuthorizeDBSecurityGroupIngress
+import           Network.AWS.RDS.CopyDBClusterSnapshot
+import           Network.AWS.RDS.CopyDBParameterGroup
+import           Network.AWS.RDS.CopyDBSnapshot
+import           Network.AWS.RDS.CopyOptionGroup
+import           Network.AWS.RDS.CreateDBCluster
+import           Network.AWS.RDS.CreateDBClusterParameterGroup
+import           Network.AWS.RDS.CreateDBClusterSnapshot
+import           Network.AWS.RDS.CreateDBInstance
+import           Network.AWS.RDS.CreateDBInstanceReadReplica
+import           Network.AWS.RDS.CreateDBParameterGroup
+import           Network.AWS.RDS.CreateDBSecurityGroup
+import           Network.AWS.RDS.CreateDBSnapshot
+import           Network.AWS.RDS.CreateDBSubnetGroup
+import           Network.AWS.RDS.CreateEventSubscription
+import           Network.AWS.RDS.CreateOptionGroup
+import           Network.AWS.RDS.DeleteDBCluster
+import           Network.AWS.RDS.DeleteDBClusterParameterGroup
+import           Network.AWS.RDS.DeleteDBClusterSnapshot
+import           Network.AWS.RDS.DeleteDBInstance
+import           Network.AWS.RDS.DeleteDBParameterGroup
+import           Network.AWS.RDS.DeleteDBSecurityGroup
+import           Network.AWS.RDS.DeleteDBSnapshot
+import           Network.AWS.RDS.DeleteDBSubnetGroup
+import           Network.AWS.RDS.DeleteEventSubscription
+import           Network.AWS.RDS.DeleteOptionGroup
+import           Network.AWS.RDS.DescribeAccountAttributes
+import           Network.AWS.RDS.DescribeCertificates
+import           Network.AWS.RDS.DescribeDBClusterParameterGroups
+import           Network.AWS.RDS.DescribeDBClusterParameters
+import           Network.AWS.RDS.DescribeDBClusters
+import           Network.AWS.RDS.DescribeDBClusterSnapshots
+import           Network.AWS.RDS.DescribeDBEngineVersions
+import           Network.AWS.RDS.DescribeDBInstances
+import           Network.AWS.RDS.DescribeDBLogFiles
+import           Network.AWS.RDS.DescribeDBParameterGroups
+import           Network.AWS.RDS.DescribeDBParameters
+import           Network.AWS.RDS.DescribeDBSecurityGroups
+import           Network.AWS.RDS.DescribeDBSnapshots
+import           Network.AWS.RDS.DescribeDBSubnetGroups
+import           Network.AWS.RDS.DescribeEngineDefaultClusterParameters
+import           Network.AWS.RDS.DescribeEngineDefaultParameters
+import           Network.AWS.RDS.DescribeEventCategories
+import           Network.AWS.RDS.DescribeEvents
+import           Network.AWS.RDS.DescribeEventSubscriptions
+import           Network.AWS.RDS.DescribeOptionGroupOptions
+import           Network.AWS.RDS.DescribeOptionGroups
+import           Network.AWS.RDS.DescribeOrderableDBInstanceOptions
+import           Network.AWS.RDS.DescribePendingMaintenanceActions
+import           Network.AWS.RDS.DescribeReservedDBInstances
+import           Network.AWS.RDS.DescribeReservedDBInstancesOfferings
+import           Network.AWS.RDS.DownloadDBLogFilePortion
+import           Network.AWS.RDS.FailoverDBCluster
+import           Network.AWS.RDS.ListTagsForResource
+import           Network.AWS.RDS.ModifyDBCluster
+import           Network.AWS.RDS.ModifyDBClusterParameterGroup
+import           Network.AWS.RDS.ModifyDBInstance
+import           Network.AWS.RDS.ModifyDBParameterGroup
+import           Network.AWS.RDS.ModifyDBSubnetGroup
+import           Network.AWS.RDS.ModifyEventSubscription
+import           Network.AWS.RDS.ModifyOptionGroup
+import           Network.AWS.RDS.PromoteReadReplica
+import           Network.AWS.RDS.PurchaseReservedDBInstancesOffering
+import           Network.AWS.RDS.RebootDBInstance
+import           Network.AWS.RDS.RemoveSourceIdentifierFromSubscription
+import           Network.AWS.RDS.RemoveTagsFromResource
+import           Network.AWS.RDS.ResetDBClusterParameterGroup
+import           Network.AWS.RDS.ResetDBParameterGroup
+import           Network.AWS.RDS.RestoreDBClusterFromSnapshot
+import           Network.AWS.RDS.RestoreDBClusterToPointInTime
+import           Network.AWS.RDS.RestoreDBInstanceFromDBSnapshot
+import           Network.AWS.RDS.RestoreDBInstanceToPointInTime
+import           Network.AWS.RDS.RevokeDBSecurityGroupIngress
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Waiters
+
+{- $errors
+Error matchers are designed for use with the functions provided by
+<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
+This allows catching (and rethrowing) service specific errors returned
+by 'RDS'.
+-}
+
+{- $operations
+Some AWS operations return results that are incomplete and require subsequent
+requests in order to obtain the entire result set. The process of sending
+subsequent requests to continue where a previous request left off is called
+pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
+1000 objects at a time, and you must send subsequent requests with the
+appropriate Marker in order to retrieve the next page of results.
+
+Operations that have an 'AWSPager' instance can transparently perform subsequent
+requests, correctly setting Markers and other request facets to iterate through
+the entire result set of a truncated API operation. Operations which support
+this have an additional note in the documentation.
+
+Many operations have the ability to filter results on the server side. See the
+individual operation parameters for details.
+-}
+
+{- $waiters
+Waiters poll by repeatedly sending a request until some remote success condition
+configured by the 'Wait' specification is fulfilled. The 'Wait' specification
+determines how many attempts should be made, in addition to delay and retry strategies.
+-}
diff --git a/gen/Network/AWS/RDS/AddSourceIdentifierToSubscription.hs b/gen/Network/AWS/RDS/AddSourceIdentifierToSubscription.hs
--- a/gen/Network/AWS/RDS/AddSourceIdentifierToSubscription.hs
+++ b/gen/Network/AWS/RDS/AddSourceIdentifierToSubscription.hs
@@ -1,131 +1,154 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.AddSourceIdentifierToSubscription
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Adds a source identifier to an existing RDS event notification subscription.
+-- Adds a source identifier to an existing RDS event notification
+-- subscription.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddSourceIdentifierToSubscription.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddSourceIdentifierToSubscription.html AWS API Reference> for AddSourceIdentifierToSubscription.
 module Network.AWS.RDS.AddSourceIdentifierToSubscription
     (
-    -- * Request
-      AddSourceIdentifierToSubscription
-    -- ** Request constructor
-    , addSourceIdentifierToSubscription
-    -- ** Request lenses
-    , asitsSourceIdentifier
+    -- * Creating a Request
+      addSourceIdentifierToSubscription
+    , AddSourceIdentifierToSubscription
+    -- * Request Lenses
     , asitsSubscriptionName
+    , asitsSourceIdentifier
 
-    -- * Response
-    , AddSourceIdentifierToSubscriptionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , addSourceIdentifierToSubscriptionResponse
-    -- ** Response lenses
-    , asitsrEventSubscription
+    , AddSourceIdentifierToSubscriptionResponse
+    -- * Response Lenses
+    , asitsrsEventSubscription
+    , asitsrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data AddSourceIdentifierToSubscription = AddSourceIdentifierToSubscription
-    { _asitsSourceIdentifier :: Text
-    , _asitsSubscriptionName :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'AddSourceIdentifierToSubscription' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'addSourceIdentifierToSubscription' smart constructor.
+data AddSourceIdentifierToSubscription = AddSourceIdentifierToSubscription'
+    { _asitsSubscriptionName :: !Text
+    , _asitsSourceIdentifier :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddSourceIdentifierToSubscription' with the minimum fields required to make a request.
 --
--- * 'asitsSourceIdentifier' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'asitsSubscriptionName' @::@ 'Text'
+-- * 'asitsSubscriptionName'
 --
-addSourceIdentifierToSubscription :: Text -- ^ 'asitsSubscriptionName'
-                                  -> Text -- ^ 'asitsSourceIdentifier'
-                                  -> AddSourceIdentifierToSubscription
-addSourceIdentifierToSubscription p1 p2 = AddSourceIdentifierToSubscription
-    { _asitsSubscriptionName = p1
-    , _asitsSourceIdentifier = p2
+-- * 'asitsSourceIdentifier'
+addSourceIdentifierToSubscription
+    :: Text -- ^ 'asitsSubscriptionName'
+    -> Text -- ^ 'asitsSourceIdentifier'
+    -> AddSourceIdentifierToSubscription
+addSourceIdentifierToSubscription pSubscriptionName_ pSourceIdentifier_ =
+    AddSourceIdentifierToSubscription'
+    { _asitsSubscriptionName = pSubscriptionName_
+    , _asitsSourceIdentifier = pSourceIdentifier_
     }
 
+-- | The name of the RDS event notification subscription you want to add a
+-- source identifier to.
+asitsSubscriptionName :: Lens' AddSourceIdentifierToSubscription Text
+asitsSubscriptionName = lens _asitsSubscriptionName (\ s a -> s{_asitsSubscriptionName = a});
+
 -- | The identifier of the event source to be added. An identifier must begin
--- with a letter and must contain only ASCII letters, digits, and hyphens; it
--- cannot end with a hyphen or contain two consecutive hyphens.
+-- with a letter and must contain only ASCII letters, digits, and hyphens;
+-- it cannot end with a hyphen or contain two consecutive hyphens.
 --
 -- Constraints:
 --
--- If the source type is a DB instance, then a 'DBInstanceIdentifier' must be
--- supplied. If the source type is a DB security group, a 'DBSecurityGroupName'
--- must be supplied. If the source type is a DB parameter group, a 'DBParameterGroupName' must be supplied. If the source type is a DB snapshot, a 'DBSnapshotIdentifier'
--- must be supplied.
+-- -   If the source type is a DB instance, then a 'DBInstanceIdentifier'
+--     must be supplied.
+-- -   If the source type is a DB security group, a 'DBSecurityGroupName'
+--     must be supplied.
+-- -   If the source type is a DB parameter group, a 'DBParameterGroupName'
+--     must be supplied.
+-- -   If the source type is a DB snapshot, a 'DBSnapshotIdentifier' must
+--     be supplied.
 asitsSourceIdentifier :: Lens' AddSourceIdentifierToSubscription Text
-asitsSourceIdentifier =
-    lens _asitsSourceIdentifier (\s a -> s { _asitsSourceIdentifier = a })
+asitsSourceIdentifier = lens _asitsSourceIdentifier (\ s a -> s{_asitsSourceIdentifier = a});
 
--- | The name of the RDS event notification subscription you want to add a source
--- identifier to.
-asitsSubscriptionName :: Lens' AddSourceIdentifierToSubscription Text
-asitsSubscriptionName =
-    lens _asitsSubscriptionName (\s a -> s { _asitsSubscriptionName = a })
+instance AWSRequest AddSourceIdentifierToSubscription
+         where
+        type Sv AddSourceIdentifierToSubscription = RDS
+        type Rs AddSourceIdentifierToSubscription =
+             AddSourceIdentifierToSubscriptionResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "AddSourceIdentifierToSubscriptionResult"
+              (\ s h x ->
+                 AddSourceIdentifierToSubscriptionResponse' <$>
+                   (x .@? "EventSubscription") <*> (pure (fromEnum s)))
 
-newtype AddSourceIdentifierToSubscriptionResponse = AddSourceIdentifierToSubscriptionResponse
-    { _asitsrEventSubscription :: Maybe EventSubscription
-    } deriving (Eq, Read, Show)
+instance ToHeaders AddSourceIdentifierToSubscription
+         where
+        toHeaders = const mempty
 
--- | 'AddSourceIdentifierToSubscriptionResponse' constructor.
+instance ToPath AddSourceIdentifierToSubscription
+         where
+        toPath = const "/"
+
+instance ToQuery AddSourceIdentifierToSubscription
+         where
+        toQuery AddSourceIdentifierToSubscription'{..}
+          = mconcat
+              ["Action" =:
+                 ("AddSourceIdentifierToSubscription" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "SubscriptionName" =: _asitsSubscriptionName,
+               "SourceIdentifier" =: _asitsSourceIdentifier]
+
+-- | /See:/ 'addSourceIdentifierToSubscriptionResponse' smart constructor.
+data AddSourceIdentifierToSubscriptionResponse = AddSourceIdentifierToSubscriptionResponse'
+    { _asitsrsEventSubscription :: !(Maybe EventSubscription)
+    , _asitsrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddSourceIdentifierToSubscriptionResponse' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'asitsrEventSubscription' @::@ 'Maybe' 'EventSubscription'
+-- * 'asitsrsEventSubscription'
 --
-addSourceIdentifierToSubscriptionResponse :: AddSourceIdentifierToSubscriptionResponse
-addSourceIdentifierToSubscriptionResponse = AddSourceIdentifierToSubscriptionResponse
-    { _asitsrEventSubscription = Nothing
+-- * 'asitsrsStatus'
+addSourceIdentifierToSubscriptionResponse
+    :: Int -- ^ 'asitsrsStatus'
+    -> AddSourceIdentifierToSubscriptionResponse
+addSourceIdentifierToSubscriptionResponse pStatus_ =
+    AddSourceIdentifierToSubscriptionResponse'
+    { _asitsrsEventSubscription = Nothing
+    , _asitsrsStatus = pStatus_
     }
 
-asitsrEventSubscription :: Lens' AddSourceIdentifierToSubscriptionResponse (Maybe EventSubscription)
-asitsrEventSubscription =
-    lens _asitsrEventSubscription (\s a -> s { _asitsrEventSubscription = a })
-
-instance ToPath AddSourceIdentifierToSubscription where
-    toPath = const "/"
-
-instance ToQuery AddSourceIdentifierToSubscription where
-    toQuery AddSourceIdentifierToSubscription{..} = mconcat
-        [ "SourceIdentifier" =? _asitsSourceIdentifier
-        , "SubscriptionName" =? _asitsSubscriptionName
-        ]
-
-instance ToHeaders AddSourceIdentifierToSubscription
-
-instance AWSRequest AddSourceIdentifierToSubscription where
-    type Sv AddSourceIdentifierToSubscription = RDS
-    type Rs AddSourceIdentifierToSubscription = AddSourceIdentifierToSubscriptionResponse
-
-    request  = post "AddSourceIdentifierToSubscription"
-    response = xmlResponse
+-- | Undocumented member.
+asitsrsEventSubscription :: Lens' AddSourceIdentifierToSubscriptionResponse (Maybe EventSubscription)
+asitsrsEventSubscription = lens _asitsrsEventSubscription (\ s a -> s{_asitsrsEventSubscription = a});
 
-instance FromXML AddSourceIdentifierToSubscriptionResponse where
-    parseXML = withElement "AddSourceIdentifierToSubscriptionResult" $ \x -> AddSourceIdentifierToSubscriptionResponse
-        <$> x .@? "EventSubscription"
+-- | The response status code.
+asitsrsStatus :: Lens' AddSourceIdentifierToSubscriptionResponse Int
+asitsrsStatus = lens _asitsrsStatus (\ s a -> s{_asitsrsStatus = a});
diff --git a/gen/Network/AWS/RDS/AddTagsToResource.hs b/gen/Network/AWS/RDS/AddTagsToResource.hs
--- a/gen/Network/AWS/RDS/AddTagsToResource.hs
+++ b/gen/Network/AWS/RDS/AddTagsToResource.hs
@@ -1,105 +1,113 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.AddTagsToResource
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Adds metadata tags to an Amazon RDS resource. These tags can also be used
--- with cost allocation reporting to track cost associated with Amazon RDS
--- resources, or used in Condition statement in IAM policy for Amazon RDS.
+-- Adds metadata tags to an Amazon RDS resource. These tags can also be
+-- used with cost allocation reporting to track cost associated with Amazon
+-- RDS resources, or used in a Condition statement in an IAM policy for
+-- Amazon RDS.
 --
--- For an overview on tagging Amazon RDS resources, see <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Tagging.html Tagging Amazon RDSResources>.
+-- For an overview on tagging Amazon RDS resources, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Tagging.html Tagging Amazon RDS Resources>.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddTagsToResource.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddTagsToResource.html AWS API Reference> for AddTagsToResource.
 module Network.AWS.RDS.AddTagsToResource
     (
-    -- * Request
-      AddTagsToResource
-    -- ** Request constructor
-    , addTagsToResource
-    -- ** Request lenses
+    -- * Creating a Request
+      addTagsToResource
+    , AddTagsToResource
+    -- * Request Lenses
     , attrResourceName
     , attrTags
 
-    -- * Response
-    , AddTagsToResourceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , addTagsToResourceResponse
+    , AddTagsToResourceResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data AddTagsToResource = AddTagsToResource
-    { _attrResourceName :: Text
-    , _attrTags         :: List "member" Tag
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'AddTagsToResource' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'addTagsToResource' smart constructor.
+data AddTagsToResource = AddTagsToResource'
+    { _attrResourceName :: !Text
+    , _attrTags         :: ![Tag]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddTagsToResource' with the minimum fields required to make a request.
 --
--- * 'attrResourceName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'attrTags' @::@ ['Tag']
+-- * 'attrResourceName'
 --
-addTagsToResource :: Text -- ^ 'attrResourceName'
-                  -> AddTagsToResource
-addTagsToResource p1 = AddTagsToResource
-    { _attrResourceName = p1
-    , _attrTags         = mempty
+-- * 'attrTags'
+addTagsToResource
+    :: Text -- ^ 'attrResourceName'
+    -> AddTagsToResource
+addTagsToResource pResourceName_ =
+    AddTagsToResource'
+    { _attrResourceName = pResourceName_
+    , _attrTags = mempty
     }
 
--- | The Amazon RDS resource the tags will be added to. This value is an Amazon
--- Resource Name (ARN). For information about creating an ARN, see <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN  Constructingan RDS Amazon Resource Name (ARN)>.
+-- | The Amazon RDS resource the tags will be added to. This value is an
+-- Amazon Resource Name (ARN). For information about creating an ARN, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN Constructing an RDS Amazon Resource Name (ARN)>.
 attrResourceName :: Lens' AddTagsToResource Text
-attrResourceName = lens _attrResourceName (\s a -> s { _attrResourceName = a })
+attrResourceName = lens _attrResourceName (\ s a -> s{_attrResourceName = a});
 
 -- | The tags to be assigned to the Amazon RDS resource.
 attrTags :: Lens' AddTagsToResource [Tag]
-attrTags = lens _attrTags (\s a -> s { _attrTags = a }) . _List
+attrTags = lens _attrTags (\ s a -> s{_attrTags = a}) . _Coerce;
 
-data AddTagsToResourceResponse = AddTagsToResourceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest AddTagsToResource where
+        type Sv AddTagsToResource = RDS
+        type Rs AddTagsToResource = AddTagsToResourceResponse
+        request = postQuery
+        response = receiveNull AddTagsToResourceResponse'
 
--- | 'AddTagsToResourceResponse' constructor.
-addTagsToResourceResponse :: AddTagsToResourceResponse
-addTagsToResourceResponse = AddTagsToResourceResponse
+instance ToHeaders AddTagsToResource where
+        toHeaders = const mempty
 
 instance ToPath AddTagsToResource where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery AddTagsToResource where
-    toQuery AddTagsToResource{..} = mconcat
-        [ "ResourceName" =? _attrResourceName
-        , "Tags"         =? _attrTags
-        ]
-
-instance ToHeaders AddTagsToResource
+        toQuery AddTagsToResource'{..}
+          = mconcat
+              ["Action" =: ("AddTagsToResource" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "ResourceName" =: _attrResourceName,
+               "Tags" =: toQueryList "Tag" _attrTags]
 
-instance AWSRequest AddTagsToResource where
-    type Sv AddTagsToResource = RDS
-    type Rs AddTagsToResource = AddTagsToResourceResponse
+-- | /See:/ 'addTagsToResourceResponse' smart constructor.
+data AddTagsToResourceResponse =
+    AddTagsToResourceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "AddTagsToResource"
-    response = nullResponse AddTagsToResourceResponse
+-- | Creates a value of 'AddTagsToResourceResponse' with the minimum fields required to make a request.
+--
+addTagsToResourceResponse
+    :: AddTagsToResourceResponse
+addTagsToResourceResponse = AddTagsToResourceResponse'
diff --git a/gen/Network/AWS/RDS/ApplyPendingMaintenanceAction.hs b/gen/Network/AWS/RDS/ApplyPendingMaintenanceAction.hs
--- a/gen/Network/AWS/RDS/ApplyPendingMaintenanceAction.hs
+++ b/gen/Network/AWS/RDS/ApplyPendingMaintenanceAction.hs
@@ -1,141 +1,162 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.ApplyPendingMaintenanceAction
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Applies a pending maintenance action to a resource (for example, a DB
+-- Applies a pending maintenance action to a resource (for example, to a DB
 -- instance).
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ApplyPendingMaintenanceAction.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ApplyPendingMaintenanceAction.html AWS API Reference> for ApplyPendingMaintenanceAction.
 module Network.AWS.RDS.ApplyPendingMaintenanceAction
     (
-    -- * Request
-      ApplyPendingMaintenanceAction
-    -- ** Request constructor
-    , applyPendingMaintenanceAction
-    -- ** Request lenses
+    -- * Creating a Request
+      applyPendingMaintenanceAction
+    , ApplyPendingMaintenanceAction
+    -- * Request Lenses
+    , apmaResourceIdentifier
     , apmaApplyAction
     , apmaOptInType
-    , apmaResourceIdentifier
 
-    -- * Response
-    , ApplyPendingMaintenanceActionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , applyPendingMaintenanceActionResponse
-    -- ** Response lenses
-    , apmarResourcePendingMaintenanceActions
+    , ApplyPendingMaintenanceActionResponse
+    -- * Response Lenses
+    , apmarsResourcePendingMaintenanceActions
+    , apmarsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data ApplyPendingMaintenanceAction = ApplyPendingMaintenanceAction
-    { _apmaApplyAction        :: Text
-    , _apmaOptInType          :: Text
-    , _apmaResourceIdentifier :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ApplyPendingMaintenanceAction' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'applyPendingMaintenanceAction' smart constructor.
+data ApplyPendingMaintenanceAction = ApplyPendingMaintenanceAction'
+    { _apmaResourceIdentifier :: !Text
+    , _apmaApplyAction        :: !Text
+    , _apmaOptInType          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ApplyPendingMaintenanceAction' with the minimum fields required to make a request.
 --
--- * 'apmaApplyAction' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'apmaOptInType' @::@ 'Text'
+-- * 'apmaResourceIdentifier'
 --
--- * 'apmaResourceIdentifier' @::@ 'Text'
+-- * 'apmaApplyAction'
 --
-applyPendingMaintenanceAction :: Text -- ^ 'apmaResourceIdentifier'
-                              -> Text -- ^ 'apmaApplyAction'
-                              -> Text -- ^ 'apmaOptInType'
-                              -> ApplyPendingMaintenanceAction
-applyPendingMaintenanceAction p1 p2 p3 = ApplyPendingMaintenanceAction
-    { _apmaResourceIdentifier = p1
-    , _apmaApplyAction        = p2
-    , _apmaOptInType          = p3
+-- * 'apmaOptInType'
+applyPendingMaintenanceAction
+    :: Text -- ^ 'apmaResourceIdentifier'
+    -> Text -- ^ 'apmaApplyAction'
+    -> Text -- ^ 'apmaOptInType'
+    -> ApplyPendingMaintenanceAction
+applyPendingMaintenanceAction pResourceIdentifier_ pApplyAction_ pOptInType_ =
+    ApplyPendingMaintenanceAction'
+    { _apmaResourceIdentifier = pResourceIdentifier_
+    , _apmaApplyAction = pApplyAction_
+    , _apmaOptInType = pOptInType_
     }
 
+-- | The RDS Amazon Resource Name (ARN) of the resource that the pending
+-- maintenance action applies to. For information about creating an ARN,
+-- see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN Constructing an RDS Amazon Resource Name (ARN)>.
+apmaResourceIdentifier :: Lens' ApplyPendingMaintenanceAction Text
+apmaResourceIdentifier = lens _apmaResourceIdentifier (\ s a -> s{_apmaResourceIdentifier = a});
+
 -- | The pending maintenance action to apply to this resource.
 apmaApplyAction :: Lens' ApplyPendingMaintenanceAction Text
-apmaApplyAction = lens _apmaApplyAction (\s a -> s { _apmaApplyAction = a })
+apmaApplyAction = lens _apmaApplyAction (\ s a -> s{_apmaApplyAction = a});
 
 -- | A value that specifies the type of opt-in request, or undoes an opt-in
 -- request. An opt-in request of type 'immediate' cannot be undone.
 --
 -- Valid values:
 --
--- 'immediate' - Apply the maintenance action immediately.  'next-maintenance' -
--- Apply the maintenance action during the next maintenance window for the
--- resource.  'undo-opt-in' - Cancel any existing 'next-maintenance' opt-in requests.
---
+-- -   'immediate' - Apply the maintenance action immediately.
+-- -   'next-maintenance' - Apply the maintenance action during the next
+--     maintenance window for the resource.
+-- -   'undo-opt-in' - Cancel any existing 'next-maintenance' opt-in
+--     requests.
 apmaOptInType :: Lens' ApplyPendingMaintenanceAction Text
-apmaOptInType = lens _apmaOptInType (\s a -> s { _apmaOptInType = a })
-
--- | The ARN of the resource that the pending maintenance action applies to.
-apmaResourceIdentifier :: Lens' ApplyPendingMaintenanceAction Text
-apmaResourceIdentifier =
-    lens _apmaResourceIdentifier (\s a -> s { _apmaResourceIdentifier = a })
-
-newtype ApplyPendingMaintenanceActionResponse = ApplyPendingMaintenanceActionResponse
-    { _apmarResourcePendingMaintenanceActions :: Maybe ResourcePendingMaintenanceActions
-    } deriving (Eq, Read, Show)
+apmaOptInType = lens _apmaOptInType (\ s a -> s{_apmaOptInType = a});
 
--- | 'ApplyPendingMaintenanceActionResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'apmarResourcePendingMaintenanceActions' @::@ 'Maybe' 'ResourcePendingMaintenanceActions'
---
-applyPendingMaintenanceActionResponse :: ApplyPendingMaintenanceActionResponse
-applyPendingMaintenanceActionResponse = ApplyPendingMaintenanceActionResponse
-    { _apmarResourcePendingMaintenanceActions = Nothing
-    }
+instance AWSRequest ApplyPendingMaintenanceAction
+         where
+        type Sv ApplyPendingMaintenanceAction = RDS
+        type Rs ApplyPendingMaintenanceAction =
+             ApplyPendingMaintenanceActionResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "ApplyPendingMaintenanceActionResult"
+              (\ s h x ->
+                 ApplyPendingMaintenanceActionResponse' <$>
+                   (x .@? "ResourcePendingMaintenanceActions") <*>
+                     (pure (fromEnum s)))
 
-apmarResourcePendingMaintenanceActions :: Lens' ApplyPendingMaintenanceActionResponse (Maybe ResourcePendingMaintenanceActions)
-apmarResourcePendingMaintenanceActions =
-    lens _apmarResourcePendingMaintenanceActions
-        (\s a -> s { _apmarResourcePendingMaintenanceActions = a })
+instance ToHeaders ApplyPendingMaintenanceAction
+         where
+        toHeaders = const mempty
 
 instance ToPath ApplyPendingMaintenanceAction where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ApplyPendingMaintenanceAction where
-    toQuery ApplyPendingMaintenanceAction{..} = mconcat
-        [ "ApplyAction"        =? _apmaApplyAction
-        , "OptInType"          =? _apmaOptInType
-        , "ResourceIdentifier" =? _apmaResourceIdentifier
-        ]
+        toQuery ApplyPendingMaintenanceAction'{..}
+          = mconcat
+              ["Action" =:
+                 ("ApplyPendingMaintenanceAction" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "ResourceIdentifier" =: _apmaResourceIdentifier,
+               "ApplyAction" =: _apmaApplyAction,
+               "OptInType" =: _apmaOptInType]
 
-instance ToHeaders ApplyPendingMaintenanceAction
+-- | /See:/ 'applyPendingMaintenanceActionResponse' smart constructor.
+data ApplyPendingMaintenanceActionResponse = ApplyPendingMaintenanceActionResponse'
+    { _apmarsResourcePendingMaintenanceActions :: !(Maybe ResourcePendingMaintenanceActions)
+    , _apmarsStatus                            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ApplyPendingMaintenanceAction where
-    type Sv ApplyPendingMaintenanceAction = RDS
-    type Rs ApplyPendingMaintenanceAction = ApplyPendingMaintenanceActionResponse
+-- | Creates a value of 'ApplyPendingMaintenanceActionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apmarsResourcePendingMaintenanceActions'
+--
+-- * 'apmarsStatus'
+applyPendingMaintenanceActionResponse
+    :: Int -- ^ 'apmarsStatus'
+    -> ApplyPendingMaintenanceActionResponse
+applyPendingMaintenanceActionResponse pStatus_ =
+    ApplyPendingMaintenanceActionResponse'
+    { _apmarsResourcePendingMaintenanceActions = Nothing
+    , _apmarsStatus = pStatus_
+    }
 
-    request  = post "ApplyPendingMaintenanceAction"
-    response = xmlResponse
+-- | Undocumented member.
+apmarsResourcePendingMaintenanceActions :: Lens' ApplyPendingMaintenanceActionResponse (Maybe ResourcePendingMaintenanceActions)
+apmarsResourcePendingMaintenanceActions = lens _apmarsResourcePendingMaintenanceActions (\ s a -> s{_apmarsResourcePendingMaintenanceActions = a});
 
-instance FromXML ApplyPendingMaintenanceActionResponse where
-    parseXML = withElement "ApplyPendingMaintenanceActionResult" $ \x -> ApplyPendingMaintenanceActionResponse
-        <$> x .@? "ResourcePendingMaintenanceActions"
+-- | The response status code.
+apmarsStatus :: Lens' ApplyPendingMaintenanceActionResponse Int
+apmarsStatus = lens _apmarsStatus (\ s a -> s{_apmarsStatus = a});
diff --git a/gen/Network/AWS/RDS/AuthorizeDBSecurityGroupIngress.hs b/gen/Network/AWS/RDS/AuthorizeDBSecurityGroupIngress.hs
--- a/gen/Network/AWS/RDS/AuthorizeDBSecurityGroupIngress.hs
+++ b/gen/Network/AWS/RDS/AuthorizeDBSecurityGroupIngress.hs
@@ -1,171 +1,192 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.AuthorizeDBSecurityGroupIngress
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Enables ingress to a DBSecurityGroup using one of two forms of
+-- Enables ingress to a DBSecurityGroup using one of two forms of
 -- authorization. First, EC2 or VPC security groups can be added to the
--- DBSecurityGroup if the application using the database is running on EC2 or
--- VPC instances. Second, IP ranges are available if the application accessing
--- your database is running on the Internet. Required parameters for this API
--- are one of CIDR range, EC2SecurityGroupId for VPC, or
+-- DBSecurityGroup if the application using the database is running on EC2
+-- or VPC instances. Second, IP ranges are available if the application
+-- accessing your database is running on the Internet. Required parameters
+-- for this API are one of CIDR range, EC2SecurityGroupId for VPC, or
 -- (EC2SecurityGroupOwnerId and either EC2SecurityGroupName or
 -- EC2SecurityGroupId for non-VPC).
 --
--- You cannot authorize ingress from an EC2 security group in one Region to an
--- Amazon RDS DB instance in another. You cannot authorize ingress from a VPC
--- security group in one VPC to an Amazon RDS DB instance in another.  For an
--- overview of CIDR ranges, go to the <http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing Wikipedia Tutorial>.
+-- You cannot authorize ingress from an EC2 security group in one region to
+-- an Amazon RDS DB instance in another. You cannot authorize ingress from
+-- a VPC security group in one VPC to an Amazon RDS DB instance in another.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AuthorizeDBSecurityGroupIngress.html>
+-- For an overview of CIDR ranges, go to the
+-- <http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing Wikipedia Tutorial>.
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AuthorizeDBSecurityGroupIngress.html AWS API Reference> for AuthorizeDBSecurityGroupIngress.
 module Network.AWS.RDS.AuthorizeDBSecurityGroupIngress
     (
-    -- * Request
-      AuthorizeDBSecurityGroupIngress
-    -- ** Request constructor
-    , authorizeDBSecurityGroupIngress
-    -- ** Request lenses
-    , adbsgiCIDRIP
-    , adbsgiDBSecurityGroupName
-    , adbsgiEC2SecurityGroupId
-    , adbsgiEC2SecurityGroupName
-    , adbsgiEC2SecurityGroupOwnerId
+    -- * Creating a Request
+      authorizeDBSecurityGroupIngress
+    , AuthorizeDBSecurityGroupIngress
+    -- * Request Lenses
+    , adsgiEC2SecurityGroupOwnerId
+    , adsgiEC2SecurityGroupName
+    , adsgiCIdRIP
+    , adsgiEC2SecurityGroupId
+    , adsgiDBSecurityGroupName
 
-    -- * Response
-    , AuthorizeDBSecurityGroupIngressResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , authorizeDBSecurityGroupIngressResponse
-    -- ** Response lenses
-    , adbsgirDBSecurityGroup
+    , AuthorizeDBSecurityGroupIngressResponse
+    -- * Response Lenses
+    , adsgirsDBSecurityGroup
+    , adsgirsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data AuthorizeDBSecurityGroupIngress = AuthorizeDBSecurityGroupIngress
-    { _adbsgiCIDRIP                  :: Maybe Text
-    , _adbsgiDBSecurityGroupName     :: Text
-    , _adbsgiEC2SecurityGroupId      :: Maybe Text
-    , _adbsgiEC2SecurityGroupName    :: Maybe Text
-    , _adbsgiEC2SecurityGroupOwnerId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'AuthorizeDBSecurityGroupIngress' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'authorizeDBSecurityGroupIngress' smart constructor.
+data AuthorizeDBSecurityGroupIngress = AuthorizeDBSecurityGroupIngress'
+    { _adsgiEC2SecurityGroupOwnerId :: !(Maybe Text)
+    , _adsgiEC2SecurityGroupName    :: !(Maybe Text)
+    , _adsgiCIdRIP                  :: !(Maybe Text)
+    , _adsgiEC2SecurityGroupId      :: !(Maybe Text)
+    , _adsgiDBSecurityGroupName     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AuthorizeDBSecurityGroupIngress' with the minimum fields required to make a request.
 --
--- * 'adbsgiCIDRIP' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'adbsgiDBSecurityGroupName' @::@ 'Text'
+-- * 'adsgiEC2SecurityGroupOwnerId'
 --
--- * 'adbsgiEC2SecurityGroupId' @::@ 'Maybe' 'Text'
+-- * 'adsgiEC2SecurityGroupName'
 --
--- * 'adbsgiEC2SecurityGroupName' @::@ 'Maybe' 'Text'
+-- * 'adsgiCIdRIP'
 --
--- * 'adbsgiEC2SecurityGroupOwnerId' @::@ 'Maybe' 'Text'
+-- * 'adsgiEC2SecurityGroupId'
 --
-authorizeDBSecurityGroupIngress :: Text -- ^ 'adbsgiDBSecurityGroupName'
-                                -> AuthorizeDBSecurityGroupIngress
-authorizeDBSecurityGroupIngress p1 = AuthorizeDBSecurityGroupIngress
-    { _adbsgiDBSecurityGroupName     = p1
-    , _adbsgiCIDRIP                  = Nothing
-    , _adbsgiEC2SecurityGroupName    = Nothing
-    , _adbsgiEC2SecurityGroupId      = Nothing
-    , _adbsgiEC2SecurityGroupOwnerId = Nothing
+-- * 'adsgiDBSecurityGroupName'
+authorizeDBSecurityGroupIngress
+    :: Text -- ^ 'adsgiDBSecurityGroupName'
+    -> AuthorizeDBSecurityGroupIngress
+authorizeDBSecurityGroupIngress pDBSecurityGroupName_ =
+    AuthorizeDBSecurityGroupIngress'
+    { _adsgiEC2SecurityGroupOwnerId = Nothing
+    , _adsgiEC2SecurityGroupName = Nothing
+    , _adsgiCIdRIP = Nothing
+    , _adsgiEC2SecurityGroupId = Nothing
+    , _adsgiDBSecurityGroupName = pDBSecurityGroupName_
     }
 
+-- | AWS account number of the owner of the EC2 security group specified in
+-- the 'EC2SecurityGroupName' parameter. The AWS Access Key ID is not an
+-- acceptable value. For VPC DB security groups, 'EC2SecurityGroupId' must
+-- be provided. Otherwise, 'EC2SecurityGroupOwnerId' and either
+-- 'EC2SecurityGroupName' or 'EC2SecurityGroupId' must be provided.
+adsgiEC2SecurityGroupOwnerId :: Lens' AuthorizeDBSecurityGroupIngress (Maybe Text)
+adsgiEC2SecurityGroupOwnerId = lens _adsgiEC2SecurityGroupOwnerId (\ s a -> s{_adsgiEC2SecurityGroupOwnerId = a});
+
+-- | Name of the EC2 security group to authorize. For VPC DB security groups,
+-- 'EC2SecurityGroupId' must be provided. Otherwise,
+-- 'EC2SecurityGroupOwnerId' and either 'EC2SecurityGroupName' or
+-- 'EC2SecurityGroupId' must be provided.
+adsgiEC2SecurityGroupName :: Lens' AuthorizeDBSecurityGroupIngress (Maybe Text)
+adsgiEC2SecurityGroupName = lens _adsgiEC2SecurityGroupName (\ s a -> s{_adsgiEC2SecurityGroupName = a});
+
 -- | The IP range to authorize.
-adbsgiCIDRIP :: Lens' AuthorizeDBSecurityGroupIngress (Maybe Text)
-adbsgiCIDRIP = lens _adbsgiCIDRIP (\s a -> s { _adbsgiCIDRIP = a })
+adsgiCIdRIP :: Lens' AuthorizeDBSecurityGroupIngress (Maybe Text)
+adsgiCIdRIP = lens _adsgiCIdRIP (\ s a -> s{_adsgiCIdRIP = a});
 
+-- | Id of the EC2 security group to authorize. For VPC DB security groups,
+-- 'EC2SecurityGroupId' must be provided. Otherwise,
+-- 'EC2SecurityGroupOwnerId' and either 'EC2SecurityGroupName' or
+-- 'EC2SecurityGroupId' must be provided.
+adsgiEC2SecurityGroupId :: Lens' AuthorizeDBSecurityGroupIngress (Maybe Text)
+adsgiEC2SecurityGroupId = lens _adsgiEC2SecurityGroupId (\ s a -> s{_adsgiEC2SecurityGroupId = a});
+
 -- | The name of the DB security group to add authorization to.
-adbsgiDBSecurityGroupName :: Lens' AuthorizeDBSecurityGroupIngress Text
-adbsgiDBSecurityGroupName =
-    lens _adbsgiDBSecurityGroupName
-        (\s a -> s { _adbsgiDBSecurityGroupName = a })
+adsgiDBSecurityGroupName :: Lens' AuthorizeDBSecurityGroupIngress Text
+adsgiDBSecurityGroupName = lens _adsgiDBSecurityGroupName (\ s a -> s{_adsgiDBSecurityGroupName = a});
 
--- | Id of the EC2 security group to authorize. For VPC DB security groups, 'EC2SecurityGroupId' must be provided. Otherwise, EC2SecurityGroupOwnerId and either 'EC2SecurityGroupName' or 'EC2SecurityGroupId' must be provided.
-adbsgiEC2SecurityGroupId :: Lens' AuthorizeDBSecurityGroupIngress (Maybe Text)
-adbsgiEC2SecurityGroupId =
-    lens _adbsgiEC2SecurityGroupId
-        (\s a -> s { _adbsgiEC2SecurityGroupId = a })
+instance AWSRequest AuthorizeDBSecurityGroupIngress
+         where
+        type Sv AuthorizeDBSecurityGroupIngress = RDS
+        type Rs AuthorizeDBSecurityGroupIngress =
+             AuthorizeDBSecurityGroupIngressResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "AuthorizeDBSecurityGroupIngressResult"
+              (\ s h x ->
+                 AuthorizeDBSecurityGroupIngressResponse' <$>
+                   (x .@? "DBSecurityGroup") <*> (pure (fromEnum s)))
 
--- | Name of the EC2 security group to authorize. For VPC DB security groups, 'EC2SecurityGroupId' must be provided. Otherwise, EC2SecurityGroupOwnerId and either 'EC2SecurityGroupName' or 'EC2SecurityGroupId' must be provided.
-adbsgiEC2SecurityGroupName :: Lens' AuthorizeDBSecurityGroupIngress (Maybe Text)
-adbsgiEC2SecurityGroupName =
-    lens _adbsgiEC2SecurityGroupName
-        (\s a -> s { _adbsgiEC2SecurityGroupName = a })
+instance ToHeaders AuthorizeDBSecurityGroupIngress
+         where
+        toHeaders = const mempty
 
--- | AWS Account Number of the owner of the EC2 security group specified in the
--- EC2SecurityGroupName parameter. The AWS Access Key ID is not an acceptable
--- value. For VPC DB security groups, 'EC2SecurityGroupId' must be provided.
--- Otherwise, EC2SecurityGroupOwnerId and either 'EC2SecurityGroupName' or 'EC2SecurityGroupId' must be provided.
-adbsgiEC2SecurityGroupOwnerId :: Lens' AuthorizeDBSecurityGroupIngress (Maybe Text)
-adbsgiEC2SecurityGroupOwnerId =
-    lens _adbsgiEC2SecurityGroupOwnerId
-        (\s a -> s { _adbsgiEC2SecurityGroupOwnerId = a })
+instance ToPath AuthorizeDBSecurityGroupIngress where
+        toPath = const "/"
 
-newtype AuthorizeDBSecurityGroupIngressResponse = AuthorizeDBSecurityGroupIngressResponse
-    { _adbsgirDBSecurityGroup :: Maybe DBSecurityGroup
-    } deriving (Eq, Read, Show)
+instance ToQuery AuthorizeDBSecurityGroupIngress
+         where
+        toQuery AuthorizeDBSecurityGroupIngress'{..}
+          = mconcat
+              ["Action" =:
+                 ("AuthorizeDBSecurityGroupIngress" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "EC2SecurityGroupOwnerId" =:
+                 _adsgiEC2SecurityGroupOwnerId,
+               "EC2SecurityGroupName" =: _adsgiEC2SecurityGroupName,
+               "CIDRIP" =: _adsgiCIdRIP,
+               "EC2SecurityGroupId" =: _adsgiEC2SecurityGroupId,
+               "DBSecurityGroupName" =: _adsgiDBSecurityGroupName]
 
--- | 'AuthorizeDBSecurityGroupIngressResponse' constructor.
+-- | /See:/ 'authorizeDBSecurityGroupIngressResponse' smart constructor.
+data AuthorizeDBSecurityGroupIngressResponse = AuthorizeDBSecurityGroupIngressResponse'
+    { _adsgirsDBSecurityGroup :: !(Maybe DBSecurityGroup)
+    , _adsgirsStatus          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AuthorizeDBSecurityGroupIngressResponse' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'adbsgirDBSecurityGroup' @::@ 'Maybe' 'DBSecurityGroup'
+-- * 'adsgirsDBSecurityGroup'
 --
-authorizeDBSecurityGroupIngressResponse :: AuthorizeDBSecurityGroupIngressResponse
-authorizeDBSecurityGroupIngressResponse = AuthorizeDBSecurityGroupIngressResponse
-    { _adbsgirDBSecurityGroup = Nothing
+-- * 'adsgirsStatus'
+authorizeDBSecurityGroupIngressResponse
+    :: Int -- ^ 'adsgirsStatus'
+    -> AuthorizeDBSecurityGroupIngressResponse
+authorizeDBSecurityGroupIngressResponse pStatus_ =
+    AuthorizeDBSecurityGroupIngressResponse'
+    { _adsgirsDBSecurityGroup = Nothing
+    , _adsgirsStatus = pStatus_
     }
 
-adbsgirDBSecurityGroup :: Lens' AuthorizeDBSecurityGroupIngressResponse (Maybe DBSecurityGroup)
-adbsgirDBSecurityGroup =
-    lens _adbsgirDBSecurityGroup (\s a -> s { _adbsgirDBSecurityGroup = a })
-
-instance ToPath AuthorizeDBSecurityGroupIngress where
-    toPath = const "/"
-
-instance ToQuery AuthorizeDBSecurityGroupIngress where
-    toQuery AuthorizeDBSecurityGroupIngress{..} = mconcat
-        [ "CIDRIP"                  =? _adbsgiCIDRIP
-        , "DBSecurityGroupName"     =? _adbsgiDBSecurityGroupName
-        , "EC2SecurityGroupId"      =? _adbsgiEC2SecurityGroupId
-        , "EC2SecurityGroupName"    =? _adbsgiEC2SecurityGroupName
-        , "EC2SecurityGroupOwnerId" =? _adbsgiEC2SecurityGroupOwnerId
-        ]
-
-instance ToHeaders AuthorizeDBSecurityGroupIngress
-
-instance AWSRequest AuthorizeDBSecurityGroupIngress where
-    type Sv AuthorizeDBSecurityGroupIngress = RDS
-    type Rs AuthorizeDBSecurityGroupIngress = AuthorizeDBSecurityGroupIngressResponse
-
-    request  = post "AuthorizeDBSecurityGroupIngress"
-    response = xmlResponse
+-- | Undocumented member.
+adsgirsDBSecurityGroup :: Lens' AuthorizeDBSecurityGroupIngressResponse (Maybe DBSecurityGroup)
+adsgirsDBSecurityGroup = lens _adsgirsDBSecurityGroup (\ s a -> s{_adsgirsDBSecurityGroup = a});
 
-instance FromXML AuthorizeDBSecurityGroupIngressResponse where
-    parseXML = withElement "AuthorizeDBSecurityGroupIngressResult" $ \x -> AuthorizeDBSecurityGroupIngressResponse
-        <$> x .@? "DBSecurityGroup"
+-- | The response status code.
+adsgirsStatus :: Lens' AuthorizeDBSecurityGroupIngressResponse Int
+adsgirsStatus = lens _adsgirsStatus (\ s a -> s{_adsgirsStatus = a});
diff --git a/gen/Network/AWS/RDS/CopyDBClusterSnapshot.hs b/gen/Network/AWS/RDS/CopyDBClusterSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/CopyDBClusterSnapshot.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.CopyDBClusterSnapshot
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a snapshot of a DB cluster. For more information on Amazon
+-- Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBClusterSnapshot.html AWS API Reference> for CopyDBClusterSnapshot.
+module Network.AWS.RDS.CopyDBClusterSnapshot
+    (
+    -- * Creating a Request
+      copyDBClusterSnapshot
+    , CopyDBClusterSnapshot
+    -- * Request Lenses
+    , cdbcsTags
+    , cdbcsSourceDBClusterSnapshotIdentifier
+    , cdbcsTargetDBClusterSnapshotIdentifier
+
+    -- * Destructuring the Response
+    , copyDBClusterSnapshotResponse
+    , CopyDBClusterSnapshotResponse
+    -- * Response Lenses
+    , cdcsrsDBClusterSnapshot
+    , cdcsrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'copyDBClusterSnapshot' smart constructor.
+data CopyDBClusterSnapshot = CopyDBClusterSnapshot'
+    { _cdbcsTags                              :: !(Maybe [Tag])
+    , _cdbcsSourceDBClusterSnapshotIdentifier :: !Text
+    , _cdbcsTargetDBClusterSnapshotIdentifier :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CopyDBClusterSnapshot' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdbcsTags'
+--
+-- * 'cdbcsSourceDBClusterSnapshotIdentifier'
+--
+-- * 'cdbcsTargetDBClusterSnapshotIdentifier'
+copyDBClusterSnapshot
+    :: Text -- ^ 'cdbcsSourceDBClusterSnapshotIdentifier'
+    -> Text -- ^ 'cdbcsTargetDBClusterSnapshotIdentifier'
+    -> CopyDBClusterSnapshot
+copyDBClusterSnapshot pSourceDBClusterSnapshotIdentifier_ pTargetDBClusterSnapshotIdentifier_ =
+    CopyDBClusterSnapshot'
+    { _cdbcsTags = Nothing
+    , _cdbcsSourceDBClusterSnapshotIdentifier = pSourceDBClusterSnapshotIdentifier_
+    , _cdbcsTargetDBClusterSnapshotIdentifier = pTargetDBClusterSnapshotIdentifier_
+    }
+
+-- | Undocumented member.
+cdbcsTags :: Lens' CopyDBClusterSnapshot [Tag]
+cdbcsTags = lens _cdbcsTags (\ s a -> s{_cdbcsTags = a}) . _Default . _Coerce;
+
+-- | The identifier of the DB cluster snapshot to copy. This parameter is not
+-- case-sensitive.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
+-- -   First character must be a letter.
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: 'my-cluster-snapshot1'
+cdbcsSourceDBClusterSnapshotIdentifier :: Lens' CopyDBClusterSnapshot Text
+cdbcsSourceDBClusterSnapshotIdentifier = lens _cdbcsSourceDBClusterSnapshotIdentifier (\ s a -> s{_cdbcsSourceDBClusterSnapshotIdentifier = a});
+
+-- | The identifier of the new DB cluster snapshot to create from the source
+-- DB cluster snapshot. This parameter is not case-sensitive.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
+-- -   First character must be a letter.
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: 'my-cluster-snapshot2'
+cdbcsTargetDBClusterSnapshotIdentifier :: Lens' CopyDBClusterSnapshot Text
+cdbcsTargetDBClusterSnapshotIdentifier = lens _cdbcsTargetDBClusterSnapshotIdentifier (\ s a -> s{_cdbcsTargetDBClusterSnapshotIdentifier = a});
+
+instance AWSRequest CopyDBClusterSnapshot where
+        type Sv CopyDBClusterSnapshot = RDS
+        type Rs CopyDBClusterSnapshot =
+             CopyDBClusterSnapshotResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CopyDBClusterSnapshotResult"
+              (\ s h x ->
+                 CopyDBClusterSnapshotResponse' <$>
+                   (x .@? "DBClusterSnapshot") <*> (pure (fromEnum s)))
+
+instance ToHeaders CopyDBClusterSnapshot where
+        toHeaders = const mempty
+
+instance ToPath CopyDBClusterSnapshot where
+        toPath = const "/"
+
+instance ToQuery CopyDBClusterSnapshot where
+        toQuery CopyDBClusterSnapshot'{..}
+          = mconcat
+              ["Action" =: ("CopyDBClusterSnapshot" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cdbcsTags),
+               "SourceDBClusterSnapshotIdentifier" =:
+                 _cdbcsSourceDBClusterSnapshotIdentifier,
+               "TargetDBClusterSnapshotIdentifier" =:
+                 _cdbcsTargetDBClusterSnapshotIdentifier]
+
+-- | /See:/ 'copyDBClusterSnapshotResponse' smart constructor.
+data CopyDBClusterSnapshotResponse = CopyDBClusterSnapshotResponse'
+    { _cdcsrsDBClusterSnapshot :: !(Maybe DBClusterSnapshot)
+    , _cdcsrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CopyDBClusterSnapshotResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdcsrsDBClusterSnapshot'
+--
+-- * 'cdcsrsStatus'
+copyDBClusterSnapshotResponse
+    :: Int -- ^ 'cdcsrsStatus'
+    -> CopyDBClusterSnapshotResponse
+copyDBClusterSnapshotResponse pStatus_ =
+    CopyDBClusterSnapshotResponse'
+    { _cdcsrsDBClusterSnapshot = Nothing
+    , _cdcsrsStatus = pStatus_
+    }
+
+-- | Undocumented member.
+cdcsrsDBClusterSnapshot :: Lens' CopyDBClusterSnapshotResponse (Maybe DBClusterSnapshot)
+cdcsrsDBClusterSnapshot = lens _cdcsrsDBClusterSnapshot (\ s a -> s{_cdcsrsDBClusterSnapshot = a});
+
+-- | The response status code.
+cdcsrsStatus :: Lens' CopyDBClusterSnapshotResponse Int
+cdcsrsStatus = lens _cdcsrsStatus (\ s a -> s{_cdcsrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CopyDBParameterGroup.hs b/gen/Network/AWS/RDS/CopyDBParameterGroup.hs
--- a/gen/Network/AWS/RDS/CopyDBParameterGroup.hs
+++ b/gen/Network/AWS/RDS/CopyDBParameterGroup.hs
@@ -1,159 +1,178 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.CopyDBParameterGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Copies the specified DB parameter group.
+-- Copies the specified DB parameter group.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBParameterGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBParameterGroup.html AWS API Reference> for CopyDBParameterGroup.
 module Network.AWS.RDS.CopyDBParameterGroup
     (
-    -- * Request
-      CopyDBParameterGroup
-    -- ** Request constructor
-    , copyDBParameterGroup
-    -- ** Request lenses
-    , cdbpgSourceDBParameterGroupIdentifier
-    , cdbpgTags
-    , cdbpgTargetDBParameterGroupDescription
-    , cdbpgTargetDBParameterGroupIdentifier
+    -- * Creating a Request
+      copyDBParameterGroup
+    , CopyDBParameterGroup
+    -- * Request Lenses
+    , cdpgTags
+    , cdpgSourceDBParameterGroupIdentifier
+    , cdpgTargetDBParameterGroupIdentifier
+    , cdpgTargetDBParameterGroupDescription
 
-    -- * Response
-    , CopyDBParameterGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , copyDBParameterGroupResponse
-    -- ** Response lenses
-    , cdbpgr1DBParameterGroup
+    , CopyDBParameterGroupResponse
+    -- * Response Lenses
+    , cdbpgrsDBParameterGroup
+    , cdbpgrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data CopyDBParameterGroup = CopyDBParameterGroup
-    { _cdbpgSourceDBParameterGroupIdentifier  :: Text
-    , _cdbpgTags                              :: List "member" Tag
-    , _cdbpgTargetDBParameterGroupDescription :: Text
-    , _cdbpgTargetDBParameterGroupIdentifier  :: Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CopyDBParameterGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'copyDBParameterGroup' smart constructor.
+data CopyDBParameterGroup = CopyDBParameterGroup'
+    { _cdpgTags                              :: !(Maybe [Tag])
+    , _cdpgSourceDBParameterGroupIdentifier  :: !Text
+    , _cdpgTargetDBParameterGroupIdentifier  :: !Text
+    , _cdpgTargetDBParameterGroupDescription :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CopyDBParameterGroup' with the minimum fields required to make a request.
 --
--- * 'cdbpgSourceDBParameterGroupIdentifier' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cdbpgTags' @::@ ['Tag']
+-- * 'cdpgTags'
 --
--- * 'cdbpgTargetDBParameterGroupDescription' @::@ 'Text'
+-- * 'cdpgSourceDBParameterGroupIdentifier'
 --
--- * 'cdbpgTargetDBParameterGroupIdentifier' @::@ 'Text'
+-- * 'cdpgTargetDBParameterGroupIdentifier'
 --
-copyDBParameterGroup :: Text -- ^ 'cdbpgSourceDBParameterGroupIdentifier'
-                     -> Text -- ^ 'cdbpgTargetDBParameterGroupIdentifier'
-                     -> Text -- ^ 'cdbpgTargetDBParameterGroupDescription'
-                     -> CopyDBParameterGroup
-copyDBParameterGroup p1 p2 p3 = CopyDBParameterGroup
-    { _cdbpgSourceDBParameterGroupIdentifier  = p1
-    , _cdbpgTargetDBParameterGroupIdentifier  = p2
-    , _cdbpgTargetDBParameterGroupDescription = p3
-    , _cdbpgTags                              = mempty
+-- * 'cdpgTargetDBParameterGroupDescription'
+copyDBParameterGroup
+    :: Text -- ^ 'cdpgSourceDBParameterGroupIdentifier'
+    -> Text -- ^ 'cdpgTargetDBParameterGroupIdentifier'
+    -> Text -- ^ 'cdpgTargetDBParameterGroupDescription'
+    -> CopyDBParameterGroup
+copyDBParameterGroup pSourceDBParameterGroupIdentifier_ pTargetDBParameterGroupIdentifier_ pTargetDBParameterGroupDescription_ =
+    CopyDBParameterGroup'
+    { _cdpgTags = Nothing
+    , _cdpgSourceDBParameterGroupIdentifier = pSourceDBParameterGroupIdentifier_
+    , _cdpgTargetDBParameterGroupIdentifier = pTargetDBParameterGroupIdentifier_
+    , _cdpgTargetDBParameterGroupDescription = pTargetDBParameterGroupDescription_
     }
 
--- | The identifier or ARN for the source DB parameter group.
+-- | Undocumented member.
+cdpgTags :: Lens' CopyDBParameterGroup [Tag]
+cdpgTags = lens _cdpgTags (\ s a -> s{_cdpgTags = a}) . _Default . _Coerce;
+
+-- | The identifier or ARN for the source DB parameter group. For information
+-- about creating an ARN, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN Constructing an RDS Amazon Resource Name (ARN)>.
 --
 -- Constraints:
 --
--- Must specify a valid DB parameter group. If the source DB parameter group
--- is in the same region as the copy, specify a valid DB parameter group
--- identifier, for example 'my-db-param-group', or a valid ARN. If the source DB
--- parameter group is in a different region than the copy, specify a valid DB
--- parameter group ARN, for example 'arn:aws:rds:us-west-2:123456789012:pg:special-parameters'.
-cdbpgSourceDBParameterGroupIdentifier :: Lens' CopyDBParameterGroup Text
-cdbpgSourceDBParameterGroupIdentifier =
-    lens _cdbpgSourceDBParameterGroupIdentifier
-        (\s a -> s { _cdbpgSourceDBParameterGroupIdentifier = a })
-
-cdbpgTags :: Lens' CopyDBParameterGroup [Tag]
-cdbpgTags = lens _cdbpgTags (\s a -> s { _cdbpgTags = a }) . _List
-
--- | A description for the copied DB parameter group.
-cdbpgTargetDBParameterGroupDescription :: Lens' CopyDBParameterGroup Text
-cdbpgTargetDBParameterGroupDescription =
-    lens _cdbpgTargetDBParameterGroupDescription
-        (\s a -> s { _cdbpgTargetDBParameterGroupDescription = a })
+-- -   Must specify a valid DB parameter group.
+-- -   If the source DB parameter group is in the same region as the copy,
+--     specify a valid DB parameter group identifier, for example
+--     'my-db-param-group', or a valid ARN.
+-- -   If the source DB parameter group is in a different region than the
+--     copy, specify a valid DB parameter group ARN, for example
+--     'arn:aws:rds:us-west-2:123456789012:pg:special-parameters'.
+cdpgSourceDBParameterGroupIdentifier :: Lens' CopyDBParameterGroup Text
+cdpgSourceDBParameterGroupIdentifier = lens _cdpgSourceDBParameterGroupIdentifier (\ s a -> s{_cdpgSourceDBParameterGroupIdentifier = a});
 
 -- | The identifier for the copied DB parameter group.
 --
 -- Constraints:
 --
--- Cannot be null, empty, or blank Must contain from 1 to 255 alphanumeric
--- characters or hyphens First character must be a letter Cannot end with a
--- hyphen or contain two consecutive hyphens  Example: 'my-db-parameter-group'
-cdbpgTargetDBParameterGroupIdentifier :: Lens' CopyDBParameterGroup Text
-cdbpgTargetDBParameterGroupIdentifier =
-    lens _cdbpgTargetDBParameterGroupIdentifier
-        (\s a -> s { _cdbpgTargetDBParameterGroupIdentifier = a })
+-- -   Cannot be null, empty, or blank
+-- -   Must contain from 1 to 255 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+--
+-- Example: 'my-db-parameter-group'
+cdpgTargetDBParameterGroupIdentifier :: Lens' CopyDBParameterGroup Text
+cdpgTargetDBParameterGroupIdentifier = lens _cdpgTargetDBParameterGroupIdentifier (\ s a -> s{_cdpgTargetDBParameterGroupIdentifier = a});
 
-newtype CopyDBParameterGroupResponse = CopyDBParameterGroupResponse
-    { _cdbpgr1DBParameterGroup :: Maybe DBParameterGroup
-    } deriving (Eq, Read, Show)
+-- | A description for the copied DB parameter group.
+cdpgTargetDBParameterGroupDescription :: Lens' CopyDBParameterGroup Text
+cdpgTargetDBParameterGroupDescription = lens _cdpgTargetDBParameterGroupDescription (\ s a -> s{_cdpgTargetDBParameterGroupDescription = a});
 
--- | 'CopyDBParameterGroupResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cdbpgr1DBParameterGroup' @::@ 'Maybe' 'DBParameterGroup'
---
-copyDBParameterGroupResponse :: CopyDBParameterGroupResponse
-copyDBParameterGroupResponse = CopyDBParameterGroupResponse
-    { _cdbpgr1DBParameterGroup = Nothing
-    }
+instance AWSRequest CopyDBParameterGroup where
+        type Sv CopyDBParameterGroup = RDS
+        type Rs CopyDBParameterGroup =
+             CopyDBParameterGroupResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CopyDBParameterGroupResult"
+              (\ s h x ->
+                 CopyDBParameterGroupResponse' <$>
+                   (x .@? "DBParameterGroup") <*> (pure (fromEnum s)))
 
-cdbpgr1DBParameterGroup :: Lens' CopyDBParameterGroupResponse (Maybe DBParameterGroup)
-cdbpgr1DBParameterGroup =
-    lens _cdbpgr1DBParameterGroup (\s a -> s { _cdbpgr1DBParameterGroup = a })
+instance ToHeaders CopyDBParameterGroup where
+        toHeaders = const mempty
 
 instance ToPath CopyDBParameterGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CopyDBParameterGroup where
-    toQuery CopyDBParameterGroup{..} = mconcat
-        [ "SourceDBParameterGroupIdentifier"  =? _cdbpgSourceDBParameterGroupIdentifier
-        , "Tags"                              =? _cdbpgTags
-        , "TargetDBParameterGroupDescription" =? _cdbpgTargetDBParameterGroupDescription
-        , "TargetDBParameterGroupIdentifier"  =? _cdbpgTargetDBParameterGroupIdentifier
-        ]
+        toQuery CopyDBParameterGroup'{..}
+          = mconcat
+              ["Action" =: ("CopyDBParameterGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cdpgTags),
+               "SourceDBParameterGroupIdentifier" =:
+                 _cdpgSourceDBParameterGroupIdentifier,
+               "TargetDBParameterGroupIdentifier" =:
+                 _cdpgTargetDBParameterGroupIdentifier,
+               "TargetDBParameterGroupDescription" =:
+                 _cdpgTargetDBParameterGroupDescription]
 
-instance ToHeaders CopyDBParameterGroup
+-- | /See:/ 'copyDBParameterGroupResponse' smart constructor.
+data CopyDBParameterGroupResponse = CopyDBParameterGroupResponse'
+    { _cdbpgrsDBParameterGroup :: !(Maybe DBParameterGroup)
+    , _cdbpgrsStatus           :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CopyDBParameterGroup where
-    type Sv CopyDBParameterGroup = RDS
-    type Rs CopyDBParameterGroup = CopyDBParameterGroupResponse
+-- | Creates a value of 'CopyDBParameterGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdbpgrsDBParameterGroup'
+--
+-- * 'cdbpgrsStatus'
+copyDBParameterGroupResponse
+    :: Int -- ^ 'cdbpgrsStatus'
+    -> CopyDBParameterGroupResponse
+copyDBParameterGroupResponse pStatus_ =
+    CopyDBParameterGroupResponse'
+    { _cdbpgrsDBParameterGroup = Nothing
+    , _cdbpgrsStatus = pStatus_
+    }
 
-    request  = post "CopyDBParameterGroup"
-    response = xmlResponse
+-- | Undocumented member.
+cdbpgrsDBParameterGroup :: Lens' CopyDBParameterGroupResponse (Maybe DBParameterGroup)
+cdbpgrsDBParameterGroup = lens _cdbpgrsDBParameterGroup (\ s a -> s{_cdbpgrsDBParameterGroup = a});
 
-instance FromXML CopyDBParameterGroupResponse where
-    parseXML = withElement "CopyDBParameterGroupResult" $ \x -> CopyDBParameterGroupResponse
-        <$> x .@? "DBParameterGroup"
+-- | The response status code.
+cdbpgrsStatus :: Lens' CopyDBParameterGroupResponse Int
+cdbpgrsStatus = lens _cdbpgrsStatus (\ s a -> s{_cdbpgrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CopyDBSnapshot.hs b/gen/Network/AWS/RDS/CopyDBSnapshot.hs
--- a/gen/Network/AWS/RDS/CopyDBSnapshot.hs
+++ b/gen/Network/AWS/RDS/CopyDBSnapshot.hs
@@ -1,147 +1,178 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.CopyDBSnapshot
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Copies the specified DBSnapshot. The source DBSnapshot must be in the
--- "available" state.
+-- Copies the specified DBSnapshot. The source DBSnapshot must be in the
+-- \"available\" state.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBSnapshot.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBSnapshot.html AWS API Reference> for CopyDBSnapshot.
 module Network.AWS.RDS.CopyDBSnapshot
     (
-    -- * Request
-      CopyDBSnapshot
-    -- ** Request constructor
-    , copyDBSnapshot
-    -- ** Request lenses
-    , cdbsSourceDBSnapshotIdentifier
-    , cdbsTags
-    , cdbsTargetDBSnapshotIdentifier
+    -- * Creating a Request
+      copyDBSnapshot
+    , CopyDBSnapshot
+    -- * Request Lenses
+    , cdsCopyTags
+    , cdsTags
+    , cdsSourceDBSnapshotIdentifier
+    , cdsTargetDBSnapshotIdentifier
 
-    -- * Response
-    , CopyDBSnapshotResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , copyDBSnapshotResponse
-    -- ** Response lenses
-    , cdbsrDBSnapshot
+    , CopyDBSnapshotResponse
+    -- * Response Lenses
+    , cdsrsDBSnapshot
+    , cdsrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CopyDBSnapshot = CopyDBSnapshot
-    { _cdbsSourceDBSnapshotIdentifier :: Text
-    , _cdbsTags                       :: List "member" Tag
-    , _cdbsTargetDBSnapshotIdentifier :: Text
-    } deriving (Eq, Read, Show)
+-- |
+--
+-- /See:/ 'copyDBSnapshot' smart constructor.
+data CopyDBSnapshot = CopyDBSnapshot'
+    { _cdsCopyTags                   :: !(Maybe Bool)
+    , _cdsTags                       :: !(Maybe [Tag])
+    , _cdsSourceDBSnapshotIdentifier :: !Text
+    , _cdsTargetDBSnapshotIdentifier :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CopyDBSnapshot' constructor.
+-- | Creates a value of 'CopyDBSnapshot' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cdbsSourceDBSnapshotIdentifier' @::@ 'Text'
+-- * 'cdsCopyTags'
 --
--- * 'cdbsTags' @::@ ['Tag']
+-- * 'cdsTags'
 --
--- * 'cdbsTargetDBSnapshotIdentifier' @::@ 'Text'
+-- * 'cdsSourceDBSnapshotIdentifier'
 --
-copyDBSnapshot :: Text -- ^ 'cdbsSourceDBSnapshotIdentifier'
-               -> Text -- ^ 'cdbsTargetDBSnapshotIdentifier'
-               -> CopyDBSnapshot
-copyDBSnapshot p1 p2 = CopyDBSnapshot
-    { _cdbsSourceDBSnapshotIdentifier = p1
-    , _cdbsTargetDBSnapshotIdentifier = p2
-    , _cdbsTags                       = mempty
+-- * 'cdsTargetDBSnapshotIdentifier'
+copyDBSnapshot
+    :: Text -- ^ 'cdsSourceDBSnapshotIdentifier'
+    -> Text -- ^ 'cdsTargetDBSnapshotIdentifier'
+    -> CopyDBSnapshot
+copyDBSnapshot pSourceDBSnapshotIdentifier_ pTargetDBSnapshotIdentifier_ =
+    CopyDBSnapshot'
+    { _cdsCopyTags = Nothing
+    , _cdsTags = Nothing
+    , _cdsSourceDBSnapshotIdentifier = pSourceDBSnapshotIdentifier_
+    , _cdsTargetDBSnapshotIdentifier = pTargetDBSnapshotIdentifier_
     }
 
+-- | This property is not currently implemented.
+cdsCopyTags :: Lens' CopyDBSnapshot (Maybe Bool)
+cdsCopyTags = lens _cdsCopyTags (\ s a -> s{_cdsCopyTags = a});
+
+-- | Undocumented member.
+cdsTags :: Lens' CopyDBSnapshot [Tag]
+cdsTags = lens _cdsTags (\ s a -> s{_cdsTags = a}) . _Default . _Coerce;
+
 -- | The identifier for the source DB snapshot.
 --
 -- Constraints:
 --
--- Must specify a valid system snapshot in the "available" state. If the
--- source snapshot is in the same region as the copy, specify a valid DB
--- snapshot identifier. If the source snapshot is in a different region than the
--- copy, specify a valid DB snapshot ARN. For more information, go to <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html  Copying aDB Snapshot>.  Example: 'rds:mydb-2012-04-02-00-01'
+-- -   Must specify a valid system snapshot in the \"available\" state.
+-- -   If the source snapshot is in the same region as the copy, specify a
+--     valid DB snapshot identifier.
+-- -   If the source snapshot is in a different region than the copy,
+--     specify a valid DB snapshot ARN. For more information, go to
+--     <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html Copying a DB Snapshot>.
 --
--- Example: 'arn:aws:rds:rr-regn-1:123456789012:snapshot:mysql-instance1-snapshot-20130805'
-cdbsSourceDBSnapshotIdentifier :: Lens' CopyDBSnapshot Text
-cdbsSourceDBSnapshotIdentifier =
-    lens _cdbsSourceDBSnapshotIdentifier
-        (\s a -> s { _cdbsSourceDBSnapshotIdentifier = a })
-
-cdbsTags :: Lens' CopyDBSnapshot [Tag]
-cdbsTags = lens _cdbsTags (\s a -> s { _cdbsTags = a }) . _List
+-- Example: 'rds:mydb-2012-04-02-00-01'
+--
+-- Example:
+-- 'arn:aws:rds:rr-regn-1:123456789012:snapshot:mysql-instance1-snapshot-20130805'
+cdsSourceDBSnapshotIdentifier :: Lens' CopyDBSnapshot Text
+cdsSourceDBSnapshotIdentifier = lens _cdsSourceDBSnapshotIdentifier (\ s a -> s{_cdsSourceDBSnapshotIdentifier = a});
 
 -- | The identifier for the copied snapshot.
 --
 -- Constraints:
 --
--- Cannot be null, empty, or blank Must contain from 1 to 255 alphanumeric
--- characters or hyphens First character must be a letter Cannot end with a
--- hyphen or contain two consecutive hyphens  Example: 'my-db-snapshot'
-cdbsTargetDBSnapshotIdentifier :: Lens' CopyDBSnapshot Text
-cdbsTargetDBSnapshotIdentifier =
-    lens _cdbsTargetDBSnapshotIdentifier
-        (\s a -> s { _cdbsTargetDBSnapshotIdentifier = a })
-
-newtype CopyDBSnapshotResponse = CopyDBSnapshotResponse
-    { _cdbsrDBSnapshot :: Maybe DBSnapshot
-    } deriving (Eq, Read, Show)
-
--- | 'CopyDBSnapshotResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cdbsrDBSnapshot' @::@ 'Maybe' 'DBSnapshot'
+-- -   Cannot be null, empty, or blank
+-- -   Must contain from 1 to 255 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
 --
-copyDBSnapshotResponse :: CopyDBSnapshotResponse
-copyDBSnapshotResponse = CopyDBSnapshotResponse
-    { _cdbsrDBSnapshot = Nothing
-    }
+-- Example: 'my-db-snapshot'
+cdsTargetDBSnapshotIdentifier :: Lens' CopyDBSnapshot Text
+cdsTargetDBSnapshotIdentifier = lens _cdsTargetDBSnapshotIdentifier (\ s a -> s{_cdsTargetDBSnapshotIdentifier = a});
 
-cdbsrDBSnapshot :: Lens' CopyDBSnapshotResponse (Maybe DBSnapshot)
-cdbsrDBSnapshot = lens _cdbsrDBSnapshot (\s a -> s { _cdbsrDBSnapshot = a })
+instance AWSRequest CopyDBSnapshot where
+        type Sv CopyDBSnapshot = RDS
+        type Rs CopyDBSnapshot = CopyDBSnapshotResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CopyDBSnapshotResult"
+              (\ s h x ->
+                 CopyDBSnapshotResponse' <$>
+                   (x .@? "DBSnapshot") <*> (pure (fromEnum s)))
 
+instance ToHeaders CopyDBSnapshot where
+        toHeaders = const mempty
+
 instance ToPath CopyDBSnapshot where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CopyDBSnapshot where
-    toQuery CopyDBSnapshot{..} = mconcat
-        [ "SourceDBSnapshotIdentifier" =? _cdbsSourceDBSnapshotIdentifier
-        , "Tags"                       =? _cdbsTags
-        , "TargetDBSnapshotIdentifier" =? _cdbsTargetDBSnapshotIdentifier
-        ]
+        toQuery CopyDBSnapshot'{..}
+          = mconcat
+              ["Action" =: ("CopyDBSnapshot" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "CopyTags" =: _cdsCopyTags,
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cdsTags),
+               "SourceDBSnapshotIdentifier" =:
+                 _cdsSourceDBSnapshotIdentifier,
+               "TargetDBSnapshotIdentifier" =:
+                 _cdsTargetDBSnapshotIdentifier]
 
-instance ToHeaders CopyDBSnapshot
+-- | /See:/ 'copyDBSnapshotResponse' smart constructor.
+data CopyDBSnapshotResponse = CopyDBSnapshotResponse'
+    { _cdsrsDBSnapshot :: !(Maybe DBSnapshot)
+    , _cdsrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CopyDBSnapshot where
-    type Sv CopyDBSnapshot = RDS
-    type Rs CopyDBSnapshot = CopyDBSnapshotResponse
+-- | Creates a value of 'CopyDBSnapshotResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdsrsDBSnapshot'
+--
+-- * 'cdsrsStatus'
+copyDBSnapshotResponse
+    :: Int -- ^ 'cdsrsStatus'
+    -> CopyDBSnapshotResponse
+copyDBSnapshotResponse pStatus_ =
+    CopyDBSnapshotResponse'
+    { _cdsrsDBSnapshot = Nothing
+    , _cdsrsStatus = pStatus_
+    }
 
-    request  = post "CopyDBSnapshot"
-    response = xmlResponse
+-- | Undocumented member.
+cdsrsDBSnapshot :: Lens' CopyDBSnapshotResponse (Maybe DBSnapshot)
+cdsrsDBSnapshot = lens _cdsrsDBSnapshot (\ s a -> s{_cdsrsDBSnapshot = a});
 
-instance FromXML CopyDBSnapshotResponse where
-    parseXML = withElement "CopyDBSnapshotResult" $ \x -> CopyDBSnapshotResponse
-        <$> x .@? "DBSnapshot"
+-- | The response status code.
+cdsrsStatus :: Lens' CopyDBSnapshotResponse Int
+cdsrsStatus = lens _cdsrsStatus (\ s a -> s{_cdsrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CopyOptionGroup.hs b/gen/Network/AWS/RDS/CopyOptionGroup.hs
--- a/gen/Network/AWS/RDS/CopyOptionGroup.hs
+++ b/gen/Network/AWS/RDS/CopyOptionGroup.hs
@@ -1,156 +1,177 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.CopyOptionGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Copies the specified option group.
+-- Copies the specified option group.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyOptionGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyOptionGroup.html AWS API Reference> for CopyOptionGroup.
 module Network.AWS.RDS.CopyOptionGroup
     (
-    -- * Request
-      CopyOptionGroup
-    -- ** Request constructor
-    , copyOptionGroup
-    -- ** Request lenses
-    , cog1SourceOptionGroupIdentifier
-    , cog1Tags
-    , cog1TargetOptionGroupDescription
-    , cog1TargetOptionGroupIdentifier
+    -- * Creating a Request
+      copyOptionGroup
+    , CopyOptionGroup
+    -- * Request Lenses
+    , cTags
+    , cSourceOptionGroupIdentifier
+    , cTargetOptionGroupIdentifier
+    , cTargetOptionGroupDescription
 
-    -- * Response
-    , CopyOptionGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , copyOptionGroupResponse
-    -- ** Response lenses
-    , cogrOptionGroup
+    , CopyOptionGroupResponse
+    -- * Response Lenses
+    , cogrsOptionGroup
+    , cogrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data CopyOptionGroup = CopyOptionGroup
-    { _cog1SourceOptionGroupIdentifier  :: Text
-    , _cog1Tags                         :: List "member" Tag
-    , _cog1TargetOptionGroupDescription :: Text
-    , _cog1TargetOptionGroupIdentifier  :: Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CopyOptionGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'copyOptionGroup' smart constructor.
+data CopyOptionGroup = CopyOptionGroup'
+    { _cTags                         :: !(Maybe [Tag])
+    , _cSourceOptionGroupIdentifier  :: !Text
+    , _cTargetOptionGroupIdentifier  :: !Text
+    , _cTargetOptionGroupDescription :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CopyOptionGroup' with the minimum fields required to make a request.
 --
--- * 'cog1SourceOptionGroupIdentifier' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cog1Tags' @::@ ['Tag']
+-- * 'cTags'
 --
--- * 'cog1TargetOptionGroupDescription' @::@ 'Text'
+-- * 'cSourceOptionGroupIdentifier'
 --
--- * 'cog1TargetOptionGroupIdentifier' @::@ 'Text'
+-- * 'cTargetOptionGroupIdentifier'
 --
-copyOptionGroup :: Text -- ^ 'cog1SourceOptionGroupIdentifier'
-                -> Text -- ^ 'cog1TargetOptionGroupIdentifier'
-                -> Text -- ^ 'cog1TargetOptionGroupDescription'
-                -> CopyOptionGroup
-copyOptionGroup p1 p2 p3 = CopyOptionGroup
-    { _cog1SourceOptionGroupIdentifier  = p1
-    , _cog1TargetOptionGroupIdentifier  = p2
-    , _cog1TargetOptionGroupDescription = p3
-    , _cog1Tags                         = mempty
+-- * 'cTargetOptionGroupDescription'
+copyOptionGroup
+    :: Text -- ^ 'cSourceOptionGroupIdentifier'
+    -> Text -- ^ 'cTargetOptionGroupIdentifier'
+    -> Text -- ^ 'cTargetOptionGroupDescription'
+    -> CopyOptionGroup
+copyOptionGroup pSourceOptionGroupIdentifier_ pTargetOptionGroupIdentifier_ pTargetOptionGroupDescription_ =
+    CopyOptionGroup'
+    { _cTags = Nothing
+    , _cSourceOptionGroupIdentifier = pSourceOptionGroupIdentifier_
+    , _cTargetOptionGroupIdentifier = pTargetOptionGroupIdentifier_
+    , _cTargetOptionGroupDescription = pTargetOptionGroupDescription_
     }
 
--- | The identifier or ARN for the source option group.
+-- | Undocumented member.
+cTags :: Lens' CopyOptionGroup [Tag]
+cTags = lens _cTags (\ s a -> s{_cTags = a}) . _Default . _Coerce;
+
+-- | The identifier or ARN for the source option group. For information about
+-- creating an ARN, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN Constructing an RDS Amazon Resource Name (ARN)>.
 --
 -- Constraints:
 --
--- Must specify a valid option group. If the source option group is in the
--- same region as the copy, specify a valid option group identifier, for example 'my-option-group', or a valid ARN. If the source option group is in a different
--- region than the copy, specify a valid option group ARN, for example 'arn:aws:rds:us-west-2:123456789012:og:special-options'.
-cog1SourceOptionGroupIdentifier :: Lens' CopyOptionGroup Text
-cog1SourceOptionGroupIdentifier =
-    lens _cog1SourceOptionGroupIdentifier
-        (\s a -> s { _cog1SourceOptionGroupIdentifier = a })
-
-cog1Tags :: Lens' CopyOptionGroup [Tag]
-cog1Tags = lens _cog1Tags (\s a -> s { _cog1Tags = a }) . _List
-
--- | The description for the copied option group.
-cog1TargetOptionGroupDescription :: Lens' CopyOptionGroup Text
-cog1TargetOptionGroupDescription =
-    lens _cog1TargetOptionGroupDescription
-        (\s a -> s { _cog1TargetOptionGroupDescription = a })
+-- -   Must specify a valid option group.
+-- -   If the source option group is in the same region as the copy,
+--     specify a valid option group identifier, for example
+--     'my-option-group', or a valid ARN.
+-- -   If the source option group is in a different region than the copy,
+--     specify a valid option group ARN, for example
+--     'arn:aws:rds:us-west-2:123456789012:og:special-options'.
+cSourceOptionGroupIdentifier :: Lens' CopyOptionGroup Text
+cSourceOptionGroupIdentifier = lens _cSourceOptionGroupIdentifier (\ s a -> s{_cSourceOptionGroupIdentifier = a});
 
 -- | The identifier for the copied option group.
 --
 -- Constraints:
 --
--- Cannot be null, empty, or blank Must contain from 1 to 255 alphanumeric
--- characters or hyphens First character must be a letter Cannot end with a
--- hyphen or contain two consecutive hyphens  Example: 'my-option-group'
-cog1TargetOptionGroupIdentifier :: Lens' CopyOptionGroup Text
-cog1TargetOptionGroupIdentifier =
-    lens _cog1TargetOptionGroupIdentifier
-        (\s a -> s { _cog1TargetOptionGroupIdentifier = a })
+-- -   Cannot be null, empty, or blank
+-- -   Must contain from 1 to 255 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+--
+-- Example: 'my-option-group'
+cTargetOptionGroupIdentifier :: Lens' CopyOptionGroup Text
+cTargetOptionGroupIdentifier = lens _cTargetOptionGroupIdentifier (\ s a -> s{_cTargetOptionGroupIdentifier = a});
 
-newtype CopyOptionGroupResponse = CopyOptionGroupResponse
-    { _cogrOptionGroup :: Maybe OptionGroup
-    } deriving (Eq, Read, Show)
+-- | The description for the copied option group.
+cTargetOptionGroupDescription :: Lens' CopyOptionGroup Text
+cTargetOptionGroupDescription = lens _cTargetOptionGroupDescription (\ s a -> s{_cTargetOptionGroupDescription = a});
 
--- | 'CopyOptionGroupResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cogrOptionGroup' @::@ 'Maybe' 'OptionGroup'
---
-copyOptionGroupResponse :: CopyOptionGroupResponse
-copyOptionGroupResponse = CopyOptionGroupResponse
-    { _cogrOptionGroup = Nothing
-    }
+instance AWSRequest CopyOptionGroup where
+        type Sv CopyOptionGroup = RDS
+        type Rs CopyOptionGroup = CopyOptionGroupResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CopyOptionGroupResult"
+              (\ s h x ->
+                 CopyOptionGroupResponse' <$>
+                   (x .@? "OptionGroup") <*> (pure (fromEnum s)))
 
-cogrOptionGroup :: Lens' CopyOptionGroupResponse (Maybe OptionGroup)
-cogrOptionGroup = lens _cogrOptionGroup (\s a -> s { _cogrOptionGroup = a })
+instance ToHeaders CopyOptionGroup where
+        toHeaders = const mempty
 
 instance ToPath CopyOptionGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CopyOptionGroup where
-    toQuery CopyOptionGroup{..} = mconcat
-        [ "SourceOptionGroupIdentifier"  =? _cog1SourceOptionGroupIdentifier
-        , "Tags"                         =? _cog1Tags
-        , "TargetOptionGroupDescription" =? _cog1TargetOptionGroupDescription
-        , "TargetOptionGroupIdentifier"  =? _cog1TargetOptionGroupIdentifier
-        ]
+        toQuery CopyOptionGroup'{..}
+          = mconcat
+              ["Action" =: ("CopyOptionGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cTags),
+               "SourceOptionGroupIdentifier" =:
+                 _cSourceOptionGroupIdentifier,
+               "TargetOptionGroupIdentifier" =:
+                 _cTargetOptionGroupIdentifier,
+               "TargetOptionGroupDescription" =:
+                 _cTargetOptionGroupDescription]
 
-instance ToHeaders CopyOptionGroup
+-- | /See:/ 'copyOptionGroupResponse' smart constructor.
+data CopyOptionGroupResponse = CopyOptionGroupResponse'
+    { _cogrsOptionGroup :: !(Maybe OptionGroup)
+    , _cogrsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CopyOptionGroup where
-    type Sv CopyOptionGroup = RDS
-    type Rs CopyOptionGroup = CopyOptionGroupResponse
+-- | Creates a value of 'CopyOptionGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cogrsOptionGroup'
+--
+-- * 'cogrsStatus'
+copyOptionGroupResponse
+    :: Int -- ^ 'cogrsStatus'
+    -> CopyOptionGroupResponse
+copyOptionGroupResponse pStatus_ =
+    CopyOptionGroupResponse'
+    { _cogrsOptionGroup = Nothing
+    , _cogrsStatus = pStatus_
+    }
 
-    request  = post "CopyOptionGroup"
-    response = xmlResponse
+-- | Undocumented member.
+cogrsOptionGroup :: Lens' CopyOptionGroupResponse (Maybe OptionGroup)
+cogrsOptionGroup = lens _cogrsOptionGroup (\ s a -> s{_cogrsOptionGroup = a});
 
-instance FromXML CopyOptionGroupResponse where
-    parseXML = withElement "CopyOptionGroupResult" $ \x -> CopyOptionGroupResponse
-        <$> x .@? "OptionGroup"
+-- | The response status code.
+cogrsStatus :: Lens' CopyOptionGroupResponse Int
+cogrsStatus = lens _cogrsStatus (\ s a -> s{_cogrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CreateDBCluster.hs b/gen/Network/AWS/RDS/CreateDBCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/CreateDBCluster.hs
@@ -0,0 +1,371 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.CreateDBCluster
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new Amazon Aurora DB cluster. For more information on Amazon
+-- Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html AWS API Reference> for CreateDBCluster.
+module Network.AWS.RDS.CreateDBCluster
+    (
+    -- * Creating a Request
+      createDBCluster
+    , CreateDBCluster
+    -- * Request Lenses
+    , cdcEngineVersion
+    , cdcDBClusterIdentifier
+    , cdcMasterUserPassword
+    , cdcMasterUsername
+    , cdcDBSubnetGroupName
+    , cdcEngine
+    , cdcPreferredMaintenanceWindow
+    , cdcCharacterSetName
+    , cdcAvailabilityZones
+    , cdcPreferredBackupWindow
+    , cdcBackupRetentionPeriod
+    , cdcDatabaseName
+    , cdcVPCSecurityGroupIds
+    , cdcDBClusterParameterGroupName
+    , cdcOptionGroupName
+    , cdcTags
+    , cdcPort
+
+    -- * Destructuring the Response
+    , createDBClusterResponse
+    , CreateDBClusterResponse
+    -- * Response Lenses
+    , cdcrsDBCluster
+    , cdcrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'createDBCluster' smart constructor.
+data CreateDBCluster = CreateDBCluster'
+    { _cdcEngineVersion               :: !(Maybe Text)
+    , _cdcDBClusterIdentifier         :: !(Maybe Text)
+    , _cdcMasterUserPassword          :: !(Maybe Text)
+    , _cdcMasterUsername              :: !(Maybe Text)
+    , _cdcDBSubnetGroupName           :: !(Maybe Text)
+    , _cdcEngine                      :: !(Maybe Text)
+    , _cdcPreferredMaintenanceWindow  :: !(Maybe Text)
+    , _cdcCharacterSetName            :: !(Maybe Text)
+    , _cdcAvailabilityZones           :: !(Maybe [Text])
+    , _cdcPreferredBackupWindow       :: !(Maybe Text)
+    , _cdcBackupRetentionPeriod       :: !(Maybe Int)
+    , _cdcDatabaseName                :: !(Maybe Text)
+    , _cdcVPCSecurityGroupIds         :: !(Maybe [Text])
+    , _cdcDBClusterParameterGroupName :: !(Maybe Text)
+    , _cdcOptionGroupName             :: !(Maybe Text)
+    , _cdcTags                        :: !(Maybe [Tag])
+    , _cdcPort                        :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDBCluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdcEngineVersion'
+--
+-- * 'cdcDBClusterIdentifier'
+--
+-- * 'cdcMasterUserPassword'
+--
+-- * 'cdcMasterUsername'
+--
+-- * 'cdcDBSubnetGroupName'
+--
+-- * 'cdcEngine'
+--
+-- * 'cdcPreferredMaintenanceWindow'
+--
+-- * 'cdcCharacterSetName'
+--
+-- * 'cdcAvailabilityZones'
+--
+-- * 'cdcPreferredBackupWindow'
+--
+-- * 'cdcBackupRetentionPeriod'
+--
+-- * 'cdcDatabaseName'
+--
+-- * 'cdcVPCSecurityGroupIds'
+--
+-- * 'cdcDBClusterParameterGroupName'
+--
+-- * 'cdcOptionGroupName'
+--
+-- * 'cdcTags'
+--
+-- * 'cdcPort'
+createDBCluster
+    :: CreateDBCluster
+createDBCluster =
+    CreateDBCluster'
+    { _cdcEngineVersion = Nothing
+    , _cdcDBClusterIdentifier = Nothing
+    , _cdcMasterUserPassword = Nothing
+    , _cdcMasterUsername = Nothing
+    , _cdcDBSubnetGroupName = Nothing
+    , _cdcEngine = Nothing
+    , _cdcPreferredMaintenanceWindow = Nothing
+    , _cdcCharacterSetName = Nothing
+    , _cdcAvailabilityZones = Nothing
+    , _cdcPreferredBackupWindow = Nothing
+    , _cdcBackupRetentionPeriod = Nothing
+    , _cdcDatabaseName = Nothing
+    , _cdcVPCSecurityGroupIds = Nothing
+    , _cdcDBClusterParameterGroupName = Nothing
+    , _cdcOptionGroupName = Nothing
+    , _cdcTags = Nothing
+    , _cdcPort = Nothing
+    }
+
+-- | The version number of the database engine to use.
+--
+-- __Aurora__
+--
+-- Example: '5.6.0'
+cdcEngineVersion :: Lens' CreateDBCluster (Maybe Text)
+cdcEngineVersion = lens _cdcEngineVersion (\ s a -> s{_cdcEngineVersion = a});
+
+-- | The DB cluster identifier. This parameter is stored as a lowercase
+-- string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
+-- -   First character must be a letter.
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: 'my-cluster1'
+cdcDBClusterIdentifier :: Lens' CreateDBCluster (Maybe Text)
+cdcDBClusterIdentifier = lens _cdcDBClusterIdentifier (\ s a -> s{_cdcDBClusterIdentifier = a});
+
+-- | The password for the master database user. This password can contain any
+-- printable ASCII character except \"\/\", \"\"\", or \"\'\".
+--
+-- Constraints: Must contain from 8 to 41 characters.
+cdcMasterUserPassword :: Lens' CreateDBCluster (Maybe Text)
+cdcMasterUserPassword = lens _cdcMasterUserPassword (\ s a -> s{_cdcMasterUserPassword = a});
+
+-- | The name of the master user for the client DB cluster.
+--
+-- Constraints:
+--
+-- -   Must be 1 to 16 alphanumeric characters.
+-- -   First character must be a letter.
+-- -   Cannot be a reserved word for the chosen database engine.
+cdcMasterUsername :: Lens' CreateDBCluster (Maybe Text)
+cdcMasterUsername = lens _cdcMasterUsername (\ s a -> s{_cdcMasterUsername = a});
+
+-- | A DB subnet group to associate with this DB cluster.
+cdcDBSubnetGroupName :: Lens' CreateDBCluster (Maybe Text)
+cdcDBSubnetGroupName = lens _cdcDBSubnetGroupName (\ s a -> s{_cdcDBSubnetGroupName = a});
+
+-- | The name of the database engine to be used for this DB cluster.
+--
+-- Valid Values: 'MySQL'
+cdcEngine :: Lens' CreateDBCluster (Maybe Text)
+cdcEngine = lens _cdcEngine (\ s a -> s{_cdcEngine = a});
+
+-- | The weekly time range during which system maintenance can occur, in
+-- Universal Coordinated Time (UTC).
+--
+-- Format: 'ddd:hh24:mi-ddd:hh24:mi'
+--
+-- Default: A 30-minute window selected at random from an 8-hour block of
+-- time per region, occurring on a random day of the week. To see the time
+-- blocks available, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
+-- in the /Amazon RDS User Guide./
+--
+-- Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+--
+-- Constraints: Minimum 30-minute window.
+cdcPreferredMaintenanceWindow :: Lens' CreateDBCluster (Maybe Text)
+cdcPreferredMaintenanceWindow = lens _cdcPreferredMaintenanceWindow (\ s a -> s{_cdcPreferredMaintenanceWindow = a});
+
+-- | A value that indicates that the DB cluster should be associated with the
+-- specified CharacterSet.
+cdcCharacterSetName :: Lens' CreateDBCluster (Maybe Text)
+cdcCharacterSetName = lens _cdcCharacterSetName (\ s a -> s{_cdcCharacterSetName = a});
+
+-- | A list of EC2 Availability Zones that instances in the DB cluster can be
+-- created in. For information on regions and Availability Zones, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html Regions and Availability Zones>.
+cdcAvailabilityZones :: Lens' CreateDBCluster [Text]
+cdcAvailabilityZones = lens _cdcAvailabilityZones (\ s a -> s{_cdcAvailabilityZones = a}) . _Default . _Coerce;
+
+-- | The daily time range during which automated backups are created if
+-- automated backups are enabled using the 'BackupRetentionPeriod'
+-- parameter.
+--
+-- Default: A 30-minute window selected at random from an 8-hour block of
+-- time per region. To see the time blocks available, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
+-- in the /Amazon RDS User Guide./
+--
+-- Constraints:
+--
+-- -   Must be in the format 'hh24:mi-hh24:mi'.
+-- -   Times should be in Universal Coordinated Time (UTC).
+-- -   Must not conflict with the preferred maintenance window.
+-- -   Must be at least 30 minutes.
+cdcPreferredBackupWindow :: Lens' CreateDBCluster (Maybe Text)
+cdcPreferredBackupWindow = lens _cdcPreferredBackupWindow (\ s a -> s{_cdcPreferredBackupWindow = a});
+
+-- | The number of days for which automated backups are retained. Setting
+-- this parameter to a positive number enables backups. Setting this
+-- parameter to 0 disables automated backups.
+--
+-- Default: 1
+--
+-- Constraints:
+--
+-- -   Must be a value from 0 to 35
+cdcBackupRetentionPeriod :: Lens' CreateDBCluster (Maybe Int)
+cdcBackupRetentionPeriod = lens _cdcBackupRetentionPeriod (\ s a -> s{_cdcBackupRetentionPeriod = a});
+
+-- | The name for your database of up to 8 alpha-numeric characters. If you
+-- do not provide a name, Amazon RDS will not create a database in the DB
+-- cluster you are creating.
+cdcDatabaseName :: Lens' CreateDBCluster (Maybe Text)
+cdcDatabaseName = lens _cdcDatabaseName (\ s a -> s{_cdcDatabaseName = a});
+
+-- | A list of EC2 VPC security groups to associate with this DB cluster.
+cdcVPCSecurityGroupIds :: Lens' CreateDBCluster [Text]
+cdcVPCSecurityGroupIds = lens _cdcVPCSecurityGroupIds (\ s a -> s{_cdcVPCSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | The name of the DB cluster parameter group to associate with this DB
+-- cluster. If this argument is omitted, 'default.aurora5.6' for the
+-- specified engine will be used.
+--
+-- Constraints:
+--
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+cdcDBClusterParameterGroupName :: Lens' CreateDBCluster (Maybe Text)
+cdcDBClusterParameterGroupName = lens _cdcDBClusterParameterGroupName (\ s a -> s{_cdcDBClusterParameterGroupName = a});
+
+-- | A value that indicates that the DB cluster should be associated with the
+-- specified option group.
+--
+-- Permanent options cannot be removed from an option group. The option
+-- group cannot be removed from a DB cluster once it is associated with a
+-- DB cluster.
+cdcOptionGroupName :: Lens' CreateDBCluster (Maybe Text)
+cdcOptionGroupName = lens _cdcOptionGroupName (\ s a -> s{_cdcOptionGroupName = a});
+
+-- | Undocumented member.
+cdcTags :: Lens' CreateDBCluster [Tag]
+cdcTags = lens _cdcTags (\ s a -> s{_cdcTags = a}) . _Default . _Coerce;
+
+-- | The port number on which the instances in the DB cluster accept
+-- connections.
+--
+-- Default: '3306'
+cdcPort :: Lens' CreateDBCluster (Maybe Int)
+cdcPort = lens _cdcPort (\ s a -> s{_cdcPort = a});
+
+instance AWSRequest CreateDBCluster where
+        type Sv CreateDBCluster = RDS
+        type Rs CreateDBCluster = CreateDBClusterResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CreateDBClusterResult"
+              (\ s h x ->
+                 CreateDBClusterResponse' <$>
+                   (x .@? "DBCluster") <*> (pure (fromEnum s)))
+
+instance ToHeaders CreateDBCluster where
+        toHeaders = const mempty
+
+instance ToPath CreateDBCluster where
+        toPath = const "/"
+
+instance ToQuery CreateDBCluster where
+        toQuery CreateDBCluster'{..}
+          = mconcat
+              ["Action" =: ("CreateDBCluster" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "EngineVersion" =: _cdcEngineVersion,
+               "DBClusterIdentifier" =: _cdcDBClusterIdentifier,
+               "MasterUserPassword" =: _cdcMasterUserPassword,
+               "MasterUsername" =: _cdcMasterUsername,
+               "DBSubnetGroupName" =: _cdcDBSubnetGroupName,
+               "Engine" =: _cdcEngine,
+               "PreferredMaintenanceWindow" =:
+                 _cdcPreferredMaintenanceWindow,
+               "CharacterSetName" =: _cdcCharacterSetName,
+               "AvailabilityZones" =:
+                 toQuery
+                   (toQueryList "AvailabilityZone" <$>
+                      _cdcAvailabilityZones),
+               "PreferredBackupWindow" =: _cdcPreferredBackupWindow,
+               "BackupRetentionPeriod" =: _cdcBackupRetentionPeriod,
+               "DatabaseName" =: _cdcDatabaseName,
+               "VpcSecurityGroupIds" =:
+                 toQuery
+                   (toQueryList "VpcSecurityGroupId" <$>
+                      _cdcVPCSecurityGroupIds),
+               "DBClusterParameterGroupName" =:
+                 _cdcDBClusterParameterGroupName,
+               "OptionGroupName" =: _cdcOptionGroupName,
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cdcTags),
+               "Port" =: _cdcPort]
+
+-- | /See:/ 'createDBClusterResponse' smart constructor.
+data CreateDBClusterResponse = CreateDBClusterResponse'
+    { _cdcrsDBCluster :: !(Maybe DBCluster)
+    , _cdcrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDBClusterResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdcrsDBCluster'
+--
+-- * 'cdcrsStatus'
+createDBClusterResponse
+    :: Int -- ^ 'cdcrsStatus'
+    -> CreateDBClusterResponse
+createDBClusterResponse pStatus_ =
+    CreateDBClusterResponse'
+    { _cdcrsDBCluster = Nothing
+    , _cdcrsStatus = pStatus_
+    }
+
+-- | Undocumented member.
+cdcrsDBCluster :: Lens' CreateDBClusterResponse (Maybe DBCluster)
+cdcrsDBCluster = lens _cdcrsDBCluster (\ s a -> s{_cdcrsDBCluster = a});
+
+-- | The response status code.
+cdcrsStatus :: Lens' CreateDBClusterResponse Int
+cdcrsStatus = lens _cdcrsStatus (\ s a -> s{_cdcrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CreateDBClusterParameterGroup.hs b/gen/Network/AWS/RDS/CreateDBClusterParameterGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/CreateDBClusterParameterGroup.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.CreateDBClusterParameterGroup
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new DB cluster parameter group.
+--
+-- Parameters in a DB cluster parameter group apply to all of the instances
+-- in a DB cluster.
+--
+-- A DB cluster parameter group is initially created with the default
+-- parameters for the database engine used by instances in the DB cluster.
+-- To provide custom values for any of the parameters, you must modify the
+-- group after creating it using ModifyDBClusterParameterGroup. Once
+-- you\'ve created a DB cluster parameter group, you need to associate it
+-- with your DB cluster using ModifyDBCluster. When you associate a new DB
+-- cluster parameter group with a running DB cluster, you need to reboot
+-- the DB instances in the DB cluster without failover for the new DB
+-- cluster parameter group and associated settings to take effect.
+--
+-- After you create a DB cluster parameter group, you should wait at least
+-- 5 minutes before creating your first DB cluster that uses that DB
+-- cluster parameter group as the default parameter group. This allows
+-- Amazon RDS to fully complete the create action before the DB cluster
+-- parameter group is used as the default for a new DB cluster. This is
+-- especially important for parameters that are critical when creating the
+-- default database for a DB cluster, such as the character set for the
+-- default database defined by the 'character_set_database' parameter. You
+-- can use the /Parameter Groups/ option of the
+-- <https://console.aws.amazon.com/rds/ Amazon RDS console> or the
+-- DescribeDBClusterParameters command to verify that your DB cluster
+-- parameter group has been created or modified.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBClusterParameterGroup.html AWS API Reference> for CreateDBClusterParameterGroup.
+module Network.AWS.RDS.CreateDBClusterParameterGroup
+    (
+    -- * Creating a Request
+      createDBClusterParameterGroup
+    , CreateDBClusterParameterGroup
+    -- * Request Lenses
+    , cdcpgTags
+    , cdcpgDBClusterParameterGroupName
+    , cdcpgDBParameterGroupFamily
+    , cdcpgDescription
+
+    -- * Destructuring the Response
+    , createDBClusterParameterGroupResponse
+    , CreateDBClusterParameterGroupResponse
+    -- * Response Lenses
+    , cdcpgrsDBClusterParameterGroup
+    , cdcpgrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'createDBClusterParameterGroup' smart constructor.
+data CreateDBClusterParameterGroup = CreateDBClusterParameterGroup'
+    { _cdcpgTags                        :: !(Maybe [Tag])
+    , _cdcpgDBClusterParameterGroupName :: !Text
+    , _cdcpgDBParameterGroupFamily      :: !Text
+    , _cdcpgDescription                 :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDBClusterParameterGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdcpgTags'
+--
+-- * 'cdcpgDBClusterParameterGroupName'
+--
+-- * 'cdcpgDBParameterGroupFamily'
+--
+-- * 'cdcpgDescription'
+createDBClusterParameterGroup
+    :: Text -- ^ 'cdcpgDBClusterParameterGroupName'
+    -> Text -- ^ 'cdcpgDBParameterGroupFamily'
+    -> Text -- ^ 'cdcpgDescription'
+    -> CreateDBClusterParameterGroup
+createDBClusterParameterGroup pDBClusterParameterGroupName_ pDBParameterGroupFamily_ pDescription_ =
+    CreateDBClusterParameterGroup'
+    { _cdcpgTags = Nothing
+    , _cdcpgDBClusterParameterGroupName = pDBClusterParameterGroupName_
+    , _cdcpgDBParameterGroupFamily = pDBParameterGroupFamily_
+    , _cdcpgDescription = pDescription_
+    }
+
+-- | Undocumented member.
+cdcpgTags :: Lens' CreateDBClusterParameterGroup [Tag]
+cdcpgTags = lens _cdcpgTags (\ s a -> s{_cdcpgTags = a}) . _Default . _Coerce;
+
+-- | The name of the DB cluster parameter group.
+--
+-- Constraints:
+--
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+--
+-- This value is stored as a lowercase string.
+cdcpgDBClusterParameterGroupName :: Lens' CreateDBClusterParameterGroup Text
+cdcpgDBClusterParameterGroupName = lens _cdcpgDBClusterParameterGroupName (\ s a -> s{_cdcpgDBClusterParameterGroupName = a});
+
+-- | The DB cluster parameter group family name. A DB cluster parameter group
+-- can be associated with one and only one DB cluster parameter group
+-- family, and can be applied only to a DB cluster running a database
+-- engine and engine version compatible with that DB cluster parameter
+-- group family.
+cdcpgDBParameterGroupFamily :: Lens' CreateDBClusterParameterGroup Text
+cdcpgDBParameterGroupFamily = lens _cdcpgDBParameterGroupFamily (\ s a -> s{_cdcpgDBParameterGroupFamily = a});
+
+-- | The description for the DB cluster parameter group.
+cdcpgDescription :: Lens' CreateDBClusterParameterGroup Text
+cdcpgDescription = lens _cdcpgDescription (\ s a -> s{_cdcpgDescription = a});
+
+instance AWSRequest CreateDBClusterParameterGroup
+         where
+        type Sv CreateDBClusterParameterGroup = RDS
+        type Rs CreateDBClusterParameterGroup =
+             CreateDBClusterParameterGroupResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "CreateDBClusterParameterGroupResult"
+              (\ s h x ->
+                 CreateDBClusterParameterGroupResponse' <$>
+                   (x .@? "DBClusterParameterGroup") <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders CreateDBClusterParameterGroup
+         where
+        toHeaders = const mempty
+
+instance ToPath CreateDBClusterParameterGroup where
+        toPath = const "/"
+
+instance ToQuery CreateDBClusterParameterGroup where
+        toQuery CreateDBClusterParameterGroup'{..}
+          = mconcat
+              ["Action" =:
+                 ("CreateDBClusterParameterGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cdcpgTags),
+               "DBClusterParameterGroupName" =:
+                 _cdcpgDBClusterParameterGroupName,
+               "DBParameterGroupFamily" =:
+                 _cdcpgDBParameterGroupFamily,
+               "Description" =: _cdcpgDescription]
+
+-- | /See:/ 'createDBClusterParameterGroupResponse' smart constructor.
+data CreateDBClusterParameterGroupResponse = CreateDBClusterParameterGroupResponse'
+    { _cdcpgrsDBClusterParameterGroup :: !(Maybe DBClusterParameterGroup)
+    , _cdcpgrsStatus                  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDBClusterParameterGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdcpgrsDBClusterParameterGroup'
+--
+-- * 'cdcpgrsStatus'
+createDBClusterParameterGroupResponse
+    :: Int -- ^ 'cdcpgrsStatus'
+    -> CreateDBClusterParameterGroupResponse
+createDBClusterParameterGroupResponse pStatus_ =
+    CreateDBClusterParameterGroupResponse'
+    { _cdcpgrsDBClusterParameterGroup = Nothing
+    , _cdcpgrsStatus = pStatus_
+    }
+
+-- | Undocumented member.
+cdcpgrsDBClusterParameterGroup :: Lens' CreateDBClusterParameterGroupResponse (Maybe DBClusterParameterGroup)
+cdcpgrsDBClusterParameterGroup = lens _cdcpgrsDBClusterParameterGroup (\ s a -> s{_cdcpgrsDBClusterParameterGroup = a});
+
+-- | The response status code.
+cdcpgrsStatus :: Lens' CreateDBClusterParameterGroupResponse Int
+cdcpgrsStatus = lens _cdcpgrsStatus (\ s a -> s{_cdcpgrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CreateDBClusterSnapshot.hs b/gen/Network/AWS/RDS/CreateDBClusterSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/CreateDBClusterSnapshot.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.CreateDBClusterSnapshot
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a snapshot of a DB cluster. For more information on Amazon
+-- Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBClusterSnapshot.html AWS API Reference> for CreateDBClusterSnapshot.
+module Network.AWS.RDS.CreateDBClusterSnapshot
+    (
+    -- * Creating a Request
+      createDBClusterSnapshot
+    , CreateDBClusterSnapshot
+    -- * Request Lenses
+    , cdcsTags
+    , cdcsDBClusterSnapshotIdentifier
+    , cdcsDBClusterIdentifier
+
+    -- * Destructuring the Response
+    , createDBClusterSnapshotResponse
+    , CreateDBClusterSnapshotResponse
+    -- * Response Lenses
+    , cdbcsrsDBClusterSnapshot
+    , cdbcsrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'createDBClusterSnapshot' smart constructor.
+data CreateDBClusterSnapshot = CreateDBClusterSnapshot'
+    { _cdcsTags                        :: !(Maybe [Tag])
+    , _cdcsDBClusterSnapshotIdentifier :: !Text
+    , _cdcsDBClusterIdentifier         :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDBClusterSnapshot' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdcsTags'
+--
+-- * 'cdcsDBClusterSnapshotIdentifier'
+--
+-- * 'cdcsDBClusterIdentifier'
+createDBClusterSnapshot
+    :: Text -- ^ 'cdcsDBClusterSnapshotIdentifier'
+    -> Text -- ^ 'cdcsDBClusterIdentifier'
+    -> CreateDBClusterSnapshot
+createDBClusterSnapshot pDBClusterSnapshotIdentifier_ pDBClusterIdentifier_ =
+    CreateDBClusterSnapshot'
+    { _cdcsTags = Nothing
+    , _cdcsDBClusterSnapshotIdentifier = pDBClusterSnapshotIdentifier_
+    , _cdcsDBClusterIdentifier = pDBClusterIdentifier_
+    }
+
+-- | The tags to be assigned to the DB cluster snapshot.
+cdcsTags :: Lens' CreateDBClusterSnapshot [Tag]
+cdcsTags = lens _cdcsTags (\ s a -> s{_cdcsTags = a}) . _Default . _Coerce;
+
+-- | The identifier of the DB cluster snapshot. This parameter is stored as a
+-- lowercase string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
+-- -   First character must be a letter.
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: 'my-cluster1-snapshot1'
+cdcsDBClusterSnapshotIdentifier :: Lens' CreateDBClusterSnapshot Text
+cdcsDBClusterSnapshotIdentifier = lens _cdcsDBClusterSnapshotIdentifier (\ s a -> s{_cdcsDBClusterSnapshotIdentifier = a});
+
+-- | The identifier of the DB cluster to create a snapshot for. This
+-- parameter is not case-sensitive.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
+-- -   First character must be a letter.
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: 'my-cluster1'
+cdcsDBClusterIdentifier :: Lens' CreateDBClusterSnapshot Text
+cdcsDBClusterIdentifier = lens _cdcsDBClusterIdentifier (\ s a -> s{_cdcsDBClusterIdentifier = a});
+
+instance AWSRequest CreateDBClusterSnapshot where
+        type Sv CreateDBClusterSnapshot = RDS
+        type Rs CreateDBClusterSnapshot =
+             CreateDBClusterSnapshotResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CreateDBClusterSnapshotResult"
+              (\ s h x ->
+                 CreateDBClusterSnapshotResponse' <$>
+                   (x .@? "DBClusterSnapshot") <*> (pure (fromEnum s)))
+
+instance ToHeaders CreateDBClusterSnapshot where
+        toHeaders = const mempty
+
+instance ToPath CreateDBClusterSnapshot where
+        toPath = const "/"
+
+instance ToQuery CreateDBClusterSnapshot where
+        toQuery CreateDBClusterSnapshot'{..}
+          = mconcat
+              ["Action" =:
+                 ("CreateDBClusterSnapshot" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cdcsTags),
+               "DBClusterSnapshotIdentifier" =:
+                 _cdcsDBClusterSnapshotIdentifier,
+               "DBClusterIdentifier" =: _cdcsDBClusterIdentifier]
+
+-- | /See:/ 'createDBClusterSnapshotResponse' smart constructor.
+data CreateDBClusterSnapshotResponse = CreateDBClusterSnapshotResponse'
+    { _cdbcsrsDBClusterSnapshot :: !(Maybe DBClusterSnapshot)
+    , _cdbcsrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDBClusterSnapshotResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdbcsrsDBClusterSnapshot'
+--
+-- * 'cdbcsrsStatus'
+createDBClusterSnapshotResponse
+    :: Int -- ^ 'cdbcsrsStatus'
+    -> CreateDBClusterSnapshotResponse
+createDBClusterSnapshotResponse pStatus_ =
+    CreateDBClusterSnapshotResponse'
+    { _cdbcsrsDBClusterSnapshot = Nothing
+    , _cdbcsrsStatus = pStatus_
+    }
+
+-- | Undocumented member.
+cdbcsrsDBClusterSnapshot :: Lens' CreateDBClusterSnapshotResponse (Maybe DBClusterSnapshot)
+cdbcsrsDBClusterSnapshot = lens _cdbcsrsDBClusterSnapshot (\ s a -> s{_cdbcsrsDBClusterSnapshot = a});
+
+-- | The response status code.
+cdbcsrsStatus :: Lens' CreateDBClusterSnapshotResponse Int
+cdbcsrsStatus = lens _cdbcsrsStatus (\ s a -> s{_cdbcsrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CreateDBInstance.hs b/gen/Network/AWS/RDS/CreateDBInstance.hs
--- a/gen/Network/AWS/RDS/CreateDBInstance.hs
+++ b/gen/Network/AWS/RDS/CreateDBInstance.hs
@@ -1,763 +1,961 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.RDS.CreateDBInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a new DB instance.
---
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html>
-module Network.AWS.RDS.CreateDBInstance
-    (
-    -- * Request
-      CreateDBInstance
-    -- ** Request constructor
-    , createDBInstance
-    -- ** Request lenses
-    , cdbiAllocatedStorage
-    , cdbiAutoMinorVersionUpgrade
-    , cdbiAvailabilityZone
-    , cdbiBackupRetentionPeriod
-    , cdbiCharacterSetName
-    , cdbiDBInstanceClass
-    , cdbiDBInstanceIdentifier
-    , cdbiDBName
-    , cdbiDBParameterGroupName
-    , cdbiDBSecurityGroups
-    , cdbiDBSubnetGroupName
-    , cdbiEngine
-    , cdbiEngineVersion
-    , cdbiIops
-    , cdbiKmsKeyId
-    , cdbiLicenseModel
-    , cdbiMasterUserPassword
-    , cdbiMasterUsername
-    , cdbiMultiAZ
-    , cdbiOptionGroupName
-    , cdbiPort
-    , cdbiPreferredBackupWindow
-    , cdbiPreferredMaintenanceWindow
-    , cdbiPubliclyAccessible
-    , cdbiStorageEncrypted
-    , cdbiStorageType
-    , cdbiTags
-    , cdbiTdeCredentialArn
-    , cdbiTdeCredentialPassword
-    , cdbiVpcSecurityGroupIds
-
-    -- * Response
-    , CreateDBInstanceResponse
-    -- ** Response constructor
-    , createDBInstanceResponse
-    -- ** Response lenses
-    , cdbirDBInstance
-    ) where
-
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data CreateDBInstance = CreateDBInstance
-    { _cdbiAllocatedStorage           :: Int
-    , _cdbiAutoMinorVersionUpgrade    :: Maybe Bool
-    , _cdbiAvailabilityZone           :: Maybe Text
-    , _cdbiBackupRetentionPeriod      :: Maybe Int
-    , _cdbiCharacterSetName           :: Maybe Text
-    , _cdbiDBInstanceClass            :: Text
-    , _cdbiDBInstanceIdentifier       :: Text
-    , _cdbiDBName                     :: Maybe Text
-    , _cdbiDBParameterGroupName       :: Maybe Text
-    , _cdbiDBSecurityGroups           :: List "member" Text
-    , _cdbiDBSubnetGroupName          :: Maybe Text
-    , _cdbiEngine                     :: Text
-    , _cdbiEngineVersion              :: Maybe Text
-    , _cdbiIops                       :: Maybe Int
-    , _cdbiKmsKeyId                   :: Maybe Text
-    , _cdbiLicenseModel               :: Maybe Text
-    , _cdbiMasterUserPassword         :: Text
-    , _cdbiMasterUsername             :: Text
-    , _cdbiMultiAZ                    :: Maybe Bool
-    , _cdbiOptionGroupName            :: Maybe Text
-    , _cdbiPort                       :: Maybe Int
-    , _cdbiPreferredBackupWindow      :: Maybe Text
-    , _cdbiPreferredMaintenanceWindow :: Maybe Text
-    , _cdbiPubliclyAccessible         :: Maybe Bool
-    , _cdbiStorageEncrypted           :: Maybe Bool
-    , _cdbiStorageType                :: Maybe Text
-    , _cdbiTags                       :: List "member" Tag
-    , _cdbiTdeCredentialArn           :: Maybe Text
-    , _cdbiTdeCredentialPassword      :: Maybe Text
-    , _cdbiVpcSecurityGroupIds        :: List "member" Text
-    } deriving (Eq, Read, Show)
-
--- | 'CreateDBInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cdbiAllocatedStorage' @::@ 'Int'
---
--- * 'cdbiAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'
---
--- * 'cdbiAvailabilityZone' @::@ 'Maybe' 'Text'
---
--- * 'cdbiBackupRetentionPeriod' @::@ 'Maybe' 'Int'
---
--- * 'cdbiCharacterSetName' @::@ 'Maybe' 'Text'
---
--- * 'cdbiDBInstanceClass' @::@ 'Text'
---
--- * 'cdbiDBInstanceIdentifier' @::@ 'Text'
---
--- * 'cdbiDBName' @::@ 'Maybe' 'Text'
---
--- * 'cdbiDBParameterGroupName' @::@ 'Maybe' 'Text'
---
--- * 'cdbiDBSecurityGroups' @::@ ['Text']
---
--- * 'cdbiDBSubnetGroupName' @::@ 'Maybe' 'Text'
---
--- * 'cdbiEngine' @::@ 'Text'
---
--- * 'cdbiEngineVersion' @::@ 'Maybe' 'Text'
---
--- * 'cdbiIops' @::@ 'Maybe' 'Int'
---
--- * 'cdbiKmsKeyId' @::@ 'Maybe' 'Text'
---
--- * 'cdbiLicenseModel' @::@ 'Maybe' 'Text'
---
--- * 'cdbiMasterUserPassword' @::@ 'Text'
---
--- * 'cdbiMasterUsername' @::@ 'Text'
---
--- * 'cdbiMultiAZ' @::@ 'Maybe' 'Bool'
---
--- * 'cdbiOptionGroupName' @::@ 'Maybe' 'Text'
---
--- * 'cdbiPort' @::@ 'Maybe' 'Int'
---
--- * 'cdbiPreferredBackupWindow' @::@ 'Maybe' 'Text'
---
--- * 'cdbiPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'
---
--- * 'cdbiPubliclyAccessible' @::@ 'Maybe' 'Bool'
---
--- * 'cdbiStorageEncrypted' @::@ 'Maybe' 'Bool'
---
--- * 'cdbiStorageType' @::@ 'Maybe' 'Text'
---
--- * 'cdbiTags' @::@ ['Tag']
---
--- * 'cdbiTdeCredentialArn' @::@ 'Maybe' 'Text'
---
--- * 'cdbiTdeCredentialPassword' @::@ 'Maybe' 'Text'
---
--- * 'cdbiVpcSecurityGroupIds' @::@ ['Text']
---
-createDBInstance :: Text -- ^ 'cdbiDBInstanceIdentifier'
-                 -> Int -- ^ 'cdbiAllocatedStorage'
-                 -> Text -- ^ 'cdbiDBInstanceClass'
-                 -> Text -- ^ 'cdbiEngine'
-                 -> Text -- ^ 'cdbiMasterUsername'
-                 -> Text -- ^ 'cdbiMasterUserPassword'
-                 -> CreateDBInstance
-createDBInstance p1 p2 p3 p4 p5 p6 = CreateDBInstance
-    { _cdbiDBInstanceIdentifier       = p1
-    , _cdbiAllocatedStorage           = p2
-    , _cdbiDBInstanceClass            = p3
-    , _cdbiEngine                     = p4
-    , _cdbiMasterUsername             = p5
-    , _cdbiMasterUserPassword         = p6
-    , _cdbiDBName                     = Nothing
-    , _cdbiDBSecurityGroups           = mempty
-    , _cdbiVpcSecurityGroupIds        = mempty
-    , _cdbiAvailabilityZone           = Nothing
-    , _cdbiDBSubnetGroupName          = Nothing
-    , _cdbiPreferredMaintenanceWindow = Nothing
-    , _cdbiDBParameterGroupName       = Nothing
-    , _cdbiBackupRetentionPeriod      = Nothing
-    , _cdbiPreferredBackupWindow      = Nothing
-    , _cdbiPort                       = Nothing
-    , _cdbiMultiAZ                    = Nothing
-    , _cdbiEngineVersion              = Nothing
-    , _cdbiAutoMinorVersionUpgrade    = Nothing
-    , _cdbiLicenseModel               = Nothing
-    , _cdbiIops                       = Nothing
-    , _cdbiOptionGroupName            = Nothing
-    , _cdbiCharacterSetName           = Nothing
-    , _cdbiPubliclyAccessible         = Nothing
-    , _cdbiTags                       = mempty
-    , _cdbiStorageType                = Nothing
-    , _cdbiTdeCredentialArn           = Nothing
-    , _cdbiTdeCredentialPassword      = Nothing
-    , _cdbiStorageEncrypted           = Nothing
-    , _cdbiKmsKeyId                   = Nothing
-    }
-
--- | The amount of storage (in gigabytes) to be initially allocated for the
--- database instance.
---
--- Type: Integer
---
--- MySQL
---
--- Constraints: Must be an integer from 5 to 3072.
---
--- PostgreSQL
---
--- Constraints: Must be an integer from 5 to 3072.
---
--- Oracle
---
--- Constraints: Must be an integer from 10 to 3072.
---
--- SQL Server
---
--- Constraints: Must be an integer from 200 to 1024 (Standard Edition and
--- Enterprise Edition) or from 20 to 1024 (Express Edition and Web Edition)
-cdbiAllocatedStorage :: Lens' CreateDBInstance Int
-cdbiAllocatedStorage =
-    lens _cdbiAllocatedStorage (\s a -> s { _cdbiAllocatedStorage = a })
-
--- | Indicates that minor engine upgrades will be applied automatically to the DB
--- instance during the maintenance window.
---
--- Default: 'true'
-cdbiAutoMinorVersionUpgrade :: Lens' CreateDBInstance (Maybe Bool)
-cdbiAutoMinorVersionUpgrade =
-    lens _cdbiAutoMinorVersionUpgrade
-        (\s a -> s { _cdbiAutoMinorVersionUpgrade = a })
-
--- | The EC2 Availability Zone that the database instance will be created in. For
--- information on regions and Availability Zones, see <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html Regions and AvailabilityZones>.
---
--- Default: A random, system-chosen Availability Zone in the endpoint's
--- region.
---
--- Example: 'us-east-1d'
---
--- Constraint: The AvailabilityZone parameter cannot be specified if the
--- MultiAZ parameter is set to 'true'. The specified Availability Zone must be in
--- the same region as the current endpoint.
-cdbiAvailabilityZone :: Lens' CreateDBInstance (Maybe Text)
-cdbiAvailabilityZone =
-    lens _cdbiAvailabilityZone (\s a -> s { _cdbiAvailabilityZone = a })
-
--- | The number of days for which automated backups are retained. Setting this
--- parameter to a positive number enables backups. Setting this parameter to 0
--- disables automated backups.
---
--- Default: 1
---
--- Constraints:
---
--- Must be a value from 0 to 35 Cannot be set to 0 if the DB instance is a
--- source to Read Replicas
-cdbiBackupRetentionPeriod :: Lens' CreateDBInstance (Maybe Int)
-cdbiBackupRetentionPeriod =
-    lens _cdbiBackupRetentionPeriod
-        (\s a -> s { _cdbiBackupRetentionPeriod = a })
-
--- | For supported engines, indicates that the DB instance should be associated
--- with the specified CharacterSet.
-cdbiCharacterSetName :: Lens' CreateDBInstance (Maybe Text)
-cdbiCharacterSetName =
-    lens _cdbiCharacterSetName (\s a -> s { _cdbiCharacterSetName = a })
-
--- | The compute and memory capacity of the DB instance.
---
--- Valid Values: 'db.t1.micro | db.m1.small | db.m1.medium | db.m1.large |db.m1.xlarge | db.m2.xlarge |db.m2.2xlarge | db.m2.4xlarge | db.m3.medium |db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge |db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small |db.t2.medium'
-cdbiDBInstanceClass :: Lens' CreateDBInstance Text
-cdbiDBInstanceClass =
-    lens _cdbiDBInstanceClass (\s a -> s { _cdbiDBInstanceClass = a })
-
--- | The DB instance identifier. This parameter is stored as a lowercase string.
---
--- Constraints:
---
--- Must contain from 1 to 63 alphanumeric characters or hyphens (1 to 15 for
--- SQL Server). First character must be a letter. Cannot end with a hyphen or
--- contain two consecutive hyphens.  Example: 'mydbinstance'
-cdbiDBInstanceIdentifier :: Lens' CreateDBInstance Text
-cdbiDBInstanceIdentifier =
-    lens _cdbiDBInstanceIdentifier
-        (\s a -> s { _cdbiDBInstanceIdentifier = a })
-
--- | The meaning of this parameter differs according to the database engine you
--- use.
---
--- Type: String
---
--- MySQL
---
--- The name of the database to create when the DB instance is created. If this
--- parameter is not specified, no database is created in the DB instance.
---
--- Constraints:
---
--- Must contain 1 to 64 alphanumeric characters Cannot be a word reserved by
--- the specified database engine   PostgreSQL
---
--- The name of the database to create when the DB instance is created. If this
--- parameter is not specified, no database is created in the DB instance.
---
--- Constraints:
---
--- Must contain 1 to 63 alphanumeric characters Must begin with a letter or an
--- underscore. Subsequent characters can be letters, underscores, or digits
--- (0-9). Cannot be a word reserved by the specified database engine   Oracle
---
--- The Oracle System ID (SID) of the created DB instance.
---
--- Default: 'ORCL'
---
--- Constraints:
---
--- Cannot be longer than 8 characters   SQL Server
---
--- Not applicable. Must be null.
-cdbiDBName :: Lens' CreateDBInstance (Maybe Text)
-cdbiDBName = lens _cdbiDBName (\s a -> s { _cdbiDBName = a })
-
--- | The name of the DB parameter group to associate with this DB instance. If
--- this argument is omitted, the default DBParameterGroup for the specified
--- engine will be used.
---
--- Constraints:
---
--- Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
---
-cdbiDBParameterGroupName :: Lens' CreateDBInstance (Maybe Text)
-cdbiDBParameterGroupName =
-    lens _cdbiDBParameterGroupName
-        (\s a -> s { _cdbiDBParameterGroupName = a })
-
--- | A list of DB security groups to associate with this DB instance.
---
--- Default: The default DB security group for the database engine.
-cdbiDBSecurityGroups :: Lens' CreateDBInstance [Text]
-cdbiDBSecurityGroups =
-    lens _cdbiDBSecurityGroups (\s a -> s { _cdbiDBSecurityGroups = a })
-        . _List
-
--- | A DB subnet group to associate with this DB instance.
---
--- If there is no DB subnet group, then it is a non-VPC DB instance.
-cdbiDBSubnetGroupName :: Lens' CreateDBInstance (Maybe Text)
-cdbiDBSubnetGroupName =
-    lens _cdbiDBSubnetGroupName (\s a -> s { _cdbiDBSubnetGroupName = a })
-
--- | The name of the database engine to be used for this instance.
---
--- Valid Values: 'MySQL' | 'oracle-se1' | 'oracle-se' | 'oracle-ee' | 'sqlserver-ee' | 'sqlserver-se' | 'sqlserver-ex' | 'sqlserver-web' | 'postgres'
---
--- Not every database engine is available for every AWS region.
-cdbiEngine :: Lens' CreateDBInstance Text
-cdbiEngine = lens _cdbiEngine (\s a -> s { _cdbiEngine = a })
-
--- | The version number of the database engine to use.
---
--- The following are the database engines and major and minor versions that
--- are available with Amazon RDS. Not every database engine is available for
--- every AWS region.
---
--- MySQL
---
--- Version 5.1 (Only available in the following regions: ap-northeast-1,
--- ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1, us-west-1, us-west-2): '5.1.73a | 5.1.73b'   Version 5.5 (Only available in the following regions:
--- ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1,
--- us-west-1, us-west-2): ' 5.5.40 | 5.5.40a'   Version 5.5 (Available in all
--- regions): ' 5.5.40b | 5.5.41'   Version 5.6 (Available in all regions): '5.6.19a | 5.6.19b | 5.6.21 | 5.6.21b | 5.6.22'    MySQL
---
--- Version 5.1 (Only available in the following regions: ap-northeast-1,
--- ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1, us-west-1, us-west-2): '5.1.73a | 5.1.73b'   Version 5.5 (Only available in the following regions:
--- ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1,
--- us-west-1, us-west-2): ' 5.5.40 | 5.5.40a'   Version 5.5 (Available in all
--- regions): ' 5.5.40b | 5.5.41'   Version 5.6 (Available in all regions): '5.6.19a | 5.6.19b | 5.6.21 | 5.6.21b | 5.6.22'    MySQL
---
--- Version 5.1 (Only available in the following regions: ap-northeast-1,
--- ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1, us-west-1, us-west-2): '5.1.73a | 5.1.73b'   Version 5.5 (Only available in the following regions:
--- ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1,
--- us-west-1, us-west-2): ' 5.5.40 | 5.5.40a'   Version 5.5 (Available in all
--- regions): ' 5.5.40b | 5.5.41'   Version 5.6 (Available in all regions): '5.6.19a | 5.6.19b | 5.6.21 | 5.6.21b | 5.6.22'    MySQL
---
--- Version 5.1 (Only available in the following regions: ap-northeast-1,
--- ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1, us-west-1, us-west-2): '5.1.73a | 5.1.73b'   Version 5.5 (Only available in the following regions:
--- ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1,
--- us-west-1, us-west-2): ' 5.5.40 | 5.5.40a'   Version 5.5 (Available in all
--- regions): ' 5.5.40b | 5.5.41'   Version 5.6 (Available in all regions): '5.6.19a | 5.6.19b | 5.6.21 | 5.6.21b | 5.6.22'    Oracle Database Enterprise
--- Edition (oracle-ee)
---
--- Version 11.2 (Only available in the following regions: ap-northeast-1,
--- ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1, us-west-1, us-west-2): '11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'   Version
--- 11.2 (Available in all regions): ' 11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 |11.2.0.4.v3'    Oracle Database Enterprise Edition (oracle-ee)
---
--- Version 11.2 (Only available in the following regions: ap-northeast-1,
--- ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1, us-west-1, us-west-2): '11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'   Version
--- 11.2 (Available in all regions): ' 11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 |11.2.0.4.v3'    Oracle Database Standard Edition (oracle-se)
---
--- Version 11.2 (Only available in the following regions: us-west-1): '11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'   Version
--- 11.2 (Only available in the following regions: eu-central-1, us-west-1): '11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'    Oracle Database
--- Standard Edition (oracle-se)
---
--- Version 11.2 (Only available in the following regions: us-west-1): '11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'   Version
--- 11.2 (Only available in the following regions: eu-central-1, us-west-1): '11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'    Oracle Database
--- Standard Edition One (oracle-se1)
---
--- Version 11.2 (Only available in the following regions: us-west-1): '11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'   Version
--- 11.2 (Only available in the following regions: eu-central-1, us-west-1): '11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'    Oracle Database
--- Standard Edition One (oracle-se1)
---
--- Version 11.2 (Only available in the following regions: us-west-1): '11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'   Version
--- 11.2 (Only available in the following regions: eu-central-1, us-west-1): '11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'    PostgreSQL
---
--- Version 9.3 (Only available in the following regions: ap-northeast-1,
--- ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1, us-west-1, us-west-2): '9.3.1 | 9.3.2'   Version 9.3 (Available in all regions): ' 9.3.3 | 9.3.5'    PostgreSQL
---
---
--- Version 9.3 (Only available in the following regions: ap-northeast-1,
--- ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1, us-west-1, us-west-2): '9.3.1 | 9.3.2'   Version 9.3 (Available in all regions): ' 9.3.3 | 9.3.5'    Microsoft SQL Server Enterprise Edition (sqlserver-ee)
---
---
--- Version 10.50 (Only available in the following regions: eu-central-1,
--- us-west-1): ' 10.50.2789.0.v1'   Version 11.00 (Only available in the following
--- regions: eu-central-1, us-west-1): ' 11.00.2100.60.v1'    Microsoft SQL Server
--- Enterprise Edition (sqlserver-ee)
---
--- Version 10.50 (Only available in the following regions: eu-central-1,
--- us-west-1): ' 10.50.2789.0.v1'   Version 11.00 (Only available in the following
--- regions: eu-central-1, us-west-1): ' 11.00.2100.60.v1'    Microsoft SQL Server
--- Express Edition (sqlserver-ex)
---
--- Version 10.50 (Available in all regions): ' 10.50.2789.0.v1'   Version 11.00
--- (Available in all regions): ' 11.00.2100.60.v1'    Microsoft SQL Server Express
--- Edition (sqlserver-ex)
---
--- Version 10.50 (Available in all regions): ' 10.50.2789.0.v1'   Version 11.00
--- (Available in all regions): ' 11.00.2100.60.v1'    Microsoft SQL Server
--- Standard Edition (sqlserver-se)
---
--- Version 10.50 (Available in all regions): ' 10.50.2789.0.v1'   Version 11.00
--- (Available in all regions): ' 11.00.2100.60.v1'    Microsoft SQL Server
--- Standard Edition (sqlserver-se)
---
--- Version 10.50 (Available in all regions): ' 10.50.2789.0.v1'   Version 11.00
--- (Available in all regions): ' 11.00.2100.60.v1'    Microsoft SQL Server Web
--- Edition (sqlserver-web)
---
--- Version 10.50 (Available in all regions): ' 10.50.2789.0.v1'   Version 11.00
--- (Available in all regions): ' 11.00.2100.60.v1'    Microsoft SQL Server Web
--- Edition (sqlserver-web)
---
--- Version 10.50 (Available in all regions): ' 10.50.2789.0.v1'   Version 11.00
--- (Available in all regions): ' 11.00.2100.60.v1'
-cdbiEngineVersion :: Lens' CreateDBInstance (Maybe Text)
-cdbiEngineVersion =
-    lens _cdbiEngineVersion (\s a -> s { _cdbiEngineVersion = a })
-
--- | The amount of Provisioned IOPS (input/output operations per second) to be
--- initially allocated for the DB instance.
---
--- Constraints: To use PIOPS, this value must be an integer greater than 1000.
-cdbiIops :: Lens' CreateDBInstance (Maybe Int)
-cdbiIops = lens _cdbiIops (\s a -> s { _cdbiIops = a })
-
--- | The KMS key identifier for an encrypted DB instance.
---
--- The KMS key identifier is the Amazon Resoure Name (ARN) for the KMS
--- encryption key. If you are creating a DB instance with the same AWS account
--- that owns the KMS encryption key used to encrypt the new DB instance, then
--- you can use the KMS key alias instead of the ARN for the KM encryption key.
---
--- If the 'StorageEncrypted' parameter is true, and you do not specify a value
--- for the 'KmsKeyId' parameter, then Amazon RDS will use your default encryption
--- key. AWS KMS creates the default encryption key for your AWS account. Your
--- AWS account has a different default encryption key for each AWS region.
-cdbiKmsKeyId :: Lens' CreateDBInstance (Maybe Text)
-cdbiKmsKeyId = lens _cdbiKmsKeyId (\s a -> s { _cdbiKmsKeyId = a })
-
--- | License model information for this DB instance.
---
--- Valid values: 'license-included' | 'bring-your-own-license' | 'general-public-license'
-cdbiLicenseModel :: Lens' CreateDBInstance (Maybe Text)
-cdbiLicenseModel = lens _cdbiLicenseModel (\s a -> s { _cdbiLicenseModel = a })
-
--- | The password for the master database user. Can be any printable ASCII
--- character except "/", """, or "@".
---
--- Type: String
---
--- MySQL
---
--- Constraints: Must contain from 8 to 41 characters.
---
--- Oracle
---
--- Constraints: Must contain from 8 to 30 characters.
---
--- SQL Server
---
--- Constraints: Must contain from 8 to 128 characters.
---
--- PostgreSQL
---
--- Constraints: Must contain from 8 to 128 characters.
-cdbiMasterUserPassword :: Lens' CreateDBInstance Text
-cdbiMasterUserPassword =
-    lens _cdbiMasterUserPassword (\s a -> s { _cdbiMasterUserPassword = a })
-
--- | The name of master user for the client DB instance.
---
--- MySQL
---
--- Constraints:
---
--- Must be 1 to 16 alphanumeric characters. First character must be a letter. Cannot be a reserved word for the chosen database engine.
--- Type: String
---
--- Oracle
---
--- Constraints:
---
--- Must be 1 to 30 alphanumeric characters. First character must be a letter. Cannot be a reserved word for the chosen database engine.
--- SQL Server
---
--- Constraints:
---
--- Must be 1 to 128 alphanumeric characters. First character must be a letter.
--- Cannot be a reserved word for the chosen database engine.   PostgreSQL
---
--- Constraints:
---
--- Must be 1 to 63 alphanumeric characters. First character must be a letter. Cannot be a reserved word for the chosen database engine.
---
-cdbiMasterUsername :: Lens' CreateDBInstance Text
-cdbiMasterUsername =
-    lens _cdbiMasterUsername (\s a -> s { _cdbiMasterUsername = a })
-
--- | Specifies if the DB instance is a Multi-AZ deployment. You cannot set the
--- AvailabilityZone parameter if the MultiAZ parameter is set to true.
-cdbiMultiAZ :: Lens' CreateDBInstance (Maybe Bool)
-cdbiMultiAZ = lens _cdbiMultiAZ (\s a -> s { _cdbiMultiAZ = a })
-
--- | Indicates that the DB instance should be associated with the specified
--- option group.
---
--- Permanent options, such as the TDE option for Oracle Advanced Security TDE,
--- cannot be removed from an option group, and that option group cannot be
--- removed from a DB instance once it is associated with a DB instance
-cdbiOptionGroupName :: Lens' CreateDBInstance (Maybe Text)
-cdbiOptionGroupName =
-    lens _cdbiOptionGroupName (\s a -> s { _cdbiOptionGroupName = a })
-
--- | The port number on which the database accepts connections.
---
--- MySQL
---
--- Default: '3306'
---
--- Valid Values: '1150-65535'
---
--- Type: Integer
---
--- PostgreSQL
---
--- Default: '5432'
---
--- Valid Values: '1150-65535'
---
--- Type: Integer
---
--- Oracle
---
--- Default: '1521'
---
--- Valid Values: '1150-65535'
---
--- SQL Server
---
--- Default: '1433'
---
--- Valid Values: '1150-65535' except for '1434', '3389', '47001', '49152', and '49152'
--- through '49156'.
-cdbiPort :: Lens' CreateDBInstance (Maybe Int)
-cdbiPort = lens _cdbiPort (\s a -> s { _cdbiPort = a })
-
--- | The daily time range during which automated backups are created if automated
--- backups are enabled, using the 'BackupRetentionPeriod' parameter. For more
--- information, see <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.BackingUpAndRestoringAmazonRDSInstances.html DB Instance Backups>.
---
--- Default: A 30-minute window selected at random from an 8-hour block of time
--- per region. See the Amazon RDS User Guide for the time blocks for each region
--- from which the default backup windows are assigned.
---
--- Constraints: Must be in the format 'hh24:mi-hh24:mi'. Times should be
--- Universal Time Coordinated (UTC). Must not conflict with the preferred
--- maintenance window. Must be at least 30 minutes.
-cdbiPreferredBackupWindow :: Lens' CreateDBInstance (Maybe Text)
-cdbiPreferredBackupWindow =
-    lens _cdbiPreferredBackupWindow
-        (\s a -> s { _cdbiPreferredBackupWindow = a })
-
--- | The weekly time range (in UTC) during which system maintenance can occur.
--- For more information, see <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBMaintenance.html DB Instance Maintenance>.
---
--- Format: 'ddd:hh24:mi-ddd:hh24:mi'
---
--- Default: A 30-minute window selected at random from an 8-hour block of time
--- per region, occurring on a random day of the week. To see the time blocks
--- available, see <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html  Adjusting the Preferred Maintenance Window> in the Amazon RDS
--- User Guide.
---
--- Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
---
--- Constraints: Minimum 30-minute window.
-cdbiPreferredMaintenanceWindow :: Lens' CreateDBInstance (Maybe Text)
-cdbiPreferredMaintenanceWindow =
-    lens _cdbiPreferredMaintenanceWindow
-        (\s a -> s { _cdbiPreferredMaintenanceWindow = a })
-
--- | Specifies the accessibility options for the DB instance. A value of true
--- specifies an Internet-facing instance with a publicly resolvable DNS name,
--- which resolves to a public IP address. A value of false specifies an internal
--- instance with a DNS name that resolves to a private IP address.
---
--- Default: The default behavior varies depending on whether a VPC has been
--- requested or not. The following list shows the default behavior in each case.
---
--- Default VPC: true  VPC: false   If no DB subnet group has been specified
--- as part of the request and the PubliclyAccessible value has not been set, the
--- DB instance will be publicly accessible. If a specific DB subnet group has
--- been specified as part of the request and the PubliclyAccessible value has
--- not been set, the DB instance will be private.
-cdbiPubliclyAccessible :: Lens' CreateDBInstance (Maybe Bool)
-cdbiPubliclyAccessible =
-    lens _cdbiPubliclyAccessible (\s a -> s { _cdbiPubliclyAccessible = a })
-
--- | Specifies whether the DB instance is encrypted.
---
--- Default: false
-cdbiStorageEncrypted :: Lens' CreateDBInstance (Maybe Bool)
-cdbiStorageEncrypted =
-    lens _cdbiStorageEncrypted (\s a -> s { _cdbiStorageEncrypted = a })
-
--- | Specifies the storage type to be associated with the DB instance.
---
--- Valid values: 'standard | gp2 | io1'
---
--- If you specify 'io1', you must also include a value for the 'Iops' parameter.
---
--- Default: 'io1' if the 'Iops' parameter is specified; otherwise 'standard'
-cdbiStorageType :: Lens' CreateDBInstance (Maybe Text)
-cdbiStorageType = lens _cdbiStorageType (\s a -> s { _cdbiStorageType = a })
-
-cdbiTags :: Lens' CreateDBInstance [Tag]
-cdbiTags = lens _cdbiTags (\s a -> s { _cdbiTags = a }) . _List
-
--- | The ARN from the Key Store with which to associate the instance for TDE
--- encryption.
-cdbiTdeCredentialArn :: Lens' CreateDBInstance (Maybe Text)
-cdbiTdeCredentialArn =
-    lens _cdbiTdeCredentialArn (\s a -> s { _cdbiTdeCredentialArn = a })
-
--- | The password for the given ARN from the Key Store in order to access the
--- device.
-cdbiTdeCredentialPassword :: Lens' CreateDBInstance (Maybe Text)
-cdbiTdeCredentialPassword =
-    lens _cdbiTdeCredentialPassword
-        (\s a -> s { _cdbiTdeCredentialPassword = a })
-
--- | A list of EC2 VPC security groups to associate with this DB instance.
---
--- Default: The default EC2 VPC security group for the DB subnet group's VPC.
-cdbiVpcSecurityGroupIds :: Lens' CreateDBInstance [Text]
-cdbiVpcSecurityGroupIds =
-    lens _cdbiVpcSecurityGroupIds (\s a -> s { _cdbiVpcSecurityGroupIds = a })
-        . _List
-
-newtype CreateDBInstanceResponse = CreateDBInstanceResponse
-    { _cdbirDBInstance :: Maybe DBInstance
-    } deriving (Eq, Read, Show)
-
--- | 'CreateDBInstanceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cdbirDBInstance' @::@ 'Maybe' 'DBInstance'
---
-createDBInstanceResponse :: CreateDBInstanceResponse
-createDBInstanceResponse = CreateDBInstanceResponse
-    { _cdbirDBInstance = Nothing
-    }
-
-cdbirDBInstance :: Lens' CreateDBInstanceResponse (Maybe DBInstance)
-cdbirDBInstance = lens _cdbirDBInstance (\s a -> s { _cdbirDBInstance = a })
-
-instance ToPath CreateDBInstance where
-    toPath = const "/"
-
-instance ToQuery CreateDBInstance where
-    toQuery CreateDBInstance{..} = mconcat
-        [ "AllocatedStorage"           =? _cdbiAllocatedStorage
-        , "AutoMinorVersionUpgrade"    =? _cdbiAutoMinorVersionUpgrade
-        , "AvailabilityZone"           =? _cdbiAvailabilityZone
-        , "BackupRetentionPeriod"      =? _cdbiBackupRetentionPeriod
-        , "CharacterSetName"           =? _cdbiCharacterSetName
-        , "DBInstanceClass"            =? _cdbiDBInstanceClass
-        , "DBInstanceIdentifier"       =? _cdbiDBInstanceIdentifier
-        , "DBName"                     =? _cdbiDBName
-        , "DBParameterGroupName"       =? _cdbiDBParameterGroupName
-        , "DBSecurityGroups"           =? _cdbiDBSecurityGroups
-        , "DBSubnetGroupName"          =? _cdbiDBSubnetGroupName
-        , "Engine"                     =? _cdbiEngine
-        , "EngineVersion"              =? _cdbiEngineVersion
-        , "Iops"                       =? _cdbiIops
-        , "KmsKeyId"                   =? _cdbiKmsKeyId
-        , "LicenseModel"               =? _cdbiLicenseModel
-        , "MasterUserPassword"         =? _cdbiMasterUserPassword
-        , "MasterUsername"             =? _cdbiMasterUsername
-        , "MultiAZ"                    =? _cdbiMultiAZ
-        , "OptionGroupName"            =? _cdbiOptionGroupName
-        , "Port"                       =? _cdbiPort
-        , "PreferredBackupWindow"      =? _cdbiPreferredBackupWindow
-        , "PreferredMaintenanceWindow" =? _cdbiPreferredMaintenanceWindow
-        , "PubliclyAccessible"         =? _cdbiPubliclyAccessible
-        , "StorageEncrypted"           =? _cdbiStorageEncrypted
-        , "StorageType"                =? _cdbiStorageType
-        , "Tags"                       =? _cdbiTags
-        , "TdeCredentialArn"           =? _cdbiTdeCredentialArn
-        , "TdeCredentialPassword"      =? _cdbiTdeCredentialPassword
-        , "VpcSecurityGroupIds"        =? _cdbiVpcSecurityGroupIds
-        ]
-
-instance ToHeaders CreateDBInstance
-
-instance AWSRequest CreateDBInstance where
-    type Sv CreateDBInstance = RDS
-    type Rs CreateDBInstance = CreateDBInstanceResponse
-
-    request  = post "CreateDBInstance"
-    response = xmlResponse
-
-instance FromXML CreateDBInstanceResponse where
-    parseXML = withElement "CreateDBInstanceResult" $ \x -> CreateDBInstanceResponse
-        <$> x .@? "DBInstance"
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.CreateDBInstance
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new DB instance.
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html AWS API Reference> for CreateDBInstance.
+module Network.AWS.RDS.CreateDBInstance
+    (
+    -- * Creating a Request
+      createDBInstance
+    , CreateDBInstance
+    -- * Request Lenses
+    , cdiDBSecurityGroups
+    , cdiEngineVersion
+    , cdiStorageEncrypted
+    , cdiDBClusterIdentifier
+    , cdiAutoMinorVersionUpgrade
+    , cdiMasterUserPassword
+    , cdiMasterUsername
+    , cdiPubliclyAccessible
+    , cdiDBSubnetGroupName
+    , cdiIOPS
+    , cdiDomain
+    , cdiTDECredentialPassword
+    , cdiLicenseModel
+    , cdiPreferredMaintenanceWindow
+    , cdiCharacterSetName
+    , cdiPreferredBackupWindow
+    , cdiAvailabilityZone
+    , cdiBackupRetentionPeriod
+    , cdiKMSKeyId
+    , cdiDBParameterGroupName
+    , cdiVPCSecurityGroupIds
+    , cdiMultiAZ
+    , cdiAllocatedStorage
+    , cdiTDECredentialARN
+    , cdiOptionGroupName
+    , cdiCopyTagsToSnapshot
+    , cdiDBName
+    , cdiTags
+    , cdiPort
+    , cdiStorageType
+    , cdiDBInstanceIdentifier
+    , cdiDBInstanceClass
+    , cdiEngine
+
+    -- * Destructuring the Response
+    , createDBInstanceResponse
+    , CreateDBInstanceResponse
+    -- * Response Lenses
+    , cdirsDBInstance
+    , cdirsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'createDBInstance' smart constructor.
+data CreateDBInstance = CreateDBInstance'
+    { _cdiDBSecurityGroups           :: !(Maybe [Text])
+    , _cdiEngineVersion              :: !(Maybe Text)
+    , _cdiStorageEncrypted           :: !(Maybe Bool)
+    , _cdiDBClusterIdentifier        :: !(Maybe Text)
+    , _cdiAutoMinorVersionUpgrade    :: !(Maybe Bool)
+    , _cdiMasterUserPassword         :: !(Maybe Text)
+    , _cdiMasterUsername             :: !(Maybe Text)
+    , _cdiPubliclyAccessible         :: !(Maybe Bool)
+    , _cdiDBSubnetGroupName          :: !(Maybe Text)
+    , _cdiIOPS                       :: !(Maybe Int)
+    , _cdiDomain                     :: !(Maybe Text)
+    , _cdiTDECredentialPassword      :: !(Maybe Text)
+    , _cdiLicenseModel               :: !(Maybe Text)
+    , _cdiPreferredMaintenanceWindow :: !(Maybe Text)
+    , _cdiCharacterSetName           :: !(Maybe Text)
+    , _cdiPreferredBackupWindow      :: !(Maybe Text)
+    , _cdiAvailabilityZone           :: !(Maybe Text)
+    , _cdiBackupRetentionPeriod      :: !(Maybe Int)
+    , _cdiKMSKeyId                   :: !(Maybe Text)
+    , _cdiDBParameterGroupName       :: !(Maybe Text)
+    , _cdiVPCSecurityGroupIds        :: !(Maybe [Text])
+    , _cdiMultiAZ                    :: !(Maybe Bool)
+    , _cdiAllocatedStorage           :: !(Maybe Int)
+    , _cdiTDECredentialARN           :: !(Maybe Text)
+    , _cdiOptionGroupName            :: !(Maybe Text)
+    , _cdiCopyTagsToSnapshot         :: !(Maybe Bool)
+    , _cdiDBName                     :: !(Maybe Text)
+    , _cdiTags                       :: !(Maybe [Tag])
+    , _cdiPort                       :: !(Maybe Int)
+    , _cdiStorageType                :: !(Maybe Text)
+    , _cdiDBInstanceIdentifier       :: !Text
+    , _cdiDBInstanceClass            :: !Text
+    , _cdiEngine                     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDBInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdiDBSecurityGroups'
+--
+-- * 'cdiEngineVersion'
+--
+-- * 'cdiStorageEncrypted'
+--
+-- * 'cdiDBClusterIdentifier'
+--
+-- * 'cdiAutoMinorVersionUpgrade'
+--
+-- * 'cdiMasterUserPassword'
+--
+-- * 'cdiMasterUsername'
+--
+-- * 'cdiPubliclyAccessible'
+--
+-- * 'cdiDBSubnetGroupName'
+--
+-- * 'cdiIOPS'
+--
+-- * 'cdiDomain'
+--
+-- * 'cdiTDECredentialPassword'
+--
+-- * 'cdiLicenseModel'
+--
+-- * 'cdiPreferredMaintenanceWindow'
+--
+-- * 'cdiCharacterSetName'
+--
+-- * 'cdiPreferredBackupWindow'
+--
+-- * 'cdiAvailabilityZone'
+--
+-- * 'cdiBackupRetentionPeriod'
+--
+-- * 'cdiKMSKeyId'
+--
+-- * 'cdiDBParameterGroupName'
+--
+-- * 'cdiVPCSecurityGroupIds'
+--
+-- * 'cdiMultiAZ'
+--
+-- * 'cdiAllocatedStorage'
+--
+-- * 'cdiTDECredentialARN'
+--
+-- * 'cdiOptionGroupName'
+--
+-- * 'cdiCopyTagsToSnapshot'
+--
+-- * 'cdiDBName'
+--
+-- * 'cdiTags'
+--
+-- * 'cdiPort'
+--
+-- * 'cdiStorageType'
+--
+-- * 'cdiDBInstanceIdentifier'
+--
+-- * 'cdiDBInstanceClass'
+--
+-- * 'cdiEngine'
+createDBInstance
+    :: Text -- ^ 'cdiDBInstanceIdentifier'
+    -> Text -- ^ 'cdiDBInstanceClass'
+    -> Text -- ^ 'cdiEngine'
+    -> CreateDBInstance
+createDBInstance pDBInstanceIdentifier_ pDBInstanceClass_ pEngine_ =
+    CreateDBInstance'
+    { _cdiDBSecurityGroups = Nothing
+    , _cdiEngineVersion = Nothing
+    , _cdiStorageEncrypted = Nothing
+    , _cdiDBClusterIdentifier = Nothing
+    , _cdiAutoMinorVersionUpgrade = Nothing
+    , _cdiMasterUserPassword = Nothing
+    , _cdiMasterUsername = Nothing
+    , _cdiPubliclyAccessible = Nothing
+    , _cdiDBSubnetGroupName = Nothing
+    , _cdiIOPS = Nothing
+    , _cdiDomain = Nothing
+    , _cdiTDECredentialPassword = Nothing
+    , _cdiLicenseModel = Nothing
+    , _cdiPreferredMaintenanceWindow = Nothing
+    , _cdiCharacterSetName = Nothing
+    , _cdiPreferredBackupWindow = Nothing
+    , _cdiAvailabilityZone = Nothing
+    , _cdiBackupRetentionPeriod = Nothing
+    , _cdiKMSKeyId = Nothing
+    , _cdiDBParameterGroupName = Nothing
+    , _cdiVPCSecurityGroupIds = Nothing
+    , _cdiMultiAZ = Nothing
+    , _cdiAllocatedStorage = Nothing
+    , _cdiTDECredentialARN = Nothing
+    , _cdiOptionGroupName = Nothing
+    , _cdiCopyTagsToSnapshot = Nothing
+    , _cdiDBName = Nothing
+    , _cdiTags = Nothing
+    , _cdiPort = Nothing
+    , _cdiStorageType = Nothing
+    , _cdiDBInstanceIdentifier = pDBInstanceIdentifier_
+    , _cdiDBInstanceClass = pDBInstanceClass_
+    , _cdiEngine = pEngine_
+    }
+
+-- | A list of DB security groups to associate with this DB instance.
+--
+-- Default: The default DB security group for the database engine.
+cdiDBSecurityGroups :: Lens' CreateDBInstance [Text]
+cdiDBSecurityGroups = lens _cdiDBSecurityGroups (\ s a -> s{_cdiDBSecurityGroups = a}) . _Default . _Coerce;
+
+-- | The version number of the database engine to use.
+--
+-- The following are the database engines and major and minor versions that
+-- are available with Amazon RDS. Not every database engine is available
+-- for every AWS region.
+--
+-- __MySQL__
+--
+-- -   __Version 5.1 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__ ' 5.1.73a | 5.1.73b'
+-- -   __Version 5.5 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__ ' 5.5.40 | 5.5.40a'
+-- -   __Version 5.5 (Available in all regions):__
+--     ' 5.5.40b | 5.5.41 | 5.5.42'
+-- -   __Version 5.6 (Available in all regions):__
+--     ' 5.6.19a | 5.6.19b | 5.6.21 | 5.6.21b | 5.6.22 | 5.6.23'
+--
+-- __MySQL__
+--
+-- -   __Version 5.1 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__ ' 5.1.73a | 5.1.73b'
+-- -   __Version 5.5 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__ ' 5.5.40 | 5.5.40a'
+-- -   __Version 5.5 (Available in all regions):__
+--     ' 5.5.40b | 5.5.41 | 5.5.42'
+-- -   __Version 5.6 (Available in all regions):__
+--     ' 5.6.19a | 5.6.19b | 5.6.21 | 5.6.21b | 5.6.22 | 5.6.23'
+--
+-- __MySQL__
+--
+-- -   __Version 5.1 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__ ' 5.1.73a | 5.1.73b'
+-- -   __Version 5.5 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__ ' 5.5.40 | 5.5.40a'
+-- -   __Version 5.5 (Available in all regions):__
+--     ' 5.5.40b | 5.5.41 | 5.5.42'
+-- -   __Version 5.6 (Available in all regions):__
+--     ' 5.6.19a | 5.6.19b | 5.6.21 | 5.6.21b | 5.6.22 | 5.6.23'
+--
+-- __MySQL__
+--
+-- -   __Version 5.1 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__ ' 5.1.73a | 5.1.73b'
+-- -   __Version 5.5 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__ ' 5.5.40 | 5.5.40a'
+-- -   __Version 5.5 (Available in all regions):__
+--     ' 5.5.40b | 5.5.41 | 5.5.42'
+-- -   __Version 5.6 (Available in all regions):__
+--     ' 5.6.19a | 5.6.19b | 5.6.21 | 5.6.21b | 5.6.22 | 5.6.23'
+--
+-- __Oracle Database Enterprise Edition (oracle-ee)__
+--
+-- -   __Version 11.2 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__
+--     ' 11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'
+-- -   __Version 11.2 (Available in all regions):__
+--     ' 11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'
+-- -   __Version 12.1 (Available in all regions):__ ' 12.1.0.1.v1'
+--
+-- __Oracle Database Enterprise Edition (oracle-ee)__
+--
+-- -   __Version 11.2 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__
+--     ' 11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'
+-- -   __Version 11.2 (Available in all regions):__
+--     ' 11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'
+-- -   __Version 12.1 (Available in all regions):__ ' 12.1.0.1.v1'
+--
+-- __Oracle Database Enterprise Edition (oracle-ee)__
+--
+-- -   __Version 11.2 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__
+--     ' 11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'
+-- -   __Version 11.2 (Available in all regions):__
+--     ' 11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'
+-- -   __Version 12.1 (Available in all regions):__ ' 12.1.0.1.v1'
+--
+-- __Oracle Database Standard Edition (oracle-se)__
+--
+-- -   __Version 11.2 (Only available in the following regions:
+--     us-west-1):__
+--     ' 11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'
+-- -   __Version 11.2 (Only available in the following regions:
+--     eu-central-1, us-west-1):__
+--     ' 11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'
+-- -   __Version 12.1 (Only available in the following regions:
+--     eu-central-1, us-west-1):__ ' 12.1.0.1.v1'
+--
+-- __Oracle Database Standard Edition (oracle-se)__
+--
+-- -   __Version 11.2 (Only available in the following regions:
+--     us-west-1):__
+--     ' 11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'
+-- -   __Version 11.2 (Only available in the following regions:
+--     eu-central-1, us-west-1):__
+--     ' 11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'
+-- -   __Version 12.1 (Only available in the following regions:
+--     eu-central-1, us-west-1):__ ' 12.1.0.1.v1'
+--
+-- __Oracle Database Standard Edition (oracle-se)__
+--
+-- -   __Version 11.2 (Only available in the following regions:
+--     us-west-1):__
+--     ' 11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'
+-- -   __Version 11.2 (Only available in the following regions:
+--     eu-central-1, us-west-1):__
+--     ' 11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'
+-- -   __Version 12.1 (Only available in the following regions:
+--     eu-central-1, us-west-1):__ ' 12.1.0.1.v1'
+--
+-- __Oracle Database Standard Edition One (oracle-se1)__
+--
+-- -   __Version 11.2 (Only available in the following regions:
+--     us-west-1):__
+--     ' 11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'
+-- -   __Version 11.2 (Only available in the following regions:
+--     eu-central-1, us-west-1):__
+--     ' 11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'
+-- -   __Version 12.1 (Only available in the following regions:
+--     eu-central-1, us-west-1):__ ' 12.1.0.1.v1'
+--
+-- __Oracle Database Standard Edition One (oracle-se1)__
+--
+-- -   __Version 11.2 (Only available in the following regions:
+--     us-west-1):__
+--     ' 11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'
+-- -   __Version 11.2 (Only available in the following regions:
+--     eu-central-1, us-west-1):__
+--     ' 11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'
+-- -   __Version 12.1 (Only available in the following regions:
+--     eu-central-1, us-west-1):__ ' 12.1.0.1.v1'
+--
+-- __Oracle Database Standard Edition One (oracle-se1)__
+--
+-- -   __Version 11.2 (Only available in the following regions:
+--     us-west-1):__
+--     ' 11.2.0.2.v3 | 11.2.0.2.v4 | 11.2.0.2.v5 | 11.2.0.2.v6 | 11.2.0.2.v7'
+-- -   __Version 11.2 (Only available in the following regions:
+--     eu-central-1, us-west-1):__
+--     ' 11.2.0.3.v1 | 11.2.0.3.v2 | 11.2.0.4.v1 | 11.2.0.4.v3'
+-- -   __Version 12.1 (Only available in the following regions:
+--     eu-central-1, us-west-1):__ ' 12.1.0.1.v1'
+--
+-- __PostgreSQL__
+--
+-- -   __Version 9.3 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__ ' 9.3.1 | 9.3.2'
+-- -   __Version 9.3 (Available in all regions):__ ' 9.3.3 | 9.3.5 | 9.3.6'
+-- -   __Version 9.4 (Available in all regions):__ ' 9.4.1'
+--
+-- __PostgreSQL__
+--
+-- -   __Version 9.3 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__ ' 9.3.1 | 9.3.2'
+-- -   __Version 9.3 (Available in all regions):__ ' 9.3.3 | 9.3.5 | 9.3.6'
+-- -   __Version 9.4 (Available in all regions):__ ' 9.4.1'
+--
+-- __PostgreSQL__
+--
+-- -   __Version 9.3 (Only available in the following regions:
+--     ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1,
+--     sa-east-1, us-west-1, us-west-2):__ ' 9.3.1 | 9.3.2'
+-- -   __Version 9.3 (Available in all regions):__ ' 9.3.3 | 9.3.5 | 9.3.6'
+-- -   __Version 9.4 (Available in all regions):__ ' 9.4.1'
+--
+-- __Microsoft SQL Server Enterprise Edition (sqlserver-ee)__
+--
+-- -   __Version 10.50 (Only available in the following regions:
+--     eu-central-1, us-west-1):__ ' 10.50.2789.0.v1'
+-- -   __Version 11.00 (Only available in the following regions:
+--     eu-central-1, us-west-1):__ ' 11.00.2100.60.v1'
+--
+-- __Microsoft SQL Server Enterprise Edition (sqlserver-ee)__
+--
+-- -   __Version 10.50 (Only available in the following regions:
+--     eu-central-1, us-west-1):__ ' 10.50.2789.0.v1'
+-- -   __Version 11.00 (Only available in the following regions:
+--     eu-central-1, us-west-1):__ ' 11.00.2100.60.v1'
+--
+-- __Microsoft SQL Server Express Edition (sqlserver-ex)__
+--
+-- -   __Version 10.50 (Available in all regions):__ ' 10.50.2789.0.v1'
+-- -   __Version 11.00 (Available in all regions):__ ' 11.00.2100.60.v1'
+--
+-- __Microsoft SQL Server Express Edition (sqlserver-ex)__
+--
+-- -   __Version 10.50 (Available in all regions):__ ' 10.50.2789.0.v1'
+-- -   __Version 11.00 (Available in all regions):__ ' 11.00.2100.60.v1'
+--
+-- __Microsoft SQL Server Standard Edition (sqlserver-se)__
+--
+-- -   __Version 10.50 (Available in all regions):__ ' 10.50.2789.0.v1'
+-- -   __Version 11.00 (Available in all regions):__ ' 11.00.2100.60.v1'
+--
+-- __Microsoft SQL Server Standard Edition (sqlserver-se)__
+--
+-- -   __Version 10.50 (Available in all regions):__ ' 10.50.2789.0.v1'
+-- -   __Version 11.00 (Available in all regions):__ ' 11.00.2100.60.v1'
+--
+-- __Microsoft SQL Server Web Edition (sqlserver-web)__
+--
+-- -   __Version 10.50 (Available in all regions):__ ' 10.50.2789.0.v1'
+-- -   __Version 11.00 (Available in all regions):__ ' 11.00.2100.60.v1'
+--
+-- __Microsoft SQL Server Web Edition (sqlserver-web)__
+--
+-- -   __Version 10.50 (Available in all regions):__ ' 10.50.2789.0.v1'
+-- -   __Version 11.00 (Available in all regions):__ ' 11.00.2100.60.v1'
+cdiEngineVersion :: Lens' CreateDBInstance (Maybe Text)
+cdiEngineVersion = lens _cdiEngineVersion (\ s a -> s{_cdiEngineVersion = a});
+
+-- | Specifies whether the DB instance is encrypted.
+--
+-- Default: false
+cdiStorageEncrypted :: Lens' CreateDBInstance (Maybe Bool)
+cdiStorageEncrypted = lens _cdiStorageEncrypted (\ s a -> s{_cdiStorageEncrypted = a});
+
+-- | The identifier of the DB cluster that the instance will belong to.
+--
+-- For information on creating a DB cluster, see CreateDBCluster.
+--
+-- Type: String
+cdiDBClusterIdentifier :: Lens' CreateDBInstance (Maybe Text)
+cdiDBClusterIdentifier = lens _cdiDBClusterIdentifier (\ s a -> s{_cdiDBClusterIdentifier = a});
+
+-- | Indicates that minor engine upgrades will be applied automatically to
+-- the DB instance during the maintenance window.
+--
+-- Default: 'true'
+cdiAutoMinorVersionUpgrade :: Lens' CreateDBInstance (Maybe Bool)
+cdiAutoMinorVersionUpgrade = lens _cdiAutoMinorVersionUpgrade (\ s a -> s{_cdiAutoMinorVersionUpgrade = a});
+
+-- | The password for the master database user. Can be any printable ASCII
+-- character except \"\/\", \"\"\", or \"\'\".
+--
+-- Type: String
+--
+-- __MySQL__
+--
+-- Constraints: Must contain from 8 to 41 characters.
+--
+-- __Oracle__
+--
+-- Constraints: Must contain from 8 to 30 characters.
+--
+-- __SQL Server__
+--
+-- Constraints: Must contain from 8 to 128 characters.
+--
+-- __PostgreSQL__
+--
+-- Constraints: Must contain from 8 to 128 characters.
+cdiMasterUserPassword :: Lens' CreateDBInstance (Maybe Text)
+cdiMasterUserPassword = lens _cdiMasterUserPassword (\ s a -> s{_cdiMasterUserPassword = a});
+
+-- | The name of master user for the client DB instance.
+--
+-- __MySQL__
+--
+-- Constraints:
+--
+-- -   Must be 1 to 16 alphanumeric characters.
+-- -   First character must be a letter.
+-- -   Cannot be a reserved word for the chosen database engine.
+--
+-- Type: String
+--
+-- __Oracle__
+--
+-- Constraints:
+--
+-- -   Must be 1 to 30 alphanumeric characters.
+-- -   First character must be a letter.
+-- -   Cannot be a reserved word for the chosen database engine.
+--
+-- __SQL Server__
+--
+-- Constraints:
+--
+-- -   Must be 1 to 128 alphanumeric characters.
+-- -   First character must be a letter.
+-- -   Cannot be a reserved word for the chosen database engine.
+--
+-- __PostgreSQL__
+--
+-- Constraints:
+--
+-- -   Must be 1 to 63 alphanumeric characters.
+-- -   First character must be a letter.
+-- -   Cannot be a reserved word for the chosen database engine.
+cdiMasterUsername :: Lens' CreateDBInstance (Maybe Text)
+cdiMasterUsername = lens _cdiMasterUsername (\ s a -> s{_cdiMasterUsername = a});
+
+-- | Specifies the accessibility options for the DB instance. A value of true
+-- specifies an Internet-facing instance with a publicly resolvable DNS
+-- name, which resolves to a public IP address. A value of false specifies
+-- an internal instance with a DNS name that resolves to a private IP
+-- address.
+--
+-- Default: The default behavior varies depending on whether a VPC has been
+-- requested or not. The following list shows the default behavior in each
+-- case.
+--
+-- -   __Default VPC:__ true
+-- -   __VPC:__ false
+--
+-- If no DB subnet group has been specified as part of the request and the
+-- PubliclyAccessible value has not been set, the DB instance will be
+-- publicly accessible. If a specific DB subnet group has been specified as
+-- part of the request and the PubliclyAccessible value has not been set,
+-- the DB instance will be private.
+cdiPubliclyAccessible :: Lens' CreateDBInstance (Maybe Bool)
+cdiPubliclyAccessible = lens _cdiPubliclyAccessible (\ s a -> s{_cdiPubliclyAccessible = a});
+
+-- | A DB subnet group to associate with this DB instance.
+--
+-- If there is no DB subnet group, then it is a non-VPC DB instance.
+cdiDBSubnetGroupName :: Lens' CreateDBInstance (Maybe Text)
+cdiDBSubnetGroupName = lens _cdiDBSubnetGroupName (\ s a -> s{_cdiDBSubnetGroupName = a});
+
+-- | The amount of Provisioned IOPS (input\/output operations per second) to
+-- be initially allocated for the DB instance.
+--
+-- Constraints: To use PIOPS, this value must be an integer greater than
+-- 1000.
+cdiIOPS :: Lens' CreateDBInstance (Maybe Int)
+cdiIOPS = lens _cdiIOPS (\ s a -> s{_cdiIOPS = a});
+
+-- | Specify the Active Directory Domain to create the instance in.
+cdiDomain :: Lens' CreateDBInstance (Maybe Text)
+cdiDomain = lens _cdiDomain (\ s a -> s{_cdiDomain = a});
+
+-- | The password for the given ARN from the Key Store in order to access the
+-- device.
+cdiTDECredentialPassword :: Lens' CreateDBInstance (Maybe Text)
+cdiTDECredentialPassword = lens _cdiTDECredentialPassword (\ s a -> s{_cdiTDECredentialPassword = a});
+
+-- | License model information for this DB instance.
+--
+-- Valid values: 'license-included' | 'bring-your-own-license' |
+-- 'general-public-license'
+cdiLicenseModel :: Lens' CreateDBInstance (Maybe Text)
+cdiLicenseModel = lens _cdiLicenseModel (\ s a -> s{_cdiLicenseModel = a});
+
+-- | The weekly time range during which system maintenance can occur, in
+-- Universal Coordinated Time (UTC). For more information, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBMaintenance.html DB Instance Maintenance>.
+--
+-- Format: 'ddd:hh24:mi-ddd:hh24:mi'
+--
+-- Default: A 30-minute window selected at random from an 8-hour block of
+-- time per region, occurring on a random day of the week. To see the time
+-- blocks available, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
+-- in the /Amazon RDS User Guide./
+--
+-- Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+--
+-- Constraints: Minimum 30-minute window.
+cdiPreferredMaintenanceWindow :: Lens' CreateDBInstance (Maybe Text)
+cdiPreferredMaintenanceWindow = lens _cdiPreferredMaintenanceWindow (\ s a -> s{_cdiPreferredMaintenanceWindow = a});
+
+-- | For supported engines, indicates that the DB instance should be
+-- associated with the specified CharacterSet.
+cdiCharacterSetName :: Lens' CreateDBInstance (Maybe Text)
+cdiCharacterSetName = lens _cdiCharacterSetName (\ s a -> s{_cdiCharacterSetName = a});
+
+-- | The daily time range during which automated backups are created if
+-- automated backups are enabled, using the 'BackupRetentionPeriod'
+-- parameter. For more information, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.BackingUpAndRestoringAmazonRDSInstances.html DB Instance Backups>.
+--
+-- Default: A 30-minute window selected at random from an 8-hour block of
+-- time per region. To see the time blocks available, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
+-- in the /Amazon RDS User Guide./
+--
+-- Constraints:
+--
+-- -   Must be in the format 'hh24:mi-hh24:mi'.
+-- -   Times should be in Universal Coordinated Time (UTC).
+-- -   Must not conflict with the preferred maintenance window.
+-- -   Must be at least 30 minutes.
+cdiPreferredBackupWindow :: Lens' CreateDBInstance (Maybe Text)
+cdiPreferredBackupWindow = lens _cdiPreferredBackupWindow (\ s a -> s{_cdiPreferredBackupWindow = a});
+
+-- | The EC2 Availability Zone that the database instance will be created in.
+-- For information on regions and Availability Zones, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html Regions and Availability Zones>.
+--
+-- Default: A random, system-chosen Availability Zone in the endpoint\'s
+-- region.
+--
+-- Example: 'us-east-1d'
+--
+-- Constraint: The AvailabilityZone parameter cannot be specified if the
+-- MultiAZ parameter is set to 'true'. The specified Availability Zone must
+-- be in the same region as the current endpoint.
+cdiAvailabilityZone :: Lens' CreateDBInstance (Maybe Text)
+cdiAvailabilityZone = lens _cdiAvailabilityZone (\ s a -> s{_cdiAvailabilityZone = a});
+
+-- | The number of days for which automated backups are retained. Setting
+-- this parameter to a positive number enables backups. Setting this
+-- parameter to 0 disables automated backups.
+--
+-- Default: 1
+--
+-- Constraints:
+--
+-- -   Must be a value from 0 to 35
+-- -   Cannot be set to 0 if the DB instance is a source to Read Replicas
+cdiBackupRetentionPeriod :: Lens' CreateDBInstance (Maybe Int)
+cdiBackupRetentionPeriod = lens _cdiBackupRetentionPeriod (\ s a -> s{_cdiBackupRetentionPeriod = a});
+
+-- | The KMS key identifier for an encrypted DB instance.
+--
+-- The KMS key identifier is the Amazon Resoure Name (ARN) for the KMS
+-- encryption key. If you are creating a DB instance with the same AWS
+-- account that owns the KMS encryption key used to encrypt the new DB
+-- instance, then you can use the KMS key alias instead of the ARN for the
+-- KM encryption key.
+--
+-- If the 'StorageEncrypted' parameter is true, and you do not specify a
+-- value for the 'KmsKeyId' parameter, then Amazon RDS will use your
+-- default encryption key. AWS KMS creates the default encryption key for
+-- your AWS account. Your AWS account has a different default encryption
+-- key for each AWS region.
+cdiKMSKeyId :: Lens' CreateDBInstance (Maybe Text)
+cdiKMSKeyId = lens _cdiKMSKeyId (\ s a -> s{_cdiKMSKeyId = a});
+
+-- | The name of the DB parameter group to associate with this DB instance.
+-- If this argument is omitted, the default DBParameterGroup for the
+-- specified engine will be used.
+--
+-- Constraints:
+--
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+cdiDBParameterGroupName :: Lens' CreateDBInstance (Maybe Text)
+cdiDBParameterGroupName = lens _cdiDBParameterGroupName (\ s a -> s{_cdiDBParameterGroupName = a});
+
+-- | A list of EC2 VPC security groups to associate with this DB instance.
+--
+-- Default: The default EC2 VPC security group for the DB subnet group\'s
+-- VPC.
+cdiVPCSecurityGroupIds :: Lens' CreateDBInstance [Text]
+cdiVPCSecurityGroupIds = lens _cdiVPCSecurityGroupIds (\ s a -> s{_cdiVPCSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | Specifies if the DB instance is a Multi-AZ deployment. You cannot set
+-- the AvailabilityZone parameter if the MultiAZ parameter is set to true.
+-- Do not set this value if you want a Multi-AZ deployment for a SQL Server
+-- DB instance. Multi-AZ for SQL Server is set using the Mirroring option
+-- in an option group.
+cdiMultiAZ :: Lens' CreateDBInstance (Maybe Bool)
+cdiMultiAZ = lens _cdiMultiAZ (\ s a -> s{_cdiMultiAZ = a});
+
+-- | The amount of storage (in gigabytes) to be initially allocated for the
+-- database instance.
+--
+-- Type: Integer
+--
+-- __MySQL__
+--
+-- Constraints: Must be an integer from 5 to 6144.
+--
+-- __PostgreSQL__
+--
+-- Constraints: Must be an integer from 5 to 6144.
+--
+-- __Oracle__
+--
+-- Constraints: Must be an integer from 10 to 6144.
+--
+-- __SQL Server__
+--
+-- Constraints: Must be an integer from 200 to 4096 (Standard Edition and
+-- Enterprise Edition) or from 20 to 4096 (Express Edition and Web Edition)
+cdiAllocatedStorage :: Lens' CreateDBInstance (Maybe Int)
+cdiAllocatedStorage = lens _cdiAllocatedStorage (\ s a -> s{_cdiAllocatedStorage = a});
+
+-- | The ARN from the Key Store with which to associate the instance for TDE
+-- encryption.
+cdiTDECredentialARN :: Lens' CreateDBInstance (Maybe Text)
+cdiTDECredentialARN = lens _cdiTDECredentialARN (\ s a -> s{_cdiTDECredentialARN = a});
+
+-- | Indicates that the DB instance should be associated with the specified
+-- option group.
+--
+-- Permanent options, such as the TDE option for Oracle Advanced Security
+-- TDE, cannot be removed from an option group, and that option group
+-- cannot be removed from a DB instance once it is associated with a DB
+-- instance
+cdiOptionGroupName :: Lens' CreateDBInstance (Maybe Text)
+cdiOptionGroupName = lens _cdiOptionGroupName (\ s a -> s{_cdiOptionGroupName = a});
+
+-- | This property is not currently implemented.
+cdiCopyTagsToSnapshot :: Lens' CreateDBInstance (Maybe Bool)
+cdiCopyTagsToSnapshot = lens _cdiCopyTagsToSnapshot (\ s a -> s{_cdiCopyTagsToSnapshot = a});
+
+-- | The meaning of this parameter differs according to the database engine
+-- you use.
+--
+-- Type: String
+--
+-- __MySQL__
+--
+-- The name of the database to create when the DB instance is created. If
+-- this parameter is not specified, no database is created in the DB
+-- instance.
+--
+-- Constraints:
+--
+-- -   Must contain 1 to 64 alphanumeric characters
+-- -   Cannot be a word reserved by the specified database engine
+--
+-- __PostgreSQL__
+--
+-- The name of the database to create when the DB instance is created. If
+-- this parameter is not specified, the default \"postgres\" database is
+-- created in the DB instance.
+--
+-- Constraints:
+--
+-- -   Must contain 1 to 63 alphanumeric characters
+-- -   Must begin with a letter or an underscore. Subsequent characters can
+--     be letters, underscores, or digits (0-9).
+-- -   Cannot be a word reserved by the specified database engine
+--
+-- __Oracle__
+--
+-- The Oracle System ID (SID) of the created DB instance.
+--
+-- Default: 'ORCL'
+--
+-- Constraints:
+--
+-- -   Cannot be longer than 8 characters
+--
+-- __SQL Server__
+--
+-- Not applicable. Must be null.
+cdiDBName :: Lens' CreateDBInstance (Maybe Text)
+cdiDBName = lens _cdiDBName (\ s a -> s{_cdiDBName = a});
+
+-- | Undocumented member.
+cdiTags :: Lens' CreateDBInstance [Tag]
+cdiTags = lens _cdiTags (\ s a -> s{_cdiTags = a}) . _Default . _Coerce;
+
+-- | The port number on which the database accepts connections.
+--
+-- __MySQL__
+--
+-- Default: '3306'
+--
+-- Valid Values: '1150-65535'
+--
+-- Type: Integer
+--
+-- __PostgreSQL__
+--
+-- Default: '5432'
+--
+-- Valid Values: '1150-65535'
+--
+-- Type: Integer
+--
+-- __Oracle__
+--
+-- Default: '1521'
+--
+-- Valid Values: '1150-65535'
+--
+-- __SQL Server__
+--
+-- Default: '1433'
+--
+-- Valid Values: '1150-65535' except for '1434', '3389', '47001', '49152',
+-- and '49152' through '49156'.
+cdiPort :: Lens' CreateDBInstance (Maybe Int)
+cdiPort = lens _cdiPort (\ s a -> s{_cdiPort = a});
+
+-- | Specifies the storage type to be associated with the DB instance.
+--
+-- Valid values: 'standard | gp2 | io1'
+--
+-- If you specify 'io1', you must also include a value for the 'Iops'
+-- parameter.
+--
+-- Default: 'io1' if the 'Iops' parameter is specified; otherwise
+-- 'standard'
+cdiStorageType :: Lens' CreateDBInstance (Maybe Text)
+cdiStorageType = lens _cdiStorageType (\ s a -> s{_cdiStorageType = a});
+
+-- | The DB instance identifier. This parameter is stored as a lowercase
+-- string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens (1 to
+--     15 for SQL Server).
+-- -   First character must be a letter.
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: 'mydbinstance'
+cdiDBInstanceIdentifier :: Lens' CreateDBInstance Text
+cdiDBInstanceIdentifier = lens _cdiDBInstanceIdentifier (\ s a -> s{_cdiDBInstanceIdentifier = a});
+
+-- | The compute and memory capacity of the DB instance.
+--
+-- Valid Values:
+-- 'db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.xlarge |db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium'
+cdiDBInstanceClass :: Lens' CreateDBInstance Text
+cdiDBInstanceClass = lens _cdiDBInstanceClass (\ s a -> s{_cdiDBInstanceClass = a});
+
+-- | The name of the database engine to be used for this instance.
+--
+-- Valid Values: 'MySQL' | 'oracle-se1' | 'oracle-se' | 'oracle-ee' |
+-- 'sqlserver-ee' | 'sqlserver-se' | 'sqlserver-ex' | 'sqlserver-web' |
+-- 'postgres'
+--
+-- Not every database engine is available for every AWS region.
+cdiEngine :: Lens' CreateDBInstance Text
+cdiEngine = lens _cdiEngine (\ s a -> s{_cdiEngine = a});
+
+instance AWSRequest CreateDBInstance where
+        type Sv CreateDBInstance = RDS
+        type Rs CreateDBInstance = CreateDBInstanceResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CreateDBInstanceResult"
+              (\ s h x ->
+                 CreateDBInstanceResponse' <$>
+                   (x .@? "DBInstance") <*> (pure (fromEnum s)))
+
+instance ToHeaders CreateDBInstance where
+        toHeaders = const mempty
+
+instance ToPath CreateDBInstance where
+        toPath = const "/"
+
+instance ToQuery CreateDBInstance where
+        toQuery CreateDBInstance'{..}
+          = mconcat
+              ["Action" =: ("CreateDBInstance" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBSecurityGroups" =:
+                 toQuery
+                   (toQueryList "DBSecurityGroupName" <$>
+                      _cdiDBSecurityGroups),
+               "EngineVersion" =: _cdiEngineVersion,
+               "StorageEncrypted" =: _cdiStorageEncrypted,
+               "DBClusterIdentifier" =: _cdiDBClusterIdentifier,
+               "AutoMinorVersionUpgrade" =:
+                 _cdiAutoMinorVersionUpgrade,
+               "MasterUserPassword" =: _cdiMasterUserPassword,
+               "MasterUsername" =: _cdiMasterUsername,
+               "PubliclyAccessible" =: _cdiPubliclyAccessible,
+               "DBSubnetGroupName" =: _cdiDBSubnetGroupName,
+               "Iops" =: _cdiIOPS, "Domain" =: _cdiDomain,
+               "TdeCredentialPassword" =: _cdiTDECredentialPassword,
+               "LicenseModel" =: _cdiLicenseModel,
+               "PreferredMaintenanceWindow" =:
+                 _cdiPreferredMaintenanceWindow,
+               "CharacterSetName" =: _cdiCharacterSetName,
+               "PreferredBackupWindow" =: _cdiPreferredBackupWindow,
+               "AvailabilityZone" =: _cdiAvailabilityZone,
+               "BackupRetentionPeriod" =: _cdiBackupRetentionPeriod,
+               "KmsKeyId" =: _cdiKMSKeyId,
+               "DBParameterGroupName" =: _cdiDBParameterGroupName,
+               "VpcSecurityGroupIds" =:
+                 toQuery
+                   (toQueryList "VpcSecurityGroupId" <$>
+                      _cdiVPCSecurityGroupIds),
+               "MultiAZ" =: _cdiMultiAZ,
+               "AllocatedStorage" =: _cdiAllocatedStorage,
+               "TdeCredentialArn" =: _cdiTDECredentialARN,
+               "OptionGroupName" =: _cdiOptionGroupName,
+               "CopyTagsToSnapshot" =: _cdiCopyTagsToSnapshot,
+               "DBName" =: _cdiDBName,
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cdiTags),
+               "Port" =: _cdiPort, "StorageType" =: _cdiStorageType,
+               "DBInstanceIdentifier" =: _cdiDBInstanceIdentifier,
+               "DBInstanceClass" =: _cdiDBInstanceClass,
+               "Engine" =: _cdiEngine]
+
+-- | /See:/ 'createDBInstanceResponse' smart constructor.
+data CreateDBInstanceResponse = CreateDBInstanceResponse'
+    { _cdirsDBInstance :: !(Maybe DBInstance)
+    , _cdirsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDBInstanceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdirsDBInstance'
+--
+-- * 'cdirsStatus'
+createDBInstanceResponse
+    :: Int -- ^ 'cdirsStatus'
+    -> CreateDBInstanceResponse
+createDBInstanceResponse pStatus_ =
+    CreateDBInstanceResponse'
+    { _cdirsDBInstance = Nothing
+    , _cdirsStatus = pStatus_
+    }
+
+-- | Undocumented member.
+cdirsDBInstance :: Lens' CreateDBInstanceResponse (Maybe DBInstance)
+cdirsDBInstance = lens _cdirsDBInstance (\ s a -> s{_cdirsDBInstance = a});
+
+-- | The response status code.
+cdirsStatus :: Lens' CreateDBInstanceResponse Int
+cdirsStatus = lens _cdirsStatus (\ s a -> s{_cdirsStatus = a});
diff --git a/gen/Network/AWS/RDS/CreateDBInstanceReadReplica.hs b/gen/Network/AWS/RDS/CreateDBInstanceReadReplica.hs
--- a/gen/Network/AWS/RDS/CreateDBInstanceReadReplica.hs
+++ b/gen/Network/AWS/RDS/CreateDBInstanceReadReplica.hs
@@ -1,302 +1,333 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.CreateDBInstanceReadReplica
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a DB instance that acts as a Read Replica of a source DB instance.
+-- Creates a DB instance for a DB instance running MySQL or PostgreSQL that
+-- acts as a Read Replica of a source DB instance.
 --
 -- All Read Replica DB instances are created as Single-AZ deployments with
--- backups disabled. All other DB instance attributes (including DB security
--- groups and DB parameter groups) are inherited from the source DB instance,
--- except as specified below.
+-- backups disabled. All other DB instance attributes (including DB
+-- security groups and DB parameter groups) are inherited from the source
+-- DB instance, except as specified below.
 --
 -- The source DB instance must have backup retention enabled.
 --
---
---
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html AWS API Reference> for CreateDBInstanceReadReplica.
 module Network.AWS.RDS.CreateDBInstanceReadReplica
     (
-    -- * Request
-      CreateDBInstanceReadReplica
-    -- ** Request constructor
-    , createDBInstanceReadReplica
-    -- ** Request lenses
-    , cdbirrAutoMinorVersionUpgrade
-    , cdbirrAvailabilityZone
-    , cdbirrDBInstanceClass
-    , cdbirrDBInstanceIdentifier
-    , cdbirrDBSubnetGroupName
-    , cdbirrIops
-    , cdbirrOptionGroupName
-    , cdbirrPort
-    , cdbirrPubliclyAccessible
-    , cdbirrSourceDBInstanceIdentifier
-    , cdbirrStorageType
-    , cdbirrTags
+    -- * Creating a Request
+      createDBInstanceReadReplica
+    , CreateDBInstanceReadReplica
+    -- * Request Lenses
+    , cdirrAutoMinorVersionUpgrade
+    , cdirrPubliclyAccessible
+    , cdirrDBSubnetGroupName
+    , cdirrIOPS
+    , cdirrDBInstanceClass
+    , cdirrAvailabilityZone
+    , cdirrOptionGroupName
+    , cdirrCopyTagsToSnapshot
+    , cdirrTags
+    , cdirrPort
+    , cdirrStorageType
+    , cdirrDBInstanceIdentifier
+    , cdirrSourceDBInstanceIdentifier
 
-    -- * Response
-    , CreateDBInstanceReadReplicaResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createDBInstanceReadReplicaResponse
-    -- ** Response lenses
-    , cdbirrrDBInstance
+    , CreateDBInstanceReadReplicaResponse
+    -- * Response Lenses
+    , cdirrrsDBInstance
+    , cdirrrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateDBInstanceReadReplica = CreateDBInstanceReadReplica
-    { _cdbirrAutoMinorVersionUpgrade    :: Maybe Bool
-    , _cdbirrAvailabilityZone           :: Maybe Text
-    , _cdbirrDBInstanceClass            :: Maybe Text
-    , _cdbirrDBInstanceIdentifier       :: Text
-    , _cdbirrDBSubnetGroupName          :: Maybe Text
-    , _cdbirrIops                       :: Maybe Int
-    , _cdbirrOptionGroupName            :: Maybe Text
-    , _cdbirrPort                       :: Maybe Int
-    , _cdbirrPubliclyAccessible         :: Maybe Bool
-    , _cdbirrSourceDBInstanceIdentifier :: Text
-    , _cdbirrStorageType                :: Maybe Text
-    , _cdbirrTags                       :: List "member" Tag
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'createDBInstanceReadReplica' smart constructor.
+data CreateDBInstanceReadReplica = CreateDBInstanceReadReplica'
+    { _cdirrAutoMinorVersionUpgrade    :: !(Maybe Bool)
+    , _cdirrPubliclyAccessible         :: !(Maybe Bool)
+    , _cdirrDBSubnetGroupName          :: !(Maybe Text)
+    , _cdirrIOPS                       :: !(Maybe Int)
+    , _cdirrDBInstanceClass            :: !(Maybe Text)
+    , _cdirrAvailabilityZone           :: !(Maybe Text)
+    , _cdirrOptionGroupName            :: !(Maybe Text)
+    , _cdirrCopyTagsToSnapshot         :: !(Maybe Bool)
+    , _cdirrTags                       :: !(Maybe [Tag])
+    , _cdirrPort                       :: !(Maybe Int)
+    , _cdirrStorageType                :: !(Maybe Text)
+    , _cdirrDBInstanceIdentifier       :: !Text
+    , _cdirrSourceDBInstanceIdentifier :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateDBInstanceReadReplica' constructor.
+-- | Creates a value of 'CreateDBInstanceReadReplica' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cdbirrAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'
+-- * 'cdirrAutoMinorVersionUpgrade'
 --
--- * 'cdbirrAvailabilityZone' @::@ 'Maybe' 'Text'
+-- * 'cdirrPubliclyAccessible'
 --
--- * 'cdbirrDBInstanceClass' @::@ 'Maybe' 'Text'
+-- * 'cdirrDBSubnetGroupName'
 --
--- * 'cdbirrDBInstanceIdentifier' @::@ 'Text'
+-- * 'cdirrIOPS'
 --
--- * 'cdbirrDBSubnetGroupName' @::@ 'Maybe' 'Text'
+-- * 'cdirrDBInstanceClass'
 --
--- * 'cdbirrIops' @::@ 'Maybe' 'Int'
+-- * 'cdirrAvailabilityZone'
 --
--- * 'cdbirrOptionGroupName' @::@ 'Maybe' 'Text'
+-- * 'cdirrOptionGroupName'
 --
--- * 'cdbirrPort' @::@ 'Maybe' 'Int'
+-- * 'cdirrCopyTagsToSnapshot'
 --
--- * 'cdbirrPubliclyAccessible' @::@ 'Maybe' 'Bool'
+-- * 'cdirrTags'
 --
--- * 'cdbirrSourceDBInstanceIdentifier' @::@ 'Text'
+-- * 'cdirrPort'
 --
--- * 'cdbirrStorageType' @::@ 'Maybe' 'Text'
+-- * 'cdirrStorageType'
 --
--- * 'cdbirrTags' @::@ ['Tag']
+-- * 'cdirrDBInstanceIdentifier'
 --
-createDBInstanceReadReplica :: Text -- ^ 'cdbirrDBInstanceIdentifier'
-                            -> Text -- ^ 'cdbirrSourceDBInstanceIdentifier'
-                            -> CreateDBInstanceReadReplica
-createDBInstanceReadReplica p1 p2 = CreateDBInstanceReadReplica
-    { _cdbirrDBInstanceIdentifier       = p1
-    , _cdbirrSourceDBInstanceIdentifier = p2
-    , _cdbirrDBInstanceClass            = Nothing
-    , _cdbirrAvailabilityZone           = Nothing
-    , _cdbirrPort                       = Nothing
-    , _cdbirrAutoMinorVersionUpgrade    = Nothing
-    , _cdbirrIops                       = Nothing
-    , _cdbirrOptionGroupName            = Nothing
-    , _cdbirrPubliclyAccessible         = Nothing
-    , _cdbirrTags                       = mempty
-    , _cdbirrDBSubnetGroupName          = Nothing
-    , _cdbirrStorageType                = Nothing
+-- * 'cdirrSourceDBInstanceIdentifier'
+createDBInstanceReadReplica
+    :: Text -- ^ 'cdirrDBInstanceIdentifier'
+    -> Text -- ^ 'cdirrSourceDBInstanceIdentifier'
+    -> CreateDBInstanceReadReplica
+createDBInstanceReadReplica pDBInstanceIdentifier_ pSourceDBInstanceIdentifier_ =
+    CreateDBInstanceReadReplica'
+    { _cdirrAutoMinorVersionUpgrade = Nothing
+    , _cdirrPubliclyAccessible = Nothing
+    , _cdirrDBSubnetGroupName = Nothing
+    , _cdirrIOPS = Nothing
+    , _cdirrDBInstanceClass = Nothing
+    , _cdirrAvailabilityZone = Nothing
+    , _cdirrOptionGroupName = Nothing
+    , _cdirrCopyTagsToSnapshot = Nothing
+    , _cdirrTags = Nothing
+    , _cdirrPort = Nothing
+    , _cdirrStorageType = Nothing
+    , _cdirrDBInstanceIdentifier = pDBInstanceIdentifier_
+    , _cdirrSourceDBInstanceIdentifier = pSourceDBInstanceIdentifier_
     }
 
--- | Indicates that minor engine upgrades will be applied automatically to the
--- Read Replica during the maintenance window.
+-- | Indicates that minor engine upgrades will be applied automatically to
+-- the Read Replica during the maintenance window.
 --
 -- Default: Inherits from the source DB instance
-cdbirrAutoMinorVersionUpgrade :: Lens' CreateDBInstanceReadReplica (Maybe Bool)
-cdbirrAutoMinorVersionUpgrade =
-    lens _cdbirrAutoMinorVersionUpgrade
-        (\s a -> s { _cdbirrAutoMinorVersionUpgrade = a })
+cdirrAutoMinorVersionUpgrade :: Lens' CreateDBInstanceReadReplica (Maybe Bool)
+cdirrAutoMinorVersionUpgrade = lens _cdirrAutoMinorVersionUpgrade (\ s a -> s{_cdirrAutoMinorVersionUpgrade = a});
 
--- | The Amazon EC2 Availability Zone that the Read Replica will be created in.
+-- | Specifies the accessibility options for the DB instance. A value of true
+-- specifies an Internet-facing instance with a publicly resolvable DNS
+-- name, which resolves to a public IP address. A value of false specifies
+-- an internal instance with a DNS name that resolves to a private IP
+-- address.
 --
--- Default: A random, system-chosen Availability Zone in the endpoint's
--- region.
+-- Default: The default behavior varies depending on whether a VPC has been
+-- requested or not. The following list shows the default behavior in each
+-- case.
 --
--- Example: 'us-east-1d'
-cdbirrAvailabilityZone :: Lens' CreateDBInstanceReadReplica (Maybe Text)
-cdbirrAvailabilityZone =
-    lens _cdbirrAvailabilityZone (\s a -> s { _cdbirrAvailabilityZone = a })
+-- -   __Default VPC:__true
+-- -   __VPC:__false
+--
+-- If no DB subnet group has been specified as part of the request and the
+-- PubliclyAccessible value has not been set, the DB instance will be
+-- publicly accessible. If a specific DB subnet group has been specified as
+-- part of the request and the PubliclyAccessible value has not been set,
+-- the DB instance will be private.
+cdirrPubliclyAccessible :: Lens' CreateDBInstanceReadReplica (Maybe Bool)
+cdirrPubliclyAccessible = lens _cdirrPubliclyAccessible (\ s a -> s{_cdirrPubliclyAccessible = a});
 
+-- | Specifies a DB subnet group for the DB instance. The new DB instance
+-- will be created in the VPC associated with the DB subnet group. If no DB
+-- subnet group is specified, then the new DB instance is not created in a
+-- VPC.
+--
+-- Constraints:
+--
+-- -   Can only be specified if the source DB instance identifier specifies
+--     a DB instance in another region.
+-- -   The specified DB subnet group must be in the same region in which
+--     the operation is running.
+-- -   All Read Replicas in one region that are created from the same
+--     source DB instance must either:
+--     -   Specify DB subnet groups from the same VPC. All these Read
+--         Replicas will be created in the same VPC.
+--     -   Not specify a DB subnet group. All these Read Replicas will be
+--         created outside of any VPC.
+cdirrDBSubnetGroupName :: Lens' CreateDBInstanceReadReplica (Maybe Text)
+cdirrDBSubnetGroupName = lens _cdirrDBSubnetGroupName (\ s a -> s{_cdirrDBSubnetGroupName = a});
+
+-- | The amount of Provisioned IOPS (input\/output operations per second) to
+-- be initially allocated for the DB instance.
+cdirrIOPS :: Lens' CreateDBInstanceReadReplica (Maybe Int)
+cdirrIOPS = lens _cdirrIOPS (\ s a -> s{_cdirrIOPS = a});
+
 -- | The compute and memory capacity of the Read Replica.
 --
--- Valid Values: 'db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge |db.m2.xlarge |db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large |db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge |db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium'
+-- Valid Values:
+-- 'db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.xlarge |db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium'
 --
 -- Default: Inherits from the source DB instance.
-cdbirrDBInstanceClass :: Lens' CreateDBInstanceReadReplica (Maybe Text)
-cdbirrDBInstanceClass =
-    lens _cdbirrDBInstanceClass (\s a -> s { _cdbirrDBInstanceClass = a })
-
--- | The DB instance identifier of the Read Replica. This is the unique key that
--- identifies a DB instance. This parameter is stored as a lowercase string.
-cdbirrDBInstanceIdentifier :: Lens' CreateDBInstanceReadReplica Text
-cdbirrDBInstanceIdentifier =
-    lens _cdbirrDBInstanceIdentifier
-        (\s a -> s { _cdbirrDBInstanceIdentifier = a })
+cdirrDBInstanceClass :: Lens' CreateDBInstanceReadReplica (Maybe Text)
+cdirrDBInstanceClass = lens _cdirrDBInstanceClass (\ s a -> s{_cdirrDBInstanceClass = a});
 
--- | Specifies a DB subnet group for the DB instance. The new DB instance will be
--- created in the VPC associated with the DB subnet group. If no DB subnet group
--- is specified, then the new DB instance is not created in a VPC.
+-- | The Amazon EC2 Availability Zone that the Read Replica will be created
+-- in.
 --
--- Constraints:
+-- Default: A random, system-chosen Availability Zone in the endpoint\'s
+-- region.
 --
--- Can only be specified if the source DB instance identifier specifies a DB
--- instance in another region. The specified DB subnet group must be in the same
--- region in which the operation is running.  All Read Replicas in one region
--- that are created from the same source DB instance must either:  Specify DB
--- subnet groups from the same VPC. All these Read Replicas will be created in
--- the same VPC. Not specify a DB subnet group. All these Read Replicas will be
--- created outside of any VPC.
-cdbirrDBSubnetGroupName :: Lens' CreateDBInstanceReadReplica (Maybe Text)
-cdbirrDBSubnetGroupName =
-    lens _cdbirrDBSubnetGroupName (\s a -> s { _cdbirrDBSubnetGroupName = a })
+-- Example: 'us-east-1d'
+cdirrAvailabilityZone :: Lens' CreateDBInstanceReadReplica (Maybe Text)
+cdirrAvailabilityZone = lens _cdirrAvailabilityZone (\ s a -> s{_cdirrAvailabilityZone = a});
 
--- | The amount of Provisioned IOPS (input/output operations per second) to be
--- initially allocated for the DB instance.
-cdbirrIops :: Lens' CreateDBInstanceReadReplica (Maybe Int)
-cdbirrIops = lens _cdbirrIops (\s a -> s { _cdbirrIops = a })
+-- | The option group the DB instance will be associated with. If omitted,
+-- the default option group for the engine specified will be used.
+cdirrOptionGroupName :: Lens' CreateDBInstanceReadReplica (Maybe Text)
+cdirrOptionGroupName = lens _cdirrOptionGroupName (\ s a -> s{_cdirrOptionGroupName = a});
 
--- | The option group the DB instance will be associated with. If omitted, the
--- default option group for the engine specified will be used.
-cdbirrOptionGroupName :: Lens' CreateDBInstanceReadReplica (Maybe Text)
-cdbirrOptionGroupName =
-    lens _cdbirrOptionGroupName (\s a -> s { _cdbirrOptionGroupName = a })
+-- | This property is not currently implemented.
+cdirrCopyTagsToSnapshot :: Lens' CreateDBInstanceReadReplica (Maybe Bool)
+cdirrCopyTagsToSnapshot = lens _cdirrCopyTagsToSnapshot (\ s a -> s{_cdirrCopyTagsToSnapshot = a});
 
+-- | Undocumented member.
+cdirrTags :: Lens' CreateDBInstanceReadReplica [Tag]
+cdirrTags = lens _cdirrTags (\ s a -> s{_cdirrTags = a}) . _Default . _Coerce;
+
 -- | The port number that the DB instance uses for connections.
 --
 -- Default: Inherits from the source DB instance
 --
 -- Valid Values: '1150-65535'
-cdbirrPort :: Lens' CreateDBInstanceReadReplica (Maybe Int)
-cdbirrPort = lens _cdbirrPort (\s a -> s { _cdbirrPort = a })
-
--- | Specifies the accessibility options for the DB instance. A value of true
--- specifies an Internet-facing instance with a publicly resolvable DNS name,
--- which resolves to a public IP address. A value of false specifies an internal
--- instance with a DNS name that resolves to a private IP address.
---
--- Default: The default behavior varies depending on whether a VPC has been
--- requested or not. The following list shows the default behavior in each case.
---
--- Default VPC:true  VPC:false   If no DB subnet group has been specified as
--- part of the request and the PubliclyAccessible value has not been set, the DB
--- instance will be publicly accessible. If a specific DB subnet group has been
--- specified as part of the request and the PubliclyAccessible value has not
--- been set, the DB instance will be private.
-cdbirrPubliclyAccessible :: Lens' CreateDBInstanceReadReplica (Maybe Bool)
-cdbirrPubliclyAccessible =
-    lens _cdbirrPubliclyAccessible
-        (\s a -> s { _cdbirrPubliclyAccessible = a })
-
--- | The identifier of the DB instance that will act as the source for the Read
--- Replica. Each DB instance can have up to five Read Replicas.
---
--- Constraints:
---
--- Must be the identifier of an existing DB instance. Can specify a DB
--- instance that is a MySQL Read Replica only if the source is running MySQL 5.6.
--- Can specify a DB instance that is a PostgreSQL Read Replica only if the
--- source is running PostgreSQL 9.3.5. The specified DB instance must have
--- automatic backups enabled, its backup retention period must be greater than 0.
--- If the source DB instance is in the same region as the Read Replica, specify
--- a valid DB instance identifier. If the source DB instance is in a different
--- region than the Read Replica, specify a valid DB instance ARN. For more
--- information, go to <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN  Constructing a Amazon RDS Amazon Resource Name (ARN)>.
-cdbirrSourceDBInstanceIdentifier :: Lens' CreateDBInstanceReadReplica Text
-cdbirrSourceDBInstanceIdentifier =
-    lens _cdbirrSourceDBInstanceIdentifier
-        (\s a -> s { _cdbirrSourceDBInstanceIdentifier = a })
+cdirrPort :: Lens' CreateDBInstanceReadReplica (Maybe Int)
+cdirrPort = lens _cdirrPort (\ s a -> s{_cdirrPort = a});
 
 -- | Specifies the storage type to be associated with the Read Replica.
 --
 -- Valid values: 'standard | gp2 | io1'
 --
--- If you specify 'io1', you must also include a value for the 'Iops' parameter.
+-- If you specify 'io1', you must also include a value for the 'Iops'
+-- parameter.
 --
--- Default: 'io1' if the 'Iops' parameter is specified; otherwise 'standard'
-cdbirrStorageType :: Lens' CreateDBInstanceReadReplica (Maybe Text)
-cdbirrStorageType =
-    lens _cdbirrStorageType (\s a -> s { _cdbirrStorageType = a })
-
-cdbirrTags :: Lens' CreateDBInstanceReadReplica [Tag]
-cdbirrTags = lens _cdbirrTags (\s a -> s { _cdbirrTags = a }) . _List
+-- Default: 'io1' if the 'Iops' parameter is specified; otherwise
+-- 'standard'
+cdirrStorageType :: Lens' CreateDBInstanceReadReplica (Maybe Text)
+cdirrStorageType = lens _cdirrStorageType (\ s a -> s{_cdirrStorageType = a});
 
-newtype CreateDBInstanceReadReplicaResponse = CreateDBInstanceReadReplicaResponse
-    { _cdbirrrDBInstance :: Maybe DBInstance
-    } deriving (Eq, Read, Show)
+-- | The DB instance identifier of the Read Replica. This identifier is the
+-- unique key that identifies a DB instance. This parameter is stored as a
+-- lowercase string.
+cdirrDBInstanceIdentifier :: Lens' CreateDBInstanceReadReplica Text
+cdirrDBInstanceIdentifier = lens _cdirrDBInstanceIdentifier (\ s a -> s{_cdirrDBInstanceIdentifier = a});
 
--- | 'CreateDBInstanceReadReplicaResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | The identifier of the DB instance that will act as the source for the
+-- Read Replica. Each DB instance can have up to five Read Replicas.
 --
--- * 'cdbirrrDBInstance' @::@ 'Maybe' 'DBInstance'
+-- Constraints:
 --
-createDBInstanceReadReplicaResponse :: CreateDBInstanceReadReplicaResponse
-createDBInstanceReadReplicaResponse = CreateDBInstanceReadReplicaResponse
-    { _cdbirrrDBInstance = Nothing
-    }
+-- -   Must be the identifier of an existing DB instance.
+-- -   Can specify a DB instance that is a MySQL Read Replica only if the
+--     source is running MySQL 5.6.
+-- -   Can specify a DB instance that is a PostgreSQL Read Replica only if
+--     the source is running PostgreSQL 9.3.5.
+-- -   The specified DB instance must have automatic backups enabled, its
+--     backup retention period must be greater than 0.
+-- -   If the source DB instance is in the same region as the Read Replica,
+--     specify a valid DB instance identifier.
+-- -   If the source DB instance is in a different region than the Read
+--     Replica, specify a valid DB instance ARN. For more information, go
+--     to
+--     <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN Constructing a Amazon RDS Amazon Resource Name (ARN)>.
+cdirrSourceDBInstanceIdentifier :: Lens' CreateDBInstanceReadReplica Text
+cdirrSourceDBInstanceIdentifier = lens _cdirrSourceDBInstanceIdentifier (\ s a -> s{_cdirrSourceDBInstanceIdentifier = a});
 
-cdbirrrDBInstance :: Lens' CreateDBInstanceReadReplicaResponse (Maybe DBInstance)
-cdbirrrDBInstance =
-    lens _cdbirrrDBInstance (\s a -> s { _cdbirrrDBInstance = a })
+instance AWSRequest CreateDBInstanceReadReplica where
+        type Sv CreateDBInstanceReadReplica = RDS
+        type Rs CreateDBInstanceReadReplica =
+             CreateDBInstanceReadReplicaResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "CreateDBInstanceReadReplicaResult"
+              (\ s h x ->
+                 CreateDBInstanceReadReplicaResponse' <$>
+                   (x .@? "DBInstance") <*> (pure (fromEnum s)))
 
+instance ToHeaders CreateDBInstanceReadReplica where
+        toHeaders = const mempty
+
 instance ToPath CreateDBInstanceReadReplica where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateDBInstanceReadReplica where
-    toQuery CreateDBInstanceReadReplica{..} = mconcat
-        [ "AutoMinorVersionUpgrade"    =? _cdbirrAutoMinorVersionUpgrade
-        , "AvailabilityZone"           =? _cdbirrAvailabilityZone
-        , "DBInstanceClass"            =? _cdbirrDBInstanceClass
-        , "DBInstanceIdentifier"       =? _cdbirrDBInstanceIdentifier
-        , "DBSubnetGroupName"          =? _cdbirrDBSubnetGroupName
-        , "Iops"                       =? _cdbirrIops
-        , "OptionGroupName"            =? _cdbirrOptionGroupName
-        , "Port"                       =? _cdbirrPort
-        , "PubliclyAccessible"         =? _cdbirrPubliclyAccessible
-        , "SourceDBInstanceIdentifier" =? _cdbirrSourceDBInstanceIdentifier
-        , "StorageType"                =? _cdbirrStorageType
-        , "Tags"                       =? _cdbirrTags
-        ]
+        toQuery CreateDBInstanceReadReplica'{..}
+          = mconcat
+              ["Action" =:
+                 ("CreateDBInstanceReadReplica" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "AutoMinorVersionUpgrade" =:
+                 _cdirrAutoMinorVersionUpgrade,
+               "PubliclyAccessible" =: _cdirrPubliclyAccessible,
+               "DBSubnetGroupName" =: _cdirrDBSubnetGroupName,
+               "Iops" =: _cdirrIOPS,
+               "DBInstanceClass" =: _cdirrDBInstanceClass,
+               "AvailabilityZone" =: _cdirrAvailabilityZone,
+               "OptionGroupName" =: _cdirrOptionGroupName,
+               "CopyTagsToSnapshot" =: _cdirrCopyTagsToSnapshot,
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cdirrTags),
+               "Port" =: _cdirrPort,
+               "StorageType" =: _cdirrStorageType,
+               "DBInstanceIdentifier" =: _cdirrDBInstanceIdentifier,
+               "SourceDBInstanceIdentifier" =:
+                 _cdirrSourceDBInstanceIdentifier]
 
-instance ToHeaders CreateDBInstanceReadReplica
+-- | /See:/ 'createDBInstanceReadReplicaResponse' smart constructor.
+data CreateDBInstanceReadReplicaResponse = CreateDBInstanceReadReplicaResponse'
+    { _cdirrrsDBInstance :: !(Maybe DBInstance)
+    , _cdirrrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateDBInstanceReadReplica where
-    type Sv CreateDBInstanceReadReplica = RDS
-    type Rs CreateDBInstanceReadReplica = CreateDBInstanceReadReplicaResponse
+-- | Creates a value of 'CreateDBInstanceReadReplicaResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdirrrsDBInstance'
+--
+-- * 'cdirrrsStatus'
+createDBInstanceReadReplicaResponse
+    :: Int -- ^ 'cdirrrsStatus'
+    -> CreateDBInstanceReadReplicaResponse
+createDBInstanceReadReplicaResponse pStatus_ =
+    CreateDBInstanceReadReplicaResponse'
+    { _cdirrrsDBInstance = Nothing
+    , _cdirrrsStatus = pStatus_
+    }
 
-    request  = post "CreateDBInstanceReadReplica"
-    response = xmlResponse
+-- | Undocumented member.
+cdirrrsDBInstance :: Lens' CreateDBInstanceReadReplicaResponse (Maybe DBInstance)
+cdirrrsDBInstance = lens _cdirrrsDBInstance (\ s a -> s{_cdirrrsDBInstance = a});
 
-instance FromXML CreateDBInstanceReadReplicaResponse where
-    parseXML = withElement "CreateDBInstanceReadReplicaResult" $ \x -> CreateDBInstanceReadReplicaResponse
-        <$> x .@? "DBInstance"
+-- | The response status code.
+cdirrrsStatus :: Lens' CreateDBInstanceReadReplicaResponse Int
+cdirrrsStatus = lens _cdirrrsStatus (\ s a -> s{_cdirrrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CreateDBParameterGroup.hs b/gen/Network/AWS/RDS/CreateDBParameterGroup.hs
--- a/gen/Network/AWS/RDS/CreateDBParameterGroup.hs
+++ b/gen/Network/AWS/RDS/CreateDBParameterGroup.hs
@@ -1,171 +1,189 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.CreateDBParameterGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a new DB parameter group.
---
--- A DB parameter group is initially created with the default parameters for
--- the database engine used by the DB instance. To provide custom values for any
--- of the parameters, you must modify the group after creating it using /ModifyDBParameterGroup/. Once you've created a DB parameter group, you need to associate it with
--- your DB instance using /ModifyDBInstance/. When you associate a new DB
--- parameter group with a running DB instance, you need to reboot the DB
--- instance without failover for the new DB parameter group and associated
--- settings to take effect.
---
--- After you create a DB parameter group, you should wait at least 5 minutes
--- before creating your first DB instance that uses that DB parameter group as
--- the default parameter group. This allows Amazon RDS to fully complete the
--- create action before the parameter group is used as the default for a new DB
--- instance. This is especially important for parameters that are critical when
--- creating the default database for a DB instance, such as the character set
--- for the default database defined by the 'character_set_database' parameter. You
--- can use the /Parameter Groups/ option of the <https://console.aws.amazon.com/rds/ Amazon RDS console> or the /DescribeDBParameters/ command to verify that your DB parameter group has been created or modified.
+-- Creates a new DB parameter group.
 --
+-- A DB parameter group is initially created with the default parameters
+-- for the database engine used by the DB instance. To provide custom
+-- values for any of the parameters, you must modify the group after
+-- creating it using /ModifyDBParameterGroup/. Once you\'ve created a DB
+-- parameter group, you need to associate it with your DB instance using
+-- /ModifyDBInstance/. When you associate a new DB parameter group with a
+-- running DB instance, you need to reboot the DB instance without failover
+-- for the new DB parameter group and associated settings to take effect.
 --
+-- After you create a DB parameter group, you should wait at least 5
+-- minutes before creating your first DB instance that uses that DB
+-- parameter group as the default parameter group. This allows Amazon RDS
+-- to fully complete the create action before the parameter group is used
+-- as the default for a new DB instance. This is especially important for
+-- parameters that are critical when creating the default database for a DB
+-- instance, such as the character set for the default database defined by
+-- the 'character_set_database' parameter. You can use the /Parameter
+-- Groups/ option of the
+-- <https://console.aws.amazon.com/rds/ Amazon RDS console> or the
+-- /DescribeDBParameters/ command to verify that your DB parameter group
+-- has been created or modified.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html AWS API Reference> for CreateDBParameterGroup.
 module Network.AWS.RDS.CreateDBParameterGroup
     (
-    -- * Request
-      CreateDBParameterGroup
-    -- ** Request constructor
-    , createDBParameterGroup
-    -- ** Request lenses
-    , cdbpg1DBParameterGroupFamily
-    , cdbpg1DBParameterGroupName
-    , cdbpg1Description
-    , cdbpg1Tags
+    -- * Creating a Request
+      createDBParameterGroup
+    , CreateDBParameterGroup
+    -- * Request Lenses
+    , cdbpgTags
+    , cdbpgDBParameterGroupName
+    , cdbpgDBParameterGroupFamily
+    , cdbpgDescription
 
-    -- * Response
-    , CreateDBParameterGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createDBParameterGroupResponse
-    -- ** Response lenses
-    , cdbpgrDBParameterGroup
+    , CreateDBParameterGroupResponse
+    -- * Response Lenses
+    , cdpgrsDBParameterGroup
+    , cdpgrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data CreateDBParameterGroup = CreateDBParameterGroup
-    { _cdbpg1DBParameterGroupFamily :: Text
-    , _cdbpg1DBParameterGroupName   :: Text
-    , _cdbpg1Description            :: Text
-    , _cdbpg1Tags                   :: List "member" Tag
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreateDBParameterGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createDBParameterGroup' smart constructor.
+data CreateDBParameterGroup = CreateDBParameterGroup'
+    { _cdbpgTags                   :: !(Maybe [Tag])
+    , _cdbpgDBParameterGroupName   :: !Text
+    , _cdbpgDBParameterGroupFamily :: !Text
+    , _cdbpgDescription            :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDBParameterGroup' with the minimum fields required to make a request.
 --
--- * 'cdbpg1DBParameterGroupFamily' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cdbpg1DBParameterGroupName' @::@ 'Text'
+-- * 'cdbpgTags'
 --
--- * 'cdbpg1Description' @::@ 'Text'
+-- * 'cdbpgDBParameterGroupName'
 --
--- * 'cdbpg1Tags' @::@ ['Tag']
+-- * 'cdbpgDBParameterGroupFamily'
 --
-createDBParameterGroup :: Text -- ^ 'cdbpg1DBParameterGroupName'
-                       -> Text -- ^ 'cdbpg1DBParameterGroupFamily'
-                       -> Text -- ^ 'cdbpg1Description'
-                       -> CreateDBParameterGroup
-createDBParameterGroup p1 p2 p3 = CreateDBParameterGroup
-    { _cdbpg1DBParameterGroupName   = p1
-    , _cdbpg1DBParameterGroupFamily = p2
-    , _cdbpg1Description            = p3
-    , _cdbpg1Tags                   = mempty
+-- * 'cdbpgDescription'
+createDBParameterGroup
+    :: Text -- ^ 'cdbpgDBParameterGroupName'
+    -> Text -- ^ 'cdbpgDBParameterGroupFamily'
+    -> Text -- ^ 'cdbpgDescription'
+    -> CreateDBParameterGroup
+createDBParameterGroup pDBParameterGroupName_ pDBParameterGroupFamily_ pDescription_ =
+    CreateDBParameterGroup'
+    { _cdbpgTags = Nothing
+    , _cdbpgDBParameterGroupName = pDBParameterGroupName_
+    , _cdbpgDBParameterGroupFamily = pDBParameterGroupFamily_
+    , _cdbpgDescription = pDescription_
     }
 
--- | The DB parameter group family name. A DB parameter group can be associated
--- with one and only one DB parameter group family, and can be applied only to a
--- DB instance running a database engine and engine version compatible with that
--- DB parameter group family.
-cdbpg1DBParameterGroupFamily :: Lens' CreateDBParameterGroup Text
-cdbpg1DBParameterGroupFamily =
-    lens _cdbpg1DBParameterGroupFamily
-        (\s a -> s { _cdbpg1DBParameterGroupFamily = a })
+-- | Undocumented member.
+cdbpgTags :: Lens' CreateDBParameterGroup [Tag]
+cdbpgTags = lens _cdbpgTags (\ s a -> s{_cdbpgTags = a}) . _Default . _Coerce;
 
 -- | The name of the DB parameter group.
 --
 -- Constraints:
 --
--- Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
--- This value is stored as a lower-case string.
-cdbpg1DBParameterGroupName :: Lens' CreateDBParameterGroup Text
-cdbpg1DBParameterGroupName =
-    lens _cdbpg1DBParameterGroupName
-        (\s a -> s { _cdbpg1DBParameterGroupName = a })
-
--- | The description for the DB parameter group.
-cdbpg1Description :: Lens' CreateDBParameterGroup Text
-cdbpg1Description =
-    lens _cdbpg1Description (\s a -> s { _cdbpg1Description = a })
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+--
+-- This value is stored as a lowercase string.
+cdbpgDBParameterGroupName :: Lens' CreateDBParameterGroup Text
+cdbpgDBParameterGroupName = lens _cdbpgDBParameterGroupName (\ s a -> s{_cdbpgDBParameterGroupName = a});
 
-cdbpg1Tags :: Lens' CreateDBParameterGroup [Tag]
-cdbpg1Tags = lens _cdbpg1Tags (\s a -> s { _cdbpg1Tags = a }) . _List
+-- | The DB parameter group family name. A DB parameter group can be
+-- associated with one and only one DB parameter group family, and can be
+-- applied only to a DB instance running a database engine and engine
+-- version compatible with that DB parameter group family.
+cdbpgDBParameterGroupFamily :: Lens' CreateDBParameterGroup Text
+cdbpgDBParameterGroupFamily = lens _cdbpgDBParameterGroupFamily (\ s a -> s{_cdbpgDBParameterGroupFamily = a});
 
-newtype CreateDBParameterGroupResponse = CreateDBParameterGroupResponse
-    { _cdbpgrDBParameterGroup :: Maybe DBParameterGroup
-    } deriving (Eq, Read, Show)
+-- | The description for the DB parameter group.
+cdbpgDescription :: Lens' CreateDBParameterGroup Text
+cdbpgDescription = lens _cdbpgDescription (\ s a -> s{_cdbpgDescription = a});
 
--- | 'CreateDBParameterGroupResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cdbpgrDBParameterGroup' @::@ 'Maybe' 'DBParameterGroup'
---
-createDBParameterGroupResponse :: CreateDBParameterGroupResponse
-createDBParameterGroupResponse = CreateDBParameterGroupResponse
-    { _cdbpgrDBParameterGroup = Nothing
-    }
+instance AWSRequest CreateDBParameterGroup where
+        type Sv CreateDBParameterGroup = RDS
+        type Rs CreateDBParameterGroup =
+             CreateDBParameterGroupResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CreateDBParameterGroupResult"
+              (\ s h x ->
+                 CreateDBParameterGroupResponse' <$>
+                   (x .@? "DBParameterGroup") <*> (pure (fromEnum s)))
 
-cdbpgrDBParameterGroup :: Lens' CreateDBParameterGroupResponse (Maybe DBParameterGroup)
-cdbpgrDBParameterGroup =
-    lens _cdbpgrDBParameterGroup (\s a -> s { _cdbpgrDBParameterGroup = a })
+instance ToHeaders CreateDBParameterGroup where
+        toHeaders = const mempty
 
 instance ToPath CreateDBParameterGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateDBParameterGroup where
-    toQuery CreateDBParameterGroup{..} = mconcat
-        [ "DBParameterGroupFamily" =? _cdbpg1DBParameterGroupFamily
-        , "DBParameterGroupName"   =? _cdbpg1DBParameterGroupName
-        , "Description"            =? _cdbpg1Description
-        , "Tags"                   =? _cdbpg1Tags
-        ]
+        toQuery CreateDBParameterGroup'{..}
+          = mconcat
+              ["Action" =:
+                 ("CreateDBParameterGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cdbpgTags),
+               "DBParameterGroupName" =: _cdbpgDBParameterGroupName,
+               "DBParameterGroupFamily" =:
+                 _cdbpgDBParameterGroupFamily,
+               "Description" =: _cdbpgDescription]
 
-instance ToHeaders CreateDBParameterGroup
+-- | /See:/ 'createDBParameterGroupResponse' smart constructor.
+data CreateDBParameterGroupResponse = CreateDBParameterGroupResponse'
+    { _cdpgrsDBParameterGroup :: !(Maybe DBParameterGroup)
+    , _cdpgrsStatus           :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateDBParameterGroup where
-    type Sv CreateDBParameterGroup = RDS
-    type Rs CreateDBParameterGroup = CreateDBParameterGroupResponse
+-- | Creates a value of 'CreateDBParameterGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdpgrsDBParameterGroup'
+--
+-- * 'cdpgrsStatus'
+createDBParameterGroupResponse
+    :: Int -- ^ 'cdpgrsStatus'
+    -> CreateDBParameterGroupResponse
+createDBParameterGroupResponse pStatus_ =
+    CreateDBParameterGroupResponse'
+    { _cdpgrsDBParameterGroup = Nothing
+    , _cdpgrsStatus = pStatus_
+    }
 
-    request  = post "CreateDBParameterGroup"
-    response = xmlResponse
+-- | Undocumented member.
+cdpgrsDBParameterGroup :: Lens' CreateDBParameterGroupResponse (Maybe DBParameterGroup)
+cdpgrsDBParameterGroup = lens _cdpgrsDBParameterGroup (\ s a -> s{_cdpgrsDBParameterGroup = a});
 
-instance FromXML CreateDBParameterGroupResponse where
-    parseXML = withElement "CreateDBParameterGroupResult" $ \x -> CreateDBParameterGroupResponse
-        <$> x .@? "DBParameterGroup"
+-- | The response status code.
+cdpgrsStatus :: Lens' CreateDBParameterGroupResponse Int
+cdpgrsStatus = lens _cdpgrsStatus (\ s a -> s{_cdpgrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CreateDBSecurityGroup.hs b/gen/Network/AWS/RDS/CreateDBSecurityGroup.hs
--- a/gen/Network/AWS/RDS/CreateDBSecurityGroup.hs
+++ b/gen/Network/AWS/RDS/CreateDBSecurityGroup.hs
@@ -1,139 +1,156 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.CreateDBSecurityGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a new DB security group. DB security groups control access to a DB
--- instance.
+-- Creates a new DB security group. DB security groups control access to a
+-- DB instance.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBSecurityGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBSecurityGroup.html AWS API Reference> for CreateDBSecurityGroup.
 module Network.AWS.RDS.CreateDBSecurityGroup
     (
-    -- * Request
-      CreateDBSecurityGroup
-    -- ** Request constructor
-    , createDBSecurityGroup
-    -- ** Request lenses
-    , cdbsgDBSecurityGroupDescription
-    , cdbsgDBSecurityGroupName
-    , cdbsgTags
+    -- * Creating a Request
+      createDBSecurityGroup
+    , CreateDBSecurityGroup
+    -- * Request Lenses
+    , cdsgTags
+    , cdsgDBSecurityGroupName
+    , cdsgDBSecurityGroupDescription
 
-    -- * Response
-    , CreateDBSecurityGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createDBSecurityGroupResponse
-    -- ** Response lenses
-    , cdbsgrDBSecurityGroup
+    , CreateDBSecurityGroupResponse
+    -- * Response Lenses
+    , cdbsgrsDBSecurityGroup
+    , cdbsgrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data CreateDBSecurityGroup = CreateDBSecurityGroup
-    { _cdbsgDBSecurityGroupDescription :: Text
-    , _cdbsgDBSecurityGroupName        :: Text
-    , _cdbsgTags                       :: List "member" Tag
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreateDBSecurityGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createDBSecurityGroup' smart constructor.
+data CreateDBSecurityGroup = CreateDBSecurityGroup'
+    { _cdsgTags                       :: !(Maybe [Tag])
+    , _cdsgDBSecurityGroupName        :: !Text
+    , _cdsgDBSecurityGroupDescription :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDBSecurityGroup' with the minimum fields required to make a request.
 --
--- * 'cdbsgDBSecurityGroupDescription' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cdbsgDBSecurityGroupName' @::@ 'Text'
+-- * 'cdsgTags'
 --
--- * 'cdbsgTags' @::@ ['Tag']
+-- * 'cdsgDBSecurityGroupName'
 --
-createDBSecurityGroup :: Text -- ^ 'cdbsgDBSecurityGroupName'
-                      -> Text -- ^ 'cdbsgDBSecurityGroupDescription'
-                      -> CreateDBSecurityGroup
-createDBSecurityGroup p1 p2 = CreateDBSecurityGroup
-    { _cdbsgDBSecurityGroupName        = p1
-    , _cdbsgDBSecurityGroupDescription = p2
-    , _cdbsgTags                       = mempty
+-- * 'cdsgDBSecurityGroupDescription'
+createDBSecurityGroup
+    :: Text -- ^ 'cdsgDBSecurityGroupName'
+    -> Text -- ^ 'cdsgDBSecurityGroupDescription'
+    -> CreateDBSecurityGroup
+createDBSecurityGroup pDBSecurityGroupName_ pDBSecurityGroupDescription_ =
+    CreateDBSecurityGroup'
+    { _cdsgTags = Nothing
+    , _cdsgDBSecurityGroupName = pDBSecurityGroupName_
+    , _cdsgDBSecurityGroupDescription = pDBSecurityGroupDescription_
     }
 
--- | The description for the DB security group.
-cdbsgDBSecurityGroupDescription :: Lens' CreateDBSecurityGroup Text
-cdbsgDBSecurityGroupDescription =
-    lens _cdbsgDBSecurityGroupDescription
-        (\s a -> s { _cdbsgDBSecurityGroupDescription = a })
+-- | Undocumented member.
+cdsgTags :: Lens' CreateDBSecurityGroup [Tag]
+cdsgTags = lens _cdsgTags (\ s a -> s{_cdsgTags = a}) . _Default . _Coerce;
 
 -- | The name for the DB security group. This value is stored as a lowercase
 -- string.
 --
 -- Constraints:
 --
--- Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
--- Must not be "Default" May not contain spaces  Example: 'mysecuritygroup'
-cdbsgDBSecurityGroupName :: Lens' CreateDBSecurityGroup Text
-cdbsgDBSecurityGroupName =
-    lens _cdbsgDBSecurityGroupName
-        (\s a -> s { _cdbsgDBSecurityGroupName = a })
-
-cdbsgTags :: Lens' CreateDBSecurityGroup [Tag]
-cdbsgTags = lens _cdbsgTags (\s a -> s { _cdbsgTags = a }) . _List
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+-- -   Must not be \"Default\"
+-- -   Cannot contain spaces
+--
+-- Example: 'mysecuritygroup'
+cdsgDBSecurityGroupName :: Lens' CreateDBSecurityGroup Text
+cdsgDBSecurityGroupName = lens _cdsgDBSecurityGroupName (\ s a -> s{_cdsgDBSecurityGroupName = a});
 
-newtype CreateDBSecurityGroupResponse = CreateDBSecurityGroupResponse
-    { _cdbsgrDBSecurityGroup :: Maybe DBSecurityGroup
-    } deriving (Eq, Read, Show)
+-- | The description for the DB security group.
+cdsgDBSecurityGroupDescription :: Lens' CreateDBSecurityGroup Text
+cdsgDBSecurityGroupDescription = lens _cdsgDBSecurityGroupDescription (\ s a -> s{_cdsgDBSecurityGroupDescription = a});
 
--- | 'CreateDBSecurityGroupResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cdbsgrDBSecurityGroup' @::@ 'Maybe' 'DBSecurityGroup'
---
-createDBSecurityGroupResponse :: CreateDBSecurityGroupResponse
-createDBSecurityGroupResponse = CreateDBSecurityGroupResponse
-    { _cdbsgrDBSecurityGroup = Nothing
-    }
+instance AWSRequest CreateDBSecurityGroup where
+        type Sv CreateDBSecurityGroup = RDS
+        type Rs CreateDBSecurityGroup =
+             CreateDBSecurityGroupResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CreateDBSecurityGroupResult"
+              (\ s h x ->
+                 CreateDBSecurityGroupResponse' <$>
+                   (x .@? "DBSecurityGroup") <*> (pure (fromEnum s)))
 
-cdbsgrDBSecurityGroup :: Lens' CreateDBSecurityGroupResponse (Maybe DBSecurityGroup)
-cdbsgrDBSecurityGroup =
-    lens _cdbsgrDBSecurityGroup (\s a -> s { _cdbsgrDBSecurityGroup = a })
+instance ToHeaders CreateDBSecurityGroup where
+        toHeaders = const mempty
 
 instance ToPath CreateDBSecurityGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateDBSecurityGroup where
-    toQuery CreateDBSecurityGroup{..} = mconcat
-        [ "DBSecurityGroupDescription" =? _cdbsgDBSecurityGroupDescription
-        , "DBSecurityGroupName"        =? _cdbsgDBSecurityGroupName
-        , "Tags"                       =? _cdbsgTags
-        ]
+        toQuery CreateDBSecurityGroup'{..}
+          = mconcat
+              ["Action" =: ("CreateDBSecurityGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cdsgTags),
+               "DBSecurityGroupName" =: _cdsgDBSecurityGroupName,
+               "DBSecurityGroupDescription" =:
+                 _cdsgDBSecurityGroupDescription]
 
-instance ToHeaders CreateDBSecurityGroup
+-- | /See:/ 'createDBSecurityGroupResponse' smart constructor.
+data CreateDBSecurityGroupResponse = CreateDBSecurityGroupResponse'
+    { _cdbsgrsDBSecurityGroup :: !(Maybe DBSecurityGroup)
+    , _cdbsgrsStatus          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateDBSecurityGroup where
-    type Sv CreateDBSecurityGroup = RDS
-    type Rs CreateDBSecurityGroup = CreateDBSecurityGroupResponse
+-- | Creates a value of 'CreateDBSecurityGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdbsgrsDBSecurityGroup'
+--
+-- * 'cdbsgrsStatus'
+createDBSecurityGroupResponse
+    :: Int -- ^ 'cdbsgrsStatus'
+    -> CreateDBSecurityGroupResponse
+createDBSecurityGroupResponse pStatus_ =
+    CreateDBSecurityGroupResponse'
+    { _cdbsgrsDBSecurityGroup = Nothing
+    , _cdbsgrsStatus = pStatus_
+    }
 
-    request  = post "CreateDBSecurityGroup"
-    response = xmlResponse
+-- | Undocumented member.
+cdbsgrsDBSecurityGroup :: Lens' CreateDBSecurityGroupResponse (Maybe DBSecurityGroup)
+cdbsgrsDBSecurityGroup = lens _cdbsgrsDBSecurityGroup (\ s a -> s{_cdbsgrsDBSecurityGroup = a});
 
-instance FromXML CreateDBSecurityGroupResponse where
-    parseXML = withElement "CreateDBSecurityGroupResult" $ \x -> CreateDBSecurityGroupResponse
-        <$> x .@? "DBSecurityGroup"
+-- | The response status code.
+cdbsgrsStatus :: Lens' CreateDBSecurityGroupResponse Int
+cdbsgrsStatus = lens _cdbsgrsStatus (\ s a -> s{_cdbsgrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CreateDBSnapshot.hs b/gen/Network/AWS/RDS/CreateDBSnapshot.hs
--- a/gen/Network/AWS/RDS/CreateDBSnapshot.hs
+++ b/gen/Network/AWS/RDS/CreateDBSnapshot.hs
@@ -1,144 +1,159 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.CreateDBSnapshot
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a DBSnapshot. The source DBInstance must be in "available" state.
+-- Creates a DBSnapshot. The source DBInstance must be in \"available\"
+-- state.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBSnapshot.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBSnapshot.html AWS API Reference> for CreateDBSnapshot.
 module Network.AWS.RDS.CreateDBSnapshot
     (
-    -- * Request
-      CreateDBSnapshot
-    -- ** Request constructor
-    , createDBSnapshot
-    -- ** Request lenses
-    , cdbs1DBInstanceIdentifier
-    , cdbs1DBSnapshotIdentifier
-    , cdbs1Tags
+    -- * Creating a Request
+      createDBSnapshot
+    , CreateDBSnapshot
+    -- * Request Lenses
+    , cdbsTags
+    , cdbsDBSnapshotIdentifier
+    , cdbsDBInstanceIdentifier
 
-    -- * Response
-    , CreateDBSnapshotResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createDBSnapshotResponse
-    -- ** Response lenses
-    , cdbsr1DBSnapshot
+    , CreateDBSnapshotResponse
+    -- * Response Lenses
+    , cdbsrsDBSnapshot
+    , cdbsrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data CreateDBSnapshot = CreateDBSnapshot
-    { _cdbs1DBInstanceIdentifier :: Text
-    , _cdbs1DBSnapshotIdentifier :: Text
-    , _cdbs1Tags                 :: List "member" Tag
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreateDBSnapshot' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createDBSnapshot' smart constructor.
+data CreateDBSnapshot = CreateDBSnapshot'
+    { _cdbsTags                 :: !(Maybe [Tag])
+    , _cdbsDBSnapshotIdentifier :: !Text
+    , _cdbsDBInstanceIdentifier :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDBSnapshot' with the minimum fields required to make a request.
 --
--- * 'cdbs1DBInstanceIdentifier' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cdbs1DBSnapshotIdentifier' @::@ 'Text'
+-- * 'cdbsTags'
 --
--- * 'cdbs1Tags' @::@ ['Tag']
+-- * 'cdbsDBSnapshotIdentifier'
 --
-createDBSnapshot :: Text -- ^ 'cdbs1DBSnapshotIdentifier'
-                 -> Text -- ^ 'cdbs1DBInstanceIdentifier'
-                 -> CreateDBSnapshot
-createDBSnapshot p1 p2 = CreateDBSnapshot
-    { _cdbs1DBSnapshotIdentifier = p1
-    , _cdbs1DBInstanceIdentifier = p2
-    , _cdbs1Tags                 = mempty
+-- * 'cdbsDBInstanceIdentifier'
+createDBSnapshot
+    :: Text -- ^ 'cdbsDBSnapshotIdentifier'
+    -> Text -- ^ 'cdbsDBInstanceIdentifier'
+    -> CreateDBSnapshot
+createDBSnapshot pDBSnapshotIdentifier_ pDBInstanceIdentifier_ =
+    CreateDBSnapshot'
+    { _cdbsTags = Nothing
+    , _cdbsDBSnapshotIdentifier = pDBSnapshotIdentifier_
+    , _cdbsDBInstanceIdentifier = pDBInstanceIdentifier_
     }
 
--- | The DB instance identifier. This is the unique key that identifies a DB
--- instance.
---
--- Constraints:
---
--- Must contain from 1 to 63 alphanumeric characters or hyphens First
--- character must be a letter Cannot end with a hyphen or contain two
--- consecutive hyphens
-cdbs1DBInstanceIdentifier :: Lens' CreateDBSnapshot Text
-cdbs1DBInstanceIdentifier =
-    lens _cdbs1DBInstanceIdentifier
-        (\s a -> s { _cdbs1DBInstanceIdentifier = a })
+-- | Undocumented member.
+cdbsTags :: Lens' CreateDBSnapshot [Tag]
+cdbsTags = lens _cdbsTags (\ s a -> s{_cdbsTags = a}) . _Default . _Coerce;
 
 -- | The identifier for the DB snapshot.
 --
 -- Constraints:
 --
--- Cannot be null, empty, or blank Must contain from 1 to 255 alphanumeric
--- characters or hyphens First character must be a letter Cannot end with a
--- hyphen or contain two consecutive hyphens  Example: 'my-snapshot-id'
-cdbs1DBSnapshotIdentifier :: Lens' CreateDBSnapshot Text
-cdbs1DBSnapshotIdentifier =
-    lens _cdbs1DBSnapshotIdentifier
-        (\s a -> s { _cdbs1DBSnapshotIdentifier = a })
-
-cdbs1Tags :: Lens' CreateDBSnapshot [Tag]
-cdbs1Tags = lens _cdbs1Tags (\s a -> s { _cdbs1Tags = a }) . _List
-
-newtype CreateDBSnapshotResponse = CreateDBSnapshotResponse
-    { _cdbsr1DBSnapshot :: Maybe DBSnapshot
-    } deriving (Eq, Read, Show)
-
--- | 'CreateDBSnapshotResponse' constructor.
+-- -   Cannot be null, empty, or blank
+-- -   Must contain from 1 to 255 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
 --
--- The fields accessible through corresponding lenses are:
+-- Example: 'my-snapshot-id'
+cdbsDBSnapshotIdentifier :: Lens' CreateDBSnapshot Text
+cdbsDBSnapshotIdentifier = lens _cdbsDBSnapshotIdentifier (\ s a -> s{_cdbsDBSnapshotIdentifier = a});
+
+-- | The DB instance identifier. This is the unique key that identifies a DB
+-- instance.
 --
--- * 'cdbsr1DBSnapshot' @::@ 'Maybe' 'DBSnapshot'
+-- Constraints:
 --
-createDBSnapshotResponse :: CreateDBSnapshotResponse
-createDBSnapshotResponse = CreateDBSnapshotResponse
-    { _cdbsr1DBSnapshot = Nothing
-    }
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+cdbsDBInstanceIdentifier :: Lens' CreateDBSnapshot Text
+cdbsDBInstanceIdentifier = lens _cdbsDBInstanceIdentifier (\ s a -> s{_cdbsDBInstanceIdentifier = a});
 
-cdbsr1DBSnapshot :: Lens' CreateDBSnapshotResponse (Maybe DBSnapshot)
-cdbsr1DBSnapshot = lens _cdbsr1DBSnapshot (\s a -> s { _cdbsr1DBSnapshot = a })
+instance AWSRequest CreateDBSnapshot where
+        type Sv CreateDBSnapshot = RDS
+        type Rs CreateDBSnapshot = CreateDBSnapshotResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CreateDBSnapshotResult"
+              (\ s h x ->
+                 CreateDBSnapshotResponse' <$>
+                   (x .@? "DBSnapshot") <*> (pure (fromEnum s)))
 
+instance ToHeaders CreateDBSnapshot where
+        toHeaders = const mempty
+
 instance ToPath CreateDBSnapshot where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateDBSnapshot where
-    toQuery CreateDBSnapshot{..} = mconcat
-        [ "DBInstanceIdentifier" =? _cdbs1DBInstanceIdentifier
-        , "DBSnapshotIdentifier" =? _cdbs1DBSnapshotIdentifier
-        , "Tags"                 =? _cdbs1Tags
-        ]
+        toQuery CreateDBSnapshot'{..}
+          = mconcat
+              ["Action" =: ("CreateDBSnapshot" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cdbsTags),
+               "DBSnapshotIdentifier" =: _cdbsDBSnapshotIdentifier,
+               "DBInstanceIdentifier" =: _cdbsDBInstanceIdentifier]
 
-instance ToHeaders CreateDBSnapshot
+-- | /See:/ 'createDBSnapshotResponse' smart constructor.
+data CreateDBSnapshotResponse = CreateDBSnapshotResponse'
+    { _cdbsrsDBSnapshot :: !(Maybe DBSnapshot)
+    , _cdbsrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateDBSnapshot where
-    type Sv CreateDBSnapshot = RDS
-    type Rs CreateDBSnapshot = CreateDBSnapshotResponse
+-- | Creates a value of 'CreateDBSnapshotResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdbsrsDBSnapshot'
+--
+-- * 'cdbsrsStatus'
+createDBSnapshotResponse
+    :: Int -- ^ 'cdbsrsStatus'
+    -> CreateDBSnapshotResponse
+createDBSnapshotResponse pStatus_ =
+    CreateDBSnapshotResponse'
+    { _cdbsrsDBSnapshot = Nothing
+    , _cdbsrsStatus = pStatus_
+    }
 
-    request  = post "CreateDBSnapshot"
-    response = xmlResponse
+-- | Undocumented member.
+cdbsrsDBSnapshot :: Lens' CreateDBSnapshotResponse (Maybe DBSnapshot)
+cdbsrsDBSnapshot = lens _cdbsrsDBSnapshot (\ s a -> s{_cdbsrsDBSnapshot = a});
 
-instance FromXML CreateDBSnapshotResponse where
-    parseXML = withElement "CreateDBSnapshotResult" $ \x -> CreateDBSnapshotResponse
-        <$> x .@? "DBSnapshot"
+-- | The response status code.
+cdbsrsStatus :: Lens' CreateDBSnapshotResponse Int
+cdbsrsStatus = lens _cdbsrsStatus (\ s a -> s{_cdbsrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CreateDBSubnetGroup.hs b/gen/Network/AWS/RDS/CreateDBSubnetGroup.hs
--- a/gen/Network/AWS/RDS/CreateDBSubnetGroup.hs
+++ b/gen/Network/AWS/RDS/CreateDBSubnetGroup.hs
@@ -1,148 +1,162 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.CreateDBSubnetGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a new DB subnet group. DB subnet groups must contain at least one
--- subnet in at least two AZs in the region.
+-- Creates a new DB subnet group. DB subnet groups must contain at least
+-- one subnet in at least two AZs in the region.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBSubnetGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBSubnetGroup.html AWS API Reference> for CreateDBSubnetGroup.
 module Network.AWS.RDS.CreateDBSubnetGroup
     (
-    -- * Request
-      CreateDBSubnetGroup
-    -- ** Request constructor
-    , createDBSubnetGroup
-    -- ** Request lenses
-    , cdbsg1DBSubnetGroupDescription
-    , cdbsg1DBSubnetGroupName
-    , cdbsg1SubnetIds
-    , cdbsg1Tags
+    -- * Creating a Request
+      createDBSubnetGroup
+    , CreateDBSubnetGroup
+    -- * Request Lenses
+    , cdbsgTags
+    , cdbsgDBSubnetGroupName
+    , cdbsgDBSubnetGroupDescription
+    , cdbsgSubnetIds
 
-    -- * Response
-    , CreateDBSubnetGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createDBSubnetGroupResponse
-    -- ** Response lenses
-    , cdbsgrDBSubnetGroup
+    , CreateDBSubnetGroupResponse
+    -- * Response Lenses
+    , cdsgrsDBSubnetGroup
+    , cdsgrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data CreateDBSubnetGroup = CreateDBSubnetGroup
-    { _cdbsg1DBSubnetGroupDescription :: Text
-    , _cdbsg1DBSubnetGroupName        :: Text
-    , _cdbsg1SubnetIds                :: List "member" Text
-    , _cdbsg1Tags                     :: List "member" Tag
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreateDBSubnetGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createDBSubnetGroup' smart constructor.
+data CreateDBSubnetGroup = CreateDBSubnetGroup'
+    { _cdbsgTags                     :: !(Maybe [Tag])
+    , _cdbsgDBSubnetGroupName        :: !Text
+    , _cdbsgDBSubnetGroupDescription :: !Text
+    , _cdbsgSubnetIds                :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDBSubnetGroup' with the minimum fields required to make a request.
 --
--- * 'cdbsg1DBSubnetGroupDescription' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cdbsg1DBSubnetGroupName' @::@ 'Text'
+-- * 'cdbsgTags'
 --
--- * 'cdbsg1SubnetIds' @::@ ['Text']
+-- * 'cdbsgDBSubnetGroupName'
 --
--- * 'cdbsg1Tags' @::@ ['Tag']
+-- * 'cdbsgDBSubnetGroupDescription'
 --
-createDBSubnetGroup :: Text -- ^ 'cdbsg1DBSubnetGroupName'
-                    -> Text -- ^ 'cdbsg1DBSubnetGroupDescription'
-                    -> CreateDBSubnetGroup
-createDBSubnetGroup p1 p2 = CreateDBSubnetGroup
-    { _cdbsg1DBSubnetGroupName        = p1
-    , _cdbsg1DBSubnetGroupDescription = p2
-    , _cdbsg1SubnetIds                = mempty
-    , _cdbsg1Tags                     = mempty
+-- * 'cdbsgSubnetIds'
+createDBSubnetGroup
+    :: Text -- ^ 'cdbsgDBSubnetGroupName'
+    -> Text -- ^ 'cdbsgDBSubnetGroupDescription'
+    -> CreateDBSubnetGroup
+createDBSubnetGroup pDBSubnetGroupName_ pDBSubnetGroupDescription_ =
+    CreateDBSubnetGroup'
+    { _cdbsgTags = Nothing
+    , _cdbsgDBSubnetGroupName = pDBSubnetGroupName_
+    , _cdbsgDBSubnetGroupDescription = pDBSubnetGroupDescription_
+    , _cdbsgSubnetIds = mempty
     }
 
--- | The description for the DB subnet group.
-cdbsg1DBSubnetGroupDescription :: Lens' CreateDBSubnetGroup Text
-cdbsg1DBSubnetGroupDescription =
-    lens _cdbsg1DBSubnetGroupDescription
-        (\s a -> s { _cdbsg1DBSubnetGroupDescription = a })
+-- | Undocumented member.
+cdbsgTags :: Lens' CreateDBSubnetGroup [Tag]
+cdbsgTags = lens _cdbsgTags (\ s a -> s{_cdbsgTags = a}) . _Default . _Coerce;
 
 -- | The name for the DB subnet group. This value is stored as a lowercase
 -- string.
 --
 -- Constraints: Must contain no more than 255 alphanumeric characters or
--- hyphens. Must not be "Default".
+-- hyphens. Must not be \"Default\".
 --
 -- Example: 'mySubnetgroup'
-cdbsg1DBSubnetGroupName :: Lens' CreateDBSubnetGroup Text
-cdbsg1DBSubnetGroupName =
-    lens _cdbsg1DBSubnetGroupName (\s a -> s { _cdbsg1DBSubnetGroupName = a })
-
--- | The EC2 Subnet IDs for the DB subnet group.
-cdbsg1SubnetIds :: Lens' CreateDBSubnetGroup [Text]
-cdbsg1SubnetIds = lens _cdbsg1SubnetIds (\s a -> s { _cdbsg1SubnetIds = a }) . _List
+cdbsgDBSubnetGroupName :: Lens' CreateDBSubnetGroup Text
+cdbsgDBSubnetGroupName = lens _cdbsgDBSubnetGroupName (\ s a -> s{_cdbsgDBSubnetGroupName = a});
 
-cdbsg1Tags :: Lens' CreateDBSubnetGroup [Tag]
-cdbsg1Tags = lens _cdbsg1Tags (\s a -> s { _cdbsg1Tags = a }) . _List
+-- | The description for the DB subnet group.
+cdbsgDBSubnetGroupDescription :: Lens' CreateDBSubnetGroup Text
+cdbsgDBSubnetGroupDescription = lens _cdbsgDBSubnetGroupDescription (\ s a -> s{_cdbsgDBSubnetGroupDescription = a});
 
-newtype CreateDBSubnetGroupResponse = CreateDBSubnetGroupResponse
-    { _cdbsgrDBSubnetGroup :: Maybe DBSubnetGroup
-    } deriving (Eq, Read, Show)
+-- | The EC2 Subnet IDs for the DB subnet group.
+cdbsgSubnetIds :: Lens' CreateDBSubnetGroup [Text]
+cdbsgSubnetIds = lens _cdbsgSubnetIds (\ s a -> s{_cdbsgSubnetIds = a}) . _Coerce;
 
--- | 'CreateDBSubnetGroupResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cdbsgrDBSubnetGroup' @::@ 'Maybe' 'DBSubnetGroup'
---
-createDBSubnetGroupResponse :: CreateDBSubnetGroupResponse
-createDBSubnetGroupResponse = CreateDBSubnetGroupResponse
-    { _cdbsgrDBSubnetGroup = Nothing
-    }
+instance AWSRequest CreateDBSubnetGroup where
+        type Sv CreateDBSubnetGroup = RDS
+        type Rs CreateDBSubnetGroup =
+             CreateDBSubnetGroupResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CreateDBSubnetGroupResult"
+              (\ s h x ->
+                 CreateDBSubnetGroupResponse' <$>
+                   (x .@? "DBSubnetGroup") <*> (pure (fromEnum s)))
 
-cdbsgrDBSubnetGroup :: Lens' CreateDBSubnetGroupResponse (Maybe DBSubnetGroup)
-cdbsgrDBSubnetGroup =
-    lens _cdbsgrDBSubnetGroup (\s a -> s { _cdbsgrDBSubnetGroup = a })
+instance ToHeaders CreateDBSubnetGroup where
+        toHeaders = const mempty
 
 instance ToPath CreateDBSubnetGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateDBSubnetGroup where
-    toQuery CreateDBSubnetGroup{..} = mconcat
-        [ "DBSubnetGroupDescription" =? _cdbsg1DBSubnetGroupDescription
-        , "DBSubnetGroupName"        =? _cdbsg1DBSubnetGroupName
-        , "SubnetIds"                =? _cdbsg1SubnetIds
-        , "Tags"                     =? _cdbsg1Tags
-        ]
+        toQuery CreateDBSubnetGroup'{..}
+          = mconcat
+              ["Action" =: ("CreateDBSubnetGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cdbsgTags),
+               "DBSubnetGroupName" =: _cdbsgDBSubnetGroupName,
+               "DBSubnetGroupDescription" =:
+                 _cdbsgDBSubnetGroupDescription,
+               "SubnetIds" =:
+                 toQueryList "SubnetIdentifier" _cdbsgSubnetIds]
 
-instance ToHeaders CreateDBSubnetGroup
+-- | /See:/ 'createDBSubnetGroupResponse' smart constructor.
+data CreateDBSubnetGroupResponse = CreateDBSubnetGroupResponse'
+    { _cdsgrsDBSubnetGroup :: !(Maybe DBSubnetGroup)
+    , _cdsgrsStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateDBSubnetGroup where
-    type Sv CreateDBSubnetGroup = RDS
-    type Rs CreateDBSubnetGroup = CreateDBSubnetGroupResponse
+-- | Creates a value of 'CreateDBSubnetGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdsgrsDBSubnetGroup'
+--
+-- * 'cdsgrsStatus'
+createDBSubnetGroupResponse
+    :: Int -- ^ 'cdsgrsStatus'
+    -> CreateDBSubnetGroupResponse
+createDBSubnetGroupResponse pStatus_ =
+    CreateDBSubnetGroupResponse'
+    { _cdsgrsDBSubnetGroup = Nothing
+    , _cdsgrsStatus = pStatus_
+    }
 
-    request  = post "CreateDBSubnetGroup"
-    response = xmlResponse
+-- | Undocumented member.
+cdsgrsDBSubnetGroup :: Lens' CreateDBSubnetGroupResponse (Maybe DBSubnetGroup)
+cdsgrsDBSubnetGroup = lens _cdsgrsDBSubnetGroup (\ s a -> s{_cdsgrsDBSubnetGroup = a});
 
-instance FromXML CreateDBSubnetGroupResponse where
-    parseXML = withElement "CreateDBSubnetGroupResult" $ \x -> CreateDBSubnetGroupResponse
-        <$> x .@? "DBSubnetGroup"
+-- | The response status code.
+cdsgrsStatus :: Lens' CreateDBSubnetGroupResponse Int
+cdsgrsStatus = lens _cdsgrsStatus (\ s a -> s{_cdsgrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CreateEventSubscription.hs b/gen/Network/AWS/RDS/CreateEventSubscription.hs
--- a/gen/Network/AWS/RDS/CreateEventSubscription.hs
+++ b/gen/Network/AWS/RDS/CreateEventSubscription.hs
@@ -1,215 +1,239 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.CreateEventSubscription
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates an RDS event notification subscription. This action requires a topic
--- ARN (Amazon Resource Name) created by either the RDS console, the SNS
--- console, or the SNS API. To obtain an ARN with SNS, you must create a topic
--- in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS
--- console.
+-- Creates an RDS event notification subscription. This action requires a
+-- topic ARN (Amazon Resource Name) created by either the RDS console, the
+-- SNS console, or the SNS API. To obtain an ARN with SNS, you must create
+-- a topic in Amazon SNS and subscribe to the topic. The ARN is displayed
+-- in the SNS console.
 --
--- You can specify the type of source (SourceType) you want to be notified of,
--- provide a list of RDS sources (SourceIds) that triggers the events, and
--- provide a list of event categories (EventCategories) for events you want to
--- be notified of. For example, you can specify SourceType = db-instance,
--- SourceIds = mydbinstance1, mydbinstance2 and EventCategories = Availability,
--- Backup.
+-- You can specify the type of source (SourceType) you want to be notified
+-- of, provide a list of RDS sources (SourceIds) that triggers the events,
+-- and provide a list of event categories (EventCategories) for events you
+-- want to be notified of. For example, you can specify SourceType =
+-- db-instance, SourceIds = mydbinstance1, mydbinstance2 and
+-- EventCategories = Availability, Backup.
 --
 -- If you specify both the SourceType and SourceIds, such as SourceType =
--- db-instance and SourceIdentifier = myDBInstance1, you will be notified of all
--- the db-instance events for the specified source. If you specify a SourceType
--- but do not specify a SourceIdentifier, you will receive notice of the events
--- for that source type for all your RDS sources. If you do not specify either
--- the SourceType nor the SourceIdentifier, you will be notified of events
--- generated from all RDS sources belonging to your customer account.
+-- db-instance and SourceIdentifier = myDBInstance1, you will be notified
+-- of all the db-instance events for the specified source. If you specify a
+-- SourceType but do not specify a SourceIdentifier, you will receive
+-- notice of the events for that source type for all your RDS sources. If
+-- you do not specify either the SourceType nor the SourceIdentifier, you
+-- will be notified of events generated from all RDS sources belonging to
+-- your customer account.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateEventSubscription.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateEventSubscription.html AWS API Reference> for CreateEventSubscription.
 module Network.AWS.RDS.CreateEventSubscription
     (
-    -- * Request
-      CreateEventSubscription
-    -- ** Request constructor
-    , createEventSubscription
-    -- ** Request lenses
+    -- * Creating a Request
+      createEventSubscription
+    , CreateEventSubscription
+    -- * Request Lenses
     , cesEnabled
+    , cesSourceType
     , cesEventCategories
-    , cesSnsTopicArn
     , cesSourceIds
-    , cesSourceType
-    , cesSubscriptionName
     , cesTags
+    , cesSubscriptionName
+    , cesSNSTopicARN
 
-    -- * Response
-    , CreateEventSubscriptionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createEventSubscriptionResponse
-    -- ** Response lenses
-    , cesrEventSubscription
+    , CreateEventSubscriptionResponse
+    -- * Response Lenses
+    , cesrsEventSubscription
+    , cesrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data CreateEventSubscription = CreateEventSubscription
-    { _cesEnabled          :: Maybe Bool
-    , _cesEventCategories  :: List "member" Text
-    , _cesSnsTopicArn      :: Text
-    , _cesSourceIds        :: List "member" Text
-    , _cesSourceType       :: Maybe Text
-    , _cesSubscriptionName :: Text
-    , _cesTags             :: List "member" Tag
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreateEventSubscription' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createEventSubscription' smart constructor.
+data CreateEventSubscription = CreateEventSubscription'
+    { _cesEnabled          :: !(Maybe Bool)
+    , _cesSourceType       :: !(Maybe Text)
+    , _cesEventCategories  :: !(Maybe [Text])
+    , _cesSourceIds        :: !(Maybe [Text])
+    , _cesTags             :: !(Maybe [Tag])
+    , _cesSubscriptionName :: !Text
+    , _cesSNSTopicARN      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateEventSubscription' with the minimum fields required to make a request.
 --
--- * 'cesEnabled' @::@ 'Maybe' 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cesEventCategories' @::@ ['Text']
+-- * 'cesEnabled'
 --
--- * 'cesSnsTopicArn' @::@ 'Text'
+-- * 'cesSourceType'
 --
--- * 'cesSourceIds' @::@ ['Text']
+-- * 'cesEventCategories'
 --
--- * 'cesSourceType' @::@ 'Maybe' 'Text'
+-- * 'cesSourceIds'
 --
--- * 'cesSubscriptionName' @::@ 'Text'
+-- * 'cesTags'
 --
--- * 'cesTags' @::@ ['Tag']
+-- * 'cesSubscriptionName'
 --
-createEventSubscription :: Text -- ^ 'cesSubscriptionName'
-                        -> Text -- ^ 'cesSnsTopicArn'
-                        -> CreateEventSubscription
-createEventSubscription p1 p2 = CreateEventSubscription
-    { _cesSubscriptionName = p1
-    , _cesSnsTopicArn      = p2
-    , _cesSourceType       = Nothing
-    , _cesEventCategories  = mempty
-    , _cesSourceIds        = mempty
-    , _cesEnabled          = Nothing
-    , _cesTags             = mempty
+-- * 'cesSNSTopicARN'
+createEventSubscription
+    :: Text -- ^ 'cesSubscriptionName'
+    -> Text -- ^ 'cesSNSTopicARN'
+    -> CreateEventSubscription
+createEventSubscription pSubscriptionName_ pSNSTopicARN_ =
+    CreateEventSubscription'
+    { _cesEnabled = Nothing
+    , _cesSourceType = Nothing
+    , _cesEventCategories = Nothing
+    , _cesSourceIds = Nothing
+    , _cesTags = Nothing
+    , _cesSubscriptionName = pSubscriptionName_
+    , _cesSNSTopicARN = pSNSTopicARN_
     }
 
--- | A Boolean value; set to true to activate the subscription, set to false to
--- create the subscription but not active it.
+-- | A Boolean value; set to __true__ to activate the subscription, set to
+-- __false__ to create the subscription but not active it.
 cesEnabled :: Lens' CreateEventSubscription (Maybe Bool)
-cesEnabled = lens _cesEnabled (\s a -> s { _cesEnabled = a })
+cesEnabled = lens _cesEnabled (\ s a -> s{_cesEnabled = a});
 
--- | A list of event categories for a SourceType that you want to subscribe to.
--- You can see a list of the categories for a given SourceType in the <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html Events>
--- topic in the Amazon RDS User Guide or by using the DescribeEventCategories
--- action.
-cesEventCategories :: Lens' CreateEventSubscription [Text]
-cesEventCategories =
-    lens _cesEventCategories (\s a -> s { _cesEventCategories = a })
-        . _List
+-- | The type of source that will be generating the events. For example, if
+-- you want to be notified of events generated by a DB instance, you would
+-- set this parameter to db-instance. if this value is not specified, all
+-- events are returned.
+--
+-- Valid values: db-instance | db-parameter-group | db-security-group |
+-- db-snapshot
+cesSourceType :: Lens' CreateEventSubscription (Maybe Text)
+cesSourceType = lens _cesSourceType (\ s a -> s{_cesSourceType = a});
 
--- | The Amazon Resource Name (ARN) of the SNS topic created for event
--- notification. The ARN is created by Amazon SNS when you create a topic and
--- subscribe to it.
-cesSnsTopicArn :: Lens' CreateEventSubscription Text
-cesSnsTopicArn = lens _cesSnsTopicArn (\s a -> s { _cesSnsTopicArn = a })
+-- | A list of event categories for a SourceType that you want to subscribe
+-- to. You can see a list of the categories for a given SourceType in the
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html Events>
+-- topic in the Amazon RDS User Guide or by using the
+-- __DescribeEventCategories__ action.
+cesEventCategories :: Lens' CreateEventSubscription [Text]
+cesEventCategories = lens _cesEventCategories (\ s a -> s{_cesEventCategories = a}) . _Default . _Coerce;
 
 -- | The list of identifiers of the event sources for which events will be
--- returned. If not specified, then all sources are included in the response. An
--- identifier must begin with a letter and must contain only ASCII letters,
--- digits, and hyphens; it cannot end with a hyphen or contain two consecutive
--- hyphens.
+-- returned. If not specified, then all sources are included in the
+-- response. An identifier must begin with a letter and must contain only
+-- ASCII letters, digits, and hyphens; it cannot end with a hyphen or
+-- contain two consecutive hyphens.
 --
 -- Constraints:
 --
--- If SourceIds are supplied, SourceType must also be provided. If the source
--- type is a DB instance, then a 'DBInstanceIdentifier' must be supplied. If the
--- source type is a DB security group, a 'DBSecurityGroupName' must be supplied. If the source type is a DB parameter group, a
--- 'DBParameterGroupName' must be supplied. If the source type is a DB snapshot, a 'DBSnapshotIdentifier' must be supplied.
+-- -   If SourceIds are supplied, SourceType must also be provided.
+-- -   If the source type is a DB instance, then a 'DBInstanceIdentifier'
+--     must be supplied.
+-- -   If the source type is a DB security group, a 'DBSecurityGroupName'
+--     must be supplied.
+-- -   If the source type is a DB parameter group, a 'DBParameterGroupName'
+--     must be supplied.
+-- -   If the source type is a DB snapshot, a 'DBSnapshotIdentifier' must
+--     be supplied.
 cesSourceIds :: Lens' CreateEventSubscription [Text]
-cesSourceIds = lens _cesSourceIds (\s a -> s { _cesSourceIds = a }) . _List
+cesSourceIds = lens _cesSourceIds (\ s a -> s{_cesSourceIds = a}) . _Default . _Coerce;
 
--- | The type of source that will be generating the events. For example, if you
--- want to be notified of events generated by a DB instance, you would set this
--- parameter to db-instance. if this value is not specified, all events are
--- returned.
---
--- Valid values: db-instance | db-parameter-group | db-security-group |
--- db-snapshot
-cesSourceType :: Lens' CreateEventSubscription (Maybe Text)
-cesSourceType = lens _cesSourceType (\s a -> s { _cesSourceType = a })
+-- | Undocumented member.
+cesTags :: Lens' CreateEventSubscription [Tag]
+cesTags = lens _cesTags (\ s a -> s{_cesTags = a}) . _Default . _Coerce;
 
 -- | The name of the subscription.
 --
 -- Constraints: The name must be less than 255 characters.
 cesSubscriptionName :: Lens' CreateEventSubscription Text
-cesSubscriptionName =
-    lens _cesSubscriptionName (\s a -> s { _cesSubscriptionName = a })
-
-cesTags :: Lens' CreateEventSubscription [Tag]
-cesTags = lens _cesTags (\s a -> s { _cesTags = a }) . _List
+cesSubscriptionName = lens _cesSubscriptionName (\ s a -> s{_cesSubscriptionName = a});
 
-newtype CreateEventSubscriptionResponse = CreateEventSubscriptionResponse
-    { _cesrEventSubscription :: Maybe EventSubscription
-    } deriving (Eq, Read, Show)
+-- | The Amazon Resource Name (ARN) of the SNS topic created for event
+-- notification. The ARN is created by Amazon SNS when you create a topic
+-- and subscribe to it.
+cesSNSTopicARN :: Lens' CreateEventSubscription Text
+cesSNSTopicARN = lens _cesSNSTopicARN (\ s a -> s{_cesSNSTopicARN = a});
 
--- | 'CreateEventSubscriptionResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cesrEventSubscription' @::@ 'Maybe' 'EventSubscription'
---
-createEventSubscriptionResponse :: CreateEventSubscriptionResponse
-createEventSubscriptionResponse = CreateEventSubscriptionResponse
-    { _cesrEventSubscription = Nothing
-    }
+instance AWSRequest CreateEventSubscription where
+        type Sv CreateEventSubscription = RDS
+        type Rs CreateEventSubscription =
+             CreateEventSubscriptionResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CreateEventSubscriptionResult"
+              (\ s h x ->
+                 CreateEventSubscriptionResponse' <$>
+                   (x .@? "EventSubscription") <*> (pure (fromEnum s)))
 
-cesrEventSubscription :: Lens' CreateEventSubscriptionResponse (Maybe EventSubscription)
-cesrEventSubscription =
-    lens _cesrEventSubscription (\s a -> s { _cesrEventSubscription = a })
+instance ToHeaders CreateEventSubscription where
+        toHeaders = const mempty
 
 instance ToPath CreateEventSubscription where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateEventSubscription where
-    toQuery CreateEventSubscription{..} = mconcat
-        [ "Enabled"          =? _cesEnabled
-        , "EventCategories"  =? _cesEventCategories
-        , "SnsTopicArn"      =? _cesSnsTopicArn
-        , "SourceIds"        =? _cesSourceIds
-        , "SourceType"       =? _cesSourceType
-        , "SubscriptionName" =? _cesSubscriptionName
-        , "Tags"             =? _cesTags
-        ]
+        toQuery CreateEventSubscription'{..}
+          = mconcat
+              ["Action" =:
+                 ("CreateEventSubscription" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Enabled" =: _cesEnabled,
+               "SourceType" =: _cesSourceType,
+               "EventCategories" =:
+                 toQuery
+                   (toQueryList "EventCategory" <$>
+                      _cesEventCategories),
+               "SourceIds" =:
+                 toQuery (toQueryList "SourceId" <$> _cesSourceIds),
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cesTags),
+               "SubscriptionName" =: _cesSubscriptionName,
+               "SnsTopicArn" =: _cesSNSTopicARN]
 
-instance ToHeaders CreateEventSubscription
+-- | /See:/ 'createEventSubscriptionResponse' smart constructor.
+data CreateEventSubscriptionResponse = CreateEventSubscriptionResponse'
+    { _cesrsEventSubscription :: !(Maybe EventSubscription)
+    , _cesrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateEventSubscription where
-    type Sv CreateEventSubscription = RDS
-    type Rs CreateEventSubscription = CreateEventSubscriptionResponse
+-- | Creates a value of 'CreateEventSubscriptionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cesrsEventSubscription'
+--
+-- * 'cesrsStatus'
+createEventSubscriptionResponse
+    :: Int -- ^ 'cesrsStatus'
+    -> CreateEventSubscriptionResponse
+createEventSubscriptionResponse pStatus_ =
+    CreateEventSubscriptionResponse'
+    { _cesrsEventSubscription = Nothing
+    , _cesrsStatus = pStatus_
+    }
 
-    request  = post "CreateEventSubscription"
-    response = xmlResponse
+-- | Undocumented member.
+cesrsEventSubscription :: Lens' CreateEventSubscriptionResponse (Maybe EventSubscription)
+cesrsEventSubscription = lens _cesrsEventSubscription (\ s a -> s{_cesrsEventSubscription = a});
 
-instance FromXML CreateEventSubscriptionResponse where
-    parseXML = withElement "CreateEventSubscriptionResult" $ \x -> CreateEventSubscriptionResponse
-        <$> x .@? "EventSubscription"
+-- | The response status code.
+cesrsStatus :: Lens' CreateEventSubscriptionResponse Int
+cesrsStatus = lens _cesrsStatus (\ s a -> s{_cesrsStatus = a});
diff --git a/gen/Network/AWS/RDS/CreateOptionGroup.hs b/gen/Network/AWS/RDS/CreateOptionGroup.hs
--- a/gen/Network/AWS/RDS/CreateOptionGroup.hs
+++ b/gen/Network/AWS/RDS/CreateOptionGroup.hs
@@ -1,161 +1,175 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.CreateOptionGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a new option group. You can create up to 20 option groups.
+-- Creates a new option group. You can create up to 20 option groups.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateOptionGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateOptionGroup.html AWS API Reference> for CreateOptionGroup.
 module Network.AWS.RDS.CreateOptionGroup
     (
-    -- * Request
-      CreateOptionGroup
-    -- ** Request constructor
-    , createOptionGroup
-    -- ** Request lenses
+    -- * Creating a Request
+      createOptionGroup
+    , CreateOptionGroup
+    -- * Request Lenses
+    , cogTags
+    , cogOptionGroupName
     , cogEngineName
     , cogMajorEngineVersion
     , cogOptionGroupDescription
-    , cogOptionGroupName
-    , cogTags
 
-    -- * Response
-    , CreateOptionGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createOptionGroupResponse
-    -- ** Response lenses
-    , cogr1OptionGroup
+    , CreateOptionGroupResponse
+    -- * Response Lenses
+    , crsOptionGroup
+    , crsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data CreateOptionGroup = CreateOptionGroup
-    { _cogEngineName             :: Text
-    , _cogMajorEngineVersion     :: Text
-    , _cogOptionGroupDescription :: Text
-    , _cogOptionGroupName        :: Text
-    , _cogTags                   :: List "member" Tag
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreateOptionGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createOptionGroup' smart constructor.
+data CreateOptionGroup = CreateOptionGroup'
+    { _cogTags                   :: !(Maybe [Tag])
+    , _cogOptionGroupName        :: !Text
+    , _cogEngineName             :: !Text
+    , _cogMajorEngineVersion     :: !Text
+    , _cogOptionGroupDescription :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateOptionGroup' with the minimum fields required to make a request.
 --
--- * 'cogEngineName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cogMajorEngineVersion' @::@ 'Text'
+-- * 'cogTags'
 --
--- * 'cogOptionGroupDescription' @::@ 'Text'
+-- * 'cogOptionGroupName'
 --
--- * 'cogOptionGroupName' @::@ 'Text'
+-- * 'cogEngineName'
 --
--- * 'cogTags' @::@ ['Tag']
+-- * 'cogMajorEngineVersion'
 --
-createOptionGroup :: Text -- ^ 'cogOptionGroupName'
-                  -> Text -- ^ 'cogEngineName'
-                  -> Text -- ^ 'cogMajorEngineVersion'
-                  -> Text -- ^ 'cogOptionGroupDescription'
-                  -> CreateOptionGroup
-createOptionGroup p1 p2 p3 p4 = CreateOptionGroup
-    { _cogOptionGroupName        = p1
-    , _cogEngineName             = p2
-    , _cogMajorEngineVersion     = p3
-    , _cogOptionGroupDescription = p4
-    , _cogTags                   = mempty
+-- * 'cogOptionGroupDescription'
+createOptionGroup
+    :: Text -- ^ 'cogOptionGroupName'
+    -> Text -- ^ 'cogEngineName'
+    -> Text -- ^ 'cogMajorEngineVersion'
+    -> Text -- ^ 'cogOptionGroupDescription'
+    -> CreateOptionGroup
+createOptionGroup pOptionGroupName_ pEngineName_ pMajorEngineVersion_ pOptionGroupDescription_ =
+    CreateOptionGroup'
+    { _cogTags = Nothing
+    , _cogOptionGroupName = pOptionGroupName_
+    , _cogEngineName = pEngineName_
+    , _cogMajorEngineVersion = pMajorEngineVersion_
+    , _cogOptionGroupDescription = pOptionGroupDescription_
     }
 
--- | Specifies the name of the engine that this option group should be associated
--- with.
-cogEngineName :: Lens' CreateOptionGroup Text
-cogEngineName = lens _cogEngineName (\s a -> s { _cogEngineName = a })
-
--- | Specifies the major version of the engine that this option group should be
--- associated with.
-cogMajorEngineVersion :: Lens' CreateOptionGroup Text
-cogMajorEngineVersion =
-    lens _cogMajorEngineVersion (\s a -> s { _cogMajorEngineVersion = a })
-
--- | The description of the option group.
-cogOptionGroupDescription :: Lens' CreateOptionGroup Text
-cogOptionGroupDescription =
-    lens _cogOptionGroupDescription
-        (\s a -> s { _cogOptionGroupDescription = a })
+-- | Undocumented member.
+cogTags :: Lens' CreateOptionGroup [Tag]
+cogTags = lens _cogTags (\ s a -> s{_cogTags = a}) . _Default . _Coerce;
 
 -- | Specifies the name of the option group to be created.
 --
 -- Constraints:
 --
--- Must be 1 to 255 alphanumeric characters or hyphens First character must be
--- a letter Cannot end with a hyphen or contain two consecutive hyphens  Example:
--- 'myoptiongroup'
+-- -   Must be 1 to 255 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+--
+-- Example: 'myoptiongroup'
 cogOptionGroupName :: Lens' CreateOptionGroup Text
-cogOptionGroupName =
-    lens _cogOptionGroupName (\s a -> s { _cogOptionGroupName = a })
+cogOptionGroupName = lens _cogOptionGroupName (\ s a -> s{_cogOptionGroupName = a});
 
-cogTags :: Lens' CreateOptionGroup [Tag]
-cogTags = lens _cogTags (\s a -> s { _cogTags = a }) . _List
+-- | Specifies the name of the engine that this option group should be
+-- associated with.
+cogEngineName :: Lens' CreateOptionGroup Text
+cogEngineName = lens _cogEngineName (\ s a -> s{_cogEngineName = a});
 
-newtype CreateOptionGroupResponse = CreateOptionGroupResponse
-    { _cogr1OptionGroup :: Maybe OptionGroup
-    } deriving (Eq, Read, Show)
+-- | Specifies the major version of the engine that this option group should
+-- be associated with.
+cogMajorEngineVersion :: Lens' CreateOptionGroup Text
+cogMajorEngineVersion = lens _cogMajorEngineVersion (\ s a -> s{_cogMajorEngineVersion = a});
 
--- | 'CreateOptionGroupResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cogr1OptionGroup' @::@ 'Maybe' 'OptionGroup'
---
-createOptionGroupResponse :: CreateOptionGroupResponse
-createOptionGroupResponse = CreateOptionGroupResponse
-    { _cogr1OptionGroup = Nothing
-    }
+-- | The description of the option group.
+cogOptionGroupDescription :: Lens' CreateOptionGroup Text
+cogOptionGroupDescription = lens _cogOptionGroupDescription (\ s a -> s{_cogOptionGroupDescription = a});
 
-cogr1OptionGroup :: Lens' CreateOptionGroupResponse (Maybe OptionGroup)
-cogr1OptionGroup = lens _cogr1OptionGroup (\s a -> s { _cogr1OptionGroup = a })
+instance AWSRequest CreateOptionGroup where
+        type Sv CreateOptionGroup = RDS
+        type Rs CreateOptionGroup = CreateOptionGroupResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CreateOptionGroupResult"
+              (\ s h x ->
+                 CreateOptionGroupResponse' <$>
+                   (x .@? "OptionGroup") <*> (pure (fromEnum s)))
 
+instance ToHeaders CreateOptionGroup where
+        toHeaders = const mempty
+
 instance ToPath CreateOptionGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateOptionGroup where
-    toQuery CreateOptionGroup{..} = mconcat
-        [ "EngineName"             =? _cogEngineName
-        , "MajorEngineVersion"     =? _cogMajorEngineVersion
-        , "OptionGroupDescription" =? _cogOptionGroupDescription
-        , "OptionGroupName"        =? _cogOptionGroupName
-        , "Tags"                   =? _cogTags
-        ]
+        toQuery CreateOptionGroup'{..}
+          = mconcat
+              ["Action" =: ("CreateOptionGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Tags" =: toQuery (toQueryList "Tag" <$> _cogTags),
+               "OptionGroupName" =: _cogOptionGroupName,
+               "EngineName" =: _cogEngineName,
+               "MajorEngineVersion" =: _cogMajorEngineVersion,
+               "OptionGroupDescription" =:
+                 _cogOptionGroupDescription]
 
-instance ToHeaders CreateOptionGroup
+-- | /See:/ 'createOptionGroupResponse' smart constructor.
+data CreateOptionGroupResponse = CreateOptionGroupResponse'
+    { _crsOptionGroup :: !(Maybe OptionGroup)
+    , _crsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateOptionGroup where
-    type Sv CreateOptionGroup = RDS
-    type Rs CreateOptionGroup = CreateOptionGroupResponse
+-- | Creates a value of 'CreateOptionGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crsOptionGroup'
+--
+-- * 'crsStatus'
+createOptionGroupResponse
+    :: Int -- ^ 'crsStatus'
+    -> CreateOptionGroupResponse
+createOptionGroupResponse pStatus_ =
+    CreateOptionGroupResponse'
+    { _crsOptionGroup = Nothing
+    , _crsStatus = pStatus_
+    }
 
-    request  = post "CreateOptionGroup"
-    response = xmlResponse
+-- | Undocumented member.
+crsOptionGroup :: Lens' CreateOptionGroupResponse (Maybe OptionGroup)
+crsOptionGroup = lens _crsOptionGroup (\ s a -> s{_crsOptionGroup = a});
 
-instance FromXML CreateOptionGroupResponse where
-    parseXML = withElement "CreateOptionGroupResult" $ \x -> CreateOptionGroupResponse
-        <$> x .@? "OptionGroup"
+-- | The response status code.
+crsStatus :: Lens' CreateOptionGroupResponse Int
+crsStatus = lens _crsStatus (\ s a -> s{_crsStatus = a});
diff --git a/gen/Network/AWS/RDS/DeleteDBCluster.hs b/gen/Network/AWS/RDS/DeleteDBCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/DeleteDBCluster.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.DeleteDBCluster
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- The DeleteDBCluster action deletes a previously provisioned DB cluster.
+-- A successful response from the web service indicates the request was
+-- received correctly. When you delete a DB cluster, all automated backups
+-- for that DB cluster are deleted and cannot be recovered. Manual DB
+-- cluster snapshots of the DB cluster to be deleted are not deleted.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBCluster.html AWS API Reference> for DeleteDBCluster.
+module Network.AWS.RDS.DeleteDBCluster
+    (
+    -- * Creating a Request
+      deleteDBCluster
+    , DeleteDBCluster
+    -- * Request Lenses
+    , ddbcDBClusterIdentifier
+    , ddbcFinalDBSnapshotIdentifier
+    , ddbcSkipFinalSnapshot
+
+    -- * Destructuring the Response
+    , deleteDBClusterResponse
+    , DeleteDBClusterResponse
+    -- * Response Lenses
+    , ddbcrsDBCluster
+    , ddbcrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'deleteDBCluster' smart constructor.
+data DeleteDBCluster = DeleteDBCluster'
+    { _ddbcDBClusterIdentifier       :: !(Maybe Text)
+    , _ddbcFinalDBSnapshotIdentifier :: !(Maybe Text)
+    , _ddbcSkipFinalSnapshot         :: !(Maybe Bool)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDBCluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddbcDBClusterIdentifier'
+--
+-- * 'ddbcFinalDBSnapshotIdentifier'
+--
+-- * 'ddbcSkipFinalSnapshot'
+deleteDBCluster
+    :: DeleteDBCluster
+deleteDBCluster =
+    DeleteDBCluster'
+    { _ddbcDBClusterIdentifier = Nothing
+    , _ddbcFinalDBSnapshotIdentifier = Nothing
+    , _ddbcSkipFinalSnapshot = Nothing
+    }
+
+-- | The DB cluster identifier for the DB cluster to be deleted. This
+-- parameter isn\'t case-sensitive.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddbcDBClusterIdentifier :: Lens' DeleteDBCluster (Maybe Text)
+ddbcDBClusterIdentifier = lens _ddbcDBClusterIdentifier (\ s a -> s{_ddbcDBClusterIdentifier = a});
+
+-- | The DB cluster snapshot identifier of the new DB cluster snapshot
+-- created when 'SkipFinalSnapshot' is set to 'false'.
+--
+-- Specifying this parameter and also setting the 'SkipFinalShapshot'
+-- parameter to true results in an error.
+--
+-- Constraints:
+--
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddbcFinalDBSnapshotIdentifier :: Lens' DeleteDBCluster (Maybe Text)
+ddbcFinalDBSnapshotIdentifier = lens _ddbcFinalDBSnapshotIdentifier (\ s a -> s{_ddbcFinalDBSnapshotIdentifier = a});
+
+-- | Determines whether a final DB cluster snapshot is created before the DB
+-- cluster is deleted. If 'true' is specified, no DB cluster snapshot is
+-- created. If 'false' is specified, a DB cluster snapshot is created
+-- before the DB cluster is deleted.
+--
+-- You must specify a 'FinalDBSnapshotIdentifier' parameter if
+-- 'SkipFinalSnapshot' is 'false'.
+--
+-- Default: 'false'
+ddbcSkipFinalSnapshot :: Lens' DeleteDBCluster (Maybe Bool)
+ddbcSkipFinalSnapshot = lens _ddbcSkipFinalSnapshot (\ s a -> s{_ddbcSkipFinalSnapshot = a});
+
+instance AWSRequest DeleteDBCluster where
+        type Sv DeleteDBCluster = RDS
+        type Rs DeleteDBCluster = DeleteDBClusterResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DeleteDBClusterResult"
+              (\ s h x ->
+                 DeleteDBClusterResponse' <$>
+                   (x .@? "DBCluster") <*> (pure (fromEnum s)))
+
+instance ToHeaders DeleteDBCluster where
+        toHeaders = const mempty
+
+instance ToPath DeleteDBCluster where
+        toPath = const "/"
+
+instance ToQuery DeleteDBCluster where
+        toQuery DeleteDBCluster'{..}
+          = mconcat
+              ["Action" =: ("DeleteDBCluster" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBClusterIdentifier" =: _ddbcDBClusterIdentifier,
+               "FinalDBSnapshotIdentifier" =:
+                 _ddbcFinalDBSnapshotIdentifier,
+               "SkipFinalSnapshot" =: _ddbcSkipFinalSnapshot]
+
+-- | /See:/ 'deleteDBClusterResponse' smart constructor.
+data DeleteDBClusterResponse = DeleteDBClusterResponse'
+    { _ddbcrsDBCluster :: !(Maybe DBCluster)
+    , _ddbcrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDBClusterResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddbcrsDBCluster'
+--
+-- * 'ddbcrsStatus'
+deleteDBClusterResponse
+    :: Int -- ^ 'ddbcrsStatus'
+    -> DeleteDBClusterResponse
+deleteDBClusterResponse pStatus_ =
+    DeleteDBClusterResponse'
+    { _ddbcrsDBCluster = Nothing
+    , _ddbcrsStatus = pStatus_
+    }
+
+-- | Undocumented member.
+ddbcrsDBCluster :: Lens' DeleteDBClusterResponse (Maybe DBCluster)
+ddbcrsDBCluster = lens _ddbcrsDBCluster (\ s a -> s{_ddbcrsDBCluster = a});
+
+-- | The response status code.
+ddbcrsStatus :: Lens' DeleteDBClusterResponse Int
+ddbcrsStatus = lens _ddbcrsStatus (\ s a -> s{_ddbcrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DeleteDBClusterParameterGroup.hs b/gen/Network/AWS/RDS/DeleteDBClusterParameterGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/DeleteDBClusterParameterGroup.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.DeleteDBClusterParameterGroup
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a specified DB cluster parameter group. The DB cluster parameter
+-- group to be deleted cannot be associated with any DB clusters.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBClusterParameterGroup.html AWS API Reference> for DeleteDBClusterParameterGroup.
+module Network.AWS.RDS.DeleteDBClusterParameterGroup
+    (
+    -- * Creating a Request
+      deleteDBClusterParameterGroup
+    , DeleteDBClusterParameterGroup
+    -- * Request Lenses
+    , ddbcpgDBClusterParameterGroupName
+
+    -- * Destructuring the Response
+    , deleteDBClusterParameterGroupResponse
+    , DeleteDBClusterParameterGroupResponse
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'deleteDBClusterParameterGroup' smart constructor.
+newtype DeleteDBClusterParameterGroup = DeleteDBClusterParameterGroup'
+    { _ddbcpgDBClusterParameterGroupName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDBClusterParameterGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddbcpgDBClusterParameterGroupName'
+deleteDBClusterParameterGroup
+    :: Text -- ^ 'ddbcpgDBClusterParameterGroupName'
+    -> DeleteDBClusterParameterGroup
+deleteDBClusterParameterGroup pDBClusterParameterGroupName_ =
+    DeleteDBClusterParameterGroup'
+    { _ddbcpgDBClusterParameterGroupName = pDBClusterParameterGroupName_
+    }
+
+-- | The name of the DB cluster parameter group.
+--
+-- Constraints:
+--
+-- -   Must be the name of an existing DB cluster parameter group.
+-- -   You cannot delete a default DB cluster parameter group.
+-- -   Cannot be associated with any DB clusters.
+ddbcpgDBClusterParameterGroupName :: Lens' DeleteDBClusterParameterGroup Text
+ddbcpgDBClusterParameterGroupName = lens _ddbcpgDBClusterParameterGroupName (\ s a -> s{_ddbcpgDBClusterParameterGroupName = a});
+
+instance AWSRequest DeleteDBClusterParameterGroup
+         where
+        type Sv DeleteDBClusterParameterGroup = RDS
+        type Rs DeleteDBClusterParameterGroup =
+             DeleteDBClusterParameterGroupResponse
+        request = postQuery
+        response
+          = receiveNull DeleteDBClusterParameterGroupResponse'
+
+instance ToHeaders DeleteDBClusterParameterGroup
+         where
+        toHeaders = const mempty
+
+instance ToPath DeleteDBClusterParameterGroup where
+        toPath = const "/"
+
+instance ToQuery DeleteDBClusterParameterGroup where
+        toQuery DeleteDBClusterParameterGroup'{..}
+          = mconcat
+              ["Action" =:
+                 ("DeleteDBClusterParameterGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBClusterParameterGroupName" =:
+                 _ddbcpgDBClusterParameterGroupName]
+
+-- | /See:/ 'deleteDBClusterParameterGroupResponse' smart constructor.
+data DeleteDBClusterParameterGroupResponse =
+    DeleteDBClusterParameterGroupResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDBClusterParameterGroupResponse' with the minimum fields required to make a request.
+--
+deleteDBClusterParameterGroupResponse
+    :: DeleteDBClusterParameterGroupResponse
+deleteDBClusterParameterGroupResponse = DeleteDBClusterParameterGroupResponse'
diff --git a/gen/Network/AWS/RDS/DeleteDBClusterSnapshot.hs b/gen/Network/AWS/RDS/DeleteDBClusterSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/DeleteDBClusterSnapshot.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.DeleteDBClusterSnapshot
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a DB cluster snapshot. If the snapshot is being copied, the copy
+-- operation is terminated.
+--
+-- The DB cluster snapshot must be in the 'available' state to be deleted.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBClusterSnapshot.html AWS API Reference> for DeleteDBClusterSnapshot.
+module Network.AWS.RDS.DeleteDBClusterSnapshot
+    (
+    -- * Creating a Request
+      deleteDBClusterSnapshot
+    , DeleteDBClusterSnapshot
+    -- * Request Lenses
+    , ddcsDBClusterSnapshotIdentifier
+
+    -- * Destructuring the Response
+    , deleteDBClusterSnapshotResponse
+    , DeleteDBClusterSnapshotResponse
+    -- * Response Lenses
+    , ddcsrsDBClusterSnapshot
+    , ddcsrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'deleteDBClusterSnapshot' smart constructor.
+newtype DeleteDBClusterSnapshot = DeleteDBClusterSnapshot'
+    { _ddcsDBClusterSnapshotIdentifier :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDBClusterSnapshot' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddcsDBClusterSnapshotIdentifier'
+deleteDBClusterSnapshot
+    :: Text -- ^ 'ddcsDBClusterSnapshotIdentifier'
+    -> DeleteDBClusterSnapshot
+deleteDBClusterSnapshot pDBClusterSnapshotIdentifier_ =
+    DeleteDBClusterSnapshot'
+    { _ddcsDBClusterSnapshotIdentifier = pDBClusterSnapshotIdentifier_
+    }
+
+-- | The identifier of the DB cluster snapshot to delete.
+--
+-- Constraints: Must be the name of an existing DB cluster snapshot in the
+-- 'available' state.
+ddcsDBClusterSnapshotIdentifier :: Lens' DeleteDBClusterSnapshot Text
+ddcsDBClusterSnapshotIdentifier = lens _ddcsDBClusterSnapshotIdentifier (\ s a -> s{_ddcsDBClusterSnapshotIdentifier = a});
+
+instance AWSRequest DeleteDBClusterSnapshot where
+        type Sv DeleteDBClusterSnapshot = RDS
+        type Rs DeleteDBClusterSnapshot =
+             DeleteDBClusterSnapshotResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DeleteDBClusterSnapshotResult"
+              (\ s h x ->
+                 DeleteDBClusterSnapshotResponse' <$>
+                   (x .@? "DBClusterSnapshot") <*> (pure (fromEnum s)))
+
+instance ToHeaders DeleteDBClusterSnapshot where
+        toHeaders = const mempty
+
+instance ToPath DeleteDBClusterSnapshot where
+        toPath = const "/"
+
+instance ToQuery DeleteDBClusterSnapshot where
+        toQuery DeleteDBClusterSnapshot'{..}
+          = mconcat
+              ["Action" =:
+                 ("DeleteDBClusterSnapshot" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBClusterSnapshotIdentifier" =:
+                 _ddcsDBClusterSnapshotIdentifier]
+
+-- | /See:/ 'deleteDBClusterSnapshotResponse' smart constructor.
+data DeleteDBClusterSnapshotResponse = DeleteDBClusterSnapshotResponse'
+    { _ddcsrsDBClusterSnapshot :: !(Maybe DBClusterSnapshot)
+    , _ddcsrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDBClusterSnapshotResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddcsrsDBClusterSnapshot'
+--
+-- * 'ddcsrsStatus'
+deleteDBClusterSnapshotResponse
+    :: Int -- ^ 'ddcsrsStatus'
+    -> DeleteDBClusterSnapshotResponse
+deleteDBClusterSnapshotResponse pStatus_ =
+    DeleteDBClusterSnapshotResponse'
+    { _ddcsrsDBClusterSnapshot = Nothing
+    , _ddcsrsStatus = pStatus_
+    }
+
+-- | Undocumented member.
+ddcsrsDBClusterSnapshot :: Lens' DeleteDBClusterSnapshotResponse (Maybe DBClusterSnapshot)
+ddcsrsDBClusterSnapshot = lens _ddcsrsDBClusterSnapshot (\ s a -> s{_ddcsrsDBClusterSnapshot = a});
+
+-- | The response status code.
+ddcsrsStatus :: Lens' DeleteDBClusterSnapshotResponse Int
+ddcsrsStatus = lens _ddcsrsStatus (\ s a -> s{_ddcsrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DeleteDBInstance.hs b/gen/Network/AWS/RDS/DeleteDBInstance.hs
--- a/gen/Network/AWS/RDS/DeleteDBInstance.hs
+++ b/gen/Network/AWS/RDS/DeleteDBInstance.hs
@@ -1,162 +1,189 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DeleteDBInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | The DeleteDBInstance action deletes a previously provisioned DB instance. A
--- successful response from the web service indicates the request was received
--- correctly. When you delete a DB instance, all automated backups for that
--- instance are deleted and cannot be recovered. Manual DB snapshots of the DB
--- instance to be deleted are not deleted.
+-- The DeleteDBInstance action deletes a previously provisioned DB
+-- instance. A successful response from the web service indicates the
+-- request was received correctly. When you delete a DB instance, all
+-- automated backups for that instance are deleted and cannot be recovered.
+-- Manual DB snapshots of the DB instance to be deleted are not deleted.
 --
--- If a final DB snapshot is requested the status of the RDS instance will be
--- "deleting" until the DB snapshot is created. The API action 'DescribeDBInstance'
--- is used to monitor the status of this operation. The action cannot be
--- canceled or reverted once submitted.
+-- If a final DB snapshot is requested the status of the RDS instance will
+-- be \"deleting\" until the DB snapshot is created. The API action
+-- 'DescribeDBInstance' is used to monitor the status of this operation.
+-- The action cannot be canceled or reverted once submitted.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBInstance.html>
+-- Note that when a DB instance is in a failure state and has a status of
+-- \'failed\', \'incompatible-restore\', or \'incompatible-network\', it
+-- can only be deleted when the SkipFinalSnapshot parameter is set to
+-- \"true\".
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBInstance.html AWS API Reference> for DeleteDBInstance.
 module Network.AWS.RDS.DeleteDBInstance
     (
-    -- * Request
-      DeleteDBInstance
-    -- ** Request constructor
-    , deleteDBInstance
-    -- ** Request lenses
-    , ddbiDBInstanceIdentifier
-    , ddbiFinalDBSnapshotIdentifier
-    , ddbiSkipFinalSnapshot
+    -- * Creating a Request
+      deleteDBInstance
+    , DeleteDBInstance
+    -- * Request Lenses
+    , ddiFinalDBSnapshotIdentifier
+    , ddiSkipFinalSnapshot
+    , ddiDBInstanceIdentifier
 
-    -- * Response
-    , DeleteDBInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteDBInstanceResponse
-    -- ** Response lenses
-    , ddbirDBInstance
+    , DeleteDBInstanceResponse
+    -- * Response Lenses
+    , ddirsDBInstance
+    , ddirsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DeleteDBInstance = DeleteDBInstance
-    { _ddbiDBInstanceIdentifier      :: Text
-    , _ddbiFinalDBSnapshotIdentifier :: Maybe Text
-    , _ddbiSkipFinalSnapshot         :: Maybe Bool
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeleteDBInstance' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deleteDBInstance' smart constructor.
+data DeleteDBInstance = DeleteDBInstance'
+    { _ddiFinalDBSnapshotIdentifier :: !(Maybe Text)
+    , _ddiSkipFinalSnapshot         :: !(Maybe Bool)
+    , _ddiDBInstanceIdentifier      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDBInstance' with the minimum fields required to make a request.
 --
--- * 'ddbiDBInstanceIdentifier' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddbiFinalDBSnapshotIdentifier' @::@ 'Maybe' 'Text'
+-- * 'ddiFinalDBSnapshotIdentifier'
 --
--- * 'ddbiSkipFinalSnapshot' @::@ 'Maybe' 'Bool'
+-- * 'ddiSkipFinalSnapshot'
 --
-deleteDBInstance :: Text -- ^ 'ddbiDBInstanceIdentifier'
-                 -> DeleteDBInstance
-deleteDBInstance p1 = DeleteDBInstance
-    { _ddbiDBInstanceIdentifier      = p1
-    , _ddbiSkipFinalSnapshot         = Nothing
-    , _ddbiFinalDBSnapshotIdentifier = Nothing
+-- * 'ddiDBInstanceIdentifier'
+deleteDBInstance
+    :: Text -- ^ 'ddiDBInstanceIdentifier'
+    -> DeleteDBInstance
+deleteDBInstance pDBInstanceIdentifier_ =
+    DeleteDBInstance'
+    { _ddiFinalDBSnapshotIdentifier = Nothing
+    , _ddiSkipFinalSnapshot = Nothing
+    , _ddiDBInstanceIdentifier = pDBInstanceIdentifier_
     }
 
--- | The DB instance identifier for the DB instance to be deleted. This parameter
--- isn't case sensitive.
---
--- Constraints:
---
--- Must contain from 1 to 63 alphanumeric characters or hyphens First
--- character must be a letter Cannot end with a hyphen or contain two
--- consecutive hyphens
-ddbiDBInstanceIdentifier :: Lens' DeleteDBInstance Text
-ddbiDBInstanceIdentifier =
-    lens _ddbiDBInstanceIdentifier
-        (\s a -> s { _ddbiDBInstanceIdentifier = a })
-
 -- | The DBSnapshotIdentifier of the new DBSnapshot created when
 -- SkipFinalSnapshot is set to 'false'.
 --
--- Specifying this parameter and also setting the SkipFinalShapshot parameter
--- to true results in an error.  Constraints:
+-- Specifying this parameter and also setting the SkipFinalShapshot
+-- parameter to true results in an error.
 --
--- Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
--- Cannot be specified when deleting a Read Replica.
-ddbiFinalDBSnapshotIdentifier :: Lens' DeleteDBInstance (Maybe Text)
-ddbiFinalDBSnapshotIdentifier =
-    lens _ddbiFinalDBSnapshotIdentifier
-        (\s a -> s { _ddbiFinalDBSnapshotIdentifier = a })
+-- Constraints:
+--
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+-- -   Cannot be specified when deleting a Read Replica.
+ddiFinalDBSnapshotIdentifier :: Lens' DeleteDBInstance (Maybe Text)
+ddiFinalDBSnapshotIdentifier = lens _ddiFinalDBSnapshotIdentifier (\ s a -> s{_ddiFinalDBSnapshotIdentifier = a});
 
--- | Determines whether a final DB snapshot is created before the DB instance is
--- deleted. If 'true' is specified, no DBSnapshot is created. If 'false' is
--- specified, a DB snapshot is created before the DB instance is deleted.
+-- | Determines whether a final DB snapshot is created before the DB instance
+-- is deleted. If 'true' is specified, no DBSnapshot is created. If 'false'
+-- is specified, a DB snapshot is created before the DB instance is
+-- deleted.
 --
+-- Note that when a DB instance is in a failure state and has a status of
+-- \'failed\', \'incompatible-restore\', or \'incompatible-network\', it
+-- can only be deleted when the SkipFinalSnapshot parameter is set to
+-- \"true\".
+--
 -- Specify 'true' when deleting a Read Replica.
 --
 -- The FinalDBSnapshotIdentifier parameter must be specified if
--- SkipFinalSnapshot is 'false'. Default: 'false'
-ddbiSkipFinalSnapshot :: Lens' DeleteDBInstance (Maybe Bool)
-ddbiSkipFinalSnapshot =
-    lens _ddbiSkipFinalSnapshot (\s a -> s { _ddbiSkipFinalSnapshot = a })
-
-newtype DeleteDBInstanceResponse = DeleteDBInstanceResponse
-    { _ddbirDBInstance :: Maybe DBInstance
-    } deriving (Eq, Read, Show)
-
--- | 'DeleteDBInstanceResponse' constructor.
+-- SkipFinalSnapshot is 'false'.
 --
--- The fields accessible through corresponding lenses are:
+-- Default: 'false'
+ddiSkipFinalSnapshot :: Lens' DeleteDBInstance (Maybe Bool)
+ddiSkipFinalSnapshot = lens _ddiSkipFinalSnapshot (\ s a -> s{_ddiSkipFinalSnapshot = a});
+
+-- | The DB instance identifier for the DB instance to be deleted. This
+-- parameter isn\'t case-sensitive.
 --
--- * 'ddbirDBInstance' @::@ 'Maybe' 'DBInstance'
+-- Constraints:
 --
-deleteDBInstanceResponse :: DeleteDBInstanceResponse
-deleteDBInstanceResponse = DeleteDBInstanceResponse
-    { _ddbirDBInstance = Nothing
-    }
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddiDBInstanceIdentifier :: Lens' DeleteDBInstance Text
+ddiDBInstanceIdentifier = lens _ddiDBInstanceIdentifier (\ s a -> s{_ddiDBInstanceIdentifier = a});
 
-ddbirDBInstance :: Lens' DeleteDBInstanceResponse (Maybe DBInstance)
-ddbirDBInstance = lens _ddbirDBInstance (\s a -> s { _ddbirDBInstance = a })
+instance AWSRequest DeleteDBInstance where
+        type Sv DeleteDBInstance = RDS
+        type Rs DeleteDBInstance = DeleteDBInstanceResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DeleteDBInstanceResult"
+              (\ s h x ->
+                 DeleteDBInstanceResponse' <$>
+                   (x .@? "DBInstance") <*> (pure (fromEnum s)))
 
+instance ToHeaders DeleteDBInstance where
+        toHeaders = const mempty
+
 instance ToPath DeleteDBInstance where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteDBInstance where
-    toQuery DeleteDBInstance{..} = mconcat
-        [ "DBInstanceIdentifier"      =? _ddbiDBInstanceIdentifier
-        , "FinalDBSnapshotIdentifier" =? _ddbiFinalDBSnapshotIdentifier
-        , "SkipFinalSnapshot"         =? _ddbiSkipFinalSnapshot
-        ]
+        toQuery DeleteDBInstance'{..}
+          = mconcat
+              ["Action" =: ("DeleteDBInstance" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "FinalDBSnapshotIdentifier" =:
+                 _ddiFinalDBSnapshotIdentifier,
+               "SkipFinalSnapshot" =: _ddiSkipFinalSnapshot,
+               "DBInstanceIdentifier" =: _ddiDBInstanceIdentifier]
 
-instance ToHeaders DeleteDBInstance
+-- | /See:/ 'deleteDBInstanceResponse' smart constructor.
+data DeleteDBInstanceResponse = DeleteDBInstanceResponse'
+    { _ddirsDBInstance :: !(Maybe DBInstance)
+    , _ddirsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteDBInstance where
-    type Sv DeleteDBInstance = RDS
-    type Rs DeleteDBInstance = DeleteDBInstanceResponse
+-- | Creates a value of 'DeleteDBInstanceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddirsDBInstance'
+--
+-- * 'ddirsStatus'
+deleteDBInstanceResponse
+    :: Int -- ^ 'ddirsStatus'
+    -> DeleteDBInstanceResponse
+deleteDBInstanceResponse pStatus_ =
+    DeleteDBInstanceResponse'
+    { _ddirsDBInstance = Nothing
+    , _ddirsStatus = pStatus_
+    }
 
-    request  = post "DeleteDBInstance"
-    response = xmlResponse
+-- | Undocumented member.
+ddirsDBInstance :: Lens' DeleteDBInstanceResponse (Maybe DBInstance)
+ddirsDBInstance = lens _ddirsDBInstance (\ s a -> s{_ddirsDBInstance = a});
 
-instance FromXML DeleteDBInstanceResponse where
-    parseXML = withElement "DeleteDBInstanceResult" $ \x -> DeleteDBInstanceResponse
-        <$> x .@? "DBInstance"
+-- | The response status code.
+ddirsStatus :: Lens' DeleteDBInstanceResponse Int
+ddirsStatus = lens _ddirsStatus (\ s a -> s{_ddirsStatus = a});
diff --git a/gen/Network/AWS/RDS/DeleteDBParameterGroup.hs b/gen/Network/AWS/RDS/DeleteDBParameterGroup.hs
--- a/gen/Network/AWS/RDS/DeleteDBParameterGroup.hs
+++ b/gen/Network/AWS/RDS/DeleteDBParameterGroup.hs
@@ -1,98 +1,105 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DeleteDBParameterGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a specified DBParameterGroup. The DBParameterGroup to be deleted
+-- Deletes a specified DBParameterGroup. The DBParameterGroup to be deleted
 -- cannot be associated with any DB instances.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBParameterGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBParameterGroup.html AWS API Reference> for DeleteDBParameterGroup.
 module Network.AWS.RDS.DeleteDBParameterGroup
     (
-    -- * Request
-      DeleteDBParameterGroup
-    -- ** Request constructor
-    , deleteDBParameterGroup
-    -- ** Request lenses
-    , ddbpg1DBParameterGroupName
+    -- * Creating a Request
+      deleteDBParameterGroup
+    , DeleteDBParameterGroup
+    -- * Request Lenses
+    , ddbpgDBParameterGroupName
 
-    -- * Response
-    , DeleteDBParameterGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteDBParameterGroupResponse
+    , DeleteDBParameterGroupResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-newtype DeleteDBParameterGroup = DeleteDBParameterGroup
-    { _ddbpg1DBParameterGroupName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeleteDBParameterGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deleteDBParameterGroup' smart constructor.
+newtype DeleteDBParameterGroup = DeleteDBParameterGroup'
+    { _ddbpgDBParameterGroupName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDBParameterGroup' with the minimum fields required to make a request.
 --
--- * 'ddbpg1DBParameterGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteDBParameterGroup :: Text -- ^ 'ddbpg1DBParameterGroupName'
-                       -> DeleteDBParameterGroup
-deleteDBParameterGroup p1 = DeleteDBParameterGroup
-    { _ddbpg1DBParameterGroupName = p1
+-- * 'ddbpgDBParameterGroupName'
+deleteDBParameterGroup
+    :: Text -- ^ 'ddbpgDBParameterGroupName'
+    -> DeleteDBParameterGroup
+deleteDBParameterGroup pDBParameterGroupName_ =
+    DeleteDBParameterGroup'
+    { _ddbpgDBParameterGroupName = pDBParameterGroupName_
     }
 
 -- | The name of the DB parameter group.
 --
 -- Constraints:
 --
--- Must be the name of an existing DB parameter group You cannot delete a
--- default DB parameter group Cannot be associated with any DB instances
-ddbpg1DBParameterGroupName :: Lens' DeleteDBParameterGroup Text
-ddbpg1DBParameterGroupName =
-    lens _ddbpg1DBParameterGroupName
-        (\s a -> s { _ddbpg1DBParameterGroupName = a })
+-- -   Must be the name of an existing DB parameter group
+-- -   You cannot delete a default DB parameter group
+-- -   Cannot be associated with any DB instances
+ddbpgDBParameterGroupName :: Lens' DeleteDBParameterGroup Text
+ddbpgDBParameterGroupName = lens _ddbpgDBParameterGroupName (\ s a -> s{_ddbpgDBParameterGroupName = a});
 
-data DeleteDBParameterGroupResponse = DeleteDBParameterGroupResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteDBParameterGroup where
+        type Sv DeleteDBParameterGroup = RDS
+        type Rs DeleteDBParameterGroup =
+             DeleteDBParameterGroupResponse
+        request = postQuery
+        response
+          = receiveNull DeleteDBParameterGroupResponse'
 
--- | 'DeleteDBParameterGroupResponse' constructor.
-deleteDBParameterGroupResponse :: DeleteDBParameterGroupResponse
-deleteDBParameterGroupResponse = DeleteDBParameterGroupResponse
+instance ToHeaders DeleteDBParameterGroup where
+        toHeaders = const mempty
 
 instance ToPath DeleteDBParameterGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteDBParameterGroup where
-    toQuery DeleteDBParameterGroup{..} = mconcat
-        [ "DBParameterGroupName" =? _ddbpg1DBParameterGroupName
-        ]
-
-instance ToHeaders DeleteDBParameterGroup
+        toQuery DeleteDBParameterGroup'{..}
+          = mconcat
+              ["Action" =:
+                 ("DeleteDBParameterGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBParameterGroupName" =: _ddbpgDBParameterGroupName]
 
-instance AWSRequest DeleteDBParameterGroup where
-    type Sv DeleteDBParameterGroup = RDS
-    type Rs DeleteDBParameterGroup = DeleteDBParameterGroupResponse
+-- | /See:/ 'deleteDBParameterGroupResponse' smart constructor.
+data DeleteDBParameterGroupResponse =
+    DeleteDBParameterGroupResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteDBParameterGroup"
-    response = nullResponse DeleteDBParameterGroupResponse
+-- | Creates a value of 'DeleteDBParameterGroupResponse' with the minimum fields required to make a request.
+--
+deleteDBParameterGroupResponse
+    :: DeleteDBParameterGroupResponse
+deleteDBParameterGroupResponse = DeleteDBParameterGroupResponse'
diff --git a/gen/Network/AWS/RDS/DeleteDBSecurityGroup.hs b/gen/Network/AWS/RDS/DeleteDBSecurityGroup.hs
--- a/gen/Network/AWS/RDS/DeleteDBSecurityGroup.hs
+++ b/gen/Network/AWS/RDS/DeleteDBSecurityGroup.hs
@@ -1,99 +1,109 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DeleteDBSecurityGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a DB security group.
+-- Deletes a DB security group.
 --
--- The specified DB security group must not be associated with any DB instances.
+-- The specified DB security group must not be associated with any DB
+-- instances.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBSecurityGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBSecurityGroup.html AWS API Reference> for DeleteDBSecurityGroup.
 module Network.AWS.RDS.DeleteDBSecurityGroup
     (
-    -- * Request
-      DeleteDBSecurityGroup
-    -- ** Request constructor
-    , deleteDBSecurityGroup
-    -- ** Request lenses
-    , ddbsgDBSecurityGroupName
+    -- * Creating a Request
+      deleteDBSecurityGroup
+    , DeleteDBSecurityGroup
+    -- * Request Lenses
+    , ddsgDBSecurityGroupName
 
-    -- * Response
-    , DeleteDBSecurityGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteDBSecurityGroupResponse
+    , DeleteDBSecurityGroupResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-newtype DeleteDBSecurityGroup = DeleteDBSecurityGroup
-    { _ddbsgDBSecurityGroupName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeleteDBSecurityGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deleteDBSecurityGroup' smart constructor.
+newtype DeleteDBSecurityGroup = DeleteDBSecurityGroup'
+    { _ddsgDBSecurityGroupName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDBSecurityGroup' with the minimum fields required to make a request.
 --
--- * 'ddbsgDBSecurityGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteDBSecurityGroup :: Text -- ^ 'ddbsgDBSecurityGroupName'
-                      -> DeleteDBSecurityGroup
-deleteDBSecurityGroup p1 = DeleteDBSecurityGroup
-    { _ddbsgDBSecurityGroupName = p1
+-- * 'ddsgDBSecurityGroupName'
+deleteDBSecurityGroup
+    :: Text -- ^ 'ddsgDBSecurityGroupName'
+    -> DeleteDBSecurityGroup
+deleteDBSecurityGroup pDBSecurityGroupName_ =
+    DeleteDBSecurityGroup'
+    { _ddsgDBSecurityGroupName = pDBSecurityGroupName_
     }
 
 -- | The name of the DB security group to delete.
 --
--- You cannot delete the default DB security group.  Constraints:
+-- You cannot delete the default DB security group.
 --
--- Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
--- Must not be "Default" May not contain spaces
-ddbsgDBSecurityGroupName :: Lens' DeleteDBSecurityGroup Text
-ddbsgDBSecurityGroupName =
-    lens _ddbsgDBSecurityGroupName
-        (\s a -> s { _ddbsgDBSecurityGroupName = a })
+-- Constraints:
+--
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+-- -   Must not be \"Default\"
+-- -   Cannot contain spaces
+ddsgDBSecurityGroupName :: Lens' DeleteDBSecurityGroup Text
+ddsgDBSecurityGroupName = lens _ddsgDBSecurityGroupName (\ s a -> s{_ddsgDBSecurityGroupName = a});
 
-data DeleteDBSecurityGroupResponse = DeleteDBSecurityGroupResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteDBSecurityGroup where
+        type Sv DeleteDBSecurityGroup = RDS
+        type Rs DeleteDBSecurityGroup =
+             DeleteDBSecurityGroupResponse
+        request = postQuery
+        response = receiveNull DeleteDBSecurityGroupResponse'
 
--- | 'DeleteDBSecurityGroupResponse' constructor.
-deleteDBSecurityGroupResponse :: DeleteDBSecurityGroupResponse
-deleteDBSecurityGroupResponse = DeleteDBSecurityGroupResponse
+instance ToHeaders DeleteDBSecurityGroup where
+        toHeaders = const mempty
 
 instance ToPath DeleteDBSecurityGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteDBSecurityGroup where
-    toQuery DeleteDBSecurityGroup{..} = mconcat
-        [ "DBSecurityGroupName" =? _ddbsgDBSecurityGroupName
-        ]
-
-instance ToHeaders DeleteDBSecurityGroup
+        toQuery DeleteDBSecurityGroup'{..}
+          = mconcat
+              ["Action" =: ("DeleteDBSecurityGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBSecurityGroupName" =: _ddsgDBSecurityGroupName]
 
-instance AWSRequest DeleteDBSecurityGroup where
-    type Sv DeleteDBSecurityGroup = RDS
-    type Rs DeleteDBSecurityGroup = DeleteDBSecurityGroupResponse
+-- | /See:/ 'deleteDBSecurityGroupResponse' smart constructor.
+data DeleteDBSecurityGroupResponse =
+    DeleteDBSecurityGroupResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteDBSecurityGroup"
-    response = nullResponse DeleteDBSecurityGroupResponse
+-- | Creates a value of 'DeleteDBSecurityGroupResponse' with the minimum fields required to make a request.
+--
+deleteDBSecurityGroupResponse
+    :: DeleteDBSecurityGroupResponse
+deleteDBSecurityGroupResponse = DeleteDBSecurityGroupResponse'
diff --git a/gen/Network/AWS/RDS/DeleteDBSnapshot.hs b/gen/Network/AWS/RDS/DeleteDBSnapshot.hs
--- a/gen/Network/AWS/RDS/DeleteDBSnapshot.hs
+++ b/gen/Network/AWS/RDS/DeleteDBSnapshot.hs
@@ -1,115 +1,127 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DeleteDBSnapshot
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a DBSnapshot. If the snapshot is being copied, the copy operation is
--- terminated.
+-- Deletes a DBSnapshot. If the snapshot is being copied, the copy
+-- operation is terminated.
 --
 -- The DBSnapshot must be in the 'available' state to be deleted.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBSnapshot.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBSnapshot.html AWS API Reference> for DeleteDBSnapshot.
 module Network.AWS.RDS.DeleteDBSnapshot
     (
-    -- * Request
-      DeleteDBSnapshot
-    -- ** Request constructor
-    , deleteDBSnapshot
-    -- ** Request lenses
-    , ddbs1DBSnapshotIdentifier
+    -- * Creating a Request
+      deleteDBSnapshot
+    , DeleteDBSnapshot
+    -- * Request Lenses
+    , ddbsDBSnapshotIdentifier
 
-    -- * Response
-    , DeleteDBSnapshotResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteDBSnapshotResponse
-    -- ** Response lenses
-    , ddbsrDBSnapshot
+    , DeleteDBSnapshotResponse
+    -- * Response Lenses
+    , ddbsrsDBSnapshot
+    , ddbsrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-newtype DeleteDBSnapshot = DeleteDBSnapshot
-    { _ddbs1DBSnapshotIdentifier :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeleteDBSnapshot' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deleteDBSnapshot' smart constructor.
+newtype DeleteDBSnapshot = DeleteDBSnapshot'
+    { _ddbsDBSnapshotIdentifier :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDBSnapshot' with the minimum fields required to make a request.
 --
--- * 'ddbs1DBSnapshotIdentifier' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteDBSnapshot :: Text -- ^ 'ddbs1DBSnapshotIdentifier'
-                 -> DeleteDBSnapshot
-deleteDBSnapshot p1 = DeleteDBSnapshot
-    { _ddbs1DBSnapshotIdentifier = p1
+-- * 'ddbsDBSnapshotIdentifier'
+deleteDBSnapshot
+    :: Text -- ^ 'ddbsDBSnapshotIdentifier'
+    -> DeleteDBSnapshot
+deleteDBSnapshot pDBSnapshotIdentifier_ =
+    DeleteDBSnapshot'
+    { _ddbsDBSnapshotIdentifier = pDBSnapshotIdentifier_
     }
 
 -- | The DBSnapshot identifier.
 --
--- Constraints: Must be the name of an existing DB snapshot in the 'available'
--- state.
-ddbs1DBSnapshotIdentifier :: Lens' DeleteDBSnapshot Text
-ddbs1DBSnapshotIdentifier =
-    lens _ddbs1DBSnapshotIdentifier
-        (\s a -> s { _ddbs1DBSnapshotIdentifier = a })
-
-newtype DeleteDBSnapshotResponse = DeleteDBSnapshotResponse
-    { _ddbsrDBSnapshot :: Maybe DBSnapshot
-    } deriving (Eq, Read, Show)
+-- Constraints: Must be the name of an existing DB snapshot in the
+-- 'available' state.
+ddbsDBSnapshotIdentifier :: Lens' DeleteDBSnapshot Text
+ddbsDBSnapshotIdentifier = lens _ddbsDBSnapshotIdentifier (\ s a -> s{_ddbsDBSnapshotIdentifier = a});
 
--- | 'DeleteDBSnapshotResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddbsrDBSnapshot' @::@ 'Maybe' 'DBSnapshot'
---
-deleteDBSnapshotResponse :: DeleteDBSnapshotResponse
-deleteDBSnapshotResponse = DeleteDBSnapshotResponse
-    { _ddbsrDBSnapshot = Nothing
-    }
+instance AWSRequest DeleteDBSnapshot where
+        type Sv DeleteDBSnapshot = RDS
+        type Rs DeleteDBSnapshot = DeleteDBSnapshotResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DeleteDBSnapshotResult"
+              (\ s h x ->
+                 DeleteDBSnapshotResponse' <$>
+                   (x .@? "DBSnapshot") <*> (pure (fromEnum s)))
 
-ddbsrDBSnapshot :: Lens' DeleteDBSnapshotResponse (Maybe DBSnapshot)
-ddbsrDBSnapshot = lens _ddbsrDBSnapshot (\s a -> s { _ddbsrDBSnapshot = a })
+instance ToHeaders DeleteDBSnapshot where
+        toHeaders = const mempty
 
 instance ToPath DeleteDBSnapshot where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteDBSnapshot where
-    toQuery DeleteDBSnapshot{..} = mconcat
-        [ "DBSnapshotIdentifier" =? _ddbs1DBSnapshotIdentifier
-        ]
+        toQuery DeleteDBSnapshot'{..}
+          = mconcat
+              ["Action" =: ("DeleteDBSnapshot" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBSnapshotIdentifier" =: _ddbsDBSnapshotIdentifier]
 
-instance ToHeaders DeleteDBSnapshot
+-- | /See:/ 'deleteDBSnapshotResponse' smart constructor.
+data DeleteDBSnapshotResponse = DeleteDBSnapshotResponse'
+    { _ddbsrsDBSnapshot :: !(Maybe DBSnapshot)
+    , _ddbsrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteDBSnapshot where
-    type Sv DeleteDBSnapshot = RDS
-    type Rs DeleteDBSnapshot = DeleteDBSnapshotResponse
+-- | Creates a value of 'DeleteDBSnapshotResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddbsrsDBSnapshot'
+--
+-- * 'ddbsrsStatus'
+deleteDBSnapshotResponse
+    :: Int -- ^ 'ddbsrsStatus'
+    -> DeleteDBSnapshotResponse
+deleteDBSnapshotResponse pStatus_ =
+    DeleteDBSnapshotResponse'
+    { _ddbsrsDBSnapshot = Nothing
+    , _ddbsrsStatus = pStatus_
+    }
 
-    request  = post "DeleteDBSnapshot"
-    response = xmlResponse
+-- | Undocumented member.
+ddbsrsDBSnapshot :: Lens' DeleteDBSnapshotResponse (Maybe DBSnapshot)
+ddbsrsDBSnapshot = lens _ddbsrsDBSnapshot (\ s a -> s{_ddbsrsDBSnapshot = a});
 
-instance FromXML DeleteDBSnapshotResponse where
-    parseXML = withElement "DeleteDBSnapshotResult" $ \x -> DeleteDBSnapshotResponse
-        <$> x .@? "DBSnapshot"
+-- | The response status code.
+ddbsrsStatus :: Lens' DeleteDBSnapshotResponse Int
+ddbsrsStatus = lens _ddbsrsStatus (\ s a -> s{_ddbsrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DeleteDBSubnetGroup.hs b/gen/Network/AWS/RDS/DeleteDBSubnetGroup.hs
--- a/gen/Network/AWS/RDS/DeleteDBSubnetGroup.hs
+++ b/gen/Network/AWS/RDS/DeleteDBSubnetGroup.hs
@@ -1,99 +1,107 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DeleteDBSubnetGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a DB subnet group.
+-- Deletes a DB subnet group.
 --
 -- The specified database subnet group must not be associated with any DB
 -- instances.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBSubnetGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBSubnetGroup.html AWS API Reference> for DeleteDBSubnetGroup.
 module Network.AWS.RDS.DeleteDBSubnetGroup
     (
-    -- * Request
-      DeleteDBSubnetGroup
-    -- ** Request constructor
-    , deleteDBSubnetGroup
-    -- ** Request lenses
-    , ddbsg1DBSubnetGroupName
+    -- * Creating a Request
+      deleteDBSubnetGroup
+    , DeleteDBSubnetGroup
+    -- * Request Lenses
+    , ddbsgDBSubnetGroupName
 
-    -- * Response
-    , DeleteDBSubnetGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteDBSubnetGroupResponse
+    , DeleteDBSubnetGroupResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-newtype DeleteDBSubnetGroup = DeleteDBSubnetGroup
-    { _ddbsg1DBSubnetGroupName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeleteDBSubnetGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deleteDBSubnetGroup' smart constructor.
+newtype DeleteDBSubnetGroup = DeleteDBSubnetGroup'
+    { _ddbsgDBSubnetGroupName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDBSubnetGroup' with the minimum fields required to make a request.
 --
--- * 'ddbsg1DBSubnetGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteDBSubnetGroup :: Text -- ^ 'ddbsg1DBSubnetGroupName'
-                    -> DeleteDBSubnetGroup
-deleteDBSubnetGroup p1 = DeleteDBSubnetGroup
-    { _ddbsg1DBSubnetGroupName = p1
+-- * 'ddbsgDBSubnetGroupName'
+deleteDBSubnetGroup
+    :: Text -- ^ 'ddbsgDBSubnetGroupName'
+    -> DeleteDBSubnetGroup
+deleteDBSubnetGroup pDBSubnetGroupName_ =
+    DeleteDBSubnetGroup'
+    { _ddbsgDBSubnetGroupName = pDBSubnetGroupName_
     }
 
 -- | The name of the database subnet group to delete.
 --
--- You cannot delete the default subnet group.  Constraints:
+-- You cannot delete the default subnet group.
 --
--- Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
+-- Constraints:
 --
-ddbsg1DBSubnetGroupName :: Lens' DeleteDBSubnetGroup Text
-ddbsg1DBSubnetGroupName =
-    lens _ddbsg1DBSubnetGroupName (\s a -> s { _ddbsg1DBSubnetGroupName = a })
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddbsgDBSubnetGroupName :: Lens' DeleteDBSubnetGroup Text
+ddbsgDBSubnetGroupName = lens _ddbsgDBSubnetGroupName (\ s a -> s{_ddbsgDBSubnetGroupName = a});
 
-data DeleteDBSubnetGroupResponse = DeleteDBSubnetGroupResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteDBSubnetGroup where
+        type Sv DeleteDBSubnetGroup = RDS
+        type Rs DeleteDBSubnetGroup =
+             DeleteDBSubnetGroupResponse
+        request = postQuery
+        response = receiveNull DeleteDBSubnetGroupResponse'
 
--- | 'DeleteDBSubnetGroupResponse' constructor.
-deleteDBSubnetGroupResponse :: DeleteDBSubnetGroupResponse
-deleteDBSubnetGroupResponse = DeleteDBSubnetGroupResponse
+instance ToHeaders DeleteDBSubnetGroup where
+        toHeaders = const mempty
 
 instance ToPath DeleteDBSubnetGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteDBSubnetGroup where
-    toQuery DeleteDBSubnetGroup{..} = mconcat
-        [ "DBSubnetGroupName" =? _ddbsg1DBSubnetGroupName
-        ]
-
-instance ToHeaders DeleteDBSubnetGroup
+        toQuery DeleteDBSubnetGroup'{..}
+          = mconcat
+              ["Action" =: ("DeleteDBSubnetGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBSubnetGroupName" =: _ddbsgDBSubnetGroupName]
 
-instance AWSRequest DeleteDBSubnetGroup where
-    type Sv DeleteDBSubnetGroup = RDS
-    type Rs DeleteDBSubnetGroup = DeleteDBSubnetGroupResponse
+-- | /See:/ 'deleteDBSubnetGroupResponse' smart constructor.
+data DeleteDBSubnetGroupResponse =
+    DeleteDBSubnetGroupResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteDBSubnetGroup"
-    response = nullResponse DeleteDBSubnetGroupResponse
+-- | Creates a value of 'DeleteDBSubnetGroupResponse' with the minimum fields required to make a request.
+--
+deleteDBSubnetGroupResponse
+    :: DeleteDBSubnetGroupResponse
+deleteDBSubnetGroupResponse = DeleteDBSubnetGroupResponse'
diff --git a/gen/Network/AWS/RDS/DeleteEventSubscription.hs b/gen/Network/AWS/RDS/DeleteEventSubscription.hs
--- a/gen/Network/AWS/RDS/DeleteEventSubscription.hs
+++ b/gen/Network/AWS/RDS/DeleteEventSubscription.hs
@@ -1,109 +1,123 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DeleteEventSubscription
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes an RDS event notification subscription.
+-- Deletes an RDS event notification subscription.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteEventSubscription.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteEventSubscription.html AWS API Reference> for DeleteEventSubscription.
 module Network.AWS.RDS.DeleteEventSubscription
     (
-    -- * Request
-      DeleteEventSubscription
-    -- ** Request constructor
-    , deleteEventSubscription
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteEventSubscription
+    , DeleteEventSubscription
+    -- * Request Lenses
     , desSubscriptionName
 
-    -- * Response
-    , DeleteEventSubscriptionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteEventSubscriptionResponse
-    -- ** Response lenses
-    , desrEventSubscription
+    , DeleteEventSubscriptionResponse
+    -- * Response Lenses
+    , drsEventSubscription
+    , drsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeleteEventSubscription = DeleteEventSubscription
+-- |
+--
+-- /See:/ 'deleteEventSubscription' smart constructor.
+newtype DeleteEventSubscription = DeleteEventSubscription'
     { _desSubscriptionName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteEventSubscription' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteEventSubscription' with the minimum fields required to make a request.
 --
--- * 'desSubscriptionName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteEventSubscription :: Text -- ^ 'desSubscriptionName'
-                        -> DeleteEventSubscription
-deleteEventSubscription p1 = DeleteEventSubscription
-    { _desSubscriptionName = p1
+-- * 'desSubscriptionName'
+deleteEventSubscription
+    :: Text -- ^ 'desSubscriptionName'
+    -> DeleteEventSubscription
+deleteEventSubscription pSubscriptionName_ =
+    DeleteEventSubscription'
+    { _desSubscriptionName = pSubscriptionName_
     }
 
 -- | The name of the RDS event notification subscription you want to delete.
 desSubscriptionName :: Lens' DeleteEventSubscription Text
-desSubscriptionName =
-    lens _desSubscriptionName (\s a -> s { _desSubscriptionName = a })
-
-newtype DeleteEventSubscriptionResponse = DeleteEventSubscriptionResponse
-    { _desrEventSubscription :: Maybe EventSubscription
-    } deriving (Eq, Read, Show)
+desSubscriptionName = lens _desSubscriptionName (\ s a -> s{_desSubscriptionName = a});
 
--- | 'DeleteEventSubscriptionResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'desrEventSubscription' @::@ 'Maybe' 'EventSubscription'
---
-deleteEventSubscriptionResponse :: DeleteEventSubscriptionResponse
-deleteEventSubscriptionResponse = DeleteEventSubscriptionResponse
-    { _desrEventSubscription = Nothing
-    }
+instance AWSRequest DeleteEventSubscription where
+        type Sv DeleteEventSubscription = RDS
+        type Rs DeleteEventSubscription =
+             DeleteEventSubscriptionResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DeleteEventSubscriptionResult"
+              (\ s h x ->
+                 DeleteEventSubscriptionResponse' <$>
+                   (x .@? "EventSubscription") <*> (pure (fromEnum s)))
 
-desrEventSubscription :: Lens' DeleteEventSubscriptionResponse (Maybe EventSubscription)
-desrEventSubscription =
-    lens _desrEventSubscription (\s a -> s { _desrEventSubscription = a })
+instance ToHeaders DeleteEventSubscription where
+        toHeaders = const mempty
 
 instance ToPath DeleteEventSubscription where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteEventSubscription where
-    toQuery DeleteEventSubscription{..} = mconcat
-        [ "SubscriptionName" =? _desSubscriptionName
-        ]
+        toQuery DeleteEventSubscription'{..}
+          = mconcat
+              ["Action" =:
+                 ("DeleteEventSubscription" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "SubscriptionName" =: _desSubscriptionName]
 
-instance ToHeaders DeleteEventSubscription
+-- | /See:/ 'deleteEventSubscriptionResponse' smart constructor.
+data DeleteEventSubscriptionResponse = DeleteEventSubscriptionResponse'
+    { _drsEventSubscription :: !(Maybe EventSubscription)
+    , _drsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteEventSubscription where
-    type Sv DeleteEventSubscription = RDS
-    type Rs DeleteEventSubscription = DeleteEventSubscriptionResponse
+-- | Creates a value of 'DeleteEventSubscriptionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsEventSubscription'
+--
+-- * 'drsStatus'
+deleteEventSubscriptionResponse
+    :: Int -- ^ 'drsStatus'
+    -> DeleteEventSubscriptionResponse
+deleteEventSubscriptionResponse pStatus_ =
+    DeleteEventSubscriptionResponse'
+    { _drsEventSubscription = Nothing
+    , _drsStatus = pStatus_
+    }
 
-    request  = post "DeleteEventSubscription"
-    response = xmlResponse
+-- | Undocumented member.
+drsEventSubscription :: Lens' DeleteEventSubscriptionResponse (Maybe EventSubscription)
+drsEventSubscription = lens _drsEventSubscription (\ s a -> s{_drsEventSubscription = a});
 
-instance FromXML DeleteEventSubscriptionResponse where
-    parseXML = withElement "DeleteEventSubscriptionResult" $ \x -> DeleteEventSubscriptionResponse
-        <$> x .@? "EventSubscription"
+-- | The response status code.
+drsStatus :: Lens' DeleteEventSubscriptionResponse Int
+drsStatus = lens _drsStatus (\ s a -> s{_drsStatus = a});
diff --git a/gen/Network/AWS/RDS/DeleteOptionGroup.hs b/gen/Network/AWS/RDS/DeleteOptionGroup.hs
--- a/gen/Network/AWS/RDS/DeleteOptionGroup.hs
+++ b/gen/Network/AWS/RDS/DeleteOptionGroup.hs
@@ -1,93 +1,97 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DeleteOptionGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes an existing option group.
+-- Deletes an existing option group.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteOptionGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteOptionGroup.html AWS API Reference> for DeleteOptionGroup.
 module Network.AWS.RDS.DeleteOptionGroup
     (
-    -- * Request
-      DeleteOptionGroup
-    -- ** Request constructor
-    , deleteOptionGroup
-    -- ** Request lenses
-    , dog1OptionGroupName
+    -- * Creating a Request
+      deleteOptionGroup
+    , DeleteOptionGroup
+    -- * Request Lenses
+    , dOptionGroupName
 
-    -- * Response
-    , DeleteOptionGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteOptionGroupResponse
+    , DeleteOptionGroupResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-newtype DeleteOptionGroup = DeleteOptionGroup
-    { _dog1OptionGroupName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeleteOptionGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deleteOptionGroup' smart constructor.
+newtype DeleteOptionGroup = DeleteOptionGroup'
+    { _dOptionGroupName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteOptionGroup' with the minimum fields required to make a request.
 --
--- * 'dog1OptionGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteOptionGroup :: Text -- ^ 'dog1OptionGroupName'
-                  -> DeleteOptionGroup
-deleteOptionGroup p1 = DeleteOptionGroup
-    { _dog1OptionGroupName = p1
+-- * 'dOptionGroupName'
+deleteOptionGroup
+    :: Text -- ^ 'dOptionGroupName'
+    -> DeleteOptionGroup
+deleteOptionGroup pOptionGroupName_ =
+    DeleteOptionGroup'
+    { _dOptionGroupName = pOptionGroupName_
     }
 
 -- | The name of the option group to be deleted.
 --
 -- You cannot delete default option groups.
-dog1OptionGroupName :: Lens' DeleteOptionGroup Text
-dog1OptionGroupName =
-    lens _dog1OptionGroupName (\s a -> s { _dog1OptionGroupName = a })
+dOptionGroupName :: Lens' DeleteOptionGroup Text
+dOptionGroupName = lens _dOptionGroupName (\ s a -> s{_dOptionGroupName = a});
 
-data DeleteOptionGroupResponse = DeleteOptionGroupResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteOptionGroup where
+        type Sv DeleteOptionGroup = RDS
+        type Rs DeleteOptionGroup = DeleteOptionGroupResponse
+        request = postQuery
+        response = receiveNull DeleteOptionGroupResponse'
 
--- | 'DeleteOptionGroupResponse' constructor.
-deleteOptionGroupResponse :: DeleteOptionGroupResponse
-deleteOptionGroupResponse = DeleteOptionGroupResponse
+instance ToHeaders DeleteOptionGroup where
+        toHeaders = const mempty
 
 instance ToPath DeleteOptionGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteOptionGroup where
-    toQuery DeleteOptionGroup{..} = mconcat
-        [ "OptionGroupName" =? _dog1OptionGroupName
-        ]
-
-instance ToHeaders DeleteOptionGroup
+        toQuery DeleteOptionGroup'{..}
+          = mconcat
+              ["Action" =: ("DeleteOptionGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "OptionGroupName" =: _dOptionGroupName]
 
-instance AWSRequest DeleteOptionGroup where
-    type Sv DeleteOptionGroup = RDS
-    type Rs DeleteOptionGroup = DeleteOptionGroupResponse
+-- | /See:/ 'deleteOptionGroupResponse' smart constructor.
+data DeleteOptionGroupResponse =
+    DeleteOptionGroupResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteOptionGroup"
-    response = nullResponse DeleteOptionGroupResponse
+-- | Creates a value of 'DeleteOptionGroupResponse' with the minimum fields required to make a request.
+--
+deleteOptionGroupResponse
+    :: DeleteOptionGroupResponse
+deleteOptionGroupResponse = DeleteOptionGroupResponse'
diff --git a/gen/Network/AWS/RDS/DescribeAccountAttributes.hs b/gen/Network/AWS/RDS/DescribeAccountAttributes.hs
--- a/gen/Network/AWS/RDS/DescribeAccountAttributes.hs
+++ b/gen/Network/AWS/RDS/DescribeAccountAttributes.hs
@@ -1,105 +1,121 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeAccountAttributes
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Lists all of the attributes for a customer account. The attributes include
--- Amazon RDS quotas for the account, such as the number of DB instances
--- allowed. The description for a quota includes the quota name, current usage
--- toward that quota, and the quota's maximum value.
+-- Lists all of the attributes for a customer account. The attributes
+-- include Amazon RDS quotas for the account, such as the number of DB
+-- instances allowed. The description for a quota includes the quota name,
+-- current usage toward that quota, and the quota\'s maximum value.
 --
 -- This command does not take any parameters.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeAccountAttributes.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeAccountAttributes.html AWS API Reference> for DescribeAccountAttributes.
 module Network.AWS.RDS.DescribeAccountAttributes
     (
-    -- * Request
-      DescribeAccountAttributes
-    -- ** Request constructor
-    , describeAccountAttributes
+    -- * Creating a Request
+      describeAccountAttributes
+    , DescribeAccountAttributes
 
-    -- * Response
-    , DescribeAccountAttributesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeAccountAttributesResponse
-    -- ** Response lenses
-    , daarAccountQuotas
+    , DescribeAccountAttributesResponse
+    -- * Response Lenses
+    , daarsAccountQuotas
+    , daarsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeAccountAttributes = DescribeAccountAttributes
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'DescribeAccountAttributes' constructor.
-describeAccountAttributes :: DescribeAccountAttributes
-describeAccountAttributes = DescribeAccountAttributes
-
-newtype DescribeAccountAttributesResponse = DescribeAccountAttributesResponse
-    { _daarAccountQuotas :: List "member" AccountQuota
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeAccountAttributesResponse where
-    type Item DescribeAccountAttributesResponse = AccountQuota
-
-    fromList = DescribeAccountAttributesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _daarAccountQuotas
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeAccountAttributesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- |
 --
--- * 'daarAccountQuotas' @::@ ['AccountQuota']
+-- /See:/ 'describeAccountAttributes' smart constructor.
+data DescribeAccountAttributes =
+    DescribeAccountAttributes'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeAccountAttributes' with the minimum fields required to make a request.
 --
-describeAccountAttributesResponse :: DescribeAccountAttributesResponse
-describeAccountAttributesResponse = DescribeAccountAttributesResponse
-    { _daarAccountQuotas = mempty
-    }
+describeAccountAttributes
+    :: DescribeAccountAttributes
+describeAccountAttributes = DescribeAccountAttributes'
 
--- | A list of 'AccountQuota' objects. Within this list, each quota has a name, a
--- count of usage toward the quota maximum, and a maximum value for the quota.
-daarAccountQuotas :: Lens' DescribeAccountAttributesResponse [AccountQuota]
-daarAccountQuotas =
-    lens _daarAccountQuotas (\s a -> s { _daarAccountQuotas = a })
-        . _List
+instance AWSRequest DescribeAccountAttributes where
+        type Sv DescribeAccountAttributes = RDS
+        type Rs DescribeAccountAttributes =
+             DescribeAccountAttributesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeAccountAttributesResult"
+              (\ s h x ->
+                 DescribeAccountAttributesResponse' <$>
+                   (x .@? "AccountQuotas" .!@ mempty >>=
+                      may (parseXMLList "AccountQuota"))
+                     <*> (pure (fromEnum s)))
 
+instance ToHeaders DescribeAccountAttributes where
+        toHeaders = const mempty
+
 instance ToPath DescribeAccountAttributes where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeAccountAttributes where
-    toQuery = const mempty
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =:
+                    ("DescribeAccountAttributes" :: ByteString),
+                  "Version" =: ("2014-10-31" :: ByteString)])
 
-instance ToHeaders DescribeAccountAttributes
+-- | Data returned by the __DescribeAccountAttributes__ action.
+--
+-- /See:/ 'describeAccountAttributesResponse' smart constructor.
+data DescribeAccountAttributesResponse = DescribeAccountAttributesResponse'
+    { _daarsAccountQuotas :: !(Maybe [AccountQuota])
+    , _daarsStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeAccountAttributes where
-    type Sv DescribeAccountAttributes = RDS
-    type Rs DescribeAccountAttributes = DescribeAccountAttributesResponse
+-- | Creates a value of 'DescribeAccountAttributesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'daarsAccountQuotas'
+--
+-- * 'daarsStatus'
+describeAccountAttributesResponse
+    :: Int -- ^ 'daarsStatus'
+    -> DescribeAccountAttributesResponse
+describeAccountAttributesResponse pStatus_ =
+    DescribeAccountAttributesResponse'
+    { _daarsAccountQuotas = Nothing
+    , _daarsStatus = pStatus_
+    }
 
-    request  = post "DescribeAccountAttributes"
-    response = xmlResponse
+-- | A list of AccountQuota objects. Within this list, each quota has a name,
+-- a count of usage toward the quota maximum, and a maximum value for the
+-- quota.
+daarsAccountQuotas :: Lens' DescribeAccountAttributesResponse [AccountQuota]
+daarsAccountQuotas = lens _daarsAccountQuotas (\ s a -> s{_daarsAccountQuotas = a}) . _Default . _Coerce;
 
-instance FromXML DescribeAccountAttributesResponse where
-    parseXML = withElement "DescribeAccountAttributesResult" $ \x -> DescribeAccountAttributesResponse
-        <$> x .@? "AccountQuotas" .!@ mempty
+-- | The response status code.
+daarsStatus :: Lens' DescribeAccountAttributesResponse Int
+daarsStatus = lens _daarsStatus (\ s a -> s{_daarsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeCertificates.hs b/gen/Network/AWS/RDS/DescribeCertificates.hs
--- a/gen/Network/AWS/RDS/DescribeCertificates.hs
+++ b/gen/Network/AWS/RDS/DescribeCertificates.hs
@@ -1,167 +1,185 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeCertificates
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Lists the set of CA certificates provided by Amazon RDS for this AWS
+-- Lists the set of CA certificates provided by Amazon RDS for this AWS
 -- account.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeCertificates.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeCertificates.html AWS API Reference> for DescribeCertificates.
 module Network.AWS.RDS.DescribeCertificates
     (
-    -- * Request
-      DescribeCertificates
-    -- ** Request constructor
-    , describeCertificates
-    -- ** Request lenses
-    , dcCertificateIdentifier
+    -- * Creating a Request
+      describeCertificates
+    , DescribeCertificates
+    -- * Request Lenses
     , dcFilters
-    , dcMarker
+    , dcCertificateIdentifier
     , dcMaxRecords
+    , dcMarker
 
-    -- * Response
-    , DescribeCertificatesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeCertificatesResponse
-    -- ** Response lenses
-    , dcrCertificates
-    , dcrMarker
+    , DescribeCertificatesResponse
+    -- * Response Lenses
+    , dcrsCertificates
+    , dcrsMarker
+    , dcrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeCertificates = DescribeCertificates
-    { _dcCertificateIdentifier :: Maybe Text
-    , _dcFilters               :: List "member" Filter
-    , _dcMarker                :: Maybe Text
-    , _dcMaxRecords            :: Maybe Int
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeCertificates' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeCertificates' smart constructor.
+data DescribeCertificates = DescribeCertificates'
+    { _dcFilters               :: !(Maybe [Filter])
+    , _dcCertificateIdentifier :: !(Maybe Text)
+    , _dcMaxRecords            :: !(Maybe Int)
+    , _dcMarker                :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeCertificates' with the minimum fields required to make a request.
 --
--- * 'dcCertificateIdentifier' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcFilters' @::@ ['Filter']
+-- * 'dcFilters'
 --
--- * 'dcMarker' @::@ 'Maybe' 'Text'
+-- * 'dcCertificateIdentifier'
 --
--- * 'dcMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dcMaxRecords'
 --
-describeCertificates :: DescribeCertificates
-describeCertificates = DescribeCertificates
-    { _dcCertificateIdentifier = Nothing
-    , _dcFilters               = mempty
-    , _dcMaxRecords            = Nothing
-    , _dcMarker                = Nothing
+-- * 'dcMarker'
+describeCertificates
+    :: DescribeCertificates
+describeCertificates =
+    DescribeCertificates'
+    { _dcFilters = Nothing
+    , _dcCertificateIdentifier = Nothing
+    , _dcMaxRecords = Nothing
+    , _dcMarker = Nothing
     }
 
--- | The user-supplied certificate identifier. If this parameter is specified,
--- information for only the identified certificate is returned. This parameter
--- isn't case-sensitive.
+-- | This parameter is not currently supported.
+dcFilters :: Lens' DescribeCertificates [Filter]
+dcFilters = lens _dcFilters (\ s a -> s{_dcFilters = a}) . _Default . _Coerce;
+
+-- | The user-supplied certificate identifier. If this parameter is
+-- specified, information for only the identified certificate is returned.
+-- This parameter isn\'t case-sensitive.
 --
 -- Constraints:
 --
--- Must contain from 1 to 63 alphanumeric characters or hyphens First
--- character must be a letter Cannot end with a hyphen or contain two
--- consecutive hyphens
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
 dcCertificateIdentifier :: Lens' DescribeCertificates (Maybe Text)
-dcCertificateIdentifier =
-    lens _dcCertificateIdentifier (\s a -> s { _dcCertificateIdentifier = a })
-
--- | This parameter is not currently supported.
-dcFilters :: Lens' DescribeCertificates [Filter]
-dcFilters = lens _dcFilters (\s a -> s { _dcFilters = a }) . _List
-
--- | An optional pagination token provided by a previous 'DescribeCertificates'
--- request. If this parameter is specified, the response includes only records
--- beyond the marker, up to the value specified by 'MaxRecords'.
-dcMarker :: Lens' DescribeCertificates (Maybe Text)
-dcMarker = lens _dcMarker (\s a -> s { _dcMarker = a })
+dcCertificateIdentifier = lens _dcCertificateIdentifier (\ s a -> s{_dcCertificateIdentifier = a});
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results can be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: Minimum 20, maximum 100
+-- Constraints: Minimum 20, maximum 100.
 dcMaxRecords :: Lens' DescribeCertificates (Maybe Int)
-dcMaxRecords = lens _dcMaxRecords (\s a -> s { _dcMaxRecords = a })
-
-data DescribeCertificatesResponse = DescribeCertificatesResponse
-    { _dcrCertificates :: List "member" Certificate
-    , _dcrMarker       :: Maybe Text
-    } deriving (Eq, Read, Show)
+dcMaxRecords = lens _dcMaxRecords (\ s a -> s{_dcMaxRecords = a});
 
--- | 'DescribeCertificatesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dcrCertificates' @::@ ['Certificate']
---
--- * 'dcrMarker' @::@ 'Maybe' 'Text'
---
-describeCertificatesResponse :: DescribeCertificatesResponse
-describeCertificatesResponse = DescribeCertificatesResponse
-    { _dcrCertificates = mempty
-    , _dcrMarker       = Nothing
-    }
+-- | An optional pagination token provided by a previous DescribeCertificates
+-- request. If this parameter is specified, the response includes only
+-- records beyond the marker, up to the value specified by 'MaxRecords'.
+dcMarker :: Lens' DescribeCertificates (Maybe Text)
+dcMarker = lens _dcMarker (\ s a -> s{_dcMarker = a});
 
--- | The list of 'Certificate' objects for the AWS account.
-dcrCertificates :: Lens' DescribeCertificatesResponse [Certificate]
-dcrCertificates = lens _dcrCertificates (\s a -> s { _dcrCertificates = a }) . _List
+instance AWSRequest DescribeCertificates where
+        type Sv DescribeCertificates = RDS
+        type Rs DescribeCertificates =
+             DescribeCertificatesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeCertificatesResult"
+              (\ s h x ->
+                 DescribeCertificatesResponse' <$>
+                   (x .@? "Certificates" .!@ mempty >>=
+                      may (parseXMLList "Certificate"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
--- | An optional pagination token provided by a previous 'DescribeCertificates'
--- request. If this parameter is specified, the response includes only records
--- beyond the marker, up to the value specified by 'MaxRecords' .
-dcrMarker :: Lens' DescribeCertificatesResponse (Maybe Text)
-dcrMarker = lens _dcrMarker (\s a -> s { _dcrMarker = a })
+instance ToHeaders DescribeCertificates where
+        toHeaders = const mempty
 
 instance ToPath DescribeCertificates where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeCertificates where
-    toQuery DescribeCertificates{..} = mconcat
-        [ "CertificateIdentifier" =? _dcCertificateIdentifier
-        , "Filters"               =? _dcFilters
-        , "Marker"                =? _dcMarker
-        , "MaxRecords"            =? _dcMaxRecords
-        ]
+        toQuery DescribeCertificates'{..}
+          = mconcat
+              ["Action" =: ("DescribeCertificates" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _dcFilters),
+               "CertificateIdentifier" =: _dcCertificateIdentifier,
+               "MaxRecords" =: _dcMaxRecords, "Marker" =: _dcMarker]
 
-instance ToHeaders DescribeCertificates
+-- | Data returned by the __DescribeCertificates__ action.
+--
+-- /See:/ 'describeCertificatesResponse' smart constructor.
+data DescribeCertificatesResponse = DescribeCertificatesResponse'
+    { _dcrsCertificates :: !(Maybe [Certificate])
+    , _dcrsMarker       :: !(Maybe Text)
+    , _dcrsStatus       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeCertificates where
-    type Sv DescribeCertificates = RDS
-    type Rs DescribeCertificates = DescribeCertificatesResponse
+-- | Creates a value of 'DescribeCertificatesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcrsCertificates'
+--
+-- * 'dcrsMarker'
+--
+-- * 'dcrsStatus'
+describeCertificatesResponse
+    :: Int -- ^ 'dcrsStatus'
+    -> DescribeCertificatesResponse
+describeCertificatesResponse pStatus_ =
+    DescribeCertificatesResponse'
+    { _dcrsCertificates = Nothing
+    , _dcrsMarker = Nothing
+    , _dcrsStatus = pStatus_
+    }
 
-    request  = post "DescribeCertificates"
-    response = xmlResponse
+-- | The list of Certificate objects for the AWS account.
+dcrsCertificates :: Lens' DescribeCertificatesResponse [Certificate]
+dcrsCertificates = lens _dcrsCertificates (\ s a -> s{_dcrsCertificates = a}) . _Default . _Coerce;
 
-instance FromXML DescribeCertificatesResponse where
-    parseXML = withElement "DescribeCertificatesResult" $ \x -> DescribeCertificatesResponse
-        <$> x .@? "Certificates" .!@ mempty
-        <*> x .@? "Marker"
+-- | An optional pagination token provided by a previous DescribeCertificates
+-- request. If this parameter is specified, the response includes only
+-- records beyond the marker, up to the value specified by 'MaxRecords' .
+dcrsMarker :: Lens' DescribeCertificatesResponse (Maybe Text)
+dcrsMarker = lens _dcrsMarker (\ s a -> s{_dcrsMarker = a});
+
+-- | The response status code.
+dcrsStatus :: Lens' DescribeCertificatesResponse Int
+dcrsStatus = lens _dcrsStatus (\ s a -> s{_dcrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeDBClusterParameterGroups.hs b/gen/Network/AWS/RDS/DescribeDBClusterParameterGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/DescribeDBClusterParameterGroups.hs
@@ -0,0 +1,199 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.DescribeDBClusterParameterGroups
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of 'DBClusterParameterGroup' descriptions. If a
+-- 'DBClusterParameterGroupName' parameter is specified, the list will
+-- contain only the description of the specified DB cluster parameter
+-- group.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusterParameterGroups.html AWS API Reference> for DescribeDBClusterParameterGroups.
+module Network.AWS.RDS.DescribeDBClusterParameterGroups
+    (
+    -- * Creating a Request
+      describeDBClusterParameterGroups
+    , DescribeDBClusterParameterGroups
+    -- * Request Lenses
+    , ddcpgFilters
+    , ddcpgMaxRecords
+    , ddcpgMarker
+    , ddcpgDBClusterParameterGroupName
+
+    -- * Destructuring the Response
+    , describeDBClusterParameterGroupsResponse
+    , DescribeDBClusterParameterGroupsResponse
+    -- * Response Lenses
+    , ddcpgrsMarker
+    , ddcpgrsDBClusterParameterGroups
+    , ddcpgrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'describeDBClusterParameterGroups' smart constructor.
+data DescribeDBClusterParameterGroups = DescribeDBClusterParameterGroups'
+    { _ddcpgFilters                     :: !(Maybe [Filter])
+    , _ddcpgMaxRecords                  :: !(Maybe Int)
+    , _ddcpgMarker                      :: !(Maybe Text)
+    , _ddcpgDBClusterParameterGroupName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBClusterParameterGroups' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddcpgFilters'
+--
+-- * 'ddcpgMaxRecords'
+--
+-- * 'ddcpgMarker'
+--
+-- * 'ddcpgDBClusterParameterGroupName'
+describeDBClusterParameterGroups
+    :: DescribeDBClusterParameterGroups
+describeDBClusterParameterGroups =
+    DescribeDBClusterParameterGroups'
+    { _ddcpgFilters = Nothing
+    , _ddcpgMaxRecords = Nothing
+    , _ddcpgMarker = Nothing
+    , _ddcpgDBClusterParameterGroupName = Nothing
+    }
+
+-- | This parameter is not currently supported.
+ddcpgFilters :: Lens' DescribeDBClusterParameterGroups [Filter]
+ddcpgFilters = lens _ddcpgFilters (\ s a -> s{_ddcpgFilters = a}) . _Default . _Coerce;
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+ddcpgMaxRecords :: Lens' DescribeDBClusterParameterGroups (Maybe Int)
+ddcpgMaxRecords = lens _ddcpgMaxRecords (\ s a -> s{_ddcpgMaxRecords = a});
+
+-- | An optional pagination token provided by a previous
+-- 'DescribeDBClusterParameterGroups' request. If this parameter is
+-- specified, the response includes only records beyond the marker, up to
+-- the value specified by 'MaxRecords'.
+ddcpgMarker :: Lens' DescribeDBClusterParameterGroups (Maybe Text)
+ddcpgMarker = lens _ddcpgMarker (\ s a -> s{_ddcpgMarker = a});
+
+-- | The name of a specific DB cluster parameter group 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
+ddcpgDBClusterParameterGroupName :: Lens' DescribeDBClusterParameterGroups (Maybe Text)
+ddcpgDBClusterParameterGroupName = lens _ddcpgDBClusterParameterGroupName (\ s a -> s{_ddcpgDBClusterParameterGroupName = a});
+
+instance AWSRequest DescribeDBClusterParameterGroups
+         where
+        type Sv DescribeDBClusterParameterGroups = RDS
+        type Rs DescribeDBClusterParameterGroups =
+             DescribeDBClusterParameterGroupsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeDBClusterParameterGroupsResult"
+              (\ s h x ->
+                 DescribeDBClusterParameterGroupsResponse' <$>
+                   (x .@? "Marker") <*>
+                     (x .@? "DBClusterParameterGroups" .!@ mempty >>=
+                        may (parseXMLList "DBClusterParameterGroup"))
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeDBClusterParameterGroups
+         where
+        toHeaders = const mempty
+
+instance ToPath DescribeDBClusterParameterGroups
+         where
+        toPath = const "/"
+
+instance ToQuery DescribeDBClusterParameterGroups
+         where
+        toQuery DescribeDBClusterParameterGroups'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeDBClusterParameterGroups" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ddcpgFilters),
+               "MaxRecords" =: _ddcpgMaxRecords,
+               "Marker" =: _ddcpgMarker,
+               "DBClusterParameterGroupName" =:
+                 _ddcpgDBClusterParameterGroupName]
+
+-- |
+--
+-- /See:/ 'describeDBClusterParameterGroupsResponse' smart constructor.
+data DescribeDBClusterParameterGroupsResponse = DescribeDBClusterParameterGroupsResponse'
+    { _ddcpgrsMarker                   :: !(Maybe Text)
+    , _ddcpgrsDBClusterParameterGroups :: !(Maybe [DBClusterParameterGroup])
+    , _ddcpgrsStatus                   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBClusterParameterGroupsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddcpgrsMarker'
+--
+-- * 'ddcpgrsDBClusterParameterGroups'
+--
+-- * 'ddcpgrsStatus'
+describeDBClusterParameterGroupsResponse
+    :: Int -- ^ 'ddcpgrsStatus'
+    -> DescribeDBClusterParameterGroupsResponse
+describeDBClusterParameterGroupsResponse pStatus_ =
+    DescribeDBClusterParameterGroupsResponse'
+    { _ddcpgrsMarker = Nothing
+    , _ddcpgrsDBClusterParameterGroups = Nothing
+    , _ddcpgrsStatus = pStatus_
+    }
+
+-- | An optional pagination token provided by a previous
+-- 'DescribeDBClusterParameterGroups' request. If this parameter is
+-- specified, the response includes only records beyond the marker, up to
+-- the value specified by 'MaxRecords'.
+ddcpgrsMarker :: Lens' DescribeDBClusterParameterGroupsResponse (Maybe Text)
+ddcpgrsMarker = lens _ddcpgrsMarker (\ s a -> s{_ddcpgrsMarker = a});
+
+-- | A list of DB cluster parameter groups.
+ddcpgrsDBClusterParameterGroups :: Lens' DescribeDBClusterParameterGroupsResponse [DBClusterParameterGroup]
+ddcpgrsDBClusterParameterGroups = lens _ddcpgrsDBClusterParameterGroups (\ s a -> s{_ddcpgrsDBClusterParameterGroups = a}) . _Default . _Coerce;
+
+-- | The response status code.
+ddcpgrsStatus :: Lens' DescribeDBClusterParameterGroupsResponse Int
+ddcpgrsStatus = lens _ddcpgrsStatus (\ s a -> s{_ddcpgrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeDBClusterParameters.hs b/gen/Network/AWS/RDS/DescribeDBClusterParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/DescribeDBClusterParameters.hs
@@ -0,0 +1,206 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.DescribeDBClusterParameters
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the detailed parameter list for a particular DB cluster
+-- parameter group.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusterParameters.html AWS API Reference> for DescribeDBClusterParameters.
+module Network.AWS.RDS.DescribeDBClusterParameters
+    (
+    -- * Creating a Request
+      describeDBClusterParameters
+    , DescribeDBClusterParameters
+    -- * Request Lenses
+    , ddcpFilters
+    , ddcpMaxRecords
+    , ddcpMarker
+    , ddcpSource
+    , ddcpDBClusterParameterGroupName
+
+    -- * Destructuring the Response
+    , describeDBClusterParametersResponse
+    , DescribeDBClusterParametersResponse
+    -- * Response Lenses
+    , ddcprsParameters
+    , ddcprsMarker
+    , ddcprsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'describeDBClusterParameters' smart constructor.
+data DescribeDBClusterParameters = DescribeDBClusterParameters'
+    { _ddcpFilters                     :: !(Maybe [Filter])
+    , _ddcpMaxRecords                  :: !(Maybe Int)
+    , _ddcpMarker                      :: !(Maybe Text)
+    , _ddcpSource                      :: !(Maybe Text)
+    , _ddcpDBClusterParameterGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBClusterParameters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddcpFilters'
+--
+-- * 'ddcpMaxRecords'
+--
+-- * 'ddcpMarker'
+--
+-- * 'ddcpSource'
+--
+-- * 'ddcpDBClusterParameterGroupName'
+describeDBClusterParameters
+    :: Text -- ^ 'ddcpDBClusterParameterGroupName'
+    -> DescribeDBClusterParameters
+describeDBClusterParameters pDBClusterParameterGroupName_ =
+    DescribeDBClusterParameters'
+    { _ddcpFilters = Nothing
+    , _ddcpMaxRecords = Nothing
+    , _ddcpMarker = Nothing
+    , _ddcpSource = Nothing
+    , _ddcpDBClusterParameterGroupName = pDBClusterParameterGroupName_
+    }
+
+-- | This parameter is not currently supported.
+ddcpFilters :: Lens' DescribeDBClusterParameters [Filter]
+ddcpFilters = lens _ddcpFilters (\ s a -> s{_ddcpFilters = a}) . _Default . _Coerce;
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+ddcpMaxRecords :: Lens' DescribeDBClusterParameters (Maybe Int)
+ddcpMaxRecords = lens _ddcpMaxRecords (\ s a -> s{_ddcpMaxRecords = a});
+
+-- | An optional pagination token provided by a previous
+-- 'DescribeDBClusterParameters' request. If this parameter is specified,
+-- the response includes only records beyond the marker, up to the value
+-- specified by 'MaxRecords'.
+ddcpMarker :: Lens' DescribeDBClusterParameters (Maybe Text)
+ddcpMarker = lens _ddcpMarker (\ s a -> s{_ddcpMarker = a});
+
+-- | A value that indicates to return only parameters for a specific source.
+-- Parameter sources can be 'engine', 'service', or 'customer'.
+ddcpSource :: Lens' DescribeDBClusterParameters (Maybe Text)
+ddcpSource = lens _ddcpSource (\ s a -> s{_ddcpSource = a});
+
+-- | The name of a specific DB cluster parameter group to return parameter
+-- 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
+ddcpDBClusterParameterGroupName :: Lens' DescribeDBClusterParameters Text
+ddcpDBClusterParameterGroupName = lens _ddcpDBClusterParameterGroupName (\ s a -> s{_ddcpDBClusterParameterGroupName = a});
+
+instance AWSRequest DescribeDBClusterParameters where
+        type Sv DescribeDBClusterParameters = RDS
+        type Rs DescribeDBClusterParameters =
+             DescribeDBClusterParametersResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeDBClusterParametersResult"
+              (\ s h x ->
+                 DescribeDBClusterParametersResponse' <$>
+                   (x .@? "Parameters" .!@ mempty >>=
+                      may (parseXMLList "Parameter"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeDBClusterParameters where
+        toHeaders = const mempty
+
+instance ToPath DescribeDBClusterParameters where
+        toPath = const "/"
+
+instance ToQuery DescribeDBClusterParameters where
+        toQuery DescribeDBClusterParameters'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeDBClusterParameters" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ddcpFilters),
+               "MaxRecords" =: _ddcpMaxRecords,
+               "Marker" =: _ddcpMarker, "Source" =: _ddcpSource,
+               "DBClusterParameterGroupName" =:
+                 _ddcpDBClusterParameterGroupName]
+
+-- | Provides details about a DB cluster parameter group including the
+-- parameters in the DB cluster parameter group.
+--
+-- /See:/ 'describeDBClusterParametersResponse' smart constructor.
+data DescribeDBClusterParametersResponse = DescribeDBClusterParametersResponse'
+    { _ddcprsParameters :: !(Maybe [Parameter])
+    , _ddcprsMarker     :: !(Maybe Text)
+    , _ddcprsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBClusterParametersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddcprsParameters'
+--
+-- * 'ddcprsMarker'
+--
+-- * 'ddcprsStatus'
+describeDBClusterParametersResponse
+    :: Int -- ^ 'ddcprsStatus'
+    -> DescribeDBClusterParametersResponse
+describeDBClusterParametersResponse pStatus_ =
+    DescribeDBClusterParametersResponse'
+    { _ddcprsParameters = Nothing
+    , _ddcprsMarker = Nothing
+    , _ddcprsStatus = pStatus_
+    }
+
+-- | Provides a list of parameters for the DB cluster parameter group.
+ddcprsParameters :: Lens' DescribeDBClusterParametersResponse [Parameter]
+ddcprsParameters = lens _ddcprsParameters (\ s a -> s{_ddcprsParameters = a}) . _Default . _Coerce;
+
+-- | An optional pagination token provided by a previous
+-- DescribeDBClusterParameters request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by 'MaxRecords' .
+ddcprsMarker :: Lens' DescribeDBClusterParametersResponse (Maybe Text)
+ddcprsMarker = lens _ddcprsMarker (\ s a -> s{_ddcprsMarker = a});
+
+-- | The response status code.
+ddcprsStatus :: Lens' DescribeDBClusterParametersResponse Int
+ddcprsStatus = lens _ddcprsStatus (\ s a -> s{_ddcprsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeDBClusterSnapshots.hs b/gen/Network/AWS/RDS/DescribeDBClusterSnapshots.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/DescribeDBClusterSnapshots.hs
@@ -0,0 +1,229 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.DescribeDBClusterSnapshots
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about DB cluster snapshots. This API supports
+-- pagination.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusterSnapshots.html AWS API Reference> for DescribeDBClusterSnapshots.
+module Network.AWS.RDS.DescribeDBClusterSnapshots
+    (
+    -- * Creating a Request
+      describeDBClusterSnapshots
+    , DescribeDBClusterSnapshots
+    -- * Request Lenses
+    , ddbcsDBClusterIdentifier
+    , ddbcsDBClusterSnapshotIdentifier
+    , ddbcsFilters
+    , ddbcsSnapshotType
+    , ddbcsMaxRecords
+    , ddbcsMarker
+
+    -- * Destructuring the Response
+    , describeDBClusterSnapshotsResponse
+    , DescribeDBClusterSnapshotsResponse
+    -- * Response Lenses
+    , ddbcsrsMarker
+    , ddbcsrsDBClusterSnapshots
+    , ddbcsrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'describeDBClusterSnapshots' smart constructor.
+data DescribeDBClusterSnapshots = DescribeDBClusterSnapshots'
+    { _ddbcsDBClusterIdentifier         :: !(Maybe Text)
+    , _ddbcsDBClusterSnapshotIdentifier :: !(Maybe Text)
+    , _ddbcsFilters                     :: !(Maybe [Filter])
+    , _ddbcsSnapshotType                :: !(Maybe Text)
+    , _ddbcsMaxRecords                  :: !(Maybe Int)
+    , _ddbcsMarker                      :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBClusterSnapshots' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddbcsDBClusterIdentifier'
+--
+-- * 'ddbcsDBClusterSnapshotIdentifier'
+--
+-- * 'ddbcsFilters'
+--
+-- * 'ddbcsSnapshotType'
+--
+-- * 'ddbcsMaxRecords'
+--
+-- * 'ddbcsMarker'
+describeDBClusterSnapshots
+    :: DescribeDBClusterSnapshots
+describeDBClusterSnapshots =
+    DescribeDBClusterSnapshots'
+    { _ddbcsDBClusterIdentifier = Nothing
+    , _ddbcsDBClusterSnapshotIdentifier = Nothing
+    , _ddbcsFilters = Nothing
+    , _ddbcsSnapshotType = Nothing
+    , _ddbcsMaxRecords = Nothing
+    , _ddbcsMarker = Nothing
+    }
+
+-- | A DB cluster identifier to retrieve the list of DB cluster snapshots
+-- for. This parameter cannot be used in conjunction with the
+-- 'DBClusterSnapshotIdentifier' parameter. This parameter is not
+-- case-sensitive.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddbcsDBClusterIdentifier :: Lens' DescribeDBClusterSnapshots (Maybe Text)
+ddbcsDBClusterIdentifier = lens _ddbcsDBClusterIdentifier (\ s a -> s{_ddbcsDBClusterIdentifier = a});
+
+-- | A specific DB cluster snapshot identifier to describe. This parameter
+-- cannot be used in conjunction with the 'DBClusterIdentifier' parameter.
+-- This value is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+-- -   If this is the identifier of an automated snapshot, the
+--     'SnapshotType' parameter must also be specified.
+ddbcsDBClusterSnapshotIdentifier :: Lens' DescribeDBClusterSnapshots (Maybe Text)
+ddbcsDBClusterSnapshotIdentifier = lens _ddbcsDBClusterSnapshotIdentifier (\ s a -> s{_ddbcsDBClusterSnapshotIdentifier = a});
+
+-- | This parameter is not currently supported.
+ddbcsFilters :: Lens' DescribeDBClusterSnapshots [Filter]
+ddbcsFilters = lens _ddbcsFilters (\ s a -> s{_ddbcsFilters = a}) . _Default . _Coerce;
+
+-- | The type of DB cluster snapshots that will be returned. Values can be
+-- 'automated' or 'manual'. If this parameter is not specified, the
+-- returned results will include all snapshot types.
+ddbcsSnapshotType :: Lens' DescribeDBClusterSnapshots (Maybe Text)
+ddbcsSnapshotType = lens _ddbcsSnapshotType (\ s a -> s{_ddbcsSnapshotType = a});
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+ddbcsMaxRecords :: Lens' DescribeDBClusterSnapshots (Maybe Int)
+ddbcsMaxRecords = lens _ddbcsMaxRecords (\ s a -> s{_ddbcsMaxRecords = a});
+
+-- | An optional pagination token provided by a previous
+-- 'DescribeDBClusterSnapshots' request. If this parameter is specified,
+-- the response includes only records beyond the marker, up to the value
+-- specified by 'MaxRecords'.
+ddbcsMarker :: Lens' DescribeDBClusterSnapshots (Maybe Text)
+ddbcsMarker = lens _ddbcsMarker (\ s a -> s{_ddbcsMarker = a});
+
+instance AWSRequest DescribeDBClusterSnapshots where
+        type Sv DescribeDBClusterSnapshots = RDS
+        type Rs DescribeDBClusterSnapshots =
+             DescribeDBClusterSnapshotsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeDBClusterSnapshotsResult"
+              (\ s h x ->
+                 DescribeDBClusterSnapshotsResponse' <$>
+                   (x .@? "Marker") <*>
+                     (x .@? "DBClusterSnapshots" .!@ mempty >>=
+                        may (parseXMLList "DBClusterSnapshot"))
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeDBClusterSnapshots where
+        toHeaders = const mempty
+
+instance ToPath DescribeDBClusterSnapshots where
+        toPath = const "/"
+
+instance ToQuery DescribeDBClusterSnapshots where
+        toQuery DescribeDBClusterSnapshots'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeDBClusterSnapshots" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBClusterIdentifier" =: _ddbcsDBClusterIdentifier,
+               "DBClusterSnapshotIdentifier" =:
+                 _ddbcsDBClusterSnapshotIdentifier,
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ddbcsFilters),
+               "SnapshotType" =: _ddbcsSnapshotType,
+               "MaxRecords" =: _ddbcsMaxRecords,
+               "Marker" =: _ddbcsMarker]
+
+-- | Provides a list of DB cluster snapshots for the user as the result of a
+-- call to the DescribeDBClusterSnapshots action.
+--
+-- /See:/ 'describeDBClusterSnapshotsResponse' smart constructor.
+data DescribeDBClusterSnapshotsResponse = DescribeDBClusterSnapshotsResponse'
+    { _ddbcsrsMarker             :: !(Maybe Text)
+    , _ddbcsrsDBClusterSnapshots :: !(Maybe [DBClusterSnapshot])
+    , _ddbcsrsStatus             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBClusterSnapshotsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddbcsrsMarker'
+--
+-- * 'ddbcsrsDBClusterSnapshots'
+--
+-- * 'ddbcsrsStatus'
+describeDBClusterSnapshotsResponse
+    :: Int -- ^ 'ddbcsrsStatus'
+    -> DescribeDBClusterSnapshotsResponse
+describeDBClusterSnapshotsResponse pStatus_ =
+    DescribeDBClusterSnapshotsResponse'
+    { _ddbcsrsMarker = Nothing
+    , _ddbcsrsDBClusterSnapshots = Nothing
+    , _ddbcsrsStatus = pStatus_
+    }
+
+-- | An optional pagination token provided by a previous
+-- DescribeDBClusterSnapshots request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by 'MaxRecords'.
+ddbcsrsMarker :: Lens' DescribeDBClusterSnapshotsResponse (Maybe Text)
+ddbcsrsMarker = lens _ddbcsrsMarker (\ s a -> s{_ddbcsrsMarker = a});
+
+-- | Provides a list of DB cluster snapshots for the user.
+ddbcsrsDBClusterSnapshots :: Lens' DescribeDBClusterSnapshotsResponse [DBClusterSnapshot]
+ddbcsrsDBClusterSnapshots = lens _ddbcsrsDBClusterSnapshots (\ s a -> s{_ddbcsrsDBClusterSnapshots = a}) . _Default . _Coerce;
+
+-- | The response status code.
+ddbcsrsStatus :: Lens' DescribeDBClusterSnapshotsResponse Int
+ddbcsrsStatus = lens _ddbcsrsStatus (\ s a -> s{_ddbcsrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeDBClusters.hs b/gen/Network/AWS/RDS/DescribeDBClusters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/DescribeDBClusters.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.DescribeDBClusters
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about provisioned Aurora DB clusters. This API
+-- supports pagination.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusters.html AWS API Reference> for DescribeDBClusters.
+module Network.AWS.RDS.DescribeDBClusters
+    (
+    -- * Creating a Request
+      describeDBClusters
+    , DescribeDBClusters
+    -- * Request Lenses
+    , ddcDBClusterIdentifier
+    , ddcFilters
+    , ddcMaxRecords
+    , ddcMarker
+
+    -- * Destructuring the Response
+    , describeDBClustersResponse
+    , DescribeDBClustersResponse
+    -- * Response Lenses
+    , ddcrsDBClusters
+    , ddcrsMarker
+    , ddcrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'describeDBClusters' smart constructor.
+data DescribeDBClusters = DescribeDBClusters'
+    { _ddcDBClusterIdentifier :: !(Maybe Text)
+    , _ddcFilters             :: !(Maybe [Filter])
+    , _ddcMaxRecords          :: !(Maybe Int)
+    , _ddcMarker              :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBClusters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddcDBClusterIdentifier'
+--
+-- * 'ddcFilters'
+--
+-- * 'ddcMaxRecords'
+--
+-- * 'ddcMarker'
+describeDBClusters
+    :: DescribeDBClusters
+describeDBClusters =
+    DescribeDBClusters'
+    { _ddcDBClusterIdentifier = Nothing
+    , _ddcFilters = Nothing
+    , _ddcMaxRecords = Nothing
+    , _ddcMarker = Nothing
+    }
+
+-- | The user-supplied DB cluster identifier. If this parameter is specified,
+-- information from only the specific DB cluster is returned. This
+-- parameter isn\'t case-sensitive.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddcDBClusterIdentifier :: Lens' DescribeDBClusters (Maybe Text)
+ddcDBClusterIdentifier = lens _ddcDBClusterIdentifier (\ s a -> s{_ddcDBClusterIdentifier = a});
+
+-- | This parameter is not currently supported.
+ddcFilters :: Lens' DescribeDBClusters [Filter]
+ddcFilters = lens _ddcFilters (\ s a -> s{_ddcFilters = a}) . _Default . _Coerce;
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+ddcMaxRecords :: Lens' DescribeDBClusters (Maybe Int)
+ddcMaxRecords = lens _ddcMaxRecords (\ s a -> s{_ddcMaxRecords = a});
+
+-- | An optional pagination token provided by a previous DescribeDBClusters
+-- request. If this parameter is specified, the response includes only
+-- records beyond the marker, up to the value specified by 'MaxRecords'.
+ddcMarker :: Lens' DescribeDBClusters (Maybe Text)
+ddcMarker = lens _ddcMarker (\ s a -> s{_ddcMarker = a});
+
+instance AWSRequest DescribeDBClusters where
+        type Sv DescribeDBClusters = RDS
+        type Rs DescribeDBClusters =
+             DescribeDBClustersResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeDBClustersResult"
+              (\ s h x ->
+                 DescribeDBClustersResponse' <$>
+                   (x .@? "DBClusters" .!@ mempty >>=
+                      may (parseXMLList "DBCluster"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeDBClusters where
+        toHeaders = const mempty
+
+instance ToPath DescribeDBClusters where
+        toPath = const "/"
+
+instance ToQuery DescribeDBClusters where
+        toQuery DescribeDBClusters'{..}
+          = mconcat
+              ["Action" =: ("DescribeDBClusters" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBClusterIdentifier" =: _ddcDBClusterIdentifier,
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ddcFilters),
+               "MaxRecords" =: _ddcMaxRecords,
+               "Marker" =: _ddcMarker]
+
+-- | Contains the result of a successful invocation of the DescribeDBClusters
+-- action.
+--
+-- /See:/ 'describeDBClustersResponse' smart constructor.
+data DescribeDBClustersResponse = DescribeDBClustersResponse'
+    { _ddcrsDBClusters :: !(Maybe [DBCluster])
+    , _ddcrsMarker     :: !(Maybe Text)
+    , _ddcrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBClustersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddcrsDBClusters'
+--
+-- * 'ddcrsMarker'
+--
+-- * 'ddcrsStatus'
+describeDBClustersResponse
+    :: Int -- ^ 'ddcrsStatus'
+    -> DescribeDBClustersResponse
+describeDBClustersResponse pStatus_ =
+    DescribeDBClustersResponse'
+    { _ddcrsDBClusters = Nothing
+    , _ddcrsMarker = Nothing
+    , _ddcrsStatus = pStatus_
+    }
+
+-- | Contains a list of DB clusters for the user.
+ddcrsDBClusters :: Lens' DescribeDBClustersResponse [DBCluster]
+ddcrsDBClusters = lens _ddcrsDBClusters (\ s a -> s{_ddcrsDBClusters = a}) . _Default . _Coerce;
+
+-- | A pagination token that can be used in a subsequent DescribeDBClusters
+-- request.
+ddcrsMarker :: Lens' DescribeDBClustersResponse (Maybe Text)
+ddcrsMarker = lens _ddcrsMarker (\ s a -> s{_ddcrsMarker = a});
+
+-- | The response status code.
+ddcrsStatus :: Lens' DescribeDBClustersResponse Int
+ddcrsStatus = lens _ddcrsStatus (\ s a -> s{_ddcrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeDBEngineVersions.hs b/gen/Network/AWS/RDS/DescribeDBEngineVersions.hs
--- a/gen/Network/AWS/RDS/DescribeDBEngineVersions.hs
+++ b/gen/Network/AWS/RDS/DescribeDBEngineVersions.hs
@@ -1,219 +1,240 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeDBEngineVersions
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns a list of the available DB engines.
+-- Returns a list of the available DB engines.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBEngineVersions.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBEngineVersions.html AWS API Reference> for DescribeDBEngineVersions.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeDBEngineVersions
     (
-    -- * Request
-      DescribeDBEngineVersions
-    -- ** Request constructor
-    , describeDBEngineVersions
-    -- ** Request lenses
-    , ddbevDBParameterGroupFamily
-    , ddbevDefaultOnly
-    , ddbevEngine
-    , ddbevEngineVersion
-    , ddbevFilters
-    , ddbevListSupportedCharacterSets
-    , ddbevMarker
-    , ddbevMaxRecords
+    -- * Creating a Request
+      describeDBEngineVersions
+    , DescribeDBEngineVersions
+    -- * Request Lenses
+    , ddevEngineVersion
+    , ddevDefaultOnly
+    , ddevFilters
+    , ddevEngine
+    , ddevDBParameterGroupFamily
+    , ddevListSupportedCharacterSets
+    , ddevMaxRecords
+    , ddevMarker
 
-    -- * Response
-    , DescribeDBEngineVersionsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeDBEngineVersionsResponse
-    -- ** Response lenses
-    , ddbevrDBEngineVersions
-    , ddbevrMarker
+    , DescribeDBEngineVersionsResponse
+    -- * Response Lenses
+    , ddevrsMarker
+    , ddevrsDBEngineVersions
+    , ddevrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeDBEngineVersions = DescribeDBEngineVersions
-    { _ddbevDBParameterGroupFamily     :: Maybe Text
-    , _ddbevDefaultOnly                :: Maybe Bool
-    , _ddbevEngine                     :: Maybe Text
-    , _ddbevEngineVersion              :: Maybe Text
-    , _ddbevFilters                    :: List "member" Filter
-    , _ddbevListSupportedCharacterSets :: Maybe Bool
-    , _ddbevMarker                     :: Maybe Text
-    , _ddbevMaxRecords                 :: Maybe Int
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'describeDBEngineVersions' smart constructor.
+data DescribeDBEngineVersions = DescribeDBEngineVersions'
+    { _ddevEngineVersion              :: !(Maybe Text)
+    , _ddevDefaultOnly                :: !(Maybe Bool)
+    , _ddevFilters                    :: !(Maybe [Filter])
+    , _ddevEngine                     :: !(Maybe Text)
+    , _ddevDBParameterGroupFamily     :: !(Maybe Text)
+    , _ddevListSupportedCharacterSets :: !(Maybe Bool)
+    , _ddevMaxRecords                 :: !(Maybe Int)
+    , _ddevMarker                     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeDBEngineVersions' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeDBEngineVersions' with the minimum fields required to make a request.
 --
--- * 'ddbevDBParameterGroupFamily' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddbevDefaultOnly' @::@ 'Maybe' 'Bool'
+-- * 'ddevEngineVersion'
 --
--- * 'ddbevEngine' @::@ 'Maybe' 'Text'
+-- * 'ddevDefaultOnly'
 --
--- * 'ddbevEngineVersion' @::@ 'Maybe' 'Text'
+-- * 'ddevFilters'
 --
--- * 'ddbevFilters' @::@ ['Filter']
+-- * 'ddevEngine'
 --
--- * 'ddbevListSupportedCharacterSets' @::@ 'Maybe' 'Bool'
+-- * 'ddevDBParameterGroupFamily'
 --
--- * 'ddbevMarker' @::@ 'Maybe' 'Text'
+-- * 'ddevListSupportedCharacterSets'
 --
--- * 'ddbevMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'ddevMaxRecords'
 --
-describeDBEngineVersions :: DescribeDBEngineVersions
-describeDBEngineVersions = DescribeDBEngineVersions
-    { _ddbevEngine                     = Nothing
-    , _ddbevEngineVersion              = Nothing
-    , _ddbevDBParameterGroupFamily     = Nothing
-    , _ddbevFilters                    = mempty
-    , _ddbevMaxRecords                 = Nothing
-    , _ddbevMarker                     = Nothing
-    , _ddbevDefaultOnly                = Nothing
-    , _ddbevListSupportedCharacterSets = Nothing
+-- * 'ddevMarker'
+describeDBEngineVersions
+    :: DescribeDBEngineVersions
+describeDBEngineVersions =
+    DescribeDBEngineVersions'
+    { _ddevEngineVersion = Nothing
+    , _ddevDefaultOnly = Nothing
+    , _ddevFilters = Nothing
+    , _ddevEngine = Nothing
+    , _ddevDBParameterGroupFamily = Nothing
+    , _ddevListSupportedCharacterSets = Nothing
+    , _ddevMaxRecords = Nothing
+    , _ddevMarker = Nothing
     }
 
--- | The name of a specific DB 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 database engine version to return.
 --
-ddbevDBParameterGroupFamily :: Lens' DescribeDBEngineVersions (Maybe Text)
-ddbevDBParameterGroupFamily =
-    lens _ddbevDBParameterGroupFamily
-        (\s a -> s { _ddbevDBParameterGroupFamily = a })
+-- Example: '5.1.49'
+ddevEngineVersion :: Lens' DescribeDBEngineVersions (Maybe Text)
+ddevEngineVersion = lens _ddevEngineVersion (\ s a -> s{_ddevEngineVersion = a});
 
--- | Indicates that only the default version of the specified engine or engine
--- and major version combination is returned.
-ddbevDefaultOnly :: Lens' DescribeDBEngineVersions (Maybe Bool)
-ddbevDefaultOnly = lens _ddbevDefaultOnly (\s a -> s { _ddbevDefaultOnly = a })
+-- | Indicates that only the default version of the specified engine or
+-- engine and major version combination is returned.
+ddevDefaultOnly :: Lens' DescribeDBEngineVersions (Maybe Bool)
+ddevDefaultOnly = lens _ddevDefaultOnly (\ s a -> s{_ddevDefaultOnly = a});
 
+-- | Not currently supported.
+ddevFilters :: Lens' DescribeDBEngineVersions [Filter]
+ddevFilters = lens _ddevFilters (\ s a -> s{_ddevFilters = a}) . _Default . _Coerce;
+
 -- | The database engine to return.
-ddbevEngine :: Lens' DescribeDBEngineVersions (Maybe Text)
-ddbevEngine = lens _ddbevEngine (\s a -> s { _ddbevEngine = a })
+ddevEngine :: Lens' DescribeDBEngineVersions (Maybe Text)
+ddevEngine = lens _ddevEngine (\ s a -> s{_ddevEngine = a});
 
--- | The database engine version to return.
+-- | The name of a specific DB parameter group family to return details for.
 --
--- Example: '5.1.49'
-ddbevEngineVersion :: Lens' DescribeDBEngineVersions (Maybe Text)
-ddbevEngineVersion =
-    lens _ddbevEngineVersion (\s a -> s { _ddbevEngineVersion = a })
-
--- | Not currently supported.
-ddbevFilters :: Lens' DescribeDBEngineVersions [Filter]
-ddbevFilters = lens _ddbevFilters (\s a -> s { _ddbevFilters = a }) . _List
+-- Constraints:
+--
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddevDBParameterGroupFamily :: Lens' DescribeDBEngineVersions (Maybe Text)
+ddevDBParameterGroupFamily = lens _ddevDBParameterGroupFamily (\ s a -> s{_ddevDBParameterGroupFamily = a});
 
 -- | If this parameter is specified, and if the requested engine supports the
--- CharacterSetName parameter for CreateDBInstance, the response includes a list
--- of supported character sets for each engine version.
-ddbevListSupportedCharacterSets :: Lens' DescribeDBEngineVersions (Maybe Bool)
-ddbevListSupportedCharacterSets =
-    lens _ddbevListSupportedCharacterSets
-        (\s a -> s { _ddbevListSupportedCharacterSets = a })
-
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-ddbevMarker :: Lens' DescribeDBEngineVersions (Maybe Text)
-ddbevMarker = lens _ddbevMarker (\s a -> s { _ddbevMarker = a })
+-- CharacterSetName parameter for CreateDBInstance, the response includes a
+-- list of supported character sets for each engine version.
+ddevListSupportedCharacterSets :: Lens' DescribeDBEngineVersions (Maybe Bool)
+ddevListSupportedCharacterSets = lens _ddevListSupportedCharacterSets (\ s a -> s{_ddevListSupportedCharacterSets = a});
 
--- | The maximum number of records to include in the response. If more than the 'MaxRecords' value is available, a pagination token called a marker is included in the
--- response so that the following results can be retrieved.
+-- | The maximum number of records to include in the response. If more than
+-- the 'MaxRecords' value is available, a pagination token called a marker
+-- is included in the response so that the following results can be
+-- retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
-ddbevMaxRecords :: Lens' DescribeDBEngineVersions (Maybe Int)
-ddbevMaxRecords = lens _ddbevMaxRecords (\s a -> s { _ddbevMaxRecords = a })
+-- Constraints: Minimum 20, maximum 100.
+ddevMaxRecords :: Lens' DescribeDBEngineVersions (Maybe Int)
+ddevMaxRecords = lens _ddevMaxRecords (\ s a -> s{_ddevMaxRecords = a});
 
-data DescribeDBEngineVersionsResponse = DescribeDBEngineVersionsResponse
-    { _ddbevrDBEngineVersions :: List "member" DBEngineVersion
-    , _ddbevrMarker           :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+ddevMarker :: Lens' DescribeDBEngineVersions (Maybe Text)
+ddevMarker = lens _ddevMarker (\ s a -> s{_ddevMarker = a});
 
--- | 'DescribeDBEngineVersionsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddbevrDBEngineVersions' @::@ ['DBEngineVersion']
---
--- * 'ddbevrMarker' @::@ 'Maybe' 'Text'
---
-describeDBEngineVersionsResponse :: DescribeDBEngineVersionsResponse
-describeDBEngineVersionsResponse = DescribeDBEngineVersionsResponse
-    { _ddbevrMarker           = Nothing
-    , _ddbevrDBEngineVersions = mempty
-    }
+instance AWSPager DescribeDBEngineVersions where
+        page rq rs
+          | stop (rs ^. ddevrsMarker) = Nothing
+          | stop (rs ^. ddevrsDBEngineVersions) = Nothing
+          | otherwise =
+            Just $ rq & ddevMarker .~ rs ^. ddevrsMarker
 
--- | A list of 'DBEngineVersion' elements.
-ddbevrDBEngineVersions :: Lens' DescribeDBEngineVersionsResponse [DBEngineVersion]
-ddbevrDBEngineVersions =
-    lens _ddbevrDBEngineVersions (\s a -> s { _ddbevrDBEngineVersions = a })
-        . _List
+instance AWSRequest DescribeDBEngineVersions where
+        type Sv DescribeDBEngineVersions = RDS
+        type Rs DescribeDBEngineVersions =
+             DescribeDBEngineVersionsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeDBEngineVersionsResult"
+              (\ s h x ->
+                 DescribeDBEngineVersionsResponse' <$>
+                   (x .@? "Marker") <*>
+                     (x .@? "DBEngineVersions" .!@ mempty >>=
+                        may (parseXMLList "DBEngineVersion"))
+                     <*> (pure (fromEnum s)))
 
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-ddbevrMarker :: Lens' DescribeDBEngineVersionsResponse (Maybe Text)
-ddbevrMarker = lens _ddbevrMarker (\s a -> s { _ddbevrMarker = a })
+instance ToHeaders DescribeDBEngineVersions where
+        toHeaders = const mempty
 
 instance ToPath DescribeDBEngineVersions where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeDBEngineVersions where
-    toQuery DescribeDBEngineVersions{..} = mconcat
-        [ "DBParameterGroupFamily"     =? _ddbevDBParameterGroupFamily
-        , "DefaultOnly"                =? _ddbevDefaultOnly
-        , "Engine"                     =? _ddbevEngine
-        , "EngineVersion"              =? _ddbevEngineVersion
-        , "Filters"                    =? _ddbevFilters
-        , "ListSupportedCharacterSets" =? _ddbevListSupportedCharacterSets
-        , "Marker"                     =? _ddbevMarker
-        , "MaxRecords"                 =? _ddbevMaxRecords
-        ]
+        toQuery DescribeDBEngineVersions'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeDBEngineVersions" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "EngineVersion" =: _ddevEngineVersion,
+               "DefaultOnly" =: _ddevDefaultOnly,
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ddevFilters),
+               "Engine" =: _ddevEngine,
+               "DBParameterGroupFamily" =:
+                 _ddevDBParameterGroupFamily,
+               "ListSupportedCharacterSets" =:
+                 _ddevListSupportedCharacterSets,
+               "MaxRecords" =: _ddevMaxRecords,
+               "Marker" =: _ddevMarker]
 
-instance ToHeaders DescribeDBEngineVersions
+-- | Contains the result of a successful invocation of the
+-- DescribeDBEngineVersions action.
+--
+-- /See:/ 'describeDBEngineVersionsResponse' smart constructor.
+data DescribeDBEngineVersionsResponse = DescribeDBEngineVersionsResponse'
+    { _ddevrsMarker           :: !(Maybe Text)
+    , _ddevrsDBEngineVersions :: !(Maybe [DBEngineVersion])
+    , _ddevrsStatus           :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeDBEngineVersions where
-    type Sv DescribeDBEngineVersions = RDS
-    type Rs DescribeDBEngineVersions = DescribeDBEngineVersionsResponse
+-- | Creates a value of 'DescribeDBEngineVersionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddevrsMarker'
+--
+-- * 'ddevrsDBEngineVersions'
+--
+-- * 'ddevrsStatus'
+describeDBEngineVersionsResponse
+    :: Int -- ^ 'ddevrsStatus'
+    -> DescribeDBEngineVersionsResponse
+describeDBEngineVersionsResponse pStatus_ =
+    DescribeDBEngineVersionsResponse'
+    { _ddevrsMarker = Nothing
+    , _ddevrsDBEngineVersions = Nothing
+    , _ddevrsStatus = pStatus_
+    }
 
-    request  = post "DescribeDBEngineVersions"
-    response = xmlResponse
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+ddevrsMarker :: Lens' DescribeDBEngineVersionsResponse (Maybe Text)
+ddevrsMarker = lens _ddevrsMarker (\ s a -> s{_ddevrsMarker = a});
 
-instance FromXML DescribeDBEngineVersionsResponse where
-    parseXML = withElement "DescribeDBEngineVersionsResult" $ \x -> DescribeDBEngineVersionsResponse
-        <$> x .@? "DBEngineVersions" .!@ mempty
-        <*> x .@? "Marker"
+-- | A list of 'DBEngineVersion' elements.
+ddevrsDBEngineVersions :: Lens' DescribeDBEngineVersionsResponse [DBEngineVersion]
+ddevrsDBEngineVersions = lens _ddevrsDBEngineVersions (\ s a -> s{_ddevrsDBEngineVersions = a}) . _Default . _Coerce;
 
-instance AWSPager DescribeDBEngineVersions where
-    page rq rs
-        | stop (rs ^. ddbevrMarker) = Nothing
-        | otherwise = (\x -> rq & ddbevMarker ?~ x)
-            <$> (rs ^. ddbevrMarker)
+-- | The response status code.
+ddevrsStatus :: Lens' DescribeDBEngineVersionsResponse Int
+ddevrsStatus = lens _ddevrsStatus (\ s a -> s{_ddevrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeDBInstances.hs b/gen/Network/AWS/RDS/DescribeDBInstances.hs
--- a/gen/Network/AWS/RDS/DescribeDBInstances.hs
+++ b/gen/Network/AWS/RDS/DescribeDBInstances.hs
@@ -1,174 +1,198 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeDBInstances
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns information about provisioned RDS instances. This API supports
+-- Returns information about provisioned RDS instances. This API supports
 -- pagination.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html AWS API Reference> for DescribeDBInstances.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeDBInstances
     (
-    -- * Request
-      DescribeDBInstances
-    -- ** Request constructor
-    , describeDBInstances
-    -- ** Request lenses
-    , ddbi1DBInstanceIdentifier
-    , ddbi1Filters
-    , ddbi1Marker
-    , ddbi1MaxRecords
+    -- * Creating a Request
+      describeDBInstances
+    , DescribeDBInstances
+    -- * Request Lenses
+    , ddbiFilters
+    , ddbiDBInstanceIdentifier
+    , ddbiMaxRecords
+    , ddbiMarker
 
-    -- * Response
-    , DescribeDBInstancesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeDBInstancesResponse
-    -- ** Response lenses
-    , ddbirDBInstances
-    , ddbirMarker
+    , DescribeDBInstancesResponse
+    -- * Response Lenses
+    , ddbirsDBInstances
+    , ddbirsMarker
+    , ddbirsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeDBInstances = DescribeDBInstances
-    { _ddbi1DBInstanceIdentifier :: Maybe Text
-    , _ddbi1Filters              :: List "member" Filter
-    , _ddbi1Marker               :: Maybe Text
-    , _ddbi1MaxRecords           :: Maybe Int
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeDBInstances' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeDBInstances' smart constructor.
+data DescribeDBInstances = DescribeDBInstances'
+    { _ddbiFilters              :: !(Maybe [Filter])
+    , _ddbiDBInstanceIdentifier :: !(Maybe Text)
+    , _ddbiMaxRecords           :: !(Maybe Int)
+    , _ddbiMarker               :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBInstances' with the minimum fields required to make a request.
 --
--- * 'ddbi1DBInstanceIdentifier' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddbi1Filters' @::@ ['Filter']
+-- * 'ddbiFilters'
 --
--- * 'ddbi1Marker' @::@ 'Maybe' 'Text'
+-- * 'ddbiDBInstanceIdentifier'
 --
--- * 'ddbi1MaxRecords' @::@ 'Maybe' 'Int'
+-- * 'ddbiMaxRecords'
 --
-describeDBInstances :: DescribeDBInstances
-describeDBInstances = DescribeDBInstances
-    { _ddbi1DBInstanceIdentifier = Nothing
-    , _ddbi1Filters              = mempty
-    , _ddbi1MaxRecords           = Nothing
-    , _ddbi1Marker               = Nothing
+-- * 'ddbiMarker'
+describeDBInstances
+    :: DescribeDBInstances
+describeDBInstances =
+    DescribeDBInstances'
+    { _ddbiFilters = Nothing
+    , _ddbiDBInstanceIdentifier = Nothing
+    , _ddbiMaxRecords = Nothing
+    , _ddbiMarker = Nothing
     }
 
+-- | This parameter is not currently supported.
+ddbiFilters :: Lens' DescribeDBInstances [Filter]
+ddbiFilters = lens _ddbiFilters (\ s a -> s{_ddbiFilters = a}) . _Default . _Coerce;
+
 -- | The user-supplied instance identifier. If this parameter is specified,
--- information from only the specific DB instance is returned. This parameter
--- isn't case sensitive.
+-- information from only the specific DB instance is returned. This
+-- parameter isn\'t case-sensitive.
 --
 -- Constraints:
 --
--- Must contain from 1 to 63 alphanumeric characters or hyphens First
--- character must be a letter Cannot end with a hyphen or contain two
--- consecutive hyphens
-ddbi1DBInstanceIdentifier :: Lens' DescribeDBInstances (Maybe Text)
-ddbi1DBInstanceIdentifier =
-    lens _ddbi1DBInstanceIdentifier
-        (\s a -> s { _ddbi1DBInstanceIdentifier = a })
-
--- | This parameter is not currently supported.
-ddbi1Filters :: Lens' DescribeDBInstances [Filter]
-ddbi1Filters = lens _ddbi1Filters (\s a -> s { _ddbi1Filters = a }) . _List
-
--- | An optional pagination token provided by a previous DescribeDBInstances
--- request. If this parameter is specified, the response includes only records
--- beyond the marker, up to the value specified by 'MaxRecords' .
-ddbi1Marker :: Lens' DescribeDBInstances (Maybe Text)
-ddbi1Marker = lens _ddbi1Marker (\s a -> s { _ddbi1Marker = a })
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddbiDBInstanceIdentifier :: Lens' DescribeDBInstances (Maybe Text)
+ddbiDBInstanceIdentifier = lens _ddbiDBInstanceIdentifier (\ s a -> s{_ddbiDBInstanceIdentifier = a});
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results may be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
-ddbi1MaxRecords :: Lens' DescribeDBInstances (Maybe Int)
-ddbi1MaxRecords = lens _ddbi1MaxRecords (\s a -> s { _ddbi1MaxRecords = a })
+-- Constraints: Minimum 20, maximum 100.
+ddbiMaxRecords :: Lens' DescribeDBInstances (Maybe Int)
+ddbiMaxRecords = lens _ddbiMaxRecords (\ s a -> s{_ddbiMaxRecords = a});
 
-data DescribeDBInstancesResponse = DescribeDBInstancesResponse
-    { _ddbirDBInstances :: List "member" DBInstance
-    , _ddbirMarker      :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | An optional pagination token provided by a previous
+-- 'DescribeDBInstances' request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by 'MaxRecords'.
+ddbiMarker :: Lens' DescribeDBInstances (Maybe Text)
+ddbiMarker = lens _ddbiMarker (\ s a -> s{_ddbiMarker = a});
 
--- | 'DescribeDBInstancesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddbirDBInstances' @::@ ['DBInstance']
---
--- * 'ddbirMarker' @::@ 'Maybe' 'Text'
---
-describeDBInstancesResponse :: DescribeDBInstancesResponse
-describeDBInstancesResponse = DescribeDBInstancesResponse
-    { _ddbirMarker      = Nothing
-    , _ddbirDBInstances = mempty
-    }
+instance AWSPager DescribeDBInstances where
+        page rq rs
+          | stop (rs ^. ddbirsMarker) = Nothing
+          | stop (rs ^. ddbirsDBInstances) = Nothing
+          | otherwise =
+            Just $ rq & ddbiMarker .~ rs ^. ddbirsMarker
 
--- | A list of 'DBInstance' instances.
-ddbirDBInstances :: Lens' DescribeDBInstancesResponse [DBInstance]
-ddbirDBInstances = lens _ddbirDBInstances (\s a -> s { _ddbirDBInstances = a }) . _List
+instance AWSRequest DescribeDBInstances where
+        type Sv DescribeDBInstances = RDS
+        type Rs DescribeDBInstances =
+             DescribeDBInstancesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeDBInstancesResult"
+              (\ s h x ->
+                 DescribeDBInstancesResponse' <$>
+                   (x .@? "DBInstances" .!@ mempty >>=
+                      may (parseXMLList "DBInstance"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords' .
-ddbirMarker :: Lens' DescribeDBInstancesResponse (Maybe Text)
-ddbirMarker = lens _ddbirMarker (\s a -> s { _ddbirMarker = a })
+instance ToHeaders DescribeDBInstances where
+        toHeaders = const mempty
 
 instance ToPath DescribeDBInstances where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeDBInstances where
-    toQuery DescribeDBInstances{..} = mconcat
-        [ "DBInstanceIdentifier" =? _ddbi1DBInstanceIdentifier
-        , "Filters"              =? _ddbi1Filters
-        , "Marker"               =? _ddbi1Marker
-        , "MaxRecords"           =? _ddbi1MaxRecords
-        ]
+        toQuery DescribeDBInstances'{..}
+          = mconcat
+              ["Action" =: ("DescribeDBInstances" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ddbiFilters),
+               "DBInstanceIdentifier" =: _ddbiDBInstanceIdentifier,
+               "MaxRecords" =: _ddbiMaxRecords,
+               "Marker" =: _ddbiMarker]
 
-instance ToHeaders DescribeDBInstances
+-- | Contains the result of a successful invocation of the
+-- DescribeDBInstances action.
+--
+-- /See:/ 'describeDBInstancesResponse' smart constructor.
+data DescribeDBInstancesResponse = DescribeDBInstancesResponse'
+    { _ddbirsDBInstances :: !(Maybe [DBInstance])
+    , _ddbirsMarker      :: !(Maybe Text)
+    , _ddbirsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeDBInstances where
-    type Sv DescribeDBInstances = RDS
-    type Rs DescribeDBInstances = DescribeDBInstancesResponse
+-- | Creates a value of 'DescribeDBInstancesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddbirsDBInstances'
+--
+-- * 'ddbirsMarker'
+--
+-- * 'ddbirsStatus'
+describeDBInstancesResponse
+    :: Int -- ^ 'ddbirsStatus'
+    -> DescribeDBInstancesResponse
+describeDBInstancesResponse pStatus_ =
+    DescribeDBInstancesResponse'
+    { _ddbirsDBInstances = Nothing
+    , _ddbirsMarker = Nothing
+    , _ddbirsStatus = pStatus_
+    }
 
-    request  = post "DescribeDBInstances"
-    response = xmlResponse
+-- | A list of DBInstance instances.
+ddbirsDBInstances :: Lens' DescribeDBInstancesResponse [DBInstance]
+ddbirsDBInstances = lens _ddbirsDBInstances (\ s a -> s{_ddbirsDBInstances = a}) . _Default . _Coerce;
 
-instance FromXML DescribeDBInstancesResponse where
-    parseXML = withElement "DescribeDBInstancesResult" $ \x -> DescribeDBInstancesResponse
-        <$> x .@? "DBInstances" .!@ mempty
-        <*> x .@? "Marker"
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords' .
+ddbirsMarker :: Lens' DescribeDBInstancesResponse (Maybe Text)
+ddbirsMarker = lens _ddbirsMarker (\ s a -> s{_ddbirsMarker = a});
 
-instance AWSPager DescribeDBInstances where
-    page rq rs
-        | stop (rs ^. ddbirMarker) = Nothing
-        | otherwise = (\x -> rq & ddbi1Marker ?~ x)
-            <$> (rs ^. ddbirMarker)
+-- | The response status code.
+ddbirsStatus :: Lens' DescribeDBInstancesResponse Int
+ddbirsStatus = lens _ddbirsStatus (\ s a -> s{_ddbirsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeDBLogFiles.hs b/gen/Network/AWS/RDS/DescribeDBLogFiles.hs
--- a/gen/Network/AWS/RDS/DescribeDBLogFiles.hs
+++ b/gen/Network/AWS/RDS/DescribeDBLogFiles.hs
@@ -1,205 +1,223 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeDBLogFiles
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns a list of DB log files for the DB instance.
+-- Returns a list of DB log files for the DB instance.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html AWS API Reference> for DescribeDBLogFiles.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeDBLogFiles
     (
-    -- * Request
-      DescribeDBLogFiles
-    -- ** Request constructor
-    , describeDBLogFiles
-    -- ** Request lenses
-    , ddblfDBInstanceIdentifier
-    , ddblfFileLastWritten
-    , ddblfFileSize
-    , ddblfFilenameContains
-    , ddblfFilters
-    , ddblfMarker
-    , ddblfMaxRecords
+    -- * Creating a Request
+      describeDBLogFiles
+    , DescribeDBLogFiles
+    -- * Request Lenses
+    , ddlfFilenameContains
+    , ddlfFileSize
+    , ddlfFileLastWritten
+    , ddlfFilters
+    , ddlfMaxRecords
+    , ddlfMarker
+    , ddlfDBInstanceIdentifier
 
-    -- * Response
-    , DescribeDBLogFilesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeDBLogFilesResponse
-    -- ** Response lenses
-    , ddblfrDescribeDBLogFiles
-    , ddblfrMarker
+    , DescribeDBLogFilesResponse
+    -- * Response Lenses
+    , ddlfrsDescribeDBLogFiles
+    , ddlfrsMarker
+    , ddlfrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeDBLogFiles = DescribeDBLogFiles
-    { _ddblfDBInstanceIdentifier :: Text
-    , _ddblfFileLastWritten      :: Maybe Integer
-    , _ddblfFileSize             :: Maybe Integer
-    , _ddblfFilenameContains     :: Maybe Text
-    , _ddblfFilters              :: List "member" Filter
-    , _ddblfMarker               :: Maybe Text
-    , _ddblfMaxRecords           :: Maybe Int
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeDBLogFiles' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeDBLogFiles' smart constructor.
+data DescribeDBLogFiles = DescribeDBLogFiles'
+    { _ddlfFilenameContains     :: !(Maybe Text)
+    , _ddlfFileSize             :: !(Maybe Integer)
+    , _ddlfFileLastWritten      :: !(Maybe Integer)
+    , _ddlfFilters              :: !(Maybe [Filter])
+    , _ddlfMaxRecords           :: !(Maybe Int)
+    , _ddlfMarker               :: !(Maybe Text)
+    , _ddlfDBInstanceIdentifier :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBLogFiles' with the minimum fields required to make a request.
 --
--- * 'ddblfDBInstanceIdentifier' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddblfFileLastWritten' @::@ 'Maybe' 'Integer'
+-- * 'ddlfFilenameContains'
 --
--- * 'ddblfFileSize' @::@ 'Maybe' 'Integer'
+-- * 'ddlfFileSize'
 --
--- * 'ddblfFilenameContains' @::@ 'Maybe' 'Text'
+-- * 'ddlfFileLastWritten'
 --
--- * 'ddblfFilters' @::@ ['Filter']
+-- * 'ddlfFilters'
 --
--- * 'ddblfMarker' @::@ 'Maybe' 'Text'
+-- * 'ddlfMaxRecords'
 --
--- * 'ddblfMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'ddlfMarker'
 --
-describeDBLogFiles :: Text -- ^ 'ddblfDBInstanceIdentifier'
-                   -> DescribeDBLogFiles
-describeDBLogFiles p1 = DescribeDBLogFiles
-    { _ddblfDBInstanceIdentifier = p1
-    , _ddblfFilenameContains     = Nothing
-    , _ddblfFileLastWritten      = Nothing
-    , _ddblfFileSize             = Nothing
-    , _ddblfFilters              = mempty
-    , _ddblfMaxRecords           = Nothing
-    , _ddblfMarker               = Nothing
+-- * 'ddlfDBInstanceIdentifier'
+describeDBLogFiles
+    :: Text -- ^ 'ddlfDBInstanceIdentifier'
+    -> DescribeDBLogFiles
+describeDBLogFiles pDBInstanceIdentifier_ =
+    DescribeDBLogFiles'
+    { _ddlfFilenameContains = Nothing
+    , _ddlfFileSize = Nothing
+    , _ddlfFileLastWritten = Nothing
+    , _ddlfFilters = Nothing
+    , _ddlfMaxRecords = Nothing
+    , _ddlfMarker = Nothing
+    , _ddlfDBInstanceIdentifier = pDBInstanceIdentifier_
     }
 
--- | The customer-assigned name of the DB instance that contains the log files
--- you want to list.
+-- | Filters the available log files for log file names that contain the
+-- specified string.
+ddlfFilenameContains :: Lens' DescribeDBLogFiles (Maybe Text)
+ddlfFilenameContains = lens _ddlfFilenameContains (\ s a -> s{_ddlfFilenameContains = a});
+
+-- | Filters the available log files for files larger than the specified
+-- size.
+ddlfFileSize :: Lens' DescribeDBLogFiles (Maybe Integer)
+ddlfFileSize = lens _ddlfFileSize (\ s a -> s{_ddlfFileSize = a});
+
+-- | Filters the available log files for files written since the specified
+-- date, in POSIX timestamp format with milliseconds.
+ddlfFileLastWritten :: Lens' DescribeDBLogFiles (Maybe Integer)
+ddlfFileLastWritten = lens _ddlfFileLastWritten (\ s a -> s{_ddlfFileLastWritten = a});
+
+-- | This parameter is not currently supported.
+ddlfFilters :: Lens' DescribeDBLogFiles [Filter]
+ddlfFilters = lens _ddlfFilters (\ s a -> s{_ddlfFilters = a}) . _Default . _Coerce;
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified MaxRecords value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
+ddlfMaxRecords :: Lens' DescribeDBLogFiles (Maybe Int)
+ddlfMaxRecords = lens _ddlfMaxRecords (\ s a -> s{_ddlfMaxRecords = a});
+
+-- | The pagination token provided in the previous request. If this parameter
+-- is specified the response includes only records beyond the marker, up to
+-- MaxRecords.
+ddlfMarker :: Lens' DescribeDBLogFiles (Maybe Text)
+ddlfMarker = lens _ddlfMarker (\ s a -> s{_ddlfMarker = a});
+
+-- | The customer-assigned name of the DB instance that contains the log
+-- files you want to list.
 --
 -- Constraints:
 --
--- Must contain from 1 to 63 alphanumeric characters or hyphens First
--- character must be a letter Cannot end with a hyphen or contain two
--- consecutive hyphens
-ddblfDBInstanceIdentifier :: Lens' DescribeDBLogFiles Text
-ddblfDBInstanceIdentifier =
-    lens _ddblfDBInstanceIdentifier
-        (\s a -> s { _ddblfDBInstanceIdentifier = a })
-
--- | Filters the available log files for files written since the specified date,
--- in POSIX timestamp format.
-ddblfFileLastWritten :: Lens' DescribeDBLogFiles (Maybe Integer)
-ddblfFileLastWritten =
-    lens _ddblfFileLastWritten (\s a -> s { _ddblfFileLastWritten = a })
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddlfDBInstanceIdentifier :: Lens' DescribeDBLogFiles Text
+ddlfDBInstanceIdentifier = lens _ddlfDBInstanceIdentifier (\ s a -> s{_ddlfDBInstanceIdentifier = a});
 
--- | Filters the available log files for files larger than the specified size.
-ddblfFileSize :: Lens' DescribeDBLogFiles (Maybe Integer)
-ddblfFileSize = lens _ddblfFileSize (\s a -> s { _ddblfFileSize = a })
+instance AWSPager DescribeDBLogFiles where
+        page rq rs
+          | stop (rs ^. ddlfrsMarker) = Nothing
+          | stop (rs ^. ddlfrsDescribeDBLogFiles) = Nothing
+          | otherwise =
+            Just $ rq & ddlfMarker .~ rs ^. ddlfrsMarker
 
--- | Filters the available log files for log file names that contain the
--- specified string.
-ddblfFilenameContains :: Lens' DescribeDBLogFiles (Maybe Text)
-ddblfFilenameContains =
-    lens _ddblfFilenameContains (\s a -> s { _ddblfFilenameContains = a })
+instance AWSRequest DescribeDBLogFiles where
+        type Sv DescribeDBLogFiles = RDS
+        type Rs DescribeDBLogFiles =
+             DescribeDBLogFilesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeDBLogFilesResult"
+              (\ s h x ->
+                 DescribeDBLogFilesResponse' <$>
+                   (x .@? "DescribeDBLogFiles" .!@ mempty >>=
+                      may (parseXMLList "DescribeDBLogFilesDetails"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
--- | This parameter is not currently supported.
-ddblfFilters :: Lens' DescribeDBLogFiles [Filter]
-ddblfFilters = lens _ddblfFilters (\s a -> s { _ddblfFilters = a }) . _List
+instance ToHeaders DescribeDBLogFiles where
+        toHeaders = const mempty
 
--- | The pagination token provided in the previous request. If this parameter is
--- specified the response includes only records beyond the marker, up to
--- MaxRecords.
-ddblfMarker :: Lens' DescribeDBLogFiles (Maybe Text)
-ddblfMarker = lens _ddblfMarker (\s a -> s { _ddblfMarker = a })
+instance ToPath DescribeDBLogFiles where
+        toPath = const "/"
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified MaxRecords value, a pagination token called a marker
--- is included in the response so that the remaining results can be retrieved.
-ddblfMaxRecords :: Lens' DescribeDBLogFiles (Maybe Int)
-ddblfMaxRecords = lens _ddblfMaxRecords (\s a -> s { _ddblfMaxRecords = a })
+instance ToQuery DescribeDBLogFiles where
+        toQuery DescribeDBLogFiles'{..}
+          = mconcat
+              ["Action" =: ("DescribeDBLogFiles" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "FilenameContains" =: _ddlfFilenameContains,
+               "FileSize" =: _ddlfFileSize,
+               "FileLastWritten" =: _ddlfFileLastWritten,
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ddlfFilters),
+               "MaxRecords" =: _ddlfMaxRecords,
+               "Marker" =: _ddlfMarker,
+               "DBInstanceIdentifier" =: _ddlfDBInstanceIdentifier]
 
-data DescribeDBLogFilesResponse = DescribeDBLogFilesResponse
-    { _ddblfrDescribeDBLogFiles :: List "member" DescribeDBLogFilesDetails
-    , _ddblfrMarker             :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | The response from a call to DescribeDBLogFiles.
+--
+-- /See:/ 'describeDBLogFilesResponse' smart constructor.
+data DescribeDBLogFilesResponse = DescribeDBLogFilesResponse'
+    { _ddlfrsDescribeDBLogFiles :: !(Maybe [DescribeDBLogFilesDetails])
+    , _ddlfrsMarker             :: !(Maybe Text)
+    , _ddlfrsStatus             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeDBLogFilesResponse' constructor.
+-- | Creates a value of 'DescribeDBLogFilesResponse' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddblfrDescribeDBLogFiles' @::@ ['DescribeDBLogFilesDetails']
+-- * 'ddlfrsDescribeDBLogFiles'
 --
--- * 'ddblfrMarker' @::@ 'Maybe' 'Text'
+-- * 'ddlfrsMarker'
 --
-describeDBLogFilesResponse :: DescribeDBLogFilesResponse
-describeDBLogFilesResponse = DescribeDBLogFilesResponse
-    { _ddblfrDescribeDBLogFiles = mempty
-    , _ddblfrMarker             = Nothing
+-- * 'ddlfrsStatus'
+describeDBLogFilesResponse
+    :: Int -- ^ 'ddlfrsStatus'
+    -> DescribeDBLogFilesResponse
+describeDBLogFilesResponse pStatus_ =
+    DescribeDBLogFilesResponse'
+    { _ddlfrsDescribeDBLogFiles = Nothing
+    , _ddlfrsMarker = Nothing
+    , _ddlfrsStatus = pStatus_
     }
 
 -- | The DB log files returned.
-ddblfrDescribeDBLogFiles :: Lens' DescribeDBLogFilesResponse [DescribeDBLogFilesDetails]
-ddblfrDescribeDBLogFiles =
-    lens _ddblfrDescribeDBLogFiles
-        (\s a -> s { _ddblfrDescribeDBLogFiles = a })
-            . _List
+ddlfrsDescribeDBLogFiles :: Lens' DescribeDBLogFilesResponse [DescribeDBLogFilesDetails]
+ddlfrsDescribeDBLogFiles = lens _ddlfrsDescribeDBLogFiles (\ s a -> s{_ddlfrsDescribeDBLogFiles = a}) . _Default . _Coerce;
 
 -- | A pagination token that can be used in a subsequent DescribeDBLogFiles
 -- request.
-ddblfrMarker :: Lens' DescribeDBLogFilesResponse (Maybe Text)
-ddblfrMarker = lens _ddblfrMarker (\s a -> s { _ddblfrMarker = a })
-
-instance ToPath DescribeDBLogFiles where
-    toPath = const "/"
-
-instance ToQuery DescribeDBLogFiles where
-    toQuery DescribeDBLogFiles{..} = mconcat
-        [ "DBInstanceIdentifier" =? _ddblfDBInstanceIdentifier
-        , "FileLastWritten"      =? _ddblfFileLastWritten
-        , "FileSize"             =? _ddblfFileSize
-        , "FilenameContains"     =? _ddblfFilenameContains
-        , "Filters"              =? _ddblfFilters
-        , "Marker"               =? _ddblfMarker
-        , "MaxRecords"           =? _ddblfMaxRecords
-        ]
-
-instance ToHeaders DescribeDBLogFiles
-
-instance AWSRequest DescribeDBLogFiles where
-    type Sv DescribeDBLogFiles = RDS
-    type Rs DescribeDBLogFiles = DescribeDBLogFilesResponse
-
-    request  = post "DescribeDBLogFiles"
-    response = xmlResponse
-
-instance FromXML DescribeDBLogFilesResponse where
-    parseXML = withElement "DescribeDBLogFilesResult" $ \x -> DescribeDBLogFilesResponse
-        <$> x .@? "DescribeDBLogFiles" .!@ mempty
-        <*> x .@? "Marker"
+ddlfrsMarker :: Lens' DescribeDBLogFilesResponse (Maybe Text)
+ddlfrsMarker = lens _ddlfrsMarker (\ s a -> s{_ddlfrsMarker = a});
 
-instance AWSPager DescribeDBLogFiles where
-    page rq rs
-        | stop (rs ^. ddblfrMarker) = Nothing
-        | otherwise = (\x -> rq & ddblfMarker ?~ x)
-            <$> (rs ^. ddblfrMarker)
+-- | The response status code.
+ddlfrsStatus :: Lens' DescribeDBLogFilesResponse Int
+ddlfrsStatus = lens _ddlfrsStatus (\ s a -> s{_ddlfrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeDBParameterGroups.hs b/gen/Network/AWS/RDS/DescribeDBParameterGroups.hs
--- a/gen/Network/AWS/RDS/DescribeDBParameterGroups.hs
+++ b/gen/Network/AWS/RDS/DescribeDBParameterGroups.hs
@@ -1,174 +1,198 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeDBParameterGroups
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns a list of 'DBParameterGroup' descriptions. If a 'DBParameterGroupName'
--- is specified, the list will contain only the description of the specified DB
--- parameter group.
+-- Returns a list of 'DBParameterGroup' descriptions. If a
+-- 'DBParameterGroupName' is specified, the list will contain only the
+-- description of the specified DB parameter group.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameterGroups.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameterGroups.html AWS API Reference> for DescribeDBParameterGroups.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeDBParameterGroups
     (
-    -- * Request
-      DescribeDBParameterGroups
-    -- ** Request constructor
-    , describeDBParameterGroups
-    -- ** Request lenses
-    , ddbpgDBParameterGroupName
-    , ddbpgFilters
-    , ddbpgMarker
-    , ddbpgMaxRecords
+    -- * Creating a Request
+      describeDBParameterGroups
+    , DescribeDBParameterGroups
+    -- * Request Lenses
+    , ddpgFilters
+    , ddpgDBParameterGroupName
+    , ddpgMaxRecords
+    , ddpgMarker
 
-    -- * Response
-    , DescribeDBParameterGroupsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeDBParameterGroupsResponse
-    -- ** Response lenses
-    , ddbpgrDBParameterGroups
-    , ddbpgrMarker
+    , DescribeDBParameterGroupsResponse
+    -- * Response Lenses
+    , ddpgrsMarker
+    , ddpgrsDBParameterGroups
+    , ddpgrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeDBParameterGroups = DescribeDBParameterGroups
-    { _ddbpgDBParameterGroupName :: Maybe Text
-    , _ddbpgFilters              :: List "member" Filter
-    , _ddbpgMarker               :: Maybe Text
-    , _ddbpgMaxRecords           :: Maybe Int
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeDBParameterGroups' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeDBParameterGroups' smart constructor.
+data DescribeDBParameterGroups = DescribeDBParameterGroups'
+    { _ddpgFilters              :: !(Maybe [Filter])
+    , _ddpgDBParameterGroupName :: !(Maybe Text)
+    , _ddpgMaxRecords           :: !(Maybe Int)
+    , _ddpgMarker               :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBParameterGroups' with the minimum fields required to make a request.
 --
--- * 'ddbpgDBParameterGroupName' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddbpgFilters' @::@ ['Filter']
+-- * 'ddpgFilters'
 --
--- * 'ddbpgMarker' @::@ 'Maybe' 'Text'
+-- * 'ddpgDBParameterGroupName'
 --
--- * 'ddbpgMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'ddpgMaxRecords'
 --
-describeDBParameterGroups :: DescribeDBParameterGroups
-describeDBParameterGroups = DescribeDBParameterGroups
-    { _ddbpgDBParameterGroupName = Nothing
-    , _ddbpgFilters              = mempty
-    , _ddbpgMaxRecords           = Nothing
-    , _ddbpgMarker               = Nothing
+-- * 'ddpgMarker'
+describeDBParameterGroups
+    :: DescribeDBParameterGroups
+describeDBParameterGroups =
+    DescribeDBParameterGroups'
+    { _ddpgFilters = Nothing
+    , _ddpgDBParameterGroupName = Nothing
+    , _ddpgMaxRecords = Nothing
+    , _ddpgMarker = Nothing
     }
 
+-- | This parameter is not currently supported.
+ddpgFilters :: Lens' DescribeDBParameterGroups [Filter]
+ddpgFilters = lens _ddpgFilters (\ s a -> s{_ddpgFilters = a}) . _Default . _Coerce;
+
 -- | The name of a specific DB parameter group 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
---
-ddbpgDBParameterGroupName :: Lens' DescribeDBParameterGroups (Maybe Text)
-ddbpgDBParameterGroupName =
-    lens _ddbpgDBParameterGroupName
-        (\s a -> s { _ddbpgDBParameterGroupName = a })
-
--- | This parameter is not currently supported.
-ddbpgFilters :: Lens' DescribeDBParameterGroups [Filter]
-ddbpgFilters = lens _ddbpgFilters (\s a -> s { _ddbpgFilters = a }) . _List
-
--- | An optional pagination token provided by a previous 'DescribeDBParameterGroups'
--- request. If this parameter is specified, the response includes only records
--- beyond the marker, up to the value specified by 'MaxRecords'.
-ddbpgMarker :: Lens' DescribeDBParameterGroups (Maybe Text)
-ddbpgMarker = lens _ddbpgMarker (\s a -> s { _ddbpgMarker = a })
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddpgDBParameterGroupName :: Lens' DescribeDBParameterGroups (Maybe Text)
+ddpgDBParameterGroupName = lens _ddpgDBParameterGroupName (\ s a -> s{_ddpgDBParameterGroupName = a});
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results may be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
-ddbpgMaxRecords :: Lens' DescribeDBParameterGroups (Maybe Int)
-ddbpgMaxRecords = lens _ddbpgMaxRecords (\s a -> s { _ddbpgMaxRecords = a })
+-- Constraints: Minimum 20, maximum 100.
+ddpgMaxRecords :: Lens' DescribeDBParameterGroups (Maybe Int)
+ddpgMaxRecords = lens _ddpgMaxRecords (\ s a -> s{_ddpgMaxRecords = a});
 
-data DescribeDBParameterGroupsResponse = DescribeDBParameterGroupsResponse
-    { _ddbpgrDBParameterGroups :: List "member" DBParameterGroup
-    , _ddbpgrMarker            :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | An optional pagination token provided by a previous
+-- 'DescribeDBParameterGroups' request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by 'MaxRecords'.
+ddpgMarker :: Lens' DescribeDBParameterGroups (Maybe Text)
+ddpgMarker = lens _ddpgMarker (\ s a -> s{_ddpgMarker = a});
 
--- | 'DescribeDBParameterGroupsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddbpgrDBParameterGroups' @::@ ['DBParameterGroup']
---
--- * 'ddbpgrMarker' @::@ 'Maybe' 'Text'
---
-describeDBParameterGroupsResponse :: DescribeDBParameterGroupsResponse
-describeDBParameterGroupsResponse = DescribeDBParameterGroupsResponse
-    { _ddbpgrMarker            = Nothing
-    , _ddbpgrDBParameterGroups = mempty
-    }
+instance AWSPager DescribeDBParameterGroups where
+        page rq rs
+          | stop (rs ^. ddpgrsMarker) = Nothing
+          | stop (rs ^. ddpgrsDBParameterGroups) = Nothing
+          | otherwise =
+            Just $ rq & ddpgMarker .~ rs ^. ddpgrsMarker
 
--- | A list of 'DBParameterGroup' instances.
-ddbpgrDBParameterGroups :: Lens' DescribeDBParameterGroupsResponse [DBParameterGroup]
-ddbpgrDBParameterGroups =
-    lens _ddbpgrDBParameterGroups (\s a -> s { _ddbpgrDBParameterGroups = a })
-        . _List
+instance AWSRequest DescribeDBParameterGroups where
+        type Sv DescribeDBParameterGroups = RDS
+        type Rs DescribeDBParameterGroups =
+             DescribeDBParameterGroupsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeDBParameterGroupsResult"
+              (\ s h x ->
+                 DescribeDBParameterGroupsResponse' <$>
+                   (x .@? "Marker") <*>
+                     (x .@? "DBParameterGroups" .!@ mempty >>=
+                        may (parseXMLList "DBParameterGroup"))
+                     <*> (pure (fromEnum s)))
 
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-ddbpgrMarker :: Lens' DescribeDBParameterGroupsResponse (Maybe Text)
-ddbpgrMarker = lens _ddbpgrMarker (\s a -> s { _ddbpgrMarker = a })
+instance ToHeaders DescribeDBParameterGroups where
+        toHeaders = const mempty
 
 instance ToPath DescribeDBParameterGroups where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeDBParameterGroups where
-    toQuery DescribeDBParameterGroups{..} = mconcat
-        [ "DBParameterGroupName" =? _ddbpgDBParameterGroupName
-        , "Filters"              =? _ddbpgFilters
-        , "Marker"               =? _ddbpgMarker
-        , "MaxRecords"           =? _ddbpgMaxRecords
-        ]
+        toQuery DescribeDBParameterGroups'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeDBParameterGroups" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ddpgFilters),
+               "DBParameterGroupName" =: _ddpgDBParameterGroupName,
+               "MaxRecords" =: _ddpgMaxRecords,
+               "Marker" =: _ddpgMarker]
 
-instance ToHeaders DescribeDBParameterGroups
+-- | Contains the result of a successful invocation of the
+-- DescribeDBParameterGroups action.
+--
+-- /See:/ 'describeDBParameterGroupsResponse' smart constructor.
+data DescribeDBParameterGroupsResponse = DescribeDBParameterGroupsResponse'
+    { _ddpgrsMarker            :: !(Maybe Text)
+    , _ddpgrsDBParameterGroups :: !(Maybe [DBParameterGroup])
+    , _ddpgrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeDBParameterGroups where
-    type Sv DescribeDBParameterGroups = RDS
-    type Rs DescribeDBParameterGroups = DescribeDBParameterGroupsResponse
+-- | Creates a value of 'DescribeDBParameterGroupsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddpgrsMarker'
+--
+-- * 'ddpgrsDBParameterGroups'
+--
+-- * 'ddpgrsStatus'
+describeDBParameterGroupsResponse
+    :: Int -- ^ 'ddpgrsStatus'
+    -> DescribeDBParameterGroupsResponse
+describeDBParameterGroupsResponse pStatus_ =
+    DescribeDBParameterGroupsResponse'
+    { _ddpgrsMarker = Nothing
+    , _ddpgrsDBParameterGroups = Nothing
+    , _ddpgrsStatus = pStatus_
+    }
 
-    request  = post "DescribeDBParameterGroups"
-    response = xmlResponse
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+ddpgrsMarker :: Lens' DescribeDBParameterGroupsResponse (Maybe Text)
+ddpgrsMarker = lens _ddpgrsMarker (\ s a -> s{_ddpgrsMarker = a});
 
-instance FromXML DescribeDBParameterGroupsResponse where
-    parseXML = withElement "DescribeDBParameterGroupsResult" $ \x -> DescribeDBParameterGroupsResponse
-        <$> x .@? "DBParameterGroups" .!@ mempty
-        <*> x .@? "Marker"
+-- | A list of DBParameterGroup instances.
+ddpgrsDBParameterGroups :: Lens' DescribeDBParameterGroupsResponse [DBParameterGroup]
+ddpgrsDBParameterGroups = lens _ddpgrsDBParameterGroups (\ s a -> s{_ddpgrsDBParameterGroups = a}) . _Default . _Coerce;
 
-instance AWSPager DescribeDBParameterGroups where
-    page rq rs
-        | stop (rs ^. ddbpgrMarker) = Nothing
-        | otherwise = (\x -> rq & ddbpgMarker ?~ x)
-            <$> (rs ^. ddbpgrMarker)
+-- | The response status code.
+ddpgrsStatus :: Lens' DescribeDBParameterGroupsResponse Int
+ddpgrsStatus = lens _ddpgrsStatus (\ s a -> s{_ddpgrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeDBParameters.hs b/gen/Network/AWS/RDS/DescribeDBParameters.hs
--- a/gen/Network/AWS/RDS/DescribeDBParameters.hs
+++ b/gen/Network/AWS/RDS/DescribeDBParameters.hs
@@ -1,185 +1,207 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeDBParameters
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns the detailed parameter list for a particular DB parameter group.
+-- Returns the detailed parameter list for a particular DB parameter group.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameters.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameters.html AWS API Reference> for DescribeDBParameters.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeDBParameters
     (
-    -- * Request
-      DescribeDBParameters
-    -- ** Request constructor
-    , describeDBParameters
-    -- ** Request lenses
-    , ddbpDBParameterGroupName
-    , ddbpFilters
-    , ddbpMarker
-    , ddbpMaxRecords
-    , ddbpSource
+    -- * Creating a Request
+      describeDBParameters
+    , DescribeDBParameters
+    -- * Request Lenses
+    , ddpFilters
+    , ddpMaxRecords
+    , ddpMarker
+    , ddpSource
+    , ddpDBParameterGroupName
 
-    -- * Response
-    , DescribeDBParametersResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeDBParametersResponse
-    -- ** Response lenses
-    , ddbprMarker
-    , ddbprParameters
+    , DescribeDBParametersResponse
+    -- * Response Lenses
+    , ddprsParameters
+    , ddprsMarker
+    , ddprsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeDBParameters = DescribeDBParameters
-    { _ddbpDBParameterGroupName :: Text
-    , _ddbpFilters              :: List "member" Filter
-    , _ddbpMarker               :: Maybe Text
-    , _ddbpMaxRecords           :: Maybe Int
-    , _ddbpSource               :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'describeDBParameters' smart constructor.
+data DescribeDBParameters = DescribeDBParameters'
+    { _ddpFilters              :: !(Maybe [Filter])
+    , _ddpMaxRecords           :: !(Maybe Int)
+    , _ddpMarker               :: !(Maybe Text)
+    , _ddpSource               :: !(Maybe Text)
+    , _ddpDBParameterGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeDBParameters' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeDBParameters' with the minimum fields required to make a request.
 --
--- * 'ddbpDBParameterGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddbpFilters' @::@ ['Filter']
+-- * 'ddpFilters'
 --
--- * 'ddbpMarker' @::@ 'Maybe' 'Text'
+-- * 'ddpMaxRecords'
 --
--- * 'ddbpMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'ddpMarker'
 --
--- * 'ddbpSource' @::@ 'Maybe' 'Text'
+-- * 'ddpSource'
 --
-describeDBParameters :: Text -- ^ 'ddbpDBParameterGroupName'
-                     -> DescribeDBParameters
-describeDBParameters p1 = DescribeDBParameters
-    { _ddbpDBParameterGroupName = p1
-    , _ddbpSource               = Nothing
-    , _ddbpFilters              = mempty
-    , _ddbpMaxRecords           = Nothing
-    , _ddbpMarker               = Nothing
+-- * 'ddpDBParameterGroupName'
+describeDBParameters
+    :: Text -- ^ 'ddpDBParameterGroupName'
+    -> DescribeDBParameters
+describeDBParameters pDBParameterGroupName_ =
+    DescribeDBParameters'
+    { _ddpFilters = Nothing
+    , _ddpMaxRecords = Nothing
+    , _ddpMarker = Nothing
+    , _ddpSource = Nothing
+    , _ddpDBParameterGroupName = pDBParameterGroupName_
     }
 
--- | The name of a specific DB parameter group 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
---
-ddbpDBParameterGroupName :: Lens' DescribeDBParameters Text
-ddbpDBParameterGroupName =
-    lens _ddbpDBParameterGroupName
-        (\s a -> s { _ddbpDBParameterGroupName = a })
-
 -- | This parameter is not currently supported.
-ddbpFilters :: Lens' DescribeDBParameters [Filter]
-ddbpFilters = lens _ddbpFilters (\s a -> s { _ddbpFilters = a }) . _List
-
--- | An optional pagination token provided by a previous 'DescribeDBParameters'
--- request. If this parameter is specified, the response includes only records
--- beyond the marker, up to the value specified by 'MaxRecords'.
-ddbpMarker :: Lens' DescribeDBParameters (Maybe Text)
-ddbpMarker = lens _ddbpMarker (\s a -> s { _ddbpMarker = a })
+ddpFilters :: Lens' DescribeDBParameters [Filter]
+ddpFilters = lens _ddpFilters (\ s a -> s{_ddpFilters = a}) . _Default . _Coerce;
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results may be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
-ddbpMaxRecords :: Lens' DescribeDBParameters (Maybe Int)
-ddbpMaxRecords = lens _ddbpMaxRecords (\s a -> s { _ddbpMaxRecords = a })
+-- Constraints: Minimum 20, maximum 100.
+ddpMaxRecords :: Lens' DescribeDBParameters (Maybe Int)
+ddpMaxRecords = lens _ddpMaxRecords (\ s a -> s{_ddpMaxRecords = a});
 
+-- | An optional pagination token provided by a previous
+-- 'DescribeDBParameters' request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by 'MaxRecords'.
+ddpMarker :: Lens' DescribeDBParameters (Maybe Text)
+ddpMarker = lens _ddpMarker (\ s a -> s{_ddpMarker = a});
+
 -- | The parameter types to return.
 --
 -- Default: All parameter types returned
 --
 -- Valid Values: 'user | system | engine-default'
-ddbpSource :: Lens' DescribeDBParameters (Maybe Text)
-ddbpSource = lens _ddbpSource (\s a -> s { _ddbpSource = a })
-
-data DescribeDBParametersResponse = DescribeDBParametersResponse
-    { _ddbprMarker     :: Maybe Text
-    , _ddbprParameters :: List "member" Parameter
-    } deriving (Eq, Read, Show)
+ddpSource :: Lens' DescribeDBParameters (Maybe Text)
+ddpSource = lens _ddpSource (\ s a -> s{_ddpSource = a});
 
--- | 'DescribeDBParametersResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddbprMarker' @::@ 'Maybe' 'Text'
+-- | The name of a specific DB parameter group to return details for.
 --
--- * 'ddbprParameters' @::@ ['Parameter']
+-- Constraints:
 --
-describeDBParametersResponse :: DescribeDBParametersResponse
-describeDBParametersResponse = DescribeDBParametersResponse
-    { _ddbprParameters = mempty
-    , _ddbprMarker     = Nothing
-    }
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddpDBParameterGroupName :: Lens' DescribeDBParameters Text
+ddpDBParameterGroupName = lens _ddpDBParameterGroupName (\ s a -> s{_ddpDBParameterGroupName = a});
 
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-ddbprMarker :: Lens' DescribeDBParametersResponse (Maybe Text)
-ddbprMarker = lens _ddbprMarker (\s a -> s { _ddbprMarker = a })
+instance AWSPager DescribeDBParameters where
+        page rq rs
+          | stop (rs ^. ddprsMarker) = Nothing
+          | stop (rs ^. ddprsParameters) = Nothing
+          | otherwise =
+            Just $ rq & ddpMarker .~ rs ^. ddprsMarker
 
--- | A list of 'Parameter' values.
-ddbprParameters :: Lens' DescribeDBParametersResponse [Parameter]
-ddbprParameters = lens _ddbprParameters (\s a -> s { _ddbprParameters = a }) . _List
+instance AWSRequest DescribeDBParameters where
+        type Sv DescribeDBParameters = RDS
+        type Rs DescribeDBParameters =
+             DescribeDBParametersResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeDBParametersResult"
+              (\ s h x ->
+                 DescribeDBParametersResponse' <$>
+                   (x .@? "Parameters" .!@ mempty >>=
+                      may (parseXMLList "Parameter"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
+instance ToHeaders DescribeDBParameters where
+        toHeaders = const mempty
+
 instance ToPath DescribeDBParameters where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeDBParameters where
-    toQuery DescribeDBParameters{..} = mconcat
-        [ "DBParameterGroupName" =? _ddbpDBParameterGroupName
-        , "Filters"              =? _ddbpFilters
-        , "Marker"               =? _ddbpMarker
-        , "MaxRecords"           =? _ddbpMaxRecords
-        , "Source"               =? _ddbpSource
-        ]
+        toQuery DescribeDBParameters'{..}
+          = mconcat
+              ["Action" =: ("DescribeDBParameters" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ddpFilters),
+               "MaxRecords" =: _ddpMaxRecords,
+               "Marker" =: _ddpMarker, "Source" =: _ddpSource,
+               "DBParameterGroupName" =: _ddpDBParameterGroupName]
 
-instance ToHeaders DescribeDBParameters
+-- | Contains the result of a successful invocation of the
+-- DescribeDBParameters action.
+--
+-- /See:/ 'describeDBParametersResponse' smart constructor.
+data DescribeDBParametersResponse = DescribeDBParametersResponse'
+    { _ddprsParameters :: !(Maybe [Parameter])
+    , _ddprsMarker     :: !(Maybe Text)
+    , _ddprsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeDBParameters where
-    type Sv DescribeDBParameters = RDS
-    type Rs DescribeDBParameters = DescribeDBParametersResponse
+-- | Creates a value of 'DescribeDBParametersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddprsParameters'
+--
+-- * 'ddprsMarker'
+--
+-- * 'ddprsStatus'
+describeDBParametersResponse
+    :: Int -- ^ 'ddprsStatus'
+    -> DescribeDBParametersResponse
+describeDBParametersResponse pStatus_ =
+    DescribeDBParametersResponse'
+    { _ddprsParameters = Nothing
+    , _ddprsMarker = Nothing
+    , _ddprsStatus = pStatus_
+    }
 
-    request  = post "DescribeDBParameters"
-    response = xmlResponse
+-- | A list of Parameter values.
+ddprsParameters :: Lens' DescribeDBParametersResponse [Parameter]
+ddprsParameters = lens _ddprsParameters (\ s a -> s{_ddprsParameters = a}) . _Default . _Coerce;
 
-instance FromXML DescribeDBParametersResponse where
-    parseXML = withElement "DescribeDBParametersResult" $ \x -> DescribeDBParametersResponse
-        <$> x .@? "Marker"
-        <*> x .@? "Parameters" .!@ mempty
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+ddprsMarker :: Lens' DescribeDBParametersResponse (Maybe Text)
+ddprsMarker = lens _ddprsMarker (\ s a -> s{_ddprsMarker = a});
 
-instance AWSPager DescribeDBParameters where
-    page rq rs
-        | stop (rs ^. ddbprMarker) = Nothing
-        | otherwise = (\x -> rq & ddbpMarker ?~ x)
-            <$> (rs ^. ddbprMarker)
+-- | The response status code.
+ddprsStatus :: Lens' DescribeDBParametersResponse Int
+ddprsStatus = lens _ddprsStatus (\ s a -> s{_ddprsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeDBSecurityGroups.hs b/gen/Network/AWS/RDS/DescribeDBSecurityGroups.hs
--- a/gen/Network/AWS/RDS/DescribeDBSecurityGroups.hs
+++ b/gen/Network/AWS/RDS/DescribeDBSecurityGroups.hs
@@ -1,169 +1,192 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeDBSecurityGroups
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns a list of 'DBSecurityGroup' descriptions. If a 'DBSecurityGroupName' is
--- specified, the list will contain only the descriptions of the specified DB
--- security group.
+-- Returns a list of 'DBSecurityGroup' descriptions. If a
+-- 'DBSecurityGroupName' is specified, the list will contain only the
+-- descriptions of the specified DB security group.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSecurityGroups.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSecurityGroups.html AWS API Reference> for DescribeDBSecurityGroups.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeDBSecurityGroups
     (
-    -- * Request
-      DescribeDBSecurityGroups
-    -- ** Request constructor
-    , describeDBSecurityGroups
-    -- ** Request lenses
-    , ddbsg1DBSecurityGroupName
-    , ddbsg1Filters
-    , ddbsg1Marker
-    , ddbsg1MaxRecords
+    -- * Creating a Request
+      describeDBSecurityGroups
+    , DescribeDBSecurityGroups
+    -- * Request Lenses
+    , ddbsgFilters
+    , ddbsgMaxRecords
+    , ddbsgMarker
+    , ddbsgDBSecurityGroupName
 
-    -- * Response
-    , DescribeDBSecurityGroupsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeDBSecurityGroupsResponse
-    -- ** Response lenses
-    , ddbsgr1DBSecurityGroups
-    , ddbsgr1Marker
+    , DescribeDBSecurityGroupsResponse
+    -- * Response Lenses
+    , ddbsgrsDBSecurityGroups
+    , ddbsgrsMarker
+    , ddbsgrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeDBSecurityGroups = DescribeDBSecurityGroups
-    { _ddbsg1DBSecurityGroupName :: Maybe Text
-    , _ddbsg1Filters             :: List "member" Filter
-    , _ddbsg1Marker              :: Maybe Text
-    , _ddbsg1MaxRecords          :: Maybe Int
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeDBSecurityGroups' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeDBSecurityGroups' smart constructor.
+data DescribeDBSecurityGroups = DescribeDBSecurityGroups'
+    { _ddbsgFilters             :: !(Maybe [Filter])
+    , _ddbsgMaxRecords          :: !(Maybe Int)
+    , _ddbsgMarker              :: !(Maybe Text)
+    , _ddbsgDBSecurityGroupName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBSecurityGroups' with the minimum fields required to make a request.
 --
--- * 'ddbsg1DBSecurityGroupName' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddbsg1Filters' @::@ ['Filter']
+-- * 'ddbsgFilters'
 --
--- * 'ddbsg1Marker' @::@ 'Maybe' 'Text'
+-- * 'ddbsgMaxRecords'
 --
--- * 'ddbsg1MaxRecords' @::@ 'Maybe' 'Int'
+-- * 'ddbsgMarker'
 --
-describeDBSecurityGroups :: DescribeDBSecurityGroups
-describeDBSecurityGroups = DescribeDBSecurityGroups
-    { _ddbsg1DBSecurityGroupName = Nothing
-    , _ddbsg1Filters             = mempty
-    , _ddbsg1MaxRecords          = Nothing
-    , _ddbsg1Marker              = Nothing
+-- * 'ddbsgDBSecurityGroupName'
+describeDBSecurityGroups
+    :: DescribeDBSecurityGroups
+describeDBSecurityGroups =
+    DescribeDBSecurityGroups'
+    { _ddbsgFilters = Nothing
+    , _ddbsgMaxRecords = Nothing
+    , _ddbsgMarker = Nothing
+    , _ddbsgDBSecurityGroupName = Nothing
     }
 
--- | The name of the DB security group to return details for.
-ddbsg1DBSecurityGroupName :: Lens' DescribeDBSecurityGroups (Maybe Text)
-ddbsg1DBSecurityGroupName =
-    lens _ddbsg1DBSecurityGroupName
-        (\s a -> s { _ddbsg1DBSecurityGroupName = a })
-
 -- | This parameter is not currently supported.
-ddbsg1Filters :: Lens' DescribeDBSecurityGroups [Filter]
-ddbsg1Filters = lens _ddbsg1Filters (\s a -> s { _ddbsg1Filters = a }) . _List
-
--- | An optional pagination token provided by a previous DescribeDBSecurityGroups
--- request. If this parameter is specified, the response includes only records
--- beyond the marker, up to the value specified by 'MaxRecords'.
-ddbsg1Marker :: Lens' DescribeDBSecurityGroups (Maybe Text)
-ddbsg1Marker = lens _ddbsg1Marker (\s a -> s { _ddbsg1Marker = a })
+ddbsgFilters :: Lens' DescribeDBSecurityGroups [Filter]
+ddbsgFilters = lens _ddbsgFilters (\ s a -> s{_ddbsgFilters = a}) . _Default . _Coerce;
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results may be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
-ddbsg1MaxRecords :: Lens' DescribeDBSecurityGroups (Maybe Int)
-ddbsg1MaxRecords = lens _ddbsg1MaxRecords (\s a -> s { _ddbsg1MaxRecords = a })
+-- Constraints: Minimum 20, maximum 100.
+ddbsgMaxRecords :: Lens' DescribeDBSecurityGroups (Maybe Int)
+ddbsgMaxRecords = lens _ddbsgMaxRecords (\ s a -> s{_ddbsgMaxRecords = a});
 
-data DescribeDBSecurityGroupsResponse = DescribeDBSecurityGroupsResponse
-    { _ddbsgr1DBSecurityGroups :: List "member" DBSecurityGroup
-    , _ddbsgr1Marker           :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | An optional pagination token provided by a previous
+-- 'DescribeDBSecurityGroups' request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by 'MaxRecords'.
+ddbsgMarker :: Lens' DescribeDBSecurityGroups (Maybe Text)
+ddbsgMarker = lens _ddbsgMarker (\ s a -> s{_ddbsgMarker = a});
 
--- | 'DescribeDBSecurityGroupsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddbsgr1DBSecurityGroups' @::@ ['DBSecurityGroup']
---
--- * 'ddbsgr1Marker' @::@ 'Maybe' 'Text'
---
-describeDBSecurityGroupsResponse :: DescribeDBSecurityGroupsResponse
-describeDBSecurityGroupsResponse = DescribeDBSecurityGroupsResponse
-    { _ddbsgr1Marker           = Nothing
-    , _ddbsgr1DBSecurityGroups = mempty
-    }
+-- | The name of the DB security group to return details for.
+ddbsgDBSecurityGroupName :: Lens' DescribeDBSecurityGroups (Maybe Text)
+ddbsgDBSecurityGroupName = lens _ddbsgDBSecurityGroupName (\ s a -> s{_ddbsgDBSecurityGroupName = a});
 
--- | A list of 'DBSecurityGroup' instances.
-ddbsgr1DBSecurityGroups :: Lens' DescribeDBSecurityGroupsResponse [DBSecurityGroup]
-ddbsgr1DBSecurityGroups =
-    lens _ddbsgr1DBSecurityGroups (\s a -> s { _ddbsgr1DBSecurityGroups = a })
-        . _List
+instance AWSPager DescribeDBSecurityGroups where
+        page rq rs
+          | stop (rs ^. ddbsgrsMarker) = Nothing
+          | stop (rs ^. ddbsgrsDBSecurityGroups) = Nothing
+          | otherwise =
+            Just $ rq & ddbsgMarker .~ rs ^. ddbsgrsMarker
 
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-ddbsgr1Marker :: Lens' DescribeDBSecurityGroupsResponse (Maybe Text)
-ddbsgr1Marker = lens _ddbsgr1Marker (\s a -> s { _ddbsgr1Marker = a })
+instance AWSRequest DescribeDBSecurityGroups where
+        type Sv DescribeDBSecurityGroups = RDS
+        type Rs DescribeDBSecurityGroups =
+             DescribeDBSecurityGroupsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeDBSecurityGroupsResult"
+              (\ s h x ->
+                 DescribeDBSecurityGroupsResponse' <$>
+                   (x .@? "DBSecurityGroups" .!@ mempty >>=
+                      may (parseXMLList "DBSecurityGroup"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
+instance ToHeaders DescribeDBSecurityGroups where
+        toHeaders = const mempty
+
 instance ToPath DescribeDBSecurityGroups where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeDBSecurityGroups where
-    toQuery DescribeDBSecurityGroups{..} = mconcat
-        [ "DBSecurityGroupName" =? _ddbsg1DBSecurityGroupName
-        , "Filters"             =? _ddbsg1Filters
-        , "Marker"              =? _ddbsg1Marker
-        , "MaxRecords"          =? _ddbsg1MaxRecords
-        ]
+        toQuery DescribeDBSecurityGroups'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeDBSecurityGroups" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ddbsgFilters),
+               "MaxRecords" =: _ddbsgMaxRecords,
+               "Marker" =: _ddbsgMarker,
+               "DBSecurityGroupName" =: _ddbsgDBSecurityGroupName]
 
-instance ToHeaders DescribeDBSecurityGroups
+-- | Contains the result of a successful invocation of the
+-- DescribeDBSecurityGroups action.
+--
+-- /See:/ 'describeDBSecurityGroupsResponse' smart constructor.
+data DescribeDBSecurityGroupsResponse = DescribeDBSecurityGroupsResponse'
+    { _ddbsgrsDBSecurityGroups :: !(Maybe [DBSecurityGroup])
+    , _ddbsgrsMarker           :: !(Maybe Text)
+    , _ddbsgrsStatus           :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeDBSecurityGroups where
-    type Sv DescribeDBSecurityGroups = RDS
-    type Rs DescribeDBSecurityGroups = DescribeDBSecurityGroupsResponse
+-- | Creates a value of 'DescribeDBSecurityGroupsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddbsgrsDBSecurityGroups'
+--
+-- * 'ddbsgrsMarker'
+--
+-- * 'ddbsgrsStatus'
+describeDBSecurityGroupsResponse
+    :: Int -- ^ 'ddbsgrsStatus'
+    -> DescribeDBSecurityGroupsResponse
+describeDBSecurityGroupsResponse pStatus_ =
+    DescribeDBSecurityGroupsResponse'
+    { _ddbsgrsDBSecurityGroups = Nothing
+    , _ddbsgrsMarker = Nothing
+    , _ddbsgrsStatus = pStatus_
+    }
 
-    request  = post "DescribeDBSecurityGroups"
-    response = xmlResponse
+-- | A list of DBSecurityGroup instances.
+ddbsgrsDBSecurityGroups :: Lens' DescribeDBSecurityGroupsResponse [DBSecurityGroup]
+ddbsgrsDBSecurityGroups = lens _ddbsgrsDBSecurityGroups (\ s a -> s{_ddbsgrsDBSecurityGroups = a}) . _Default . _Coerce;
 
-instance FromXML DescribeDBSecurityGroupsResponse where
-    parseXML = withElement "DescribeDBSecurityGroupsResult" $ \x -> DescribeDBSecurityGroupsResponse
-        <$> x .@? "DBSecurityGroups" .!@ mempty
-        <*> x .@? "Marker"
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+ddbsgrsMarker :: Lens' DescribeDBSecurityGroupsResponse (Maybe Text)
+ddbsgrsMarker = lens _ddbsgrsMarker (\ s a -> s{_ddbsgrsMarker = a});
 
-instance AWSPager DescribeDBSecurityGroups where
-    page rq rs
-        | stop (rs ^. ddbsgr1Marker) = Nothing
-        | otherwise = (\x -> rq & ddbsg1Marker ?~ x)
-            <$> (rs ^. ddbsgr1Marker)
+-- | The response status code.
+ddbsgrsStatus :: Lens' DescribeDBSecurityGroupsResponse Int
+ddbsgrsStatus = lens _ddbsgrsStatus (\ s a -> s{_ddbsgrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeDBSnapshots.hs b/gen/Network/AWS/RDS/DescribeDBSnapshots.hs
--- a/gen/Network/AWS/RDS/DescribeDBSnapshots.hs
+++ b/gen/Network/AWS/RDS/DescribeDBSnapshots.hs
@@ -1,204 +1,229 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeDBSnapshots
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns information about DB snapshots. This API supports pagination.
+-- Returns information about DB snapshots. This API supports pagination.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshots.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshots.html AWS API Reference> for DescribeDBSnapshots.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeDBSnapshots
     (
-    -- * Request
-      DescribeDBSnapshots
-    -- ** Request constructor
-    , describeDBSnapshots
-    -- ** Request lenses
-    , ddbsDBInstanceIdentifier
-    , ddbsDBSnapshotIdentifier
-    , ddbsFilters
-    , ddbsMarker
-    , ddbsMaxRecords
-    , ddbsSnapshotType
+    -- * Creating a Request
+      describeDBSnapshots
+    , DescribeDBSnapshots
+    -- * Request Lenses
+    , ddsFilters
+    , ddsDBSnapshotIdentifier
+    , ddsSnapshotType
+    , ddsDBInstanceIdentifier
+    , ddsMaxRecords
+    , ddsMarker
 
-    -- * Response
-    , DescribeDBSnapshotsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeDBSnapshotsResponse
-    -- ** Response lenses
-    , ddbsrDBSnapshots
-    , ddbsrMarker
+    , DescribeDBSnapshotsResponse
+    -- * Response Lenses
+    , ddsrsMarker
+    , ddsrsDBSnapshots
+    , ddsrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeDBSnapshots = DescribeDBSnapshots
-    { _ddbsDBInstanceIdentifier :: Maybe Text
-    , _ddbsDBSnapshotIdentifier :: Maybe Text
-    , _ddbsFilters              :: List "member" Filter
-    , _ddbsMarker               :: Maybe Text
-    , _ddbsMaxRecords           :: Maybe Int
-    , _ddbsSnapshotType         :: Maybe Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeDBSnapshots' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeDBSnapshots' smart constructor.
+data DescribeDBSnapshots = DescribeDBSnapshots'
+    { _ddsFilters              :: !(Maybe [Filter])
+    , _ddsDBSnapshotIdentifier :: !(Maybe Text)
+    , _ddsSnapshotType         :: !(Maybe Text)
+    , _ddsDBInstanceIdentifier :: !(Maybe Text)
+    , _ddsMaxRecords           :: !(Maybe Int)
+    , _ddsMarker               :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBSnapshots' with the minimum fields required to make a request.
 --
--- * 'ddbsDBInstanceIdentifier' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddbsDBSnapshotIdentifier' @::@ 'Maybe' 'Text'
+-- * 'ddsFilters'
 --
--- * 'ddbsFilters' @::@ ['Filter']
+-- * 'ddsDBSnapshotIdentifier'
 --
--- * 'ddbsMarker' @::@ 'Maybe' 'Text'
+-- * 'ddsSnapshotType'
 --
--- * 'ddbsMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'ddsDBInstanceIdentifier'
 --
--- * 'ddbsSnapshotType' @::@ 'Maybe' 'Text'
+-- * 'ddsMaxRecords'
 --
-describeDBSnapshots :: DescribeDBSnapshots
-describeDBSnapshots = DescribeDBSnapshots
-    { _ddbsDBInstanceIdentifier = Nothing
-    , _ddbsDBSnapshotIdentifier = Nothing
-    , _ddbsSnapshotType         = Nothing
-    , _ddbsFilters              = mempty
-    , _ddbsMaxRecords           = Nothing
-    , _ddbsMarker               = Nothing
+-- * 'ddsMarker'
+describeDBSnapshots
+    :: DescribeDBSnapshots
+describeDBSnapshots =
+    DescribeDBSnapshots'
+    { _ddsFilters = Nothing
+    , _ddsDBSnapshotIdentifier = Nothing
+    , _ddsSnapshotType = Nothing
+    , _ddsDBInstanceIdentifier = Nothing
+    , _ddsMaxRecords = Nothing
+    , _ddsMarker = Nothing
     }
 
--- | A DB instance identifier to retrieve the list of DB snapshots for. Cannot be
--- used in conjunction with 'DBSnapshotIdentifier'. This parameter is not case
--- sensitive.
+-- | This parameter is not currently supported.
+ddsFilters :: Lens' DescribeDBSnapshots [Filter]
+ddsFilters = lens _ddsFilters (\ s a -> s{_ddsFilters = a}) . _Default . _Coerce;
+
+-- | A specific DB snapshot identifier to describe. This parameter cannot be
+-- used in conjunction with 'DBInstanceIdentifier'. This value is stored as
+-- a lowercase string.
 --
 -- Constraints:
 --
--- Must contain from 1 to 63 alphanumeric characters or hyphens First
--- character must be a letter Cannot end with a hyphen or contain two
--- consecutive hyphens
-ddbsDBInstanceIdentifier :: Lens' DescribeDBSnapshots (Maybe Text)
-ddbsDBInstanceIdentifier =
-    lens _ddbsDBInstanceIdentifier
-        (\s a -> s { _ddbsDBInstanceIdentifier = a })
+-- -   Must be 1 to 255 alphanumeric characters.
+-- -   First character must be a letter.
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+-- -   If this is the identifier of an automated snapshot, the
+--     'SnapshotType' parameter must also be specified.
+ddsDBSnapshotIdentifier :: Lens' DescribeDBSnapshots (Maybe Text)
+ddsDBSnapshotIdentifier = lens _ddsDBSnapshotIdentifier (\ s a -> s{_ddsDBSnapshotIdentifier = a});
 
--- | A specific DB snapshot identifier to describe. Cannot be used in conjunction
--- with 'DBInstanceIdentifier'. This value is stored as a lowercase string.
+-- | The type of snapshots that will be returned. Values can be \"automated\"
+-- or \"manual.\" If not specified, the returned results will include all
+-- snapshots types.
+ddsSnapshotType :: Lens' DescribeDBSnapshots (Maybe Text)
+ddsSnapshotType = lens _ddsSnapshotType (\ s a -> s{_ddsSnapshotType = a});
+
+-- | A DB instance identifier to retrieve the list of DB snapshots for. This
+-- parameter cannot be used in conjunction with 'DBSnapshotIdentifier'.
+-- This parameter is not case-sensitive.
 --
 -- Constraints:
 --
--- Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
--- If this is the identifier of an automated snapshot, the 'SnapshotType'
--- parameter must also be specified.
-ddbsDBSnapshotIdentifier :: Lens' DescribeDBSnapshots (Maybe Text)
-ddbsDBSnapshotIdentifier =
-    lens _ddbsDBSnapshotIdentifier
-        (\s a -> s { _ddbsDBSnapshotIdentifier = a })
-
--- | This parameter is not currently supported.
-ddbsFilters :: Lens' DescribeDBSnapshots [Filter]
-ddbsFilters = lens _ddbsFilters (\s a -> s { _ddbsFilters = a }) . _List
-
--- | An optional pagination token provided by a previous 'DescribeDBSnapshots'
--- request. If this parameter is specified, the response includes only records
--- beyond the marker, up to the value specified by 'MaxRecords'.
-ddbsMarker :: Lens' DescribeDBSnapshots (Maybe Text)
-ddbsMarker = lens _ddbsMarker (\s a -> s { _ddbsMarker = a })
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddsDBInstanceIdentifier :: Lens' DescribeDBSnapshots (Maybe Text)
+ddsDBInstanceIdentifier = lens _ddsDBInstanceIdentifier (\ s a -> s{_ddsDBInstanceIdentifier = a});
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results may be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
-ddbsMaxRecords :: Lens' DescribeDBSnapshots (Maybe Int)
-ddbsMaxRecords = lens _ddbsMaxRecords (\s a -> s { _ddbsMaxRecords = a })
-
--- | The type of snapshots that will be returned. Values can be "automated" or
--- "manual." If not specified, the returned results will include all snapshots
--- types.
-ddbsSnapshotType :: Lens' DescribeDBSnapshots (Maybe Text)
-ddbsSnapshotType = lens _ddbsSnapshotType (\s a -> s { _ddbsSnapshotType = a })
+-- Constraints: Minimum 20, maximum 100.
+ddsMaxRecords :: Lens' DescribeDBSnapshots (Maybe Int)
+ddsMaxRecords = lens _ddsMaxRecords (\ s a -> s{_ddsMaxRecords = a});
 
-data DescribeDBSnapshotsResponse = DescribeDBSnapshotsResponse
-    { _ddbsrDBSnapshots :: List "member" DBSnapshot
-    , _ddbsrMarker      :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | An optional pagination token provided by a previous
+-- 'DescribeDBSnapshots' request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by 'MaxRecords'.
+ddsMarker :: Lens' DescribeDBSnapshots (Maybe Text)
+ddsMarker = lens _ddsMarker (\ s a -> s{_ddsMarker = a});
 
--- | 'DescribeDBSnapshotsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddbsrDBSnapshots' @::@ ['DBSnapshot']
---
--- * 'ddbsrMarker' @::@ 'Maybe' 'Text'
---
-describeDBSnapshotsResponse :: DescribeDBSnapshotsResponse
-describeDBSnapshotsResponse = DescribeDBSnapshotsResponse
-    { _ddbsrMarker      = Nothing
-    , _ddbsrDBSnapshots = mempty
-    }
+instance AWSPager DescribeDBSnapshots where
+        page rq rs
+          | stop (rs ^. ddsrsMarker) = Nothing
+          | stop (rs ^. ddsrsDBSnapshots) = Nothing
+          | otherwise =
+            Just $ rq & ddsMarker .~ rs ^. ddsrsMarker
 
--- | A list of 'DBSnapshot' instances.
-ddbsrDBSnapshots :: Lens' DescribeDBSnapshotsResponse [DBSnapshot]
-ddbsrDBSnapshots = lens _ddbsrDBSnapshots (\s a -> s { _ddbsrDBSnapshots = a }) . _List
+instance AWSRequest DescribeDBSnapshots where
+        type Sv DescribeDBSnapshots = RDS
+        type Rs DescribeDBSnapshots =
+             DescribeDBSnapshotsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeDBSnapshotsResult"
+              (\ s h x ->
+                 DescribeDBSnapshotsResponse' <$>
+                   (x .@? "Marker") <*>
+                     (x .@? "DBSnapshots" .!@ mempty >>=
+                        may (parseXMLList "DBSnapshot"))
+                     <*> (pure (fromEnum s)))
 
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-ddbsrMarker :: Lens' DescribeDBSnapshotsResponse (Maybe Text)
-ddbsrMarker = lens _ddbsrMarker (\s a -> s { _ddbsrMarker = a })
+instance ToHeaders DescribeDBSnapshots where
+        toHeaders = const mempty
 
 instance ToPath DescribeDBSnapshots where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeDBSnapshots where
-    toQuery DescribeDBSnapshots{..} = mconcat
-        [ "DBInstanceIdentifier" =? _ddbsDBInstanceIdentifier
-        , "DBSnapshotIdentifier" =? _ddbsDBSnapshotIdentifier
-        , "Filters"              =? _ddbsFilters
-        , "Marker"               =? _ddbsMarker
-        , "MaxRecords"           =? _ddbsMaxRecords
-        , "SnapshotType"         =? _ddbsSnapshotType
-        ]
+        toQuery DescribeDBSnapshots'{..}
+          = mconcat
+              ["Action" =: ("DescribeDBSnapshots" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ddsFilters),
+               "DBSnapshotIdentifier" =: _ddsDBSnapshotIdentifier,
+               "SnapshotType" =: _ddsSnapshotType,
+               "DBInstanceIdentifier" =: _ddsDBInstanceIdentifier,
+               "MaxRecords" =: _ddsMaxRecords,
+               "Marker" =: _ddsMarker]
 
-instance ToHeaders DescribeDBSnapshots
+-- | Contains the result of a successful invocation of the
+-- DescribeDBSnapshots action.
+--
+-- /See:/ 'describeDBSnapshotsResponse' smart constructor.
+data DescribeDBSnapshotsResponse = DescribeDBSnapshotsResponse'
+    { _ddsrsMarker      :: !(Maybe Text)
+    , _ddsrsDBSnapshots :: !(Maybe [DBSnapshot])
+    , _ddsrsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeDBSnapshots where
-    type Sv DescribeDBSnapshots = RDS
-    type Rs DescribeDBSnapshots = DescribeDBSnapshotsResponse
+-- | Creates a value of 'DescribeDBSnapshotsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddsrsMarker'
+--
+-- * 'ddsrsDBSnapshots'
+--
+-- * 'ddsrsStatus'
+describeDBSnapshotsResponse
+    :: Int -- ^ 'ddsrsStatus'
+    -> DescribeDBSnapshotsResponse
+describeDBSnapshotsResponse pStatus_ =
+    DescribeDBSnapshotsResponse'
+    { _ddsrsMarker = Nothing
+    , _ddsrsDBSnapshots = Nothing
+    , _ddsrsStatus = pStatus_
+    }
 
-    request  = post "DescribeDBSnapshots"
-    response = xmlResponse
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+ddsrsMarker :: Lens' DescribeDBSnapshotsResponse (Maybe Text)
+ddsrsMarker = lens _ddsrsMarker (\ s a -> s{_ddsrsMarker = a});
 
-instance FromXML DescribeDBSnapshotsResponse where
-    parseXML = withElement "DescribeDBSnapshotsResult" $ \x -> DescribeDBSnapshotsResponse
-        <$> x .@? "DBSnapshots" .!@ mempty
-        <*> x .@? "Marker"
+-- | A list of DBSnapshot instances.
+ddsrsDBSnapshots :: Lens' DescribeDBSnapshotsResponse [DBSnapshot]
+ddsrsDBSnapshots = lens _ddsrsDBSnapshots (\ s a -> s{_ddsrsDBSnapshots = a}) . _Default . _Coerce;
 
-instance AWSPager DescribeDBSnapshots where
-    page rq rs
-        | stop (rs ^. ddbsrMarker) = Nothing
-        | otherwise = (\x -> rq & ddbsMarker ?~ x)
-            <$> (rs ^. ddbsrMarker)
+-- | The response status code.
+ddsrsStatus :: Lens' DescribeDBSnapshotsResponse Int
+ddsrsStatus = lens _ddsrsStatus (\ s a -> s{_ddsrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeDBSubnetGroups.hs b/gen/Network/AWS/RDS/DescribeDBSubnetGroups.hs
--- a/gen/Network/AWS/RDS/DescribeDBSubnetGroups.hs
+++ b/gen/Network/AWS/RDS/DescribeDBSubnetGroups.hs
@@ -1,170 +1,195 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeDBSubnetGroups
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns a list of DBSubnetGroup descriptions. If a DBSubnetGroupName is
+-- Returns a list of DBSubnetGroup descriptions. If a DBSubnetGroupName is
 -- specified, the list will contain only the descriptions of the specified
 -- DBSubnetGroup.
 --
--- For an overview of CIDR ranges, go to the <http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing Wikipedia Tutorial>.
+-- For an overview of CIDR ranges, go to the
+-- <http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing Wikipedia Tutorial>.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSubnetGroups.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSubnetGroups.html AWS API Reference> for DescribeDBSubnetGroups.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeDBSubnetGroups
     (
-    -- * Request
-      DescribeDBSubnetGroups
-    -- ** Request constructor
-    , describeDBSubnetGroups
-    -- ** Request lenses
-    , ddbsgDBSubnetGroupName
-    , ddbsgFilters
-    , ddbsgMarker
-    , ddbsgMaxRecords
+    -- * Creating a Request
+      describeDBSubnetGroups
+    , DescribeDBSubnetGroups
+    -- * Request Lenses
+    , ddsgDBSubnetGroupName
+    , ddsgFilters
+    , ddsgMaxRecords
+    , ddsgMarker
 
-    -- * Response
-    , DescribeDBSubnetGroupsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeDBSubnetGroupsResponse
-    -- ** Response lenses
-    , ddbsgrDBSubnetGroups
-    , ddbsgrMarker
+    , DescribeDBSubnetGroupsResponse
+    -- * Response Lenses
+    , ddsgrsDBSubnetGroups
+    , ddsgrsMarker
+    , ddsgrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeDBSubnetGroups = DescribeDBSubnetGroups
-    { _ddbsgDBSubnetGroupName :: Maybe Text
-    , _ddbsgFilters           :: List "member" Filter
-    , _ddbsgMarker            :: Maybe Text
-    , _ddbsgMaxRecords        :: Maybe Int
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeDBSubnetGroups' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeDBSubnetGroups' smart constructor.
+data DescribeDBSubnetGroups = DescribeDBSubnetGroups'
+    { _ddsgDBSubnetGroupName :: !(Maybe Text)
+    , _ddsgFilters           :: !(Maybe [Filter])
+    , _ddsgMaxRecords        :: !(Maybe Int)
+    , _ddsgMarker            :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBSubnetGroups' with the minimum fields required to make a request.
 --
--- * 'ddbsgDBSubnetGroupName' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddbsgFilters' @::@ ['Filter']
+-- * 'ddsgDBSubnetGroupName'
 --
--- * 'ddbsgMarker' @::@ 'Maybe' 'Text'
+-- * 'ddsgFilters'
 --
--- * 'ddbsgMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'ddsgMaxRecords'
 --
-describeDBSubnetGroups :: DescribeDBSubnetGroups
-describeDBSubnetGroups = DescribeDBSubnetGroups
-    { _ddbsgDBSubnetGroupName = Nothing
-    , _ddbsgFilters           = mempty
-    , _ddbsgMaxRecords        = Nothing
-    , _ddbsgMarker            = Nothing
+-- * 'ddsgMarker'
+describeDBSubnetGroups
+    :: DescribeDBSubnetGroups
+describeDBSubnetGroups =
+    DescribeDBSubnetGroups'
+    { _ddsgDBSubnetGroupName = Nothing
+    , _ddsgFilters = Nothing
+    , _ddsgMaxRecords = Nothing
+    , _ddsgMarker = Nothing
     }
 
 -- | The name of the DB subnet group to return details for.
-ddbsgDBSubnetGroupName :: Lens' DescribeDBSubnetGroups (Maybe Text)
-ddbsgDBSubnetGroupName =
-    lens _ddbsgDBSubnetGroupName (\s a -> s { _ddbsgDBSubnetGroupName = a })
+ddsgDBSubnetGroupName :: Lens' DescribeDBSubnetGroups (Maybe Text)
+ddsgDBSubnetGroupName = lens _ddsgDBSubnetGroupName (\ s a -> s{_ddsgDBSubnetGroupName = a});
 
 -- | This parameter is not currently supported.
-ddbsgFilters :: Lens' DescribeDBSubnetGroups [Filter]
-ddbsgFilters = lens _ddbsgFilters (\s a -> s { _ddbsgFilters = a }) . _List
-
--- | An optional pagination token provided by a previous DescribeDBSubnetGroups
--- request. If this parameter is specified, the response includes only records
--- beyond the marker, up to the value specified by 'MaxRecords'.
-ddbsgMarker :: Lens' DescribeDBSubnetGroups (Maybe Text)
-ddbsgMarker = lens _ddbsgMarker (\s a -> s { _ddbsgMarker = a })
+ddsgFilters :: Lens' DescribeDBSubnetGroups [Filter]
+ddsgFilters = lens _ddsgFilters (\ s a -> s{_ddsgFilters = a}) . _Default . _Coerce;
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results may be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
-ddbsgMaxRecords :: Lens' DescribeDBSubnetGroups (Maybe Int)
-ddbsgMaxRecords = lens _ddbsgMaxRecords (\s a -> s { _ddbsgMaxRecords = a })
+-- Constraints: Minimum 20, maximum 100.
+ddsgMaxRecords :: Lens' DescribeDBSubnetGroups (Maybe Int)
+ddsgMaxRecords = lens _ddsgMaxRecords (\ s a -> s{_ddsgMaxRecords = a});
 
-data DescribeDBSubnetGroupsResponse = DescribeDBSubnetGroupsResponse
-    { _ddbsgrDBSubnetGroups :: List "member" DBSubnetGroup
-    , _ddbsgrMarker         :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | An optional pagination token provided by a previous
+-- DescribeDBSubnetGroups request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by 'MaxRecords'.
+ddsgMarker :: Lens' DescribeDBSubnetGroups (Maybe Text)
+ddsgMarker = lens _ddsgMarker (\ s a -> s{_ddsgMarker = a});
 
--- | 'DescribeDBSubnetGroupsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddbsgrDBSubnetGroups' @::@ ['DBSubnetGroup']
---
--- * 'ddbsgrMarker' @::@ 'Maybe' 'Text'
---
-describeDBSubnetGroupsResponse :: DescribeDBSubnetGroupsResponse
-describeDBSubnetGroupsResponse = DescribeDBSubnetGroupsResponse
-    { _ddbsgrMarker         = Nothing
-    , _ddbsgrDBSubnetGroups = mempty
-    }
+instance AWSPager DescribeDBSubnetGroups where
+        page rq rs
+          | stop (rs ^. ddsgrsMarker) = Nothing
+          | stop (rs ^. ddsgrsDBSubnetGroups) = Nothing
+          | otherwise =
+            Just $ rq & ddsgMarker .~ rs ^. ddsgrsMarker
 
--- | A list of 'DBSubnetGroup' instances.
-ddbsgrDBSubnetGroups :: Lens' DescribeDBSubnetGroupsResponse [DBSubnetGroup]
-ddbsgrDBSubnetGroups =
-    lens _ddbsgrDBSubnetGroups (\s a -> s { _ddbsgrDBSubnetGroups = a })
-        . _List
+instance AWSRequest DescribeDBSubnetGroups where
+        type Sv DescribeDBSubnetGroups = RDS
+        type Rs DescribeDBSubnetGroups =
+             DescribeDBSubnetGroupsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeDBSubnetGroupsResult"
+              (\ s h x ->
+                 DescribeDBSubnetGroupsResponse' <$>
+                   (x .@? "DBSubnetGroups" .!@ mempty >>=
+                      may (parseXMLList "DBSubnetGroup"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-ddbsgrMarker :: Lens' DescribeDBSubnetGroupsResponse (Maybe Text)
-ddbsgrMarker = lens _ddbsgrMarker (\s a -> s { _ddbsgrMarker = a })
+instance ToHeaders DescribeDBSubnetGroups where
+        toHeaders = const mempty
 
 instance ToPath DescribeDBSubnetGroups where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeDBSubnetGroups where
-    toQuery DescribeDBSubnetGroups{..} = mconcat
-        [ "DBSubnetGroupName" =? _ddbsgDBSubnetGroupName
-        , "Filters"           =? _ddbsgFilters
-        , "Marker"            =? _ddbsgMarker
-        , "MaxRecords"        =? _ddbsgMaxRecords
-        ]
+        toQuery DescribeDBSubnetGroups'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeDBSubnetGroups" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBSubnetGroupName" =: _ddsgDBSubnetGroupName,
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ddsgFilters),
+               "MaxRecords" =: _ddsgMaxRecords,
+               "Marker" =: _ddsgMarker]
 
-instance ToHeaders DescribeDBSubnetGroups
+-- | Contains the result of a successful invocation of the
+-- DescribeDBSubnetGroups action.
+--
+-- /See:/ 'describeDBSubnetGroupsResponse' smart constructor.
+data DescribeDBSubnetGroupsResponse = DescribeDBSubnetGroupsResponse'
+    { _ddsgrsDBSubnetGroups :: !(Maybe [DBSubnetGroup])
+    , _ddsgrsMarker         :: !(Maybe Text)
+    , _ddsgrsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeDBSubnetGroups where
-    type Sv DescribeDBSubnetGroups = RDS
-    type Rs DescribeDBSubnetGroups = DescribeDBSubnetGroupsResponse
+-- | Creates a value of 'DescribeDBSubnetGroupsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddsgrsDBSubnetGroups'
+--
+-- * 'ddsgrsMarker'
+--
+-- * 'ddsgrsStatus'
+describeDBSubnetGroupsResponse
+    :: Int -- ^ 'ddsgrsStatus'
+    -> DescribeDBSubnetGroupsResponse
+describeDBSubnetGroupsResponse pStatus_ =
+    DescribeDBSubnetGroupsResponse'
+    { _ddsgrsDBSubnetGroups = Nothing
+    , _ddsgrsMarker = Nothing
+    , _ddsgrsStatus = pStatus_
+    }
 
-    request  = post "DescribeDBSubnetGroups"
-    response = xmlResponse
+-- | A list of DBSubnetGroup instances.
+ddsgrsDBSubnetGroups :: Lens' DescribeDBSubnetGroupsResponse [DBSubnetGroup]
+ddsgrsDBSubnetGroups = lens _ddsgrsDBSubnetGroups (\ s a -> s{_ddsgrsDBSubnetGroups = a}) . _Default . _Coerce;
 
-instance FromXML DescribeDBSubnetGroupsResponse where
-    parseXML = withElement "DescribeDBSubnetGroupsResult" $ \x -> DescribeDBSubnetGroupsResponse
-        <$> x .@? "DBSubnetGroups" .!@ mempty
-        <*> x .@? "Marker"
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+ddsgrsMarker :: Lens' DescribeDBSubnetGroupsResponse (Maybe Text)
+ddsgrsMarker = lens _ddsgrsMarker (\ s a -> s{_ddsgrsMarker = a});
 
-instance AWSPager DescribeDBSubnetGroups where
-    page rq rs
-        | stop (rs ^. ddbsgrMarker) = Nothing
-        | otherwise = (\x -> rq & ddbsgMarker ?~ x)
-            <$> (rs ^. ddbsgrMarker)
+-- | The response status code.
+ddsgrsStatus :: Lens' DescribeDBSubnetGroupsResponse Int
+ddsgrsStatus = lens _ddsgrsStatus (\ s a -> s{_ddsgrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeEngineDefaultClusterParameters.hs b/gen/Network/AWS/RDS/DescribeEngineDefaultClusterParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/DescribeEngineDefaultClusterParameters.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.DescribeEngineDefaultClusterParameters
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the default engine and system parameter information for the
+-- cluster database engine.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEngineDefaultClusterParameters.html AWS API Reference> for DescribeEngineDefaultClusterParameters.
+module Network.AWS.RDS.DescribeEngineDefaultClusterParameters
+    (
+    -- * Creating a Request
+      describeEngineDefaultClusterParameters
+    , DescribeEngineDefaultClusterParameters
+    -- * Request Lenses
+    , dedcpFilters
+    , dedcpMaxRecords
+    , dedcpMarker
+    , dedcpDBParameterGroupFamily
+
+    -- * Destructuring the Response
+    , describeEngineDefaultClusterParametersResponse
+    , DescribeEngineDefaultClusterParametersResponse
+    -- * Response Lenses
+    , dedcprsEngineDefaults
+    , dedcprsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'describeEngineDefaultClusterParameters' smart constructor.
+data DescribeEngineDefaultClusterParameters = DescribeEngineDefaultClusterParameters'
+    { _dedcpFilters                :: !(Maybe [Filter])
+    , _dedcpMaxRecords             :: !(Maybe Int)
+    , _dedcpMarker                 :: !(Maybe Text)
+    , _dedcpDBParameterGroupFamily :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeEngineDefaultClusterParameters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dedcpFilters'
+--
+-- * 'dedcpMaxRecords'
+--
+-- * 'dedcpMarker'
+--
+-- * 'dedcpDBParameterGroupFamily'
+describeEngineDefaultClusterParameters
+    :: Text -- ^ 'dedcpDBParameterGroupFamily'
+    -> DescribeEngineDefaultClusterParameters
+describeEngineDefaultClusterParameters pDBParameterGroupFamily_ =
+    DescribeEngineDefaultClusterParameters'
+    { _dedcpFilters = Nothing
+    , _dedcpMaxRecords = Nothing
+    , _dedcpMarker = Nothing
+    , _dedcpDBParameterGroupFamily = pDBParameterGroupFamily_
+    }
+
+-- | This parameter is not currently supported.
+dedcpFilters :: Lens' DescribeEngineDefaultClusterParameters [Filter]
+dedcpFilters = lens _dedcpFilters (\ s a -> s{_dedcpFilters = a}) . _Default . _Coerce;
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+dedcpMaxRecords :: Lens' DescribeEngineDefaultClusterParameters (Maybe Int)
+dedcpMaxRecords = lens _dedcpMaxRecords (\ s a -> s{_dedcpMaxRecords = a});
+
+-- | An optional pagination token provided by a previous
+-- 'DescribeEngineDefaultClusterParameters' request. If this parameter is
+-- specified, the response includes only records beyond the marker, up to
+-- the value specified by 'MaxRecords'.
+dedcpMarker :: Lens' DescribeEngineDefaultClusterParameters (Maybe Text)
+dedcpMarker = lens _dedcpMarker (\ s a -> s{_dedcpMarker = a});
+
+-- | The name of the DB cluster parameter group family to return engine
+-- parameter information for.
+dedcpDBParameterGroupFamily :: Lens' DescribeEngineDefaultClusterParameters Text
+dedcpDBParameterGroupFamily = lens _dedcpDBParameterGroupFamily (\ s a -> s{_dedcpDBParameterGroupFamily = a});
+
+instance AWSRequest
+         DescribeEngineDefaultClusterParameters where
+        type Sv DescribeEngineDefaultClusterParameters = RDS
+        type Rs DescribeEngineDefaultClusterParameters =
+             DescribeEngineDefaultClusterParametersResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeEngineDefaultClusterParametersResult"
+              (\ s h x ->
+                 DescribeEngineDefaultClusterParametersResponse' <$>
+                   (x .@? "EngineDefaults") <*> (pure (fromEnum s)))
+
+instance ToHeaders
+         DescribeEngineDefaultClusterParameters where
+        toHeaders = const mempty
+
+instance ToPath
+         DescribeEngineDefaultClusterParameters where
+        toPath = const "/"
+
+instance ToQuery
+         DescribeEngineDefaultClusterParameters where
+        toQuery DescribeEngineDefaultClusterParameters'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeEngineDefaultClusterParameters" ::
+                    ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _dedcpFilters),
+               "MaxRecords" =: _dedcpMaxRecords,
+               "Marker" =: _dedcpMarker,
+               "DBParameterGroupFamily" =:
+                 _dedcpDBParameterGroupFamily]
+
+-- | /See:/ 'describeEngineDefaultClusterParametersResponse' smart constructor.
+data DescribeEngineDefaultClusterParametersResponse = DescribeEngineDefaultClusterParametersResponse'
+    { _dedcprsEngineDefaults :: !(Maybe EngineDefaults)
+    , _dedcprsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeEngineDefaultClusterParametersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dedcprsEngineDefaults'
+--
+-- * 'dedcprsStatus'
+describeEngineDefaultClusterParametersResponse
+    :: Int -- ^ 'dedcprsStatus'
+    -> DescribeEngineDefaultClusterParametersResponse
+describeEngineDefaultClusterParametersResponse pStatus_ =
+    DescribeEngineDefaultClusterParametersResponse'
+    { _dedcprsEngineDefaults = Nothing
+    , _dedcprsStatus = pStatus_
+    }
+
+-- | Undocumented member.
+dedcprsEngineDefaults :: Lens' DescribeEngineDefaultClusterParametersResponse (Maybe EngineDefaults)
+dedcprsEngineDefaults = lens _dedcprsEngineDefaults (\ s a -> s{_dedcprsEngineDefaults = a});
+
+-- | The response status code.
+dedcprsStatus :: Lens' DescribeEngineDefaultClusterParametersResponse Int
+dedcprsStatus = lens _dedcprsStatus (\ s a -> s{_dedcprsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeEngineDefaultParameters.hs b/gen/Network/AWS/RDS/DescribeEngineDefaultParameters.hs
--- a/gen/Network/AWS/RDS/DescribeEngineDefaultParameters.hs
+++ b/gen/Network/AWS/RDS/DescribeEngineDefaultParameters.hs
@@ -1,155 +1,187 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeEngineDefaultParameters
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns the default engine and system parameter information for the
+-- Returns the default engine and system parameter information for the
 -- specified database engine.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEngineDefaultParameters.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEngineDefaultParameters.html AWS API Reference> for DescribeEngineDefaultParameters.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeEngineDefaultParameters
     (
-    -- * Request
-      DescribeEngineDefaultParameters
-    -- ** Request constructor
-    , describeEngineDefaultParameters
-    -- ** Request lenses
-    , dedpDBParameterGroupFamily
+    -- * Creating a Request
+      describeEngineDefaultParameters
+    , DescribeEngineDefaultParameters
+    -- * Request Lenses
     , dedpFilters
-    , dedpMarker
     , dedpMaxRecords
+    , dedpMarker
+    , dedpDBParameterGroupFamily
 
-    -- * Response
-    , DescribeEngineDefaultParametersResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeEngineDefaultParametersResponse
-    -- ** Response lenses
-    , dedprEngineDefaults
+    , DescribeEngineDefaultParametersResponse
+    -- * Response Lenses
+    , dedprsStatus
+    , dedprsEngineDefaults
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeEngineDefaultParameters = DescribeEngineDefaultParameters
-    { _dedpDBParameterGroupFamily :: Text
-    , _dedpFilters                :: List "member" Filter
-    , _dedpMarker                 :: Maybe Text
-    , _dedpMaxRecords             :: Maybe Int
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeEngineDefaultParameters' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeEngineDefaultParameters' smart constructor.
+data DescribeEngineDefaultParameters = DescribeEngineDefaultParameters'
+    { _dedpFilters                :: !(Maybe [Filter])
+    , _dedpMaxRecords             :: !(Maybe Int)
+    , _dedpMarker                 :: !(Maybe Text)
+    , _dedpDBParameterGroupFamily :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeEngineDefaultParameters' with the minimum fields required to make a request.
 --
--- * 'dedpDBParameterGroupFamily' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dedpFilters' @::@ ['Filter']
+-- * 'dedpFilters'
 --
--- * 'dedpMarker' @::@ 'Maybe' 'Text'
+-- * 'dedpMaxRecords'
 --
--- * 'dedpMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dedpMarker'
 --
-describeEngineDefaultParameters :: Text -- ^ 'dedpDBParameterGroupFamily'
-                                -> DescribeEngineDefaultParameters
-describeEngineDefaultParameters p1 = DescribeEngineDefaultParameters
-    { _dedpDBParameterGroupFamily = p1
-    , _dedpFilters                = mempty
-    , _dedpMaxRecords             = Nothing
-    , _dedpMarker                 = Nothing
+-- * 'dedpDBParameterGroupFamily'
+describeEngineDefaultParameters
+    :: Text -- ^ 'dedpDBParameterGroupFamily'
+    -> DescribeEngineDefaultParameters
+describeEngineDefaultParameters pDBParameterGroupFamily_ =
+    DescribeEngineDefaultParameters'
+    { _dedpFilters = Nothing
+    , _dedpMaxRecords = Nothing
+    , _dedpMarker = Nothing
+    , _dedpDBParameterGroupFamily = pDBParameterGroupFamily_
     }
 
--- | The name of the DB parameter group family.
-dedpDBParameterGroupFamily :: Lens' DescribeEngineDefaultParameters Text
-dedpDBParameterGroupFamily =
-    lens _dedpDBParameterGroupFamily
-        (\s a -> s { _dedpDBParameterGroupFamily = a })
-
 -- | Not currently supported.
 dedpFilters :: Lens' DescribeEngineDefaultParameters [Filter]
-dedpFilters = lens _dedpFilters (\s a -> s { _dedpFilters = a }) . _List
-
--- | An optional pagination token provided by a previous 'DescribeEngineDefaultParameters' request. 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 })
+dedpFilters = lens _dedpFilters (\ s a -> s{_dedpFilters = a}) . _Default . _Coerce;
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results may be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
+-- Constraints: Minimum 20, maximum 100.
 dedpMaxRecords :: Lens' DescribeEngineDefaultParameters (Maybe Int)
-dedpMaxRecords = lens _dedpMaxRecords (\s a -> s { _dedpMaxRecords = a })
-
-newtype DescribeEngineDefaultParametersResponse = DescribeEngineDefaultParametersResponse
-    { _dedprEngineDefaults :: EngineDefaults
-    } deriving (Eq, Read, Show)
+dedpMaxRecords = lens _dedpMaxRecords (\ s a -> s{_dedpMaxRecords = a});
 
--- | 'DescribeEngineDefaultParametersResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dedprEngineDefaults' @::@ 'EngineDefaults'
---
-describeEngineDefaultParametersResponse :: EngineDefaults -- ^ 'dedprEngineDefaults'
-                                        -> DescribeEngineDefaultParametersResponse
-describeEngineDefaultParametersResponse p1 = DescribeEngineDefaultParametersResponse
-    { _dedprEngineDefaults = p1
-    }
+-- | An optional pagination token provided by a previous
+-- 'DescribeEngineDefaultParameters' request. 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});
 
-dedprEngineDefaults :: Lens' DescribeEngineDefaultParametersResponse EngineDefaults
-dedprEngineDefaults =
-    lens _dedprEngineDefaults (\s a -> s { _dedprEngineDefaults = a })
+-- | The name of the DB parameter group family.
+dedpDBParameterGroupFamily :: Lens' DescribeEngineDefaultParameters Text
+dedpDBParameterGroupFamily = lens _dedpDBParameterGroupFamily (\ s a -> s{_dedpDBParameterGroupFamily = a});
 
-instance ToPath DescribeEngineDefaultParameters where
-    toPath = const "/"
+instance AWSPager DescribeEngineDefaultParameters
+         where
+        page rq rs
+          | stop
+              (rs ^? dedprsEngineDefaults . edMarker . _Just)
+            = Nothing
+          | stop (rs ^. dedprsEngineDefaults . edParameters) =
+            Nothing
+          | otherwise =
+            Just $ rq &
+              dedpMarker .~
+                rs ^? dedprsEngineDefaults . edMarker . _Just
 
-instance ToQuery DescribeEngineDefaultParameters where
-    toQuery DescribeEngineDefaultParameters{..} = mconcat
-        [ "DBParameterGroupFamily" =? _dedpDBParameterGroupFamily
-        , "Filters"                =? _dedpFilters
-        , "Marker"                 =? _dedpMarker
-        , "MaxRecords"             =? _dedpMaxRecords
-        ]
+instance AWSRequest DescribeEngineDefaultParameters
+         where
+        type Sv DescribeEngineDefaultParameters = RDS
+        type Rs DescribeEngineDefaultParameters =
+             DescribeEngineDefaultParametersResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeEngineDefaultParametersResult"
+              (\ s h x ->
+                 DescribeEngineDefaultParametersResponse' <$>
+                   (pure (fromEnum s)) <*> (x .@ "EngineDefaults"))
 
 instance ToHeaders DescribeEngineDefaultParameters
+         where
+        toHeaders = const mempty
 
-instance AWSRequest DescribeEngineDefaultParameters where
-    type Sv DescribeEngineDefaultParameters = RDS
-    type Rs DescribeEngineDefaultParameters = DescribeEngineDefaultParametersResponse
+instance ToPath DescribeEngineDefaultParameters where
+        toPath = const "/"
 
-    request  = post "DescribeEngineDefaultParameters"
-    response = xmlResponse
+instance ToQuery DescribeEngineDefaultParameters
+         where
+        toQuery DescribeEngineDefaultParameters'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeEngineDefaultParameters" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _dedpFilters),
+               "MaxRecords" =: _dedpMaxRecords,
+               "Marker" =: _dedpMarker,
+               "DBParameterGroupFamily" =:
+                 _dedpDBParameterGroupFamily]
 
-instance FromXML DescribeEngineDefaultParametersResponse where
-    parseXML = withElement "DescribeEngineDefaultParametersResult" $ \x -> DescribeEngineDefaultParametersResponse
-        <$> x .@  "EngineDefaults"
+-- | /See:/ 'describeEngineDefaultParametersResponse' smart constructor.
+data DescribeEngineDefaultParametersResponse = DescribeEngineDefaultParametersResponse'
+    { _dedprsStatus         :: !Int
+    , _dedprsEngineDefaults :: !EngineDefaults
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSPager DescribeEngineDefaultParameters where
-    page rq rs
-        | stop (rs ^. dedprEngineDefaults . edMarker) = Nothing
-        | otherwise = (\x -> rq & dedpMarker ?~ x)
-            <$> (rs ^. dedprEngineDefaults . edMarker)
+-- | Creates a value of 'DescribeEngineDefaultParametersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dedprsStatus'
+--
+-- * 'dedprsEngineDefaults'
+describeEngineDefaultParametersResponse
+    :: Int -- ^ 'dedprsStatus'
+    -> EngineDefaults -- ^ 'dedprsEngineDefaults'
+    -> DescribeEngineDefaultParametersResponse
+describeEngineDefaultParametersResponse pStatus_ pEngineDefaults_ =
+    DescribeEngineDefaultParametersResponse'
+    { _dedprsStatus = pStatus_
+    , _dedprsEngineDefaults = pEngineDefaults_
+    }
+
+-- | The response status code.
+dedprsStatus :: Lens' DescribeEngineDefaultParametersResponse Int
+dedprsStatus = lens _dedprsStatus (\ s a -> s{_dedprsStatus = a});
+
+-- | Undocumented member.
+dedprsEngineDefaults :: Lens' DescribeEngineDefaultParametersResponse EngineDefaults
+dedprsEngineDefaults = lens _dedprsEngineDefaults (\ s a -> s{_dedprsEngineDefaults = a});
diff --git a/gen/Network/AWS/RDS/DescribeEventCategories.hs b/gen/Network/AWS/RDS/DescribeEventCategories.hs
--- a/gen/Network/AWS/RDS/DescribeEventCategories.hs
+++ b/gen/Network/AWS/RDS/DescribeEventCategories.hs
@@ -1,131 +1,144 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeEventCategories
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Displays a list of categories for all event source types, or, if specified,
--- for a specified source type. You can see a list of the event categories and
--- source types in the <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html  Events> topic in the Amazon RDS User Guide.
+-- Displays a list of categories for all event source types, or, if
+-- specified, for a specified source type. You can see a list of the event
+-- categories and source types in the
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html Events>
+-- topic in the /Amazon RDS User Guide./
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEventCategories.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEventCategories.html AWS API Reference> for DescribeEventCategories.
 module Network.AWS.RDS.DescribeEventCategories
     (
-    -- * Request
-      DescribeEventCategories
-    -- ** Request constructor
-    , describeEventCategories
-    -- ** Request lenses
-    , decFilters
+    -- * Creating a Request
+      describeEventCategories
+    , DescribeEventCategories
+    -- * Request Lenses
     , decSourceType
+    , decFilters
 
-    -- * Response
-    , DescribeEventCategoriesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeEventCategoriesResponse
-    -- ** Response lenses
-    , decrEventCategoriesMapList
+    , DescribeEventCategoriesResponse
+    -- * Response Lenses
+    , decrsEventCategoriesMapList
+    , decrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeEventCategories = DescribeEventCategories
-    { _decFilters    :: List "member" Filter
-    , _decSourceType :: Maybe Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeEventCategories' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeEventCategories' smart constructor.
+data DescribeEventCategories = DescribeEventCategories'
+    { _decSourceType :: !(Maybe Text)
+    , _decFilters    :: !(Maybe [Filter])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeEventCategories' with the minimum fields required to make a request.
 --
--- * 'decFilters' @::@ ['Filter']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'decSourceType' @::@ 'Maybe' 'Text'
+-- * 'decSourceType'
 --
-describeEventCategories :: DescribeEventCategories
-describeEventCategories = DescribeEventCategories
+-- * 'decFilters'
+describeEventCategories
+    :: DescribeEventCategories
+describeEventCategories =
+    DescribeEventCategories'
     { _decSourceType = Nothing
-    , _decFilters    = mempty
+    , _decFilters = Nothing
     }
 
--- | This parameter is not currently supported.
-decFilters :: Lens' DescribeEventCategories [Filter]
-decFilters = lens _decFilters (\s a -> s { _decFilters = a }) . _List
-
 -- | The type of source that will be generating the events.
 --
 -- Valid values: db-instance | db-parameter-group | db-security-group |
 -- db-snapshot
 decSourceType :: Lens' DescribeEventCategories (Maybe Text)
-decSourceType = lens _decSourceType (\s a -> s { _decSourceType = a })
-
-newtype DescribeEventCategoriesResponse = DescribeEventCategoriesResponse
-    { _decrEventCategoriesMapList :: List "member" EventCategoriesMap
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeEventCategoriesResponse where
-    type Item DescribeEventCategoriesResponse = EventCategoriesMap
+decSourceType = lens _decSourceType (\ s a -> s{_decSourceType = a});
 
-    fromList = DescribeEventCategoriesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _decrEventCategoriesMapList
+-- | This parameter is not currently supported.
+decFilters :: Lens' DescribeEventCategories [Filter]
+decFilters = lens _decFilters (\ s a -> s{_decFilters = a}) . _Default . _Coerce;
 
--- | 'DescribeEventCategoriesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'decrEventCategoriesMapList' @::@ ['EventCategoriesMap']
---
-describeEventCategoriesResponse :: DescribeEventCategoriesResponse
-describeEventCategoriesResponse = DescribeEventCategoriesResponse
-    { _decrEventCategoriesMapList = mempty
-    }
+instance AWSRequest DescribeEventCategories where
+        type Sv DescribeEventCategories = RDS
+        type Rs DescribeEventCategories =
+             DescribeEventCategoriesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeEventCategoriesResult"
+              (\ s h x ->
+                 DescribeEventCategoriesResponse' <$>
+                   (x .@? "EventCategoriesMapList" .!@ mempty >>=
+                      may (parseXMLList "EventCategoriesMap"))
+                     <*> (pure (fromEnum s)))
 
--- | A list of EventCategoriesMap data types.
-decrEventCategoriesMapList :: Lens' DescribeEventCategoriesResponse [EventCategoriesMap]
-decrEventCategoriesMapList =
-    lens _decrEventCategoriesMapList
-        (\s a -> s { _decrEventCategoriesMapList = a })
-            . _List
+instance ToHeaders DescribeEventCategories where
+        toHeaders = const mempty
 
 instance ToPath DescribeEventCategories where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeEventCategories where
-    toQuery DescribeEventCategories{..} = mconcat
-        [ "Filters"    =? _decFilters
-        , "SourceType" =? _decSourceType
-        ]
+        toQuery DescribeEventCategories'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeEventCategories" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "SourceType" =: _decSourceType,
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _decFilters)]
 
-instance ToHeaders DescribeEventCategories
+-- | Data returned from the __DescribeEventCategories__ action.
+--
+-- /See:/ 'describeEventCategoriesResponse' smart constructor.
+data DescribeEventCategoriesResponse = DescribeEventCategoriesResponse'
+    { _decrsEventCategoriesMapList :: !(Maybe [EventCategoriesMap])
+    , _decrsStatus                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeEventCategories where
-    type Sv DescribeEventCategories = RDS
-    type Rs DescribeEventCategories = DescribeEventCategoriesResponse
+-- | Creates a value of 'DescribeEventCategoriesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'decrsEventCategoriesMapList'
+--
+-- * 'decrsStatus'
+describeEventCategoriesResponse
+    :: Int -- ^ 'decrsStatus'
+    -> DescribeEventCategoriesResponse
+describeEventCategoriesResponse pStatus_ =
+    DescribeEventCategoriesResponse'
+    { _decrsEventCategoriesMapList = Nothing
+    , _decrsStatus = pStatus_
+    }
 
-    request  = post "DescribeEventCategories"
-    response = xmlResponse
+-- | A list of EventCategoriesMap data types.
+decrsEventCategoriesMapList :: Lens' DescribeEventCategoriesResponse [EventCategoriesMap]
+decrsEventCategoriesMapList = lens _decrsEventCategoriesMapList (\ s a -> s{_decrsEventCategoriesMapList = a}) . _Default . _Coerce;
 
-instance FromXML DescribeEventCategoriesResponse where
-    parseXML = withElement "DescribeEventCategoriesResult" $ \x -> DescribeEventCategoriesResponse
-        <$> x .@? "EventCategoriesMapList" .!@ mempty
+-- | The response status code.
+decrsStatus :: Lens' DescribeEventCategoriesResponse Int
+decrsStatus = lens _decrsStatus (\ s a -> s{_decrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeEventSubscriptions.hs b/gen/Network/AWS/RDS/DescribeEventSubscriptions.hs
--- a/gen/Network/AWS/RDS/DescribeEventSubscriptions.hs
+++ b/gen/Network/AWS/RDS/DescribeEventSubscriptions.hs
@@ -1,174 +1,196 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeEventSubscriptions
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Lists all the subscription descriptions for a customer account. The
+-- Lists all the subscription descriptions for a customer account. The
 -- description for a subscription includes SubscriptionName, SNSTopicARN,
 -- CustomerID, SourceType, SourceID, CreationTime, and Status.
 --
 -- If you specify a SubscriptionName, lists the description for that
 -- subscription.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEventSubscriptions.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEventSubscriptions.html AWS API Reference> for DescribeEventSubscriptions.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeEventSubscriptions
     (
-    -- * Request
-      DescribeEventSubscriptions
-    -- ** Request constructor
-    , describeEventSubscriptions
-    -- ** Request lenses
-    , des1Filters
-    , des1Marker
-    , des1MaxRecords
-    , des1SubscriptionName
+    -- * Creating a Request
+      describeEventSubscriptions
+    , DescribeEventSubscriptions
+    -- * Request Lenses
+    , dSubscriptionName
+    , dFilters
+    , dMaxRecords
+    , dMarker
 
-    -- * Response
-    , DescribeEventSubscriptionsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeEventSubscriptionsResponse
-    -- ** Response lenses
-    , desrEventSubscriptionsList
-    , desrMarker
+    , DescribeEventSubscriptionsResponse
+    -- * Response Lenses
+    , desrsEventSubscriptionsList
+    , desrsMarker
+    , desrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeEventSubscriptions = DescribeEventSubscriptions
-    { _des1Filters          :: List "member" Filter
-    , _des1Marker           :: Maybe Text
-    , _des1MaxRecords       :: Maybe Int
-    , _des1SubscriptionName :: Maybe Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeEventSubscriptions' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeEventSubscriptions' smart constructor.
+data DescribeEventSubscriptions = DescribeEventSubscriptions'
+    { _dSubscriptionName :: !(Maybe Text)
+    , _dFilters          :: !(Maybe [Filter])
+    , _dMaxRecords       :: !(Maybe Int)
+    , _dMarker           :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeEventSubscriptions' with the minimum fields required to make a request.
 --
--- * 'des1Filters' @::@ ['Filter']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'des1Marker' @::@ 'Maybe' 'Text'
+-- * 'dSubscriptionName'
 --
--- * 'des1MaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dFilters'
 --
--- * 'des1SubscriptionName' @::@ 'Maybe' 'Text'
+-- * 'dMaxRecords'
 --
-describeEventSubscriptions :: DescribeEventSubscriptions
-describeEventSubscriptions = DescribeEventSubscriptions
-    { _des1SubscriptionName = Nothing
-    , _des1Filters          = mempty
-    , _des1MaxRecords       = Nothing
-    , _des1Marker           = Nothing
+-- * 'dMarker'
+describeEventSubscriptions
+    :: DescribeEventSubscriptions
+describeEventSubscriptions =
+    DescribeEventSubscriptions'
+    { _dSubscriptionName = Nothing
+    , _dFilters = Nothing
+    , _dMaxRecords = Nothing
+    , _dMarker = Nothing
     }
 
--- | This parameter is not currently supported.
-des1Filters :: Lens' DescribeEventSubscriptions [Filter]
-des1Filters = lens _des1Filters (\s a -> s { _des1Filters = a }) . _List
+-- | The name of the RDS event notification subscription you want to
+-- describe.
+dSubscriptionName :: Lens' DescribeEventSubscriptions (Maybe Text)
+dSubscriptionName = lens _dSubscriptionName (\ s a -> s{_dSubscriptionName = a});
 
--- | An optional pagination token provided by a previous
--- DescribeOrderableDBInstanceOptions request. If this parameter is specified,
--- the response includes only records beyond the marker, up to the value
--- specified by 'MaxRecords' .
-des1Marker :: Lens' DescribeEventSubscriptions (Maybe Text)
-des1Marker = lens _des1Marker (\s a -> s { _des1Marker = a })
+-- | This parameter is not currently supported.
+dFilters :: Lens' DescribeEventSubscriptions [Filter]
+dFilters = lens _dFilters (\ s a -> s{_dFilters = a}) . _Default . _Coerce;
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results can be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
-des1MaxRecords :: Lens' DescribeEventSubscriptions (Maybe Int)
-des1MaxRecords = lens _des1MaxRecords (\s a -> s { _des1MaxRecords = a })
-
--- | The name of the RDS event notification subscription you want to describe.
-des1SubscriptionName :: Lens' DescribeEventSubscriptions (Maybe Text)
-des1SubscriptionName =
-    lens _des1SubscriptionName (\s a -> s { _des1SubscriptionName = a })
+-- Constraints: Minimum 20, maximum 100.
+dMaxRecords :: Lens' DescribeEventSubscriptions (Maybe Int)
+dMaxRecords = lens _dMaxRecords (\ s a -> s{_dMaxRecords = a});
 
-data DescribeEventSubscriptionsResponse = DescribeEventSubscriptionsResponse
-    { _desrEventSubscriptionsList :: List "member" EventSubscription
-    , _desrMarker                 :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | An optional pagination token provided by a previous
+-- DescribeOrderableDBInstanceOptions request. If this parameter is
+-- specified, the response includes only records beyond the marker, up to
+-- the value specified by 'MaxRecords' .
+dMarker :: Lens' DescribeEventSubscriptions (Maybe Text)
+dMarker = lens _dMarker (\ s a -> s{_dMarker = a});
 
--- | 'DescribeEventSubscriptionsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'desrEventSubscriptionsList' @::@ ['EventSubscription']
---
--- * 'desrMarker' @::@ 'Maybe' 'Text'
---
-describeEventSubscriptionsResponse :: DescribeEventSubscriptionsResponse
-describeEventSubscriptionsResponse = DescribeEventSubscriptionsResponse
-    { _desrMarker                 = Nothing
-    , _desrEventSubscriptionsList = mempty
-    }
+instance AWSPager DescribeEventSubscriptions where
+        page rq rs
+          | stop (rs ^. desrsMarker) = Nothing
+          | stop (rs ^. desrsEventSubscriptionsList) = Nothing
+          | otherwise =
+            Just $ rq & dMarker .~ rs ^. desrsMarker
 
--- | A list of EventSubscriptions data types.
-desrEventSubscriptionsList :: Lens' DescribeEventSubscriptionsResponse [EventSubscription]
-desrEventSubscriptionsList =
-    lens _desrEventSubscriptionsList
-        (\s a -> s { _desrEventSubscriptionsList = a })
-            . _List
+instance AWSRequest DescribeEventSubscriptions where
+        type Sv DescribeEventSubscriptions = RDS
+        type Rs DescribeEventSubscriptions =
+             DescribeEventSubscriptionsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeEventSubscriptionsResult"
+              (\ s h x ->
+                 DescribeEventSubscriptionsResponse' <$>
+                   (x .@? "EventSubscriptionsList" .!@ mempty >>=
+                      may (parseXMLList "EventSubscription"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
--- | An optional pagination token provided by a previous
--- DescribeOrderableDBInstanceOptions request. If this parameter is specified,
--- the response includes only records beyond the marker, up to the value
--- specified by 'MaxRecords'.
-desrMarker :: Lens' DescribeEventSubscriptionsResponse (Maybe Text)
-desrMarker = lens _desrMarker (\s a -> s { _desrMarker = a })
+instance ToHeaders DescribeEventSubscriptions where
+        toHeaders = const mempty
 
 instance ToPath DescribeEventSubscriptions where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeEventSubscriptions where
-    toQuery DescribeEventSubscriptions{..} = mconcat
-        [ "Filters"          =? _des1Filters
-        , "Marker"           =? _des1Marker
-        , "MaxRecords"       =? _des1MaxRecords
-        , "SubscriptionName" =? _des1SubscriptionName
-        ]
+        toQuery DescribeEventSubscriptions'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeEventSubscriptions" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "SubscriptionName" =: _dSubscriptionName,
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _dFilters),
+               "MaxRecords" =: _dMaxRecords, "Marker" =: _dMarker]
 
-instance ToHeaders DescribeEventSubscriptions
+-- | Data returned by the __DescribeEventSubscriptions__ action.
+--
+-- /See:/ 'describeEventSubscriptionsResponse' smart constructor.
+data DescribeEventSubscriptionsResponse = DescribeEventSubscriptionsResponse'
+    { _desrsEventSubscriptionsList :: !(Maybe [EventSubscription])
+    , _desrsMarker                 :: !(Maybe Text)
+    , _desrsStatus                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeEventSubscriptions where
-    type Sv DescribeEventSubscriptions = RDS
-    type Rs DescribeEventSubscriptions = DescribeEventSubscriptionsResponse
+-- | Creates a value of 'DescribeEventSubscriptionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'desrsEventSubscriptionsList'
+--
+-- * 'desrsMarker'
+--
+-- * 'desrsStatus'
+describeEventSubscriptionsResponse
+    :: Int -- ^ 'desrsStatus'
+    -> DescribeEventSubscriptionsResponse
+describeEventSubscriptionsResponse pStatus_ =
+    DescribeEventSubscriptionsResponse'
+    { _desrsEventSubscriptionsList = Nothing
+    , _desrsMarker = Nothing
+    , _desrsStatus = pStatus_
+    }
 
-    request  = post "DescribeEventSubscriptions"
-    response = xmlResponse
+-- | A list of EventSubscriptions data types.
+desrsEventSubscriptionsList :: Lens' DescribeEventSubscriptionsResponse [EventSubscription]
+desrsEventSubscriptionsList = lens _desrsEventSubscriptionsList (\ s a -> s{_desrsEventSubscriptionsList = a}) . _Default . _Coerce;
 
-instance FromXML DescribeEventSubscriptionsResponse where
-    parseXML = withElement "DescribeEventSubscriptionsResult" $ \x -> DescribeEventSubscriptionsResponse
-        <$> x .@? "EventSubscriptionsList" .!@ mempty
-        <*> x .@? "Marker"
+-- | An optional pagination token provided by a previous
+-- DescribeOrderableDBInstanceOptions request. If this parameter is
+-- specified, the response includes only records beyond the marker, up to
+-- the value specified by 'MaxRecords'.
+desrsMarker :: Lens' DescribeEventSubscriptionsResponse (Maybe Text)
+desrsMarker = lens _desrsMarker (\ s a -> s{_desrsMarker = a});
 
-instance AWSPager DescribeEventSubscriptions where
-    page rq rs
-        | stop (rs ^. desrMarker) = Nothing
-        | otherwise = (\x -> rq & des1Marker ?~ x)
-            <$> (rs ^. desrMarker)
+-- | The response status code.
+desrsStatus :: Lens' DescribeEventSubscriptionsResponse Int
+desrsStatus = lens _desrsStatus (\ s a -> s{_desrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeEvents.hs b/gen/Network/AWS/RDS/DescribeEvents.hs
--- a/gen/Network/AWS/RDS/DescribeEvents.hs
+++ b/gen/Network/AWS/RDS/DescribeEvents.hs
@@ -1,240 +1,268 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeEvents
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns events related to DB instances, DB security groups, DB snapshots,
--- and DB parameter groups for the past 14 days. Events specific to a particular
--- DB instance, DB security group, database snapshot, or DB parameter group can
--- be obtained by providing the name as a parameter. By default, the past hour
--- of events are returned.
+-- Returns events related to DB instances, DB security groups, DB
+-- snapshots, and DB parameter groups for the past 14 days. Events specific
+-- to a particular DB instance, DB security group, database snapshot, or DB
+-- parameter group can be obtained by providing the name as a parameter. By
+-- default, the past hour of events are returned.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEvents.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEvents.html AWS API Reference> for DescribeEvents.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeEvents
     (
-    -- * Request
-      DescribeEvents
-    -- ** Request constructor
-    , describeEvents
-    -- ** Request lenses
-    , deDuration
-    , deEndTime
-    , deEventCategories
+    -- * Creating a Request
+      describeEvents
+    , DescribeEvents
+    -- * Request Lenses
+    , deStartTime
+    , deSourceType
     , deFilters
-    , deMarker
-    , deMaxRecords
     , deSourceIdentifier
-    , deSourceType
-    , deStartTime
+    , deMaxRecords
+    , deEventCategories
+    , deEndTime
+    , deMarker
+    , deDuration
 
-    -- * Response
-    , DescribeEventsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeEventsResponse
-    -- ** Response lenses
-    , derEvents
-    , derMarker
+    , DescribeEventsResponse
+    -- * Response Lenses
+    , dersEvents
+    , dersMarker
+    , dersStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeEvents = DescribeEvents
-    { _deDuration         :: Maybe Int
-    , _deEndTime          :: Maybe ISO8601
-    , _deEventCategories  :: List "member" Text
-    , _deFilters          :: List "member" Filter
-    , _deMarker           :: Maybe Text
-    , _deMaxRecords       :: Maybe Int
-    , _deSourceIdentifier :: Maybe Text
-    , _deSourceType       :: Maybe SourceType
-    , _deStartTime        :: Maybe ISO8601
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeEvents' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeEvents' smart constructor.
+data DescribeEvents = DescribeEvents'
+    { _deStartTime        :: !(Maybe ISO8601)
+    , _deSourceType       :: !(Maybe SourceType)
+    , _deFilters          :: !(Maybe [Filter])
+    , _deSourceIdentifier :: !(Maybe Text)
+    , _deMaxRecords       :: !(Maybe Int)
+    , _deEventCategories  :: !(Maybe [Text])
+    , _deEndTime          :: !(Maybe ISO8601)
+    , _deMarker           :: !(Maybe Text)
+    , _deDuration         :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeEvents' with the minimum fields required to make a request.
 --
--- * 'deDuration' @::@ 'Maybe' 'Int'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'deEndTime' @::@ 'Maybe' 'UTCTime'
+-- * 'deStartTime'
 --
--- * 'deEventCategories' @::@ ['Text']
+-- * 'deSourceType'
 --
--- * 'deFilters' @::@ ['Filter']
+-- * 'deFilters'
 --
--- * 'deMarker' @::@ 'Maybe' 'Text'
+-- * 'deSourceIdentifier'
 --
--- * 'deMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'deMaxRecords'
 --
--- * 'deSourceIdentifier' @::@ 'Maybe' 'Text'
+-- * 'deEventCategories'
 --
--- * 'deSourceType' @::@ 'Maybe' 'SourceType'
+-- * 'deEndTime'
 --
--- * 'deStartTime' @::@ 'Maybe' 'UTCTime'
+-- * 'deMarker'
 --
-describeEvents :: DescribeEvents
-describeEvents = DescribeEvents
-    { _deSourceIdentifier = Nothing
-    , _deSourceType       = Nothing
-    , _deStartTime        = Nothing
-    , _deEndTime          = Nothing
-    , _deDuration         = Nothing
-    , _deEventCategories  = mempty
-    , _deFilters          = mempty
-    , _deMaxRecords       = Nothing
-    , _deMarker           = Nothing
+-- * 'deDuration'
+describeEvents
+    :: DescribeEvents
+describeEvents =
+    DescribeEvents'
+    { _deStartTime = Nothing
+    , _deSourceType = Nothing
+    , _deFilters = Nothing
+    , _deSourceIdentifier = Nothing
+    , _deMaxRecords = Nothing
+    , _deEventCategories = Nothing
+    , _deEndTime = Nothing
+    , _deMarker = Nothing
+    , _deDuration = Nothing
     }
 
--- | The number of minutes to retrieve events for.
---
--- Default: 60
-deDuration :: Lens' DescribeEvents (Maybe Int)
-deDuration = lens _deDuration (\s a -> s { _deDuration = a })
-
--- | The end of the time interval for which to retrieve events, specified in ISO
--- 8601 format. For more information about ISO 8601, go to the <http://en.wikipedia.org/wiki/ISO_8601 ISO8601 Wikipediapage.>
+-- | The beginning of the time interval to retrieve events for, specified in
+-- ISO 8601 format. For more information about ISO 8601, go to the
+-- <http://en.wikipedia.org/wiki/ISO_8601 ISO8601 Wikipedia page.>
 --
 -- Example: 2009-07-08T18:00Z
-deEndTime :: Lens' DescribeEvents (Maybe UTCTime)
-deEndTime = lens _deEndTime (\s a -> s { _deEndTime = a }) . mapping _Time
+deStartTime :: Lens' DescribeEvents (Maybe UTCTime)
+deStartTime = lens _deStartTime (\ s a -> s{_deStartTime = a}) . mapping _Time;
 
--- | A list of event categories that trigger notifications for a event
--- notification subscription.
-deEventCategories :: Lens' DescribeEvents [Text]
-deEventCategories =
-    lens _deEventCategories (\s a -> s { _deEventCategories = a })
-        . _List
+-- | The event source to retrieve events for. If no value is specified, all
+-- events are returned.
+deSourceType :: Lens' DescribeEvents (Maybe SourceType)
+deSourceType = lens _deSourceType (\ s a -> s{_deSourceType = a});
 
 -- | This parameter is not currently supported.
 deFilters :: Lens' DescribeEvents [Filter]
-deFilters = lens _deFilters (\s a -> s { _deFilters = a }) . _List
-
--- | An optional pagination token provided by a previous DescribeEvents request.
--- 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 })
+deFilters = lens _deFilters (\ s a -> s{_deFilters = a}) . _Default . _Coerce;
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results may be retrieved.
+-- | The identifier of the event source for which events will be returned. If
+-- not specified, then all sources are included in the response.
 --
--- Default: 100
+-- Constraints:
 --
--- Constraints: minimum 20, maximum 100
-deMaxRecords :: Lens' DescribeEvents (Maybe Int)
-deMaxRecords = lens _deMaxRecords (\s a -> s { _deMaxRecords = a })
+-- -   If SourceIdentifier is supplied, SourceType must also be provided.
+-- -   If the source type is 'DBInstance', then a 'DBInstanceIdentifier'
+--     must be supplied.
+-- -   If the source type is 'DBSecurityGroup', a 'DBSecurityGroupName'
+--     must be supplied.
+-- -   If the source type is 'DBParameterGroup', a 'DBParameterGroupName'
+--     must be supplied.
+-- -   If the source type is 'DBSnapshot', a 'DBSnapshotIdentifier' must be
+--     supplied.
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+deSourceIdentifier :: Lens' DescribeEvents (Maybe Text)
+deSourceIdentifier = lens _deSourceIdentifier (\ s a -> s{_deSourceIdentifier = 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 maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
--- Constraints:
+-- Default: 100
 --
--- If SourceIdentifier is supplied, SourceType must also be provided. If the
--- source type is 'DBInstance', then a 'DBInstanceIdentifier' must be supplied. If
--- the source type is 'DBSecurityGroup', a 'DBSecurityGroupName' must be supplied. If the source type is
--- 'DBParameterGroup', a 'DBParameterGroupName' must be supplied. If the source type
--- is 'DBSnapshot', a 'DBSnapshotIdentifier' must be supplied. Cannot end with a
--- hyphen or contain two consecutive hyphens.
-deSourceIdentifier :: Lens' DescribeEvents (Maybe Text)
-deSourceIdentifier =
-    lens _deSourceIdentifier (\s a -> s { _deSourceIdentifier = a })
+-- Constraints: Minimum 20, maximum 100.
+deMaxRecords :: Lens' DescribeEvents (Maybe Int)
+deMaxRecords = lens _deMaxRecords (\ s a -> s{_deMaxRecords = a});
 
--- | The event source to retrieve events for. If no value is specified, all
--- events are returned.
-deSourceType :: Lens' DescribeEvents (Maybe SourceType)
-deSourceType = lens _deSourceType (\s a -> s { _deSourceType = a })
+-- | A list of event categories that trigger notifications for a event
+-- notification subscription.
+deEventCategories :: Lens' DescribeEvents [Text]
+deEventCategories = lens _deEventCategories (\ s a -> s{_deEventCategories = a}) . _Default . _Coerce;
 
--- | The beginning of the time interval to retrieve events for, specified in ISO
--- 8601 format. For more information about ISO 8601, go to the <http://en.wikipedia.org/wiki/ISO_8601 ISO8601 Wikipediapage.>
+-- | The end of the time interval for which to retrieve events, specified in
+-- ISO 8601 format. For more information about ISO 8601, go to the
+-- <http://en.wikipedia.org/wiki/ISO_8601 ISO8601 Wikipedia page.>
 --
 -- Example: 2009-07-08T18:00Z
-deStartTime :: Lens' DescribeEvents (Maybe UTCTime)
-deStartTime = lens _deStartTime (\s a -> s { _deStartTime = a }) . mapping _Time
+deEndTime :: Lens' DescribeEvents (Maybe UTCTime)
+deEndTime = lens _deEndTime (\ s a -> s{_deEndTime = a}) . mapping _Time;
 
-data DescribeEventsResponse = DescribeEventsResponse
-    { _derEvents :: List "member" Event
-    , _derMarker :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | An optional pagination token provided by a previous DescribeEvents
+-- request. 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});
 
--- | 'DescribeEventsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'derEvents' @::@ ['Event']
---
--- * 'derMarker' @::@ 'Maybe' 'Text'
+-- | The number of minutes to retrieve events for.
 --
-describeEventsResponse :: DescribeEventsResponse
-describeEventsResponse = DescribeEventsResponse
-    { _derMarker = Nothing
-    , _derEvents = mempty
-    }
+-- Default: 60
+deDuration :: Lens' DescribeEvents (Maybe Int)
+deDuration = lens _deDuration (\ s a -> s{_deDuration = a});
 
--- | A list of 'Event' instances.
-derEvents :: Lens' DescribeEventsResponse [Event]
-derEvents = lens _derEvents (\s a -> s { _derEvents = a }) . _List
+instance AWSPager DescribeEvents where
+        page rq rs
+          | stop (rs ^. dersMarker) = Nothing
+          | stop (rs ^. dersEvents) = Nothing
+          | otherwise =
+            Just $ rq & deMarker .~ rs ^. dersMarker
 
--- | An optional pagination token provided by a previous Events request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords' .
-derMarker :: Lens' DescribeEventsResponse (Maybe Text)
-derMarker = lens _derMarker (\s a -> s { _derMarker = a })
+instance AWSRequest DescribeEvents where
+        type Sv DescribeEvents = RDS
+        type Rs DescribeEvents = DescribeEventsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeEventsResult"
+              (\ s h x ->
+                 DescribeEventsResponse' <$>
+                   (x .@? "Events" .!@ mempty >>=
+                      may (parseXMLList "Event"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
+instance ToHeaders DescribeEvents where
+        toHeaders = const mempty
+
 instance ToPath DescribeEvents where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeEvents where
-    toQuery DescribeEvents{..} = mconcat
-        [ "Duration"         =? _deDuration
-        , "EndTime"          =? _deEndTime
-        , "EventCategories"  =? _deEventCategories
-        , "Filters"          =? _deFilters
-        , "Marker"           =? _deMarker
-        , "MaxRecords"       =? _deMaxRecords
-        , "SourceIdentifier" =? _deSourceIdentifier
-        , "SourceType"       =? _deSourceType
-        , "StartTime"        =? _deStartTime
-        ]
+        toQuery DescribeEvents'{..}
+          = mconcat
+              ["Action" =: ("DescribeEvents" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "StartTime" =: _deStartTime,
+               "SourceType" =: _deSourceType,
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _deFilters),
+               "SourceIdentifier" =: _deSourceIdentifier,
+               "MaxRecords" =: _deMaxRecords,
+               "EventCategories" =:
+                 toQuery
+                   (toQueryList "EventCategory" <$> _deEventCategories),
+               "EndTime" =: _deEndTime, "Marker" =: _deMarker,
+               "Duration" =: _deDuration]
 
-instance ToHeaders DescribeEvents
+-- | Contains the result of a successful invocation of the DescribeEvents
+-- action.
+--
+-- /See:/ 'describeEventsResponse' smart constructor.
+data DescribeEventsResponse = DescribeEventsResponse'
+    { _dersEvents :: !(Maybe [Event])
+    , _dersMarker :: !(Maybe Text)
+    , _dersStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeEvents where
-    type Sv DescribeEvents = RDS
-    type Rs DescribeEvents = DescribeEventsResponse
+-- | Creates a value of 'DescribeEventsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dersEvents'
+--
+-- * 'dersMarker'
+--
+-- * 'dersStatus'
+describeEventsResponse
+    :: Int -- ^ 'dersStatus'
+    -> DescribeEventsResponse
+describeEventsResponse pStatus_ =
+    DescribeEventsResponse'
+    { _dersEvents = Nothing
+    , _dersMarker = Nothing
+    , _dersStatus = pStatus_
+    }
 
-    request  = post "DescribeEvents"
-    response = xmlResponse
+-- | A list of Event instances.
+dersEvents :: Lens' DescribeEventsResponse [Event]
+dersEvents = lens _dersEvents (\ s a -> s{_dersEvents = a}) . _Default . _Coerce;
 
-instance FromXML DescribeEventsResponse where
-    parseXML = withElement "DescribeEventsResult" $ \x -> DescribeEventsResponse
-        <$> x .@? "Events" .!@ mempty
-        <*> x .@? "Marker"
+-- | An optional pagination token provided by a previous Events request. If
+-- this parameter is specified, the response includes only records beyond
+-- the marker, up to the value specified by 'MaxRecords' .
+dersMarker :: Lens' DescribeEventsResponse (Maybe Text)
+dersMarker = lens _dersMarker (\ s a -> s{_dersMarker = a});
 
-instance AWSPager DescribeEvents where
-    page rq rs
-        | stop (rs ^. derMarker) = Nothing
-        | otherwise = (\x -> rq & deMarker ?~ x)
-            <$> (rs ^. derMarker)
+-- | The response status code.
+dersStatus :: Lens' DescribeEventsResponse Int
+dersStatus = lens _dersStatus (\ s a -> s{_dersStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeOptionGroupOptions.hs b/gen/Network/AWS/RDS/DescribeOptionGroupOptions.hs
--- a/gen/Network/AWS/RDS/DescribeOptionGroupOptions.hs
+++ b/gen/Network/AWS/RDS/DescribeOptionGroupOptions.hs
@@ -1,178 +1,202 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeOptionGroupOptions
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes all available options.
+-- Describes all available options.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeOptionGroupOptions.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeOptionGroupOptions.html AWS API Reference> for DescribeOptionGroupOptions.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeOptionGroupOptions
     (
-    -- * Request
-      DescribeOptionGroupOptions
-    -- ** Request constructor
-    , describeOptionGroupOptions
-    -- ** Request lenses
-    , dogoEngineName
+    -- * Creating a Request
+      describeOptionGroupOptions
+    , DescribeOptionGroupOptions
+    -- * Request Lenses
     , dogoFilters
     , dogoMajorEngineVersion
-    , dogoMarker
     , dogoMaxRecords
+    , dogoMarker
+    , dogoEngineName
 
-    -- * Response
-    , DescribeOptionGroupOptionsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeOptionGroupOptionsResponse
-    -- ** Response lenses
-    , dogorMarker
-    , dogorOptionGroupOptions
+    , DescribeOptionGroupOptionsResponse
+    -- * Response Lenses
+    , dogorsOptionGroupOptions
+    , dogorsMarker
+    , dogorsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeOptionGroupOptions = DescribeOptionGroupOptions
-    { _dogoEngineName         :: Text
-    , _dogoFilters            :: List "member" Filter
-    , _dogoMajorEngineVersion :: Maybe Text
-    , _dogoMarker             :: Maybe Text
-    , _dogoMaxRecords         :: Maybe Int
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeOptionGroupOptions' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeOptionGroupOptions' smart constructor.
+data DescribeOptionGroupOptions = DescribeOptionGroupOptions'
+    { _dogoFilters            :: !(Maybe [Filter])
+    , _dogoMajorEngineVersion :: !(Maybe Text)
+    , _dogoMaxRecords         :: !(Maybe Int)
+    , _dogoMarker             :: !(Maybe Text)
+    , _dogoEngineName         :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeOptionGroupOptions' with the minimum fields required to make a request.
 --
--- * 'dogoEngineName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dogoFilters' @::@ ['Filter']
+-- * 'dogoFilters'
 --
--- * 'dogoMajorEngineVersion' @::@ 'Maybe' 'Text'
+-- * 'dogoMajorEngineVersion'
 --
--- * 'dogoMarker' @::@ 'Maybe' 'Text'
+-- * 'dogoMaxRecords'
 --
--- * 'dogoMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dogoMarker'
 --
-describeOptionGroupOptions :: Text -- ^ 'dogoEngineName'
-                           -> DescribeOptionGroupOptions
-describeOptionGroupOptions p1 = DescribeOptionGroupOptions
-    { _dogoEngineName         = p1
+-- * 'dogoEngineName'
+describeOptionGroupOptions
+    :: Text -- ^ 'dogoEngineName'
+    -> DescribeOptionGroupOptions
+describeOptionGroupOptions pEngineName_ =
+    DescribeOptionGroupOptions'
+    { _dogoFilters = Nothing
     , _dogoMajorEngineVersion = Nothing
-    , _dogoFilters            = mempty
-    , _dogoMaxRecords         = Nothing
-    , _dogoMarker             = Nothing
+    , _dogoMaxRecords = Nothing
+    , _dogoMarker = Nothing
+    , _dogoEngineName = pEngineName_
     }
 
--- | A required parameter. Options available for the given Engine name will be
--- described.
-dogoEngineName :: Lens' DescribeOptionGroupOptions Text
-dogoEngineName = lens _dogoEngineName (\s a -> s { _dogoEngineName = a })
-
 -- | This parameter is not currently supported.
 dogoFilters :: Lens' DescribeOptionGroupOptions [Filter]
-dogoFilters = lens _dogoFilters (\s a -> s { _dogoFilters = a }) . _List
+dogoFilters = lens _dogoFilters (\ s a -> s{_dogoFilters = a}) . _Default . _Coerce;
 
--- | If specified, filters the results to include only options for the specified
--- major engine version.
+-- | If specified, filters the results to include only options for the
+-- specified major engine version.
 dogoMajorEngineVersion :: Lens' DescribeOptionGroupOptions (Maybe Text)
-dogoMajorEngineVersion =
-    lens _dogoMajorEngineVersion (\s a -> s { _dogoMajorEngineVersion = a })
-
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-dogoMarker :: Lens' DescribeOptionGroupOptions (Maybe Text)
-dogoMarker = lens _dogoMarker (\s a -> s { _dogoMarker = a })
+dogoMajorEngineVersion = lens _dogoMajorEngineVersion (\ s a -> s{_dogoMajorEngineVersion = a});
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results can be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
+-- Constraints: Minimum 20, maximum 100.
 dogoMaxRecords :: Lens' DescribeOptionGroupOptions (Maybe Int)
-dogoMaxRecords = lens _dogoMaxRecords (\s a -> s { _dogoMaxRecords = a })
+dogoMaxRecords = lens _dogoMaxRecords (\ s a -> s{_dogoMaxRecords = a});
 
-data DescribeOptionGroupOptionsResponse = DescribeOptionGroupOptionsResponse
-    { _dogorMarker             :: Maybe Text
-    , _dogorOptionGroupOptions :: List "member" OptionGroupOption
-    } deriving (Eq, Read, Show)
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+dogoMarker :: Lens' DescribeOptionGroupOptions (Maybe Text)
+dogoMarker = lens _dogoMarker (\ s a -> s{_dogoMarker = a});
 
--- | 'DescribeOptionGroupOptionsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dogorMarker' @::@ 'Maybe' 'Text'
---
--- * 'dogorOptionGroupOptions' @::@ ['OptionGroupOption']
---
-describeOptionGroupOptionsResponse :: DescribeOptionGroupOptionsResponse
-describeOptionGroupOptionsResponse = DescribeOptionGroupOptionsResponse
-    { _dogorOptionGroupOptions = mempty
-    , _dogorMarker             = Nothing
-    }
+-- | A required parameter. Options available for the given engine name will
+-- be described.
+dogoEngineName :: Lens' DescribeOptionGroupOptions Text
+dogoEngineName = lens _dogoEngineName (\ s a -> s{_dogoEngineName = a});
 
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-dogorMarker :: Lens' DescribeOptionGroupOptionsResponse (Maybe Text)
-dogorMarker = lens _dogorMarker (\s a -> s { _dogorMarker = a })
+instance AWSPager DescribeOptionGroupOptions where
+        page rq rs
+          | stop (rs ^. dogorsMarker) = Nothing
+          | stop (rs ^. dogorsOptionGroupOptions) = Nothing
+          | otherwise =
+            Just $ rq & dogoMarker .~ rs ^. dogorsMarker
 
-dogorOptionGroupOptions :: Lens' DescribeOptionGroupOptionsResponse [OptionGroupOption]
-dogorOptionGroupOptions =
-    lens _dogorOptionGroupOptions (\s a -> s { _dogorOptionGroupOptions = a })
-        . _List
+instance AWSRequest DescribeOptionGroupOptions where
+        type Sv DescribeOptionGroupOptions = RDS
+        type Rs DescribeOptionGroupOptions =
+             DescribeOptionGroupOptionsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeOptionGroupOptionsResult"
+              (\ s h x ->
+                 DescribeOptionGroupOptionsResponse' <$>
+                   (x .@? "OptionGroupOptions" .!@ mempty >>=
+                      may (parseXMLList "OptionGroupOption"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
+instance ToHeaders DescribeOptionGroupOptions where
+        toHeaders = const mempty
+
 instance ToPath DescribeOptionGroupOptions where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeOptionGroupOptions where
-    toQuery DescribeOptionGroupOptions{..} = mconcat
-        [ "EngineName"         =? _dogoEngineName
-        , "Filters"            =? _dogoFilters
-        , "MajorEngineVersion" =? _dogoMajorEngineVersion
-        , "Marker"             =? _dogoMarker
-        , "MaxRecords"         =? _dogoMaxRecords
-        ]
+        toQuery DescribeOptionGroupOptions'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeOptionGroupOptions" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _dogoFilters),
+               "MajorEngineVersion" =: _dogoMajorEngineVersion,
+               "MaxRecords" =: _dogoMaxRecords,
+               "Marker" =: _dogoMarker,
+               "EngineName" =: _dogoEngineName]
 
-instance ToHeaders DescribeOptionGroupOptions
+-- |
+--
+-- /See:/ 'describeOptionGroupOptionsResponse' smart constructor.
+data DescribeOptionGroupOptionsResponse = DescribeOptionGroupOptionsResponse'
+    { _dogorsOptionGroupOptions :: !(Maybe [OptionGroupOption])
+    , _dogorsMarker             :: !(Maybe Text)
+    , _dogorsStatus             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeOptionGroupOptions where
-    type Sv DescribeOptionGroupOptions = RDS
-    type Rs DescribeOptionGroupOptions = DescribeOptionGroupOptionsResponse
+-- | Creates a value of 'DescribeOptionGroupOptionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dogorsOptionGroupOptions'
+--
+-- * 'dogorsMarker'
+--
+-- * 'dogorsStatus'
+describeOptionGroupOptionsResponse
+    :: Int -- ^ 'dogorsStatus'
+    -> DescribeOptionGroupOptionsResponse
+describeOptionGroupOptionsResponse pStatus_ =
+    DescribeOptionGroupOptionsResponse'
+    { _dogorsOptionGroupOptions = Nothing
+    , _dogorsMarker = Nothing
+    , _dogorsStatus = pStatus_
+    }
 
-    request  = post "DescribeOptionGroupOptions"
-    response = xmlResponse
+-- | Undocumented member.
+dogorsOptionGroupOptions :: Lens' DescribeOptionGroupOptionsResponse [OptionGroupOption]
+dogorsOptionGroupOptions = lens _dogorsOptionGroupOptions (\ s a -> s{_dogorsOptionGroupOptions = a}) . _Default . _Coerce;
 
-instance FromXML DescribeOptionGroupOptionsResponse where
-    parseXML = withElement "DescribeOptionGroupOptionsResult" $ \x -> DescribeOptionGroupOptionsResponse
-        <$> x .@? "Marker"
-        <*> x .@? "OptionGroupOptions" .!@ mempty
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+dogorsMarker :: Lens' DescribeOptionGroupOptionsResponse (Maybe Text)
+dogorsMarker = lens _dogorsMarker (\ s a -> s{_dogorsMarker = a});
 
-instance AWSPager DescribeOptionGroupOptions where
-    page rq rs
-        | stop (rs ^. dogorMarker) = Nothing
-        | otherwise = (\x -> rq & dogoMarker ?~ x)
-            <$> (rs ^. dogorMarker)
+-- | The response status code.
+dogorsStatus :: Lens' DescribeOptionGroupOptionsResponse Int
+dogorsStatus = lens _dogorsStatus (\ s a -> s{_dogorsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeOptionGroups.hs b/gen/Network/AWS/RDS/DescribeOptionGroups.hs
--- a/gen/Network/AWS/RDS/DescribeOptionGroups.hs
+++ b/gen/Network/AWS/RDS/DescribeOptionGroups.hs
@@ -1,191 +1,211 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeOptionGroups
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes the available option groups.
+-- Describes the available option groups.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeOptionGroups.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeOptionGroups.html AWS API Reference> for DescribeOptionGroups.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeOptionGroups
     (
-    -- * Request
-      DescribeOptionGroups
-    -- ** Request constructor
-    , describeOptionGroups
-    -- ** Request lenses
-    , dogEngineName
+    -- * Creating a Request
+      describeOptionGroups
+    , DescribeOptionGroups
+    -- * Request Lenses
     , dogFilters
+    , dogEngineName
     , dogMajorEngineVersion
-    , dogMarker
     , dogMaxRecords
+    , dogMarker
     , dogOptionGroupName
 
-    -- * Response
-    , DescribeOptionGroupsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeOptionGroupsResponse
-    -- ** Response lenses
-    , dogrMarker
-    , dogrOptionGroupsList
+    , DescribeOptionGroupsResponse
+    -- * Response Lenses
+    , dogrsMarker
+    , dogrsOptionGroupsList
+    , dogrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeOptionGroups = DescribeOptionGroups
-    { _dogEngineName         :: Maybe Text
-    , _dogFilters            :: List "member" Filter
-    , _dogMajorEngineVersion :: Maybe Text
-    , _dogMarker             :: Maybe Text
-    , _dogMaxRecords         :: Maybe Int
-    , _dogOptionGroupName    :: Maybe Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeOptionGroups' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeOptionGroups' smart constructor.
+data DescribeOptionGroups = DescribeOptionGroups'
+    { _dogFilters            :: !(Maybe [Filter])
+    , _dogEngineName         :: !(Maybe Text)
+    , _dogMajorEngineVersion :: !(Maybe Text)
+    , _dogMaxRecords         :: !(Maybe Int)
+    , _dogMarker             :: !(Maybe Text)
+    , _dogOptionGroupName    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeOptionGroups' with the minimum fields required to make a request.
 --
--- * 'dogEngineName' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dogFilters' @::@ ['Filter']
+-- * 'dogFilters'
 --
--- * 'dogMajorEngineVersion' @::@ 'Maybe' 'Text'
+-- * 'dogEngineName'
 --
--- * 'dogMarker' @::@ 'Maybe' 'Text'
+-- * 'dogMajorEngineVersion'
 --
--- * 'dogMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dogMaxRecords'
 --
--- * 'dogOptionGroupName' @::@ 'Maybe' 'Text'
+-- * 'dogMarker'
 --
-describeOptionGroups :: DescribeOptionGroups
-describeOptionGroups = DescribeOptionGroups
-    { _dogOptionGroupName    = Nothing
-    , _dogFilters            = mempty
-    , _dogMarker             = Nothing
-    , _dogMaxRecords         = Nothing
-    , _dogEngineName         = Nothing
+-- * 'dogOptionGroupName'
+describeOptionGroups
+    :: DescribeOptionGroups
+describeOptionGroups =
+    DescribeOptionGroups'
+    { _dogFilters = Nothing
+    , _dogEngineName = Nothing
     , _dogMajorEngineVersion = Nothing
+    , _dogMaxRecords = Nothing
+    , _dogMarker = Nothing
+    , _dogOptionGroupName = Nothing
     }
 
--- | Filters the list of option groups to only include groups associated with a
--- specific database engine.
-dogEngineName :: Lens' DescribeOptionGroups (Maybe Text)
-dogEngineName = lens _dogEngineName (\s a -> s { _dogEngineName = a })
-
 -- | This parameter is not currently supported.
 dogFilters :: Lens' DescribeOptionGroups [Filter]
-dogFilters = lens _dogFilters (\s a -> s { _dogFilters = a }) . _List
+dogFilters = lens _dogFilters (\ s a -> s{_dogFilters = a}) . _Default . _Coerce;
 
--- | Filters the list of option groups to only include groups associated with a
--- specific database engine version. If specified, then EngineName must also be
--- specified.
-dogMajorEngineVersion :: Lens' DescribeOptionGroups (Maybe Text)
-dogMajorEngineVersion =
-    lens _dogMajorEngineVersion (\s a -> s { _dogMajorEngineVersion = a })
+-- | Filters the list of option groups to only include groups associated with
+-- a specific database engine.
+dogEngineName :: Lens' DescribeOptionGroups (Maybe Text)
+dogEngineName = lens _dogEngineName (\ s a -> s{_dogEngineName = a});
 
--- | An optional pagination token provided by a previous DescribeOptionGroups
--- request. If this parameter is specified, the response includes only records
--- beyond the marker, up to the value specified by 'MaxRecords'.
-dogMarker :: Lens' DescribeOptionGroups (Maybe Text)
-dogMarker = lens _dogMarker (\s a -> s { _dogMarker = a })
+-- | Filters the list of option groups to only include groups associated with
+-- a specific database engine version. If specified, then EngineName must
+-- also be specified.
+dogMajorEngineVersion :: Lens' DescribeOptionGroups (Maybe Text)
+dogMajorEngineVersion = lens _dogMajorEngineVersion (\ s a -> s{_dogMajorEngineVersion = a});
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results can be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
+-- Constraints: Minimum 20, maximum 100.
 dogMaxRecords :: Lens' DescribeOptionGroups (Maybe Int)
-dogMaxRecords = lens _dogMaxRecords (\s a -> s { _dogMaxRecords = a })
+dogMaxRecords = lens _dogMaxRecords (\ s a -> s{_dogMaxRecords = a});
 
--- | The name of the option group to describe. Cannot be supplied together with
--- EngineName or MajorEngineVersion.
-dogOptionGroupName :: Lens' DescribeOptionGroups (Maybe Text)
-dogOptionGroupName =
-    lens _dogOptionGroupName (\s a -> s { _dogOptionGroupName = a })
+-- | An optional pagination token provided by a previous DescribeOptionGroups
+-- request. If this parameter is specified, the response includes only
+-- records beyond the marker, up to the value specified by 'MaxRecords'.
+dogMarker :: Lens' DescribeOptionGroups (Maybe Text)
+dogMarker = lens _dogMarker (\ s a -> s{_dogMarker = a});
 
-data DescribeOptionGroupsResponse = DescribeOptionGroupsResponse
-    { _dogrMarker           :: Maybe Text
-    , _dogrOptionGroupsList :: List "member" OptionGroup
-    } deriving (Eq, Read, Show)
+-- | The name of the option group to describe. Cannot be supplied together
+-- with EngineName or MajorEngineVersion.
+dogOptionGroupName :: Lens' DescribeOptionGroups (Maybe Text)
+dogOptionGroupName = lens _dogOptionGroupName (\ s a -> s{_dogOptionGroupName = a});
 
--- | 'DescribeOptionGroupsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dogrMarker' @::@ 'Maybe' 'Text'
---
--- * 'dogrOptionGroupsList' @::@ ['OptionGroup']
---
-describeOptionGroupsResponse :: DescribeOptionGroupsResponse
-describeOptionGroupsResponse = DescribeOptionGroupsResponse
-    { _dogrOptionGroupsList = mempty
-    , _dogrMarker           = Nothing
-    }
+instance AWSPager DescribeOptionGroups where
+        page rq rs
+          | stop (rs ^. dogrsMarker) = Nothing
+          | stop (rs ^. dogrsOptionGroupsList) = Nothing
+          | otherwise =
+            Just $ rq & dogMarker .~ rs ^. dogrsMarker
 
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-dogrMarker :: Lens' DescribeOptionGroupsResponse (Maybe Text)
-dogrMarker = lens _dogrMarker (\s a -> s { _dogrMarker = a })
+instance AWSRequest DescribeOptionGroups where
+        type Sv DescribeOptionGroups = RDS
+        type Rs DescribeOptionGroups =
+             DescribeOptionGroupsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeOptionGroupsResult"
+              (\ s h x ->
+                 DescribeOptionGroupsResponse' <$>
+                   (x .@? "Marker") <*>
+                     (x .@? "OptionGroupsList" .!@ mempty >>=
+                        may (parseXMLList "OptionGroup"))
+                     <*> (pure (fromEnum s)))
 
--- | List of option groups.
-dogrOptionGroupsList :: Lens' DescribeOptionGroupsResponse [OptionGroup]
-dogrOptionGroupsList =
-    lens _dogrOptionGroupsList (\s a -> s { _dogrOptionGroupsList = a })
-        . _List
+instance ToHeaders DescribeOptionGroups where
+        toHeaders = const mempty
 
 instance ToPath DescribeOptionGroups where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeOptionGroups where
-    toQuery DescribeOptionGroups{..} = mconcat
-        [ "EngineName"         =? _dogEngineName
-        , "Filters"            =? _dogFilters
-        , "MajorEngineVersion" =? _dogMajorEngineVersion
-        , "Marker"             =? _dogMarker
-        , "MaxRecords"         =? _dogMaxRecords
-        , "OptionGroupName"    =? _dogOptionGroupName
-        ]
+        toQuery DescribeOptionGroups'{..}
+          = mconcat
+              ["Action" =: ("DescribeOptionGroups" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _dogFilters),
+               "EngineName" =: _dogEngineName,
+               "MajorEngineVersion" =: _dogMajorEngineVersion,
+               "MaxRecords" =: _dogMaxRecords,
+               "Marker" =: _dogMarker,
+               "OptionGroupName" =: _dogOptionGroupName]
 
-instance ToHeaders DescribeOptionGroups
+-- | List of option groups.
+--
+-- /See:/ 'describeOptionGroupsResponse' smart constructor.
+data DescribeOptionGroupsResponse = DescribeOptionGroupsResponse'
+    { _dogrsMarker           :: !(Maybe Text)
+    , _dogrsOptionGroupsList :: !(Maybe [OptionGroup])
+    , _dogrsStatus           :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeOptionGroups where
-    type Sv DescribeOptionGroups = RDS
-    type Rs DescribeOptionGroups = DescribeOptionGroupsResponse
+-- | Creates a value of 'DescribeOptionGroupsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dogrsMarker'
+--
+-- * 'dogrsOptionGroupsList'
+--
+-- * 'dogrsStatus'
+describeOptionGroupsResponse
+    :: Int -- ^ 'dogrsStatus'
+    -> DescribeOptionGroupsResponse
+describeOptionGroupsResponse pStatus_ =
+    DescribeOptionGroupsResponse'
+    { _dogrsMarker = Nothing
+    , _dogrsOptionGroupsList = Nothing
+    , _dogrsStatus = pStatus_
+    }
 
-    request  = post "DescribeOptionGroups"
-    response = xmlResponse
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+dogrsMarker :: Lens' DescribeOptionGroupsResponse (Maybe Text)
+dogrsMarker = lens _dogrsMarker (\ s a -> s{_dogrsMarker = a});
 
-instance FromXML DescribeOptionGroupsResponse where
-    parseXML = withElement "DescribeOptionGroupsResult" $ \x -> DescribeOptionGroupsResponse
-        <$> x .@? "Marker"
-        <*> x .@? "OptionGroupsList" .!@ mempty
+-- | List of option groups.
+dogrsOptionGroupsList :: Lens' DescribeOptionGroupsResponse [OptionGroup]
+dogrsOptionGroupsList = lens _dogrsOptionGroupsList (\ s a -> s{_dogrsOptionGroupsList = a}) . _Default . _Coerce;
 
-instance AWSPager DescribeOptionGroups where
-    page rq rs
-        | stop (rs ^. dogrMarker) = Nothing
-        | otherwise = (\x -> rq & dogMarker ?~ x)
-            <$> (rs ^. dogrMarker)
+-- | The response status code.
+dogrsStatus :: Lens' DescribeOptionGroupsResponse Int
+dogrsStatus = lens _dogrsStatus (\ s a -> s{_dogrsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeOrderableDBInstanceOptions.hs b/gen/Network/AWS/RDS/DescribeOrderableDBInstanceOptions.hs
--- a/gen/Network/AWS/RDS/DescribeOrderableDBInstanceOptions.hs
+++ b/gen/Network/AWS/RDS/DescribeOrderableDBInstanceOptions.hs
@@ -1,217 +1,244 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeOrderableDBInstanceOptions
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns a list of orderable DB instance options for the specified engine.
+-- Returns a list of orderable DB instance options for the specified
+-- engine.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeOrderableDBInstanceOptions.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeOrderableDBInstanceOptions.html AWS API Reference> for DescribeOrderableDBInstanceOptions.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeOrderableDBInstanceOptions
     (
-    -- * Request
-      DescribeOrderableDBInstanceOptions
-    -- ** Request constructor
-    , describeOrderableDBInstanceOptions
-    -- ** Request lenses
-    , dodbioDBInstanceClass
-    , dodbioEngine
-    , dodbioEngineVersion
-    , dodbioFilters
-    , dodbioLicenseModel
-    , dodbioMarker
-    , dodbioMaxRecords
-    , dodbioVpc
+    -- * Creating a Request
+      describeOrderableDBInstanceOptions
+    , DescribeOrderableDBInstanceOptions
+    -- * Request Lenses
+    , dodioEngineVersion
+    , dodioFilters
+    , dodioDBInstanceClass
+    , dodioLicenseModel
+    , dodioMaxRecords
+    , dodioMarker
+    , dodioVPC
+    , dodioEngine
 
-    -- * Response
-    , DescribeOrderableDBInstanceOptionsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeOrderableDBInstanceOptionsResponse
-    -- ** Response lenses
-    , dodbiorMarker
-    , dodbiorOrderableDBInstanceOptions
+    , DescribeOrderableDBInstanceOptionsResponse
+    -- * Response Lenses
+    , dodiorsOrderableDBInstanceOptions
+    , dodiorsMarker
+    , dodiorsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeOrderableDBInstanceOptions = DescribeOrderableDBInstanceOptions
-    { _dodbioDBInstanceClass :: Maybe Text
-    , _dodbioEngine          :: Text
-    , _dodbioEngineVersion   :: Maybe Text
-    , _dodbioFilters         :: List "member" Filter
-    , _dodbioLicenseModel    :: Maybe Text
-    , _dodbioMarker          :: Maybe Text
-    , _dodbioMaxRecords      :: Maybe Int
-    , _dodbioVpc             :: Maybe Bool
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeOrderableDBInstanceOptions' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeOrderableDBInstanceOptions' smart constructor.
+data DescribeOrderableDBInstanceOptions = DescribeOrderableDBInstanceOptions'
+    { _dodioEngineVersion   :: !(Maybe Text)
+    , _dodioFilters         :: !(Maybe [Filter])
+    , _dodioDBInstanceClass :: !(Maybe Text)
+    , _dodioLicenseModel    :: !(Maybe Text)
+    , _dodioMaxRecords      :: !(Maybe Int)
+    , _dodioMarker          :: !(Maybe Text)
+    , _dodioVPC             :: !(Maybe Bool)
+    , _dodioEngine          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeOrderableDBInstanceOptions' with the minimum fields required to make a request.
 --
--- * 'dodbioDBInstanceClass' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dodbioEngine' @::@ 'Text'
+-- * 'dodioEngineVersion'
 --
--- * 'dodbioEngineVersion' @::@ 'Maybe' 'Text'
+-- * 'dodioFilters'
 --
--- * 'dodbioFilters' @::@ ['Filter']
+-- * 'dodioDBInstanceClass'
 --
--- * 'dodbioLicenseModel' @::@ 'Maybe' 'Text'
+-- * 'dodioLicenseModel'
 --
--- * 'dodbioMarker' @::@ 'Maybe' 'Text'
+-- * 'dodioMaxRecords'
 --
--- * 'dodbioMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dodioMarker'
 --
--- * 'dodbioVpc' @::@ 'Maybe' 'Bool'
+-- * 'dodioVPC'
 --
-describeOrderableDBInstanceOptions :: Text -- ^ 'dodbioEngine'
-                                   -> DescribeOrderableDBInstanceOptions
-describeOrderableDBInstanceOptions p1 = DescribeOrderableDBInstanceOptions
-    { _dodbioEngine          = p1
-    , _dodbioEngineVersion   = Nothing
-    , _dodbioDBInstanceClass = Nothing
-    , _dodbioLicenseModel    = Nothing
-    , _dodbioVpc             = Nothing
-    , _dodbioFilters         = mempty
-    , _dodbioMaxRecords      = Nothing
-    , _dodbioMarker          = Nothing
+-- * 'dodioEngine'
+describeOrderableDBInstanceOptions
+    :: Text -- ^ 'dodioEngine'
+    -> DescribeOrderableDBInstanceOptions
+describeOrderableDBInstanceOptions pEngine_ =
+    DescribeOrderableDBInstanceOptions'
+    { _dodioEngineVersion = Nothing
+    , _dodioFilters = Nothing
+    , _dodioDBInstanceClass = Nothing
+    , _dodioLicenseModel = Nothing
+    , _dodioMaxRecords = Nothing
+    , _dodioMarker = Nothing
+    , _dodioVPC = Nothing
+    , _dodioEngine = pEngine_
     }
 
--- | The DB instance class filter value. Specify this parameter to show only the
--- available offerings matching the specified DB instance class.
-dodbioDBInstanceClass :: Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
-dodbioDBInstanceClass =
-    lens _dodbioDBInstanceClass (\s a -> s { _dodbioDBInstanceClass = a })
-
--- | The name of the engine to retrieve DB instance options for.
-dodbioEngine :: Lens' DescribeOrderableDBInstanceOptions Text
-dodbioEngine = lens _dodbioEngine (\s a -> s { _dodbioEngine = a })
-
 -- | The engine version filter value. Specify this parameter to show only the
 -- available offerings matching the specified engine version.
-dodbioEngineVersion :: Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
-dodbioEngineVersion =
-    lens _dodbioEngineVersion (\s a -> s { _dodbioEngineVersion = a })
+dodioEngineVersion :: Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
+dodioEngineVersion = lens _dodioEngineVersion (\ s a -> s{_dodioEngineVersion = a});
 
 -- | This parameter is not currently supported.
-dodbioFilters :: Lens' DescribeOrderableDBInstanceOptions [Filter]
-dodbioFilters = lens _dodbioFilters (\s a -> s { _dodbioFilters = a }) . _List
+dodioFilters :: Lens' DescribeOrderableDBInstanceOptions [Filter]
+dodioFilters = lens _dodioFilters (\ s a -> s{_dodioFilters = a}) . _Default . _Coerce;
 
+-- | The DB instance class filter value. Specify this parameter to show only
+-- the available offerings matching the specified DB instance class.
+dodioDBInstanceClass :: Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
+dodioDBInstanceClass = lens _dodioDBInstanceClass (\ s a -> s{_dodioDBInstanceClass = a});
+
 -- | The license model filter value. Specify this parameter to show only the
 -- available offerings matching the specified license model.
-dodbioLicenseModel :: Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
-dodbioLicenseModel =
-    lens _dodbioLicenseModel (\s a -> s { _dodbioLicenseModel = a })
-
--- | An optional pagination token provided by a previous
--- DescribeOrderableDBInstanceOptions request. If this parameter is specified,
--- the response includes only records beyond the marker, up to the value
--- specified by 'MaxRecords' .
-dodbioMarker :: Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
-dodbioMarker = lens _dodbioMarker (\s a -> s { _dodbioMarker = a })
+dodioLicenseModel :: Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
+dodioLicenseModel = lens _dodioLicenseModel (\ s a -> s{_dodioLicenseModel = a});
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results can be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
-dodbioMaxRecords :: Lens' DescribeOrderableDBInstanceOptions (Maybe Int)
-dodbioMaxRecords = lens _dodbioMaxRecords (\s a -> s { _dodbioMaxRecords = a })
+-- Constraints: Minimum 20, maximum 100.
+dodioMaxRecords :: Lens' DescribeOrderableDBInstanceOptions (Maybe Int)
+dodioMaxRecords = lens _dodioMaxRecords (\ s a -> s{_dodioMaxRecords = a});
 
--- | The VPC filter value. Specify this parameter to show only the available VPC
--- or non-VPC offerings.
-dodbioVpc :: Lens' DescribeOrderableDBInstanceOptions (Maybe Bool)
-dodbioVpc = lens _dodbioVpc (\s a -> s { _dodbioVpc = a })
+-- | An optional pagination token provided by a previous
+-- DescribeOrderableDBInstanceOptions request. If this parameter is
+-- specified, the response includes only records beyond the marker, up to
+-- the value specified by 'MaxRecords' .
+dodioMarker :: Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
+dodioMarker = lens _dodioMarker (\ s a -> s{_dodioMarker = a});
 
-data DescribeOrderableDBInstanceOptionsResponse = DescribeOrderableDBInstanceOptionsResponse
-    { _dodbiorMarker                     :: Maybe Text
-    , _dodbiorOrderableDBInstanceOptions :: List "member" OrderableDBInstanceOption
-    } deriving (Eq, Read, Show)
+-- | The VPC filter value. Specify this parameter to show only the available
+-- VPC or non-VPC offerings.
+dodioVPC :: Lens' DescribeOrderableDBInstanceOptions (Maybe Bool)
+dodioVPC = lens _dodioVPC (\ s a -> s{_dodioVPC = a});
 
--- | 'DescribeOrderableDBInstanceOptionsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dodbiorMarker' @::@ 'Maybe' 'Text'
---
--- * 'dodbiorOrderableDBInstanceOptions' @::@ ['OrderableDBInstanceOption']
---
-describeOrderableDBInstanceOptionsResponse :: DescribeOrderableDBInstanceOptionsResponse
-describeOrderableDBInstanceOptionsResponse = DescribeOrderableDBInstanceOptionsResponse
-    { _dodbiorOrderableDBInstanceOptions = mempty
-    , _dodbiorMarker                     = Nothing
-    }
+-- | The name of the engine to retrieve DB instance options for.
+dodioEngine :: Lens' DescribeOrderableDBInstanceOptions Text
+dodioEngine = lens _dodioEngine (\ s a -> s{_dodioEngine = a});
 
--- | An optional pagination token provided by a previous
--- OrderableDBInstanceOptions request. If this parameter is specified, the
--- response includes only records beyond the marker, up to the value specified
--- by 'MaxRecords' .
-dodbiorMarker :: Lens' DescribeOrderableDBInstanceOptionsResponse (Maybe Text)
-dodbiorMarker = lens _dodbiorMarker (\s a -> s { _dodbiorMarker = a })
+instance AWSPager DescribeOrderableDBInstanceOptions
+         where
+        page rq rs
+          | stop (rs ^. dodiorsMarker) = Nothing
+          | stop (rs ^. dodiorsOrderableDBInstanceOptions) =
+            Nothing
+          | otherwise =
+            Just $ rq & dodioMarker .~ rs ^. dodiorsMarker
 
--- | An 'OrderableDBInstanceOption' structure containing information about orderable
--- options for the DB instance.
-dodbiorOrderableDBInstanceOptions :: Lens' DescribeOrderableDBInstanceOptionsResponse [OrderableDBInstanceOption]
-dodbiorOrderableDBInstanceOptions =
-    lens _dodbiorOrderableDBInstanceOptions
-        (\s a -> s { _dodbiorOrderableDBInstanceOptions = a })
-            . _List
+instance AWSRequest
+         DescribeOrderableDBInstanceOptions where
+        type Sv DescribeOrderableDBInstanceOptions = RDS
+        type Rs DescribeOrderableDBInstanceOptions =
+             DescribeOrderableDBInstanceOptionsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeOrderableDBInstanceOptionsResult"
+              (\ s h x ->
+                 DescribeOrderableDBInstanceOptionsResponse' <$>
+                   (x .@? "OrderableDBInstanceOptions" .!@ mempty >>=
+                      may (parseXMLList "OrderableDBInstanceOption"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
-instance ToPath DescribeOrderableDBInstanceOptions where
-    toPath = const "/"
+instance ToHeaders DescribeOrderableDBInstanceOptions
+         where
+        toHeaders = const mempty
 
-instance ToQuery DescribeOrderableDBInstanceOptions where
-    toQuery DescribeOrderableDBInstanceOptions{..} = mconcat
-        [ "DBInstanceClass" =? _dodbioDBInstanceClass
-        , "Engine"          =? _dodbioEngine
-        , "EngineVersion"   =? _dodbioEngineVersion
-        , "Filters"         =? _dodbioFilters
-        , "LicenseModel"    =? _dodbioLicenseModel
-        , "Marker"          =? _dodbioMarker
-        , "MaxRecords"      =? _dodbioMaxRecords
-        , "Vpc"             =? _dodbioVpc
-        ]
+instance ToPath DescribeOrderableDBInstanceOptions
+         where
+        toPath = const "/"
 
-instance ToHeaders DescribeOrderableDBInstanceOptions
+instance ToQuery DescribeOrderableDBInstanceOptions
+         where
+        toQuery DescribeOrderableDBInstanceOptions'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeOrderableDBInstanceOptions" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "EngineVersion" =: _dodioEngineVersion,
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _dodioFilters),
+               "DBInstanceClass" =: _dodioDBInstanceClass,
+               "LicenseModel" =: _dodioLicenseModel,
+               "MaxRecords" =: _dodioMaxRecords,
+               "Marker" =: _dodioMarker, "Vpc" =: _dodioVPC,
+               "Engine" =: _dodioEngine]
 
-instance AWSRequest DescribeOrderableDBInstanceOptions where
-    type Sv DescribeOrderableDBInstanceOptions = RDS
-    type Rs DescribeOrderableDBInstanceOptions = DescribeOrderableDBInstanceOptionsResponse
+-- | Contains the result of a successful invocation of the
+-- DescribeOrderableDBInstanceOptions action.
+--
+-- /See:/ 'describeOrderableDBInstanceOptionsResponse' smart constructor.
+data DescribeOrderableDBInstanceOptionsResponse = DescribeOrderableDBInstanceOptionsResponse'
+    { _dodiorsOrderableDBInstanceOptions :: !(Maybe [OrderableDBInstanceOption])
+    , _dodiorsMarker                     :: !(Maybe Text)
+    , _dodiorsStatus                     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DescribeOrderableDBInstanceOptions"
-    response = xmlResponse
+-- | Creates a value of 'DescribeOrderableDBInstanceOptionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dodiorsOrderableDBInstanceOptions'
+--
+-- * 'dodiorsMarker'
+--
+-- * 'dodiorsStatus'
+describeOrderableDBInstanceOptionsResponse
+    :: Int -- ^ 'dodiorsStatus'
+    -> DescribeOrderableDBInstanceOptionsResponse
+describeOrderableDBInstanceOptionsResponse pStatus_ =
+    DescribeOrderableDBInstanceOptionsResponse'
+    { _dodiorsOrderableDBInstanceOptions = Nothing
+    , _dodiorsMarker = Nothing
+    , _dodiorsStatus = pStatus_
+    }
 
-instance FromXML DescribeOrderableDBInstanceOptionsResponse where
-    parseXML = withElement "DescribeOrderableDBInstanceOptionsResult" $ \x -> DescribeOrderableDBInstanceOptionsResponse
-        <$> x .@? "Marker"
-        <*> x .@? "OrderableDBInstanceOptions" .!@ mempty
+-- | An OrderableDBInstanceOption structure containing information about
+-- orderable options for the DB instance.
+dodiorsOrderableDBInstanceOptions :: Lens' DescribeOrderableDBInstanceOptionsResponse [OrderableDBInstanceOption]
+dodiorsOrderableDBInstanceOptions = lens _dodiorsOrderableDBInstanceOptions (\ s a -> s{_dodiorsOrderableDBInstanceOptions = a}) . _Default . _Coerce;
 
-instance AWSPager DescribeOrderableDBInstanceOptions where
-    page rq rs
-        | stop (rs ^. dodbiorMarker) = Nothing
-        | otherwise = (\x -> rq & dodbioMarker ?~ x)
-            <$> (rs ^. dodbiorMarker)
+-- | An optional pagination token provided by a previous
+-- OrderableDBInstanceOptions request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by 'MaxRecords' .
+dodiorsMarker :: Lens' DescribeOrderableDBInstanceOptionsResponse (Maybe Text)
+dodiorsMarker = lens _dodiorsMarker (\ s a -> s{_dodiorsMarker = a});
+
+-- | The response status code.
+dodiorsStatus :: Lens' DescribeOrderableDBInstanceOptionsResponse Int
+dodiorsStatus = lens _dodiorsStatus (\ s a -> s{_dodiorsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribePendingMaintenanceActions.hs b/gen/Network/AWS/RDS/DescribePendingMaintenanceActions.hs
--- a/gen/Network/AWS/RDS/DescribePendingMaintenanceActions.hs
+++ b/gen/Network/AWS/RDS/DescribePendingMaintenanceActions.hs
@@ -1,167 +1,195 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribePendingMaintenanceActions
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns a list of resources (for example, DB instances) that have at least
--- one pending maintenance action.
+-- Returns a list of resources (for example, DB instances) that have at
+-- least one pending maintenance action.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribePendingMaintenanceActions.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribePendingMaintenanceActions.html AWS API Reference> for DescribePendingMaintenanceActions.
 module Network.AWS.RDS.DescribePendingMaintenanceActions
     (
-    -- * Request
-      DescribePendingMaintenanceActions
-    -- ** Request constructor
-    , describePendingMaintenanceActions
-    -- ** Request lenses
+    -- * Creating a Request
+      describePendingMaintenanceActions
+    , DescribePendingMaintenanceActions
+    -- * Request Lenses
     , dpmaFilters
-    , dpmaMarker
     , dpmaMaxRecords
+    , dpmaMarker
     , dpmaResourceIdentifier
 
-    -- * Response
-    , DescribePendingMaintenanceActionsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describePendingMaintenanceActionsResponse
-    -- ** Response lenses
-    , dpmarMarker
-    , dpmarPendingMaintenanceActions
+    , DescribePendingMaintenanceActionsResponse
+    -- * Response Lenses
+    , dpmarsPendingMaintenanceActions
+    , dpmarsMarker
+    , dpmarsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribePendingMaintenanceActions = DescribePendingMaintenanceActions
-    { _dpmaFilters            :: List "member" Filter
-    , _dpmaMarker             :: Maybe Text
-    , _dpmaMaxRecords         :: Maybe Int
-    , _dpmaResourceIdentifier :: Maybe Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribePendingMaintenanceActions' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describePendingMaintenanceActions' smart constructor.
+data DescribePendingMaintenanceActions = DescribePendingMaintenanceActions'
+    { _dpmaFilters            :: !(Maybe [Filter])
+    , _dpmaMaxRecords         :: !(Maybe Int)
+    , _dpmaMarker             :: !(Maybe Text)
+    , _dpmaResourceIdentifier :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribePendingMaintenanceActions' with the minimum fields required to make a request.
 --
--- * 'dpmaFilters' @::@ ['Filter']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dpmaMarker' @::@ 'Maybe' 'Text'
+-- * 'dpmaFilters'
 --
--- * 'dpmaMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dpmaMaxRecords'
 --
--- * 'dpmaResourceIdentifier' @::@ 'Maybe' 'Text'
+-- * 'dpmaMarker'
 --
-describePendingMaintenanceActions :: DescribePendingMaintenanceActions
-describePendingMaintenanceActions = DescribePendingMaintenanceActions
-    { _dpmaResourceIdentifier = Nothing
-    , _dpmaFilters            = mempty
-    , _dpmaMarker             = Nothing
-    , _dpmaMaxRecords         = Nothing
+-- * 'dpmaResourceIdentifier'
+describePendingMaintenanceActions
+    :: DescribePendingMaintenanceActions
+describePendingMaintenanceActions =
+    DescribePendingMaintenanceActions'
+    { _dpmaFilters = Nothing
+    , _dpmaMaxRecords = Nothing
+    , _dpmaMarker = Nothing
+    , _dpmaResourceIdentifier = Nothing
     }
 
--- | A filter that specifies one or more resources to return pending maintenance
--- actions for.
+-- | A filter that specifies one or more resources to return pending
+-- maintenance actions for.
 --
 -- Supported filters:
 --
--- 'db-instance-id' - Accepts DB instance identifiers and DB instance Amazon
--- Resource Names (ARNs). The results list will only include pending maintenance
--- actions for the DB instances identified by these ARNs.
+-- -   'db-instance-id' - Accepts DB instance identifiers and DB instance
+--     Amazon Resource Names (ARNs). The results list will only include
+--     pending maintenance actions for the DB instances identified by these
+--     ARNs.
 dpmaFilters :: Lens' DescribePendingMaintenanceActions [Filter]
-dpmaFilters = lens _dpmaFilters (\s a -> s { _dpmaFilters = a }) . _List
-
--- | An optional pagination token provided by a previous 'DescribePendingMaintenanceActions' request. If this parameter is specified, the response includes only records
--- beyond the marker, up to a number of records specified by 'MaxRecords'.
-dpmaMarker :: Lens' DescribePendingMaintenanceActions (Maybe Text)
-dpmaMarker = lens _dpmaMarker (\s a -> s { _dpmaMarker = a })
+dpmaFilters = lens _dpmaFilters (\ s a -> s{_dpmaFilters = a}) . _Default . _Coerce;
 
--- | The maximum number of records to include in the response. If more records
--- exist than the specified 'MaxRecords' value, a pagination token called a marker
--- is included in the response so that the remaining results can be retrieved.
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified 'MaxRecords' value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
+-- Constraints: Minimum 20, maximum 100.
 dpmaMaxRecords :: Lens' DescribePendingMaintenanceActions (Maybe Int)
-dpmaMaxRecords = lens _dpmaMaxRecords (\s a -> s { _dpmaMaxRecords = a })
+dpmaMaxRecords = lens _dpmaMaxRecords (\ s a -> s{_dpmaMaxRecords = a});
 
+-- | An optional pagination token provided by a previous
+-- 'DescribePendingMaintenanceActions' request. If this parameter is
+-- specified, the response includes only records beyond the marker, up to a
+-- number of records specified by 'MaxRecords'.
+dpmaMarker :: Lens' DescribePendingMaintenanceActions (Maybe Text)
+dpmaMarker = lens _dpmaMarker (\ s a -> s{_dpmaMarker = a});
+
 -- | The ARN of a resource to return pending maintenance actions for.
 dpmaResourceIdentifier :: Lens' DescribePendingMaintenanceActions (Maybe Text)
-dpmaResourceIdentifier =
-    lens _dpmaResourceIdentifier (\s a -> s { _dpmaResourceIdentifier = a })
+dpmaResourceIdentifier = lens _dpmaResourceIdentifier (\ s a -> s{_dpmaResourceIdentifier = a});
 
-data DescribePendingMaintenanceActionsResponse = DescribePendingMaintenanceActionsResponse
-    { _dpmarMarker                    :: Maybe Text
-    , _dpmarPendingMaintenanceActions :: List "member" ResourcePendingMaintenanceActions
-    } deriving (Eq, Read, Show)
+instance AWSRequest DescribePendingMaintenanceActions
+         where
+        type Sv DescribePendingMaintenanceActions = RDS
+        type Rs DescribePendingMaintenanceActions =
+             DescribePendingMaintenanceActionsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribePendingMaintenanceActionsResult"
+              (\ s h x ->
+                 DescribePendingMaintenanceActionsResponse' <$>
+                   (x .@? "PendingMaintenanceActions" .!@ mempty >>=
+                      may
+                        (parseXMLList "ResourcePendingMaintenanceActions"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
--- | 'DescribePendingMaintenanceActionsResponse' constructor.
+instance ToHeaders DescribePendingMaintenanceActions
+         where
+        toHeaders = const mempty
+
+instance ToPath DescribePendingMaintenanceActions
+         where
+        toPath = const "/"
+
+instance ToQuery DescribePendingMaintenanceActions
+         where
+        toQuery DescribePendingMaintenanceActions'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribePendingMaintenanceActions" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _dpmaFilters),
+               "MaxRecords" =: _dpmaMaxRecords,
+               "Marker" =: _dpmaMarker,
+               "ResourceIdentifier" =: _dpmaResourceIdentifier]
+
+-- | Data returned from the __DescribePendingMaintenanceActions__ action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describePendingMaintenanceActionsResponse' smart constructor.
+data DescribePendingMaintenanceActionsResponse = DescribePendingMaintenanceActionsResponse'
+    { _dpmarsPendingMaintenanceActions :: !(Maybe [ResourcePendingMaintenanceActions])
+    , _dpmarsMarker                    :: !(Maybe Text)
+    , _dpmarsStatus                    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribePendingMaintenanceActionsResponse' with the minimum fields required to make a request.
 --
--- * 'dpmarMarker' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dpmarPendingMaintenanceActions' @::@ ['ResourcePendingMaintenanceActions']
+-- * 'dpmarsPendingMaintenanceActions'
 --
-describePendingMaintenanceActionsResponse :: DescribePendingMaintenanceActionsResponse
-describePendingMaintenanceActionsResponse = DescribePendingMaintenanceActionsResponse
-    { _dpmarPendingMaintenanceActions = mempty
-    , _dpmarMarker                    = Nothing
+-- * 'dpmarsMarker'
+--
+-- * 'dpmarsStatus'
+describePendingMaintenanceActionsResponse
+    :: Int -- ^ 'dpmarsStatus'
+    -> DescribePendingMaintenanceActionsResponse
+describePendingMaintenanceActionsResponse pStatus_ =
+    DescribePendingMaintenanceActionsResponse'
+    { _dpmarsPendingMaintenanceActions = Nothing
+    , _dpmarsMarker = Nothing
+    , _dpmarsStatus = pStatus_
     }
 
--- | An optional pagination token provided by a previous 'DescribePendingMaintenanceActions' request. If this parameter is specified, the response includes only records
--- beyond the marker, up to a number of records specified by 'MaxRecords'.
-dpmarMarker :: Lens' DescribePendingMaintenanceActionsResponse (Maybe Text)
-dpmarMarker = lens _dpmarMarker (\s a -> s { _dpmarMarker = a })
-
 -- | A list of the pending maintenance actions for the resource.
-dpmarPendingMaintenanceActions :: Lens' DescribePendingMaintenanceActionsResponse [ResourcePendingMaintenanceActions]
-dpmarPendingMaintenanceActions =
-    lens _dpmarPendingMaintenanceActions
-        (\s a -> s { _dpmarPendingMaintenanceActions = a })
-            . _List
-
-instance ToPath DescribePendingMaintenanceActions where
-    toPath = const "/"
-
-instance ToQuery DescribePendingMaintenanceActions where
-    toQuery DescribePendingMaintenanceActions{..} = mconcat
-        [ "Filters"            =? _dpmaFilters
-        , "Marker"             =? _dpmaMarker
-        , "MaxRecords"         =? _dpmaMaxRecords
-        , "ResourceIdentifier" =? _dpmaResourceIdentifier
-        ]
-
-instance ToHeaders DescribePendingMaintenanceActions
-
-instance AWSRequest DescribePendingMaintenanceActions where
-    type Sv DescribePendingMaintenanceActions = RDS
-    type Rs DescribePendingMaintenanceActions = DescribePendingMaintenanceActionsResponse
+dpmarsPendingMaintenanceActions :: Lens' DescribePendingMaintenanceActionsResponse [ResourcePendingMaintenanceActions]
+dpmarsPendingMaintenanceActions = lens _dpmarsPendingMaintenanceActions (\ s a -> s{_dpmarsPendingMaintenanceActions = a}) . _Default . _Coerce;
 
-    request  = post "DescribePendingMaintenanceActions"
-    response = xmlResponse
+-- | An optional pagination token provided by a previous
+-- 'DescribePendingMaintenanceActions' request. If this parameter is
+-- specified, the response includes only records beyond the marker, up to a
+-- number of records specified by 'MaxRecords'.
+dpmarsMarker :: Lens' DescribePendingMaintenanceActionsResponse (Maybe Text)
+dpmarsMarker = lens _dpmarsMarker (\ s a -> s{_dpmarsMarker = a});
 
-instance FromXML DescribePendingMaintenanceActionsResponse where
-    parseXML = withElement "DescribePendingMaintenanceActionsResult" $ \x -> DescribePendingMaintenanceActionsResponse
-        <$> x .@? "Marker"
-        <*> x .@? "PendingMaintenanceActions" .!@ mempty
+-- | The response status code.
+dpmarsStatus :: Lens' DescribePendingMaintenanceActionsResponse Int
+dpmarsStatus = lens _dpmarsStatus (\ s a -> s{_dpmarsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeReservedDBInstances.hs b/gen/Network/AWS/RDS/DescribeReservedDBInstances.hs
--- a/gen/Network/AWS/RDS/DescribeReservedDBInstances.hs
+++ b/gen/Network/AWS/RDS/DescribeReservedDBInstances.hs
@@ -1,244 +1,262 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeReservedDBInstances
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns information about reserved DB instances for this account, or about a
--- specified reserved DB instance.
+-- Returns information about reserved DB instances for this account, or
+-- about a specified reserved DB instance.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeReservedDBInstances.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeReservedDBInstances.html AWS API Reference> for DescribeReservedDBInstances.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeReservedDBInstances
     (
-    -- * Request
-      DescribeReservedDBInstances
-    -- ** Request constructor
-    , describeReservedDBInstances
-    -- ** Request lenses
-    , drdbiDBInstanceClass
-    , drdbiDuration
-    , drdbiFilters
-    , drdbiMarker
-    , drdbiMaxRecords
-    , drdbiMultiAZ
-    , drdbiOfferingType
-    , drdbiProductDescription
-    , drdbiReservedDBInstanceId
-    , drdbiReservedDBInstancesOfferingId
+    -- * Creating a Request
+      describeReservedDBInstances
+    , DescribeReservedDBInstances
+    -- * Request Lenses
+    , drdiProductDescription
+    , drdiFilters
+    , drdiReservedDBInstanceId
+    , drdiDBInstanceClass
+    , drdiMaxRecords
+    , drdiMultiAZ
+    , drdiMarker
+    , drdiReservedDBInstancesOfferingId
+    , drdiOfferingType
+    , drdiDuration
 
-    -- * Response
-    , DescribeReservedDBInstancesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeReservedDBInstancesResponse
-    -- ** Response lenses
-    , drdbirMarker
-    , drdbirReservedDBInstances
+    , DescribeReservedDBInstancesResponse
+    -- * Response Lenses
+    , drdirsReservedDBInstances
+    , drdirsMarker
+    , drdirsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeReservedDBInstances = DescribeReservedDBInstances
-    { _drdbiDBInstanceClass               :: Maybe Text
-    , _drdbiDuration                      :: Maybe Text
-    , _drdbiFilters                       :: List "member" Filter
-    , _drdbiMarker                        :: Maybe Text
-    , _drdbiMaxRecords                    :: Maybe Int
-    , _drdbiMultiAZ                       :: Maybe Bool
-    , _drdbiOfferingType                  :: Maybe Text
-    , _drdbiProductDescription            :: Maybe Text
-    , _drdbiReservedDBInstanceId          :: Maybe Text
-    , _drdbiReservedDBInstancesOfferingId :: Maybe Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeReservedDBInstances' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeReservedDBInstances' smart constructor.
+data DescribeReservedDBInstances = DescribeReservedDBInstances'
+    { _drdiProductDescription            :: !(Maybe Text)
+    , _drdiFilters                       :: !(Maybe [Filter])
+    , _drdiReservedDBInstanceId          :: !(Maybe Text)
+    , _drdiDBInstanceClass               :: !(Maybe Text)
+    , _drdiMaxRecords                    :: !(Maybe Int)
+    , _drdiMultiAZ                       :: !(Maybe Bool)
+    , _drdiMarker                        :: !(Maybe Text)
+    , _drdiReservedDBInstancesOfferingId :: !(Maybe Text)
+    , _drdiOfferingType                  :: !(Maybe Text)
+    , _drdiDuration                      :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeReservedDBInstances' with the minimum fields required to make a request.
 --
--- * 'drdbiDBInstanceClass' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drdbiDuration' @::@ 'Maybe' 'Text'
+-- * 'drdiProductDescription'
 --
--- * 'drdbiFilters' @::@ ['Filter']
+-- * 'drdiFilters'
 --
--- * 'drdbiMarker' @::@ 'Maybe' 'Text'
+-- * 'drdiReservedDBInstanceId'
 --
--- * 'drdbiMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'drdiDBInstanceClass'
 --
--- * 'drdbiMultiAZ' @::@ 'Maybe' 'Bool'
+-- * 'drdiMaxRecords'
 --
--- * 'drdbiOfferingType' @::@ 'Maybe' 'Text'
+-- * 'drdiMultiAZ'
 --
--- * 'drdbiProductDescription' @::@ 'Maybe' 'Text'
+-- * 'drdiMarker'
 --
--- * 'drdbiReservedDBInstanceId' @::@ 'Maybe' 'Text'
+-- * 'drdiReservedDBInstancesOfferingId'
 --
--- * 'drdbiReservedDBInstancesOfferingId' @::@ 'Maybe' 'Text'
+-- * 'drdiOfferingType'
 --
-describeReservedDBInstances :: DescribeReservedDBInstances
-describeReservedDBInstances = DescribeReservedDBInstances
-    { _drdbiReservedDBInstanceId          = Nothing
-    , _drdbiReservedDBInstancesOfferingId = Nothing
-    , _drdbiDBInstanceClass               = Nothing
-    , _drdbiDuration                      = Nothing
-    , _drdbiProductDescription            = Nothing
-    , _drdbiOfferingType                  = Nothing
-    , _drdbiMultiAZ                       = Nothing
-    , _drdbiFilters                       = mempty
-    , _drdbiMaxRecords                    = Nothing
-    , _drdbiMarker                        = Nothing
+-- * 'drdiDuration'
+describeReservedDBInstances
+    :: DescribeReservedDBInstances
+describeReservedDBInstances =
+    DescribeReservedDBInstances'
+    { _drdiProductDescription = Nothing
+    , _drdiFilters = Nothing
+    , _drdiReservedDBInstanceId = Nothing
+    , _drdiDBInstanceClass = Nothing
+    , _drdiMaxRecords = Nothing
+    , _drdiMultiAZ = Nothing
+    , _drdiMarker = Nothing
+    , _drdiReservedDBInstancesOfferingId = Nothing
+    , _drdiOfferingType = Nothing
+    , _drdiDuration = Nothing
     }
 
--- | The DB instance class filter value. Specify this parameter to show only
--- those reservations matching the specified DB instances class.
-drdbiDBInstanceClass :: Lens' DescribeReservedDBInstances (Maybe Text)
-drdbiDBInstanceClass =
-    lens _drdbiDBInstanceClass (\s a -> s { _drdbiDBInstanceClass = a })
-
--- | The duration filter value, specified in years or seconds. Specify this
--- parameter to show only reservations for this duration.
---
--- Valid Values: '1 | 3 | 31536000 | 94608000'
-drdbiDuration :: Lens' DescribeReservedDBInstances (Maybe Text)
-drdbiDuration = lens _drdbiDuration (\s a -> s { _drdbiDuration = a })
+-- | The product description filter value. Specify this parameter to show
+-- only those reservations matching the specified product description.
+drdiProductDescription :: Lens' DescribeReservedDBInstances (Maybe Text)
+drdiProductDescription = lens _drdiProductDescription (\ s a -> s{_drdiProductDescription = a});
 
 -- | This parameter is not currently supported.
-drdbiFilters :: Lens' DescribeReservedDBInstances [Filter]
-drdbiFilters = lens _drdbiFilters (\s a -> s { _drdbiFilters = a }) . _List
+drdiFilters :: Lens' DescribeReservedDBInstances [Filter]
+drdiFilters = lens _drdiFilters (\ s a -> s{_drdiFilters = a}) . _Default . _Coerce;
 
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-drdbiMarker :: Lens' DescribeReservedDBInstances (Maybe Text)
-drdbiMarker = lens _drdbiMarker (\s a -> s { _drdbiMarker = a })
+-- | The reserved DB instance identifier filter value. Specify this parameter
+-- to show only the reservation that matches the specified reservation ID.
+drdiReservedDBInstanceId :: Lens' DescribeReservedDBInstances (Maybe Text)
+drdiReservedDBInstanceId = lens _drdiReservedDBInstanceId (\ s a -> s{_drdiReservedDBInstanceId = a});
 
--- | The maximum number of records to include in the response. If more than the 'MaxRecords' value is available, a pagination token called a marker is included in the
--- response so that the following results can be retrieved.
+-- | The DB instance class filter value. Specify this parameter to show only
+-- those reservations matching the specified DB instances class.
+drdiDBInstanceClass :: Lens' DescribeReservedDBInstances (Maybe Text)
+drdiDBInstanceClass = lens _drdiDBInstanceClass (\ s a -> s{_drdiDBInstanceClass = a});
+
+-- | The maximum number of records to include in the response. If more than
+-- the 'MaxRecords' value is available, a pagination token called a marker
+-- is included in the response so that the following results can be
+-- retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
-drdbiMaxRecords :: Lens' DescribeReservedDBInstances (Maybe Int)
-drdbiMaxRecords = lens _drdbiMaxRecords (\s a -> s { _drdbiMaxRecords = a })
+-- Constraints: Minimum 20, maximum 100.
+drdiMaxRecords :: Lens' DescribeReservedDBInstances (Maybe Int)
+drdiMaxRecords = lens _drdiMaxRecords (\ s a -> s{_drdiMaxRecords = a});
 
 -- | The Multi-AZ filter value. Specify this parameter to show only those
 -- reservations matching the specified Multi-AZ parameter.
-drdbiMultiAZ :: Lens' DescribeReservedDBInstances (Maybe Bool)
-drdbiMultiAZ = lens _drdbiMultiAZ (\s a -> s { _drdbiMultiAZ = a })
+drdiMultiAZ :: Lens' DescribeReservedDBInstances (Maybe Bool)
+drdiMultiAZ = lens _drdiMultiAZ (\ s a -> s{_drdiMultiAZ = a});
 
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+drdiMarker :: Lens' DescribeReservedDBInstances (Maybe Text)
+drdiMarker = lens _drdiMarker (\ s a -> s{_drdiMarker = a});
+
+-- | The offering identifier filter value. Specify this parameter to show
+-- only purchased reservations matching the specified offering identifier.
+drdiReservedDBInstancesOfferingId :: Lens' DescribeReservedDBInstances (Maybe Text)
+drdiReservedDBInstancesOfferingId = lens _drdiReservedDBInstancesOfferingId (\ s a -> s{_drdiReservedDBInstancesOfferingId = a});
+
 -- | The offering type filter value. Specify this parameter to show only the
 -- available offerings matching the specified offering type.
 --
--- Valid Values: '"Light Utilization" | "Medium Utilization" | "HeavyUtilization" '
-drdbiOfferingType :: Lens' DescribeReservedDBInstances (Maybe Text)
-drdbiOfferingType =
-    lens _drdbiOfferingType (\s a -> s { _drdbiOfferingType = a })
+-- Valid Values: '\"Partial Upfront\" | \"All Upfront\" | \"No Upfront\" '
+drdiOfferingType :: Lens' DescribeReservedDBInstances (Maybe Text)
+drdiOfferingType = lens _drdiOfferingType (\ s a -> s{_drdiOfferingType = a});
 
--- | The product description filter value. Specify this parameter to show only
--- those reservations matching the specified product description.
-drdbiProductDescription :: Lens' DescribeReservedDBInstances (Maybe Text)
-drdbiProductDescription =
-    lens _drdbiProductDescription (\s a -> s { _drdbiProductDescription = a })
+-- | The duration filter value, specified in years or seconds. Specify this
+-- parameter to show only reservations for this duration.
+--
+-- Valid Values: '1 | 3 | 31536000 | 94608000'
+drdiDuration :: Lens' DescribeReservedDBInstances (Maybe Text)
+drdiDuration = lens _drdiDuration (\ s a -> s{_drdiDuration = a});
 
--- | The reserved DB instance identifier filter value. Specify this parameter to
--- show only the reservation that matches the specified reservation ID.
-drdbiReservedDBInstanceId :: Lens' DescribeReservedDBInstances (Maybe Text)
-drdbiReservedDBInstanceId =
-    lens _drdbiReservedDBInstanceId
-        (\s a -> s { _drdbiReservedDBInstanceId = a })
+instance AWSPager DescribeReservedDBInstances where
+        page rq rs
+          | stop (rs ^. drdirsMarker) = Nothing
+          | stop (rs ^. drdirsReservedDBInstances) = Nothing
+          | otherwise =
+            Just $ rq & drdiMarker .~ rs ^. drdirsMarker
 
--- | The offering identifier filter value. Specify this parameter to show only
--- purchased reservations matching the specified offering identifier.
-drdbiReservedDBInstancesOfferingId :: Lens' DescribeReservedDBInstances (Maybe Text)
-drdbiReservedDBInstancesOfferingId =
-    lens _drdbiReservedDBInstancesOfferingId
-        (\s a -> s { _drdbiReservedDBInstancesOfferingId = a })
+instance AWSRequest DescribeReservedDBInstances where
+        type Sv DescribeReservedDBInstances = RDS
+        type Rs DescribeReservedDBInstances =
+             DescribeReservedDBInstancesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeReservedDBInstancesResult"
+              (\ s h x ->
+                 DescribeReservedDBInstancesResponse' <$>
+                   (x .@? "ReservedDBInstances" .!@ mempty >>=
+                      may (parseXMLList "ReservedDBInstance"))
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
-data DescribeReservedDBInstancesResponse = DescribeReservedDBInstancesResponse
-    { _drdbirMarker              :: Maybe Text
-    , _drdbirReservedDBInstances :: List "member" ReservedDBInstance
-    } deriving (Eq, Read, Show)
+instance ToHeaders DescribeReservedDBInstances where
+        toHeaders = const mempty
 
--- | 'DescribeReservedDBInstancesResponse' constructor.
+instance ToPath DescribeReservedDBInstances where
+        toPath = const "/"
+
+instance ToQuery DescribeReservedDBInstances where
+        toQuery DescribeReservedDBInstances'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeReservedDBInstances" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "ProductDescription" =: _drdiProductDescription,
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _drdiFilters),
+               "ReservedDBInstanceId" =: _drdiReservedDBInstanceId,
+               "DBInstanceClass" =: _drdiDBInstanceClass,
+               "MaxRecords" =: _drdiMaxRecords,
+               "MultiAZ" =: _drdiMultiAZ, "Marker" =: _drdiMarker,
+               "ReservedDBInstancesOfferingId" =:
+                 _drdiReservedDBInstancesOfferingId,
+               "OfferingType" =: _drdiOfferingType,
+               "Duration" =: _drdiDuration]
+
+-- | Contains the result of a successful invocation of the
+-- DescribeReservedDBInstances action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeReservedDBInstancesResponse' smart constructor.
+data DescribeReservedDBInstancesResponse = DescribeReservedDBInstancesResponse'
+    { _drdirsReservedDBInstances :: !(Maybe [ReservedDBInstance])
+    , _drdirsMarker              :: !(Maybe Text)
+    , _drdirsStatus              :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeReservedDBInstancesResponse' with the minimum fields required to make a request.
 --
--- * 'drdbirMarker' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drdbirReservedDBInstances' @::@ ['ReservedDBInstance']
+-- * 'drdirsReservedDBInstances'
 --
-describeReservedDBInstancesResponse :: DescribeReservedDBInstancesResponse
-describeReservedDBInstancesResponse = DescribeReservedDBInstancesResponse
-    { _drdbirMarker              = Nothing
-    , _drdbirReservedDBInstances = mempty
+-- * 'drdirsMarker'
+--
+-- * 'drdirsStatus'
+describeReservedDBInstancesResponse
+    :: Int -- ^ 'drdirsStatus'
+    -> DescribeReservedDBInstancesResponse
+describeReservedDBInstancesResponse pStatus_ =
+    DescribeReservedDBInstancesResponse'
+    { _drdirsReservedDBInstances = Nothing
+    , _drdirsMarker = Nothing
+    , _drdirsStatus = pStatus_
     }
 
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-drdbirMarker :: Lens' DescribeReservedDBInstancesResponse (Maybe Text)
-drdbirMarker = lens _drdbirMarker (\s a -> s { _drdbirMarker = a })
-
 -- | A list of reserved DB instances.
-drdbirReservedDBInstances :: Lens' DescribeReservedDBInstancesResponse [ReservedDBInstance]
-drdbirReservedDBInstances =
-    lens _drdbirReservedDBInstances
-        (\s a -> s { _drdbirReservedDBInstances = a })
-            . _List
-
-instance ToPath DescribeReservedDBInstances where
-    toPath = const "/"
-
-instance ToQuery DescribeReservedDBInstances where
-    toQuery DescribeReservedDBInstances{..} = mconcat
-        [ "DBInstanceClass"               =? _drdbiDBInstanceClass
-        , "Duration"                      =? _drdbiDuration
-        , "Filters"                       =? _drdbiFilters
-        , "Marker"                        =? _drdbiMarker
-        , "MaxRecords"                    =? _drdbiMaxRecords
-        , "MultiAZ"                       =? _drdbiMultiAZ
-        , "OfferingType"                  =? _drdbiOfferingType
-        , "ProductDescription"            =? _drdbiProductDescription
-        , "ReservedDBInstanceId"          =? _drdbiReservedDBInstanceId
-        , "ReservedDBInstancesOfferingId" =? _drdbiReservedDBInstancesOfferingId
-        ]
-
-instance ToHeaders DescribeReservedDBInstances
-
-instance AWSRequest DescribeReservedDBInstances where
-    type Sv DescribeReservedDBInstances = RDS
-    type Rs DescribeReservedDBInstances = DescribeReservedDBInstancesResponse
-
-    request  = post "DescribeReservedDBInstances"
-    response = xmlResponse
+drdirsReservedDBInstances :: Lens' DescribeReservedDBInstancesResponse [ReservedDBInstance]
+drdirsReservedDBInstances = lens _drdirsReservedDBInstances (\ s a -> s{_drdirsReservedDBInstances = a}) . _Default . _Coerce;
 
-instance FromXML DescribeReservedDBInstancesResponse where
-    parseXML = withElement "DescribeReservedDBInstancesResult" $ \x -> DescribeReservedDBInstancesResponse
-        <$> x .@? "Marker"
-        <*> x .@? "ReservedDBInstances" .!@ mempty
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+drdirsMarker :: Lens' DescribeReservedDBInstancesResponse (Maybe Text)
+drdirsMarker = lens _drdirsMarker (\ s a -> s{_drdirsMarker = a});
 
-instance AWSPager DescribeReservedDBInstances where
-    page rq rs
-        | stop (rs ^. drdbirMarker) = Nothing
-        | otherwise = (\x -> rq & drdbiMarker ?~ x)
-            <$> (rs ^. drdbirMarker)
+-- | The response status code.
+drdirsStatus :: Lens' DescribeReservedDBInstancesResponse Int
+drdirsStatus = lens _drdirsStatus (\ s a -> s{_drdirsStatus = a});
diff --git a/gen/Network/AWS/RDS/DescribeReservedDBInstancesOfferings.hs b/gen/Network/AWS/RDS/DescribeReservedDBInstancesOfferings.hs
--- a/gen/Network/AWS/RDS/DescribeReservedDBInstancesOfferings.hs
+++ b/gen/Network/AWS/RDS/DescribeReservedDBInstancesOfferings.hs
@@ -1,233 +1,260 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DescribeReservedDBInstancesOfferings
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Lists available reserved DB instance offerings.
+-- Lists available reserved DB instance offerings.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeReservedDBInstancesOfferings.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeReservedDBInstancesOfferings.html AWS API Reference> for DescribeReservedDBInstancesOfferings.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DescribeReservedDBInstancesOfferings
     (
-    -- * Request
-      DescribeReservedDBInstancesOfferings
-    -- ** Request constructor
-    , describeReservedDBInstancesOfferings
-    -- ** Request lenses
-    , drdbioDBInstanceClass
-    , drdbioDuration
-    , drdbioFilters
-    , drdbioMarker
-    , drdbioMaxRecords
-    , drdbioMultiAZ
-    , drdbioOfferingType
-    , drdbioProductDescription
-    , drdbioReservedDBInstancesOfferingId
+    -- * Creating a Request
+      describeReservedDBInstancesOfferings
+    , DescribeReservedDBInstancesOfferings
+    -- * Request Lenses
+    , drdioProductDescription
+    , drdioFilters
+    , drdioDBInstanceClass
+    , drdioMaxRecords
+    , drdioMultiAZ
+    , drdioMarker
+    , drdioReservedDBInstancesOfferingId
+    , drdioOfferingType
+    , drdioDuration
 
-    -- * Response
-    , DescribeReservedDBInstancesOfferingsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeReservedDBInstancesOfferingsResponse
-    -- ** Response lenses
-    , drdbiorMarker
-    , drdbiorReservedDBInstancesOfferings
+    , DescribeReservedDBInstancesOfferingsResponse
+    -- * Response Lenses
+    , drdiorsMarker
+    , drdiorsReservedDBInstancesOfferings
+    , drdiorsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DescribeReservedDBInstancesOfferings = DescribeReservedDBInstancesOfferings
-    { _drdbioDBInstanceClass               :: Maybe Text
-    , _drdbioDuration                      :: Maybe Text
-    , _drdbioFilters                       :: List "member" Filter
-    , _drdbioMarker                        :: Maybe Text
-    , _drdbioMaxRecords                    :: Maybe Int
-    , _drdbioMultiAZ                       :: Maybe Bool
-    , _drdbioOfferingType                  :: Maybe Text
-    , _drdbioProductDescription            :: Maybe Text
-    , _drdbioReservedDBInstancesOfferingId :: Maybe Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeReservedDBInstancesOfferings' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeReservedDBInstancesOfferings' smart constructor.
+data DescribeReservedDBInstancesOfferings = DescribeReservedDBInstancesOfferings'
+    { _drdioProductDescription            :: !(Maybe Text)
+    , _drdioFilters                       :: !(Maybe [Filter])
+    , _drdioDBInstanceClass               :: !(Maybe Text)
+    , _drdioMaxRecords                    :: !(Maybe Int)
+    , _drdioMultiAZ                       :: !(Maybe Bool)
+    , _drdioMarker                        :: !(Maybe Text)
+    , _drdioReservedDBInstancesOfferingId :: !(Maybe Text)
+    , _drdioOfferingType                  :: !(Maybe Text)
+    , _drdioDuration                      :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeReservedDBInstancesOfferings' with the minimum fields required to make a request.
 --
--- * 'drdbioDBInstanceClass' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drdbioDuration' @::@ 'Maybe' 'Text'
+-- * 'drdioProductDescription'
 --
--- * 'drdbioFilters' @::@ ['Filter']
+-- * 'drdioFilters'
 --
--- * 'drdbioMarker' @::@ 'Maybe' 'Text'
+-- * 'drdioDBInstanceClass'
 --
--- * 'drdbioMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'drdioMaxRecords'
 --
--- * 'drdbioMultiAZ' @::@ 'Maybe' 'Bool'
+-- * 'drdioMultiAZ'
 --
--- * 'drdbioOfferingType' @::@ 'Maybe' 'Text'
+-- * 'drdioMarker'
 --
--- * 'drdbioProductDescription' @::@ 'Maybe' 'Text'
+-- * 'drdioReservedDBInstancesOfferingId'
 --
--- * 'drdbioReservedDBInstancesOfferingId' @::@ 'Maybe' 'Text'
+-- * 'drdioOfferingType'
 --
-describeReservedDBInstancesOfferings :: DescribeReservedDBInstancesOfferings
-describeReservedDBInstancesOfferings = DescribeReservedDBInstancesOfferings
-    { _drdbioReservedDBInstancesOfferingId = Nothing
-    , _drdbioDBInstanceClass               = Nothing
-    , _drdbioDuration                      = Nothing
-    , _drdbioProductDescription            = Nothing
-    , _drdbioOfferingType                  = Nothing
-    , _drdbioMultiAZ                       = Nothing
-    , _drdbioFilters                       = mempty
-    , _drdbioMaxRecords                    = Nothing
-    , _drdbioMarker                        = Nothing
+-- * 'drdioDuration'
+describeReservedDBInstancesOfferings
+    :: DescribeReservedDBInstancesOfferings
+describeReservedDBInstancesOfferings =
+    DescribeReservedDBInstancesOfferings'
+    { _drdioProductDescription = Nothing
+    , _drdioFilters = Nothing
+    , _drdioDBInstanceClass = Nothing
+    , _drdioMaxRecords = Nothing
+    , _drdioMultiAZ = Nothing
+    , _drdioMarker = Nothing
+    , _drdioReservedDBInstancesOfferingId = Nothing
+    , _drdioOfferingType = Nothing
+    , _drdioDuration = Nothing
     }
 
--- | The DB instance class filter value. Specify this parameter to show only the
--- available offerings matching the specified DB instance class.
-drdbioDBInstanceClass :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
-drdbioDBInstanceClass =
-    lens _drdbioDBInstanceClass (\s a -> s { _drdbioDBInstanceClass = a })
-
--- | Duration filter value, specified in years or seconds. Specify this parameter
--- to show only reservations for this duration.
---
--- Valid Values: '1 | 3 | 31536000 | 94608000'
-drdbioDuration :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
-drdbioDuration = lens _drdbioDuration (\s a -> s { _drdbioDuration = a })
+-- | Product description filter value. Specify this parameter to show only
+-- the available offerings matching the specified product description.
+drdioProductDescription :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
+drdioProductDescription = lens _drdioProductDescription (\ s a -> s{_drdioProductDescription = a});
 
 -- | This parameter is not currently supported.
-drdbioFilters :: Lens' DescribeReservedDBInstancesOfferings [Filter]
-drdbioFilters = lens _drdbioFilters (\s a -> s { _drdbioFilters = a }) . _List
+drdioFilters :: Lens' DescribeReservedDBInstancesOfferings [Filter]
+drdioFilters = lens _drdioFilters (\ s a -> s{_drdioFilters = a}) . _Default . _Coerce;
 
--- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-drdbioMarker :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
-drdbioMarker = lens _drdbioMarker (\s a -> s { _drdbioMarker = a })
+-- | The DB instance class filter value. Specify this parameter to show only
+-- the available offerings matching the specified DB instance class.
+drdioDBInstanceClass :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
+drdioDBInstanceClass = lens _drdioDBInstanceClass (\ s a -> s{_drdioDBInstanceClass = a});
 
--- | The maximum number of records to include in the response. If more than the 'MaxRecords' value is available, a pagination token called a marker is included in the
--- response so that the following results can be retrieved.
+-- | The maximum number of records to include in the response. If more than
+-- the 'MaxRecords' value is available, a pagination token called a marker
+-- is included in the response so that the following results can be
+-- retrieved.
 --
 -- Default: 100
 --
--- Constraints: minimum 20, maximum 100
-drdbioMaxRecords :: Lens' DescribeReservedDBInstancesOfferings (Maybe Int)
-drdbioMaxRecords = lens _drdbioMaxRecords (\s a -> s { _drdbioMaxRecords = a })
+-- Constraints: Minimum 20, maximum 100.
+drdioMaxRecords :: Lens' DescribeReservedDBInstancesOfferings (Maybe Int)
+drdioMaxRecords = lens _drdioMaxRecords (\ s a -> s{_drdioMaxRecords = a});
 
--- | The Multi-AZ filter value. Specify this parameter to show only the available
--- offerings matching the specified Multi-AZ parameter.
-drdbioMultiAZ :: Lens' DescribeReservedDBInstancesOfferings (Maybe Bool)
-drdbioMultiAZ = lens _drdbioMultiAZ (\s a -> s { _drdbioMultiAZ = a })
+-- | The Multi-AZ filter value. Specify this parameter to show only the
+-- available offerings matching the specified Multi-AZ parameter.
+drdioMultiAZ :: Lens' DescribeReservedDBInstancesOfferings (Maybe Bool)
+drdioMultiAZ = lens _drdioMultiAZ (\ s a -> s{_drdioMultiAZ = a});
 
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+drdioMarker :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
+drdioMarker = lens _drdioMarker (\ s a -> s{_drdioMarker = a});
+
+-- | The offering identifier filter value. Specify this parameter to show
+-- only the available offering that matches the specified reservation
+-- identifier.
+--
+-- Example: '438012d3-4052-4cc7-b2e3-8d3372e0e706'
+drdioReservedDBInstancesOfferingId :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
+drdioReservedDBInstancesOfferingId = lens _drdioReservedDBInstancesOfferingId (\ s a -> s{_drdioReservedDBInstancesOfferingId = a});
+
 -- | The offering type filter value. Specify this parameter to show only the
 -- available offerings matching the specified offering type.
 --
--- Valid Values: '"Light Utilization" | "Medium Utilization" | "HeavyUtilization" '
-drdbioOfferingType :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
-drdbioOfferingType =
-    lens _drdbioOfferingType (\s a -> s { _drdbioOfferingType = a })
-
--- | Product description filter value. Specify this parameter to show only the
--- available offerings matching the specified product description.
-drdbioProductDescription :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
-drdbioProductDescription =
-    lens _drdbioProductDescription
-        (\s a -> s { _drdbioProductDescription = a })
+-- Valid Values: '\"Partial Upfront\" | \"All Upfront\" | \"No Upfront\" '
+drdioOfferingType :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
+drdioOfferingType = lens _drdioOfferingType (\ s a -> s{_drdioOfferingType = a});
 
--- | The offering identifier filter value. Specify this parameter to show only
--- the available offering that matches the specified reservation identifier.
+-- | Duration filter value, specified in years or seconds. Specify this
+-- parameter to show only reservations for this duration.
 --
--- Example: '438012d3-4052-4cc7-b2e3-8d3372e0e706'
-drdbioReservedDBInstancesOfferingId :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
-drdbioReservedDBInstancesOfferingId =
-    lens _drdbioReservedDBInstancesOfferingId
-        (\s a -> s { _drdbioReservedDBInstancesOfferingId = a })
+-- Valid Values: '1 | 3 | 31536000 | 94608000'
+drdioDuration :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
+drdioDuration = lens _drdioDuration (\ s a -> s{_drdioDuration = a});
 
-data DescribeReservedDBInstancesOfferingsResponse = DescribeReservedDBInstancesOfferingsResponse
-    { _drdbiorMarker                       :: Maybe Text
-    , _drdbiorReservedDBInstancesOfferings :: List "member" ReservedDBInstancesOffering
-    } deriving (Eq, Read, Show)
+instance AWSPager
+         DescribeReservedDBInstancesOfferings where
+        page rq rs
+          | stop (rs ^. drdiorsMarker) = Nothing
+          | stop (rs ^. drdiorsReservedDBInstancesOfferings) =
+            Nothing
+          | otherwise =
+            Just $ rq & drdioMarker .~ rs ^. drdiorsMarker
 
--- | 'DescribeReservedDBInstancesOfferingsResponse' constructor.
+instance AWSRequest
+         DescribeReservedDBInstancesOfferings where
+        type Sv DescribeReservedDBInstancesOfferings = RDS
+        type Rs DescribeReservedDBInstancesOfferings =
+             DescribeReservedDBInstancesOfferingsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeReservedDBInstancesOfferingsResult"
+              (\ s h x ->
+                 DescribeReservedDBInstancesOfferingsResponse' <$>
+                   (x .@? "Marker") <*>
+                     (x .@? "ReservedDBInstancesOfferings" .!@ mempty >>=
+                        may (parseXMLList "ReservedDBInstancesOffering"))
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders
+         DescribeReservedDBInstancesOfferings where
+        toHeaders = const mempty
+
+instance ToPath DescribeReservedDBInstancesOfferings
+         where
+        toPath = const "/"
+
+instance ToQuery DescribeReservedDBInstancesOfferings
+         where
+        toQuery DescribeReservedDBInstancesOfferings'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeReservedDBInstancesOfferings" ::
+                    ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "ProductDescription" =: _drdioProductDescription,
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _drdioFilters),
+               "DBInstanceClass" =: _drdioDBInstanceClass,
+               "MaxRecords" =: _drdioMaxRecords,
+               "MultiAZ" =: _drdioMultiAZ, "Marker" =: _drdioMarker,
+               "ReservedDBInstancesOfferingId" =:
+                 _drdioReservedDBInstancesOfferingId,
+               "OfferingType" =: _drdioOfferingType,
+               "Duration" =: _drdioDuration]
+
+-- | Contains the result of a successful invocation of the
+-- DescribeReservedDBInstancesOfferings action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeReservedDBInstancesOfferingsResponse' smart constructor.
+data DescribeReservedDBInstancesOfferingsResponse = DescribeReservedDBInstancesOfferingsResponse'
+    { _drdiorsMarker                       :: !(Maybe Text)
+    , _drdiorsReservedDBInstancesOfferings :: !(Maybe [ReservedDBInstancesOffering])
+    , _drdiorsStatus                       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeReservedDBInstancesOfferingsResponse' with the minimum fields required to make a request.
 --
--- * 'drdbiorMarker' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drdbiorReservedDBInstancesOfferings' @::@ ['ReservedDBInstancesOffering']
+-- * 'drdiorsMarker'
 --
-describeReservedDBInstancesOfferingsResponse :: DescribeReservedDBInstancesOfferingsResponse
-describeReservedDBInstancesOfferingsResponse = DescribeReservedDBInstancesOfferingsResponse
-    { _drdbiorMarker                       = Nothing
-    , _drdbiorReservedDBInstancesOfferings = mempty
+-- * 'drdiorsReservedDBInstancesOfferings'
+--
+-- * 'drdiorsStatus'
+describeReservedDBInstancesOfferingsResponse
+    :: Int -- ^ 'drdiorsStatus'
+    -> DescribeReservedDBInstancesOfferingsResponse
+describeReservedDBInstancesOfferingsResponse pStatus_ =
+    DescribeReservedDBInstancesOfferingsResponse'
+    { _drdiorsMarker = Nothing
+    , _drdiorsReservedDBInstancesOfferings = Nothing
+    , _drdiorsStatus = pStatus_
     }
 
 -- | An optional pagination token provided by a previous request. If this
--- parameter is specified, the response includes only records beyond the marker,
--- up to the value specified by 'MaxRecords'.
-drdbiorMarker :: Lens' DescribeReservedDBInstancesOfferingsResponse (Maybe Text)
-drdbiorMarker = lens _drdbiorMarker (\s a -> s { _drdbiorMarker = a })
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by 'MaxRecords'.
+drdiorsMarker :: Lens' DescribeReservedDBInstancesOfferingsResponse (Maybe Text)
+drdiorsMarker = lens _drdiorsMarker (\ s a -> s{_drdiorsMarker = a});
 
 -- | A list of reserved DB instance offerings.
-drdbiorReservedDBInstancesOfferings :: Lens' DescribeReservedDBInstancesOfferingsResponse [ReservedDBInstancesOffering]
-drdbiorReservedDBInstancesOfferings =
-    lens _drdbiorReservedDBInstancesOfferings
-        (\s a -> s { _drdbiorReservedDBInstancesOfferings = a })
-            . _List
-
-instance ToPath DescribeReservedDBInstancesOfferings where
-    toPath = const "/"
-
-instance ToQuery DescribeReservedDBInstancesOfferings where
-    toQuery DescribeReservedDBInstancesOfferings{..} = mconcat
-        [ "DBInstanceClass"               =? _drdbioDBInstanceClass
-        , "Duration"                      =? _drdbioDuration
-        , "Filters"                       =? _drdbioFilters
-        , "Marker"                        =? _drdbioMarker
-        , "MaxRecords"                    =? _drdbioMaxRecords
-        , "MultiAZ"                       =? _drdbioMultiAZ
-        , "OfferingType"                  =? _drdbioOfferingType
-        , "ProductDescription"            =? _drdbioProductDescription
-        , "ReservedDBInstancesOfferingId" =? _drdbioReservedDBInstancesOfferingId
-        ]
-
-instance ToHeaders DescribeReservedDBInstancesOfferings
-
-instance AWSRequest DescribeReservedDBInstancesOfferings where
-    type Sv DescribeReservedDBInstancesOfferings = RDS
-    type Rs DescribeReservedDBInstancesOfferings = DescribeReservedDBInstancesOfferingsResponse
-
-    request  = post "DescribeReservedDBInstancesOfferings"
-    response = xmlResponse
-
-instance FromXML DescribeReservedDBInstancesOfferingsResponse where
-    parseXML = withElement "DescribeReservedDBInstancesOfferingsResult" $ \x -> DescribeReservedDBInstancesOfferingsResponse
-        <$> x .@? "Marker"
-        <*> x .@? "ReservedDBInstancesOfferings" .!@ mempty
+drdiorsReservedDBInstancesOfferings :: Lens' DescribeReservedDBInstancesOfferingsResponse [ReservedDBInstancesOffering]
+drdiorsReservedDBInstancesOfferings = lens _drdiorsReservedDBInstancesOfferings (\ s a -> s{_drdiorsReservedDBInstancesOfferings = a}) . _Default . _Coerce;
 
-instance AWSPager DescribeReservedDBInstancesOfferings where
-    page rq rs
-        | stop (rs ^. drdbiorMarker) = Nothing
-        | otherwise = (\x -> rq & drdbioMarker ?~ x)
-            <$> (rs ^. drdbiorMarker)
+-- | The response status code.
+drdiorsStatus :: Lens' DescribeReservedDBInstancesOfferingsResponse Int
+drdiorsStatus = lens _drdiorsStatus (\ s a -> s{_drdiorsStatus = a});
diff --git a/gen/Network/AWS/RDS/DownloadDBLogFilePortion.hs b/gen/Network/AWS/RDS/DownloadDBLogFilePortion.hs
--- a/gen/Network/AWS/RDS/DownloadDBLogFilePortion.hs
+++ b/gen/Network/AWS/RDS/DownloadDBLogFilePortion.hs
@@ -1,201 +1,223 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.DownloadDBLogFilePortion
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Downloads all or a portion of the specified log file.
+-- Downloads all or a portion of the specified log file, up to 1 MB in
+-- size.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html AWS API Reference> for DownloadDBLogFilePortion.
+--
+-- This operation returns paginated results.
 module Network.AWS.RDS.DownloadDBLogFilePortion
     (
-    -- * Request
-      DownloadDBLogFilePortion
-    -- ** Request constructor
-    , downloadDBLogFilePortion
-    -- ** Request lenses
-    , ddblfpDBInstanceIdentifier
-    , ddblfpLogFileName
-    , ddblfpMarker
-    , ddblfpNumberOfLines
+    -- * Creating a Request
+      downloadDBLogFilePortion
+    , DownloadDBLogFilePortion
+    -- * Request Lenses
+    , ddlfpNumberOfLines
+    , ddlfpMarker
+    , ddlfpDBInstanceIdentifier
+    , ddlfpLogFileName
 
-    -- * Response
-    , DownloadDBLogFilePortionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , downloadDBLogFilePortionResponse
-    -- ** Response lenses
-    , ddblfprAdditionalDataPending
-    , ddblfprLogFileData
-    , ddblfprMarker
+    , DownloadDBLogFilePortionResponse
+    -- * Response Lenses
+    , ddlfprsLogFileData
+    , ddlfprsAdditionalDataPending
+    , ddlfprsMarker
+    , ddlfprsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data DownloadDBLogFilePortion = DownloadDBLogFilePortion
-    { _ddblfpDBInstanceIdentifier :: Text
-    , _ddblfpLogFileName          :: Text
-    , _ddblfpMarker               :: Maybe Text
-    , _ddblfpNumberOfLines        :: Maybe Int
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DownloadDBLogFilePortion' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'downloadDBLogFilePortion' smart constructor.
+data DownloadDBLogFilePortion = DownloadDBLogFilePortion'
+    { _ddlfpNumberOfLines        :: !(Maybe Int)
+    , _ddlfpMarker               :: !(Maybe Text)
+    , _ddlfpDBInstanceIdentifier :: !Text
+    , _ddlfpLogFileName          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DownloadDBLogFilePortion' with the minimum fields required to make a request.
 --
--- * 'ddblfpDBInstanceIdentifier' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddblfpLogFileName' @::@ 'Text'
+-- * 'ddlfpNumberOfLines'
 --
--- * 'ddblfpMarker' @::@ 'Maybe' 'Text'
+-- * 'ddlfpMarker'
 --
--- * 'ddblfpNumberOfLines' @::@ 'Maybe' 'Int'
+-- * 'ddlfpDBInstanceIdentifier'
 --
-downloadDBLogFilePortion :: Text -- ^ 'ddblfpDBInstanceIdentifier'
-                         -> Text -- ^ 'ddblfpLogFileName'
-                         -> DownloadDBLogFilePortion
-downloadDBLogFilePortion p1 p2 = DownloadDBLogFilePortion
-    { _ddblfpDBInstanceIdentifier = p1
-    , _ddblfpLogFileName          = p2
-    , _ddblfpMarker               = Nothing
-    , _ddblfpNumberOfLines        = Nothing
+-- * 'ddlfpLogFileName'
+downloadDBLogFilePortion
+    :: Text -- ^ 'ddlfpDBInstanceIdentifier'
+    -> Text -- ^ 'ddlfpLogFileName'
+    -> DownloadDBLogFilePortion
+downloadDBLogFilePortion pDBInstanceIdentifier_ pLogFileName_ =
+    DownloadDBLogFilePortion'
+    { _ddlfpNumberOfLines = Nothing
+    , _ddlfpMarker = Nothing
+    , _ddlfpDBInstanceIdentifier = pDBInstanceIdentifier_
+    , _ddlfpLogFileName = pLogFileName_
     }
 
--- | The customer-assigned name of the DB instance that contains the log files
--- you want to list.
---
--- Constraints:
---
--- Must contain from 1 to 63 alphanumeric characters or hyphens First
--- character must be a letter Cannot end with a hyphen or contain two
--- consecutive hyphens
-ddblfpDBInstanceIdentifier :: Lens' DownloadDBLogFilePortion Text
-ddblfpDBInstanceIdentifier =
-    lens _ddblfpDBInstanceIdentifier
-        (\s a -> s { _ddblfpDBInstanceIdentifier = a })
-
--- | The name of the log file to be downloaded.
-ddblfpLogFileName :: Lens' DownloadDBLogFilePortion Text
-ddblfpLogFileName =
-    lens _ddblfpLogFileName (\s a -> s { _ddblfpLogFileName = a })
-
--- | The pagination token provided in the previous request or "0". If the Marker
--- parameter is specified the response includes only records beyond the marker
--- until the end of the file or up to NumberOfLines.
-ddblfpMarker :: Lens' DownloadDBLogFilePortion (Maybe Text)
-ddblfpMarker = lens _ddblfpMarker (\s a -> s { _ddblfpMarker = a })
-
--- | The number of lines to download.
+-- | The number of lines to download. If the number of lines specified
+-- results in a file over 1 MB in size, the file will be truncated at 1 MB
+-- in size.
 --
 -- If the NumberOfLines parameter is specified, then the block of lines
--- returned can be from the beginning or the end of the log file, depending on
--- the value of the Marker parameter.  If neither Marker or NumberOfLines are
--- specified, the entire log file is returned.
+-- returned can be from the beginning or the end of the log file, depending
+-- on the value of the Marker parameter.
 --
--- If NumberOfLines is specified and Marker is not specified, then the most
--- recent lines from the end of the log file are returned.
+-- -   If neither Marker or NumberOfLines are specified, the entire log
+--     file is returned.
 --
--- If Marker is specified as "0", then the specified number of lines from the
--- beginning of the log file are returned.
+-- -   If NumberOfLines is specified and Marker is not specified, then the
+--     most recent lines from the end of the log file are returned.
 --
--- You can download the log file in blocks of lines by specifying the size of
--- the block using the NumberOfLines parameter, and by specifying a value of "0"
--- for the Marker parameter in your first request. Include the Marker value
--- returned in the response as the Marker value for the next request, continuing
--- until the AdditionalDataPending response element returns false.
+-- -   If Marker is specified as \"0\", then the specified number of lines
+--     from the beginning of the log file are returned.
 --
+-- -   You can download the log file in blocks of lines by specifying the
+--     size of the block using the NumberOfLines parameter, and by
+--     specifying a value of \"0\" for the Marker parameter in your first
+--     request. Include the Marker value returned in the response as the
+--     Marker value for the next request, continuing until the
+--     AdditionalDataPending response element returns false.
 --
-ddblfpNumberOfLines :: Lens' DownloadDBLogFilePortion (Maybe Int)
-ddblfpNumberOfLines =
-    lens _ddblfpNumberOfLines (\s a -> s { _ddblfpNumberOfLines = a })
+ddlfpNumberOfLines :: Lens' DownloadDBLogFilePortion (Maybe Int)
+ddlfpNumberOfLines = lens _ddlfpNumberOfLines (\ s a -> s{_ddlfpNumberOfLines = a});
 
-data DownloadDBLogFilePortionResponse = DownloadDBLogFilePortionResponse
-    { _ddblfprAdditionalDataPending :: Maybe Bool
-    , _ddblfprLogFileData           :: Maybe Text
-    , _ddblfprMarker                :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | The pagination token provided in the previous request or \"0\". If the
+-- Marker parameter is specified the response includes only records beyond
+-- the marker until the end of the file or up to NumberOfLines.
+ddlfpMarker :: Lens' DownloadDBLogFilePortion (Maybe Text)
+ddlfpMarker = lens _ddlfpMarker (\ s a -> s{_ddlfpMarker = a});
 
--- | 'DownloadDBLogFilePortionResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddblfprAdditionalDataPending' @::@ 'Maybe' 'Bool'
---
--- * 'ddblfprLogFileData' @::@ 'Maybe' 'Text'
+-- | The customer-assigned name of the DB instance that contains the log
+-- files you want to list.
 --
--- * 'ddblfprMarker' @::@ 'Maybe' 'Text'
+-- Constraints:
 --
-downloadDBLogFilePortionResponse :: DownloadDBLogFilePortionResponse
-downloadDBLogFilePortionResponse = DownloadDBLogFilePortionResponse
-    { _ddblfprLogFileData           = Nothing
-    , _ddblfprMarker                = Nothing
-    , _ddblfprAdditionalDataPending = Nothing
-    }
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+ddlfpDBInstanceIdentifier :: Lens' DownloadDBLogFilePortion Text
+ddlfpDBInstanceIdentifier = lens _ddlfpDBInstanceIdentifier (\ s a -> s{_ddlfpDBInstanceIdentifier = a});
 
--- | Boolean value that if true, indicates there is more data to be downloaded.
-ddblfprAdditionalDataPending :: Lens' DownloadDBLogFilePortionResponse (Maybe Bool)
-ddblfprAdditionalDataPending =
-    lens _ddblfprAdditionalDataPending
-        (\s a -> s { _ddblfprAdditionalDataPending = a })
+-- | The name of the log file to be downloaded.
+ddlfpLogFileName :: Lens' DownloadDBLogFilePortion Text
+ddlfpLogFileName = lens _ddlfpLogFileName (\ s a -> s{_ddlfpLogFileName = a});
 
--- | Entries from the specified log file.
-ddblfprLogFileData :: Lens' DownloadDBLogFilePortionResponse (Maybe Text)
-ddblfprLogFileData =
-    lens _ddblfprLogFileData (\s a -> s { _ddblfprLogFileData = a })
+instance AWSPager DownloadDBLogFilePortion where
+        page rq rs
+          | stop (rs ^. ddlfprsAdditionalDataPending) = Nothing
+          | isNothing (rs ^. ddlfprsMarker) = Nothing
+          | otherwise =
+            Just $ rq & ddlfpMarker .~ rs ^. ddlfprsMarker
 
--- | A pagination token that can be used in a subsequent DownloadDBLogFilePortion
--- request.
-ddblfprMarker :: Lens' DownloadDBLogFilePortionResponse (Maybe Text)
-ddblfprMarker = lens _ddblfprMarker (\s a -> s { _ddblfprMarker = a })
+instance AWSRequest DownloadDBLogFilePortion where
+        type Sv DownloadDBLogFilePortion = RDS
+        type Rs DownloadDBLogFilePortion =
+             DownloadDBLogFilePortionResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DownloadDBLogFilePortionResult"
+              (\ s h x ->
+                 DownloadDBLogFilePortionResponse' <$>
+                   (x .@? "LogFileData") <*>
+                     (x .@? "AdditionalDataPending")
+                     <*> (x .@? "Marker")
+                     <*> (pure (fromEnum s)))
 
+instance ToHeaders DownloadDBLogFilePortion where
+        toHeaders = const mempty
+
 instance ToPath DownloadDBLogFilePortion where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DownloadDBLogFilePortion where
-    toQuery DownloadDBLogFilePortion{..} = mconcat
-        [ "DBInstanceIdentifier" =? _ddblfpDBInstanceIdentifier
-        , "LogFileName"          =? _ddblfpLogFileName
-        , "Marker"               =? _ddblfpMarker
-        , "NumberOfLines"        =? _ddblfpNumberOfLines
-        ]
+        toQuery DownloadDBLogFilePortion'{..}
+          = mconcat
+              ["Action" =:
+                 ("DownloadDBLogFilePortion" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "NumberOfLines" =: _ddlfpNumberOfLines,
+               "Marker" =: _ddlfpMarker,
+               "DBInstanceIdentifier" =: _ddlfpDBInstanceIdentifier,
+               "LogFileName" =: _ddlfpLogFileName]
 
-instance ToHeaders DownloadDBLogFilePortion
+-- | This data type is used as a response element to
+-- DownloadDBLogFilePortion.
+--
+-- /See:/ 'downloadDBLogFilePortionResponse' smart constructor.
+data DownloadDBLogFilePortionResponse = DownloadDBLogFilePortionResponse'
+    { _ddlfprsLogFileData           :: !(Maybe Text)
+    , _ddlfprsAdditionalDataPending :: !(Maybe Bool)
+    , _ddlfprsMarker                :: !(Maybe Text)
+    , _ddlfprsStatus                :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DownloadDBLogFilePortion where
-    type Sv DownloadDBLogFilePortion = RDS
-    type Rs DownloadDBLogFilePortion = DownloadDBLogFilePortionResponse
+-- | Creates a value of 'DownloadDBLogFilePortionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddlfprsLogFileData'
+--
+-- * 'ddlfprsAdditionalDataPending'
+--
+-- * 'ddlfprsMarker'
+--
+-- * 'ddlfprsStatus'
+downloadDBLogFilePortionResponse
+    :: Int -- ^ 'ddlfprsStatus'
+    -> DownloadDBLogFilePortionResponse
+downloadDBLogFilePortionResponse pStatus_ =
+    DownloadDBLogFilePortionResponse'
+    { _ddlfprsLogFileData = Nothing
+    , _ddlfprsAdditionalDataPending = Nothing
+    , _ddlfprsMarker = Nothing
+    , _ddlfprsStatus = pStatus_
+    }
 
-    request  = post "DownloadDBLogFilePortion"
-    response = xmlResponse
+-- | Entries from the specified log file.
+ddlfprsLogFileData :: Lens' DownloadDBLogFilePortionResponse (Maybe Text)
+ddlfprsLogFileData = lens _ddlfprsLogFileData (\ s a -> s{_ddlfprsLogFileData = a});
 
-instance FromXML DownloadDBLogFilePortionResponse where
-    parseXML = withElement "DownloadDBLogFilePortionResult" $ \x -> DownloadDBLogFilePortionResponse
-        <$> x .@? "AdditionalDataPending"
-        <*> x .@? "LogFileData"
-        <*> x .@? "Marker"
+-- | Boolean value that if true, indicates there is more data to be
+-- downloaded.
+ddlfprsAdditionalDataPending :: Lens' DownloadDBLogFilePortionResponse (Maybe Bool)
+ddlfprsAdditionalDataPending = lens _ddlfprsAdditionalDataPending (\ s a -> s{_ddlfprsAdditionalDataPending = a});
 
-instance AWSPager DownloadDBLogFilePortion where
-    page rq rs
-        | stop (rs ^. ddblfprAdditionalDataPending) = Nothing
-        | otherwise = Just $ rq
-            & ddblfpMarker .~ rs ^. ddblfprMarker
+-- | A pagination token that can be used in a subsequent
+-- DownloadDBLogFilePortion request.
+ddlfprsMarker :: Lens' DownloadDBLogFilePortionResponse (Maybe Text)
+ddlfprsMarker = lens _ddlfprsMarker (\ s a -> s{_ddlfprsMarker = a});
+
+-- | The response status code.
+ddlfprsStatus :: Lens' DownloadDBLogFilePortionResponse Int
+ddlfprsStatus = lens _ddlfprsStatus (\ s a -> s{_ddlfprsStatus = a});
diff --git a/gen/Network/AWS/RDS/FailoverDBCluster.hs b/gen/Network/AWS/RDS/FailoverDBCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/FailoverDBCluster.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.FailoverDBCluster
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Forces a failover for a DB cluster.
+--
+-- A failover for a DB cluster promotes one of the read-only instances in
+-- the DB cluster to the master DB instance (the cluster writer) and
+-- deletes the current primary instance.
+--
+-- Amazon Aurora will automatically fail over to a read-only instance, if
+-- one exists, when the primary instance fails. You can force a failover
+-- when you want to simulate a failure of a DB instance for testing.
+-- Because each instance in a DB cluster has its own endpoint address, you
+-- will need to clean up and re-establish any existing connections that use
+-- those endpoint addresses when the failover is complete.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_FailoverDBCluster.html AWS API Reference> for FailoverDBCluster.
+module Network.AWS.RDS.FailoverDBCluster
+    (
+    -- * Creating a Request
+      failoverDBCluster
+    , FailoverDBCluster
+    -- * Request Lenses
+    , fdcDBClusterIdentifier
+
+    -- * Destructuring the Response
+    , failoverDBClusterResponse
+    , FailoverDBClusterResponse
+    -- * Response Lenses
+    , fdcrsDBCluster
+    , fdcrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'failoverDBCluster' smart constructor.
+newtype FailoverDBCluster = FailoverDBCluster'
+    { _fdcDBClusterIdentifier :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FailoverDBCluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fdcDBClusterIdentifier'
+failoverDBCluster
+    :: FailoverDBCluster
+failoverDBCluster =
+    FailoverDBCluster'
+    { _fdcDBClusterIdentifier = Nothing
+    }
+
+-- | A DB cluster identifier to force a failover for. This parameter is not
+-- case-sensitive.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+fdcDBClusterIdentifier :: Lens' FailoverDBCluster (Maybe Text)
+fdcDBClusterIdentifier = lens _fdcDBClusterIdentifier (\ s a -> s{_fdcDBClusterIdentifier = a});
+
+instance AWSRequest FailoverDBCluster where
+        type Sv FailoverDBCluster = RDS
+        type Rs FailoverDBCluster = FailoverDBClusterResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "FailoverDBClusterResult"
+              (\ s h x ->
+                 FailoverDBClusterResponse' <$>
+                   (x .@? "DBCluster") <*> (pure (fromEnum s)))
+
+instance ToHeaders FailoverDBCluster where
+        toHeaders = const mempty
+
+instance ToPath FailoverDBCluster where
+        toPath = const "/"
+
+instance ToQuery FailoverDBCluster where
+        toQuery FailoverDBCluster'{..}
+          = mconcat
+              ["Action" =: ("FailoverDBCluster" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBClusterIdentifier" =: _fdcDBClusterIdentifier]
+
+-- | /See:/ 'failoverDBClusterResponse' smart constructor.
+data FailoverDBClusterResponse = FailoverDBClusterResponse'
+    { _fdcrsDBCluster :: !(Maybe DBCluster)
+    , _fdcrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FailoverDBClusterResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fdcrsDBCluster'
+--
+-- * 'fdcrsStatus'
+failoverDBClusterResponse
+    :: Int -- ^ 'fdcrsStatus'
+    -> FailoverDBClusterResponse
+failoverDBClusterResponse pStatus_ =
+    FailoverDBClusterResponse'
+    { _fdcrsDBCluster = Nothing
+    , _fdcrsStatus = pStatus_
+    }
+
+-- | Undocumented member.
+fdcrsDBCluster :: Lens' FailoverDBClusterResponse (Maybe DBCluster)
+fdcrsDBCluster = lens _fdcrsDBCluster (\ s a -> s{_fdcrsDBCluster = a});
+
+-- | The response status code.
+fdcrsStatus :: Lens' FailoverDBClusterResponse Int
+fdcrsStatus = lens _fdcrsStatus (\ s a -> s{_fdcrsStatus = a});
diff --git a/gen/Network/AWS/RDS/ListTagsForResource.hs b/gen/Network/AWS/RDS/ListTagsForResource.hs
--- a/gen/Network/AWS/RDS/ListTagsForResource.hs
+++ b/gen/Network/AWS/RDS/ListTagsForResource.hs
@@ -1,127 +1,142 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.ListTagsForResource
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Lists all tags on an Amazon RDS resource.
+-- Lists all tags on an Amazon RDS resource.
 --
--- For an overview on tagging an Amazon RDS resource, see <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Tagging.html Tagging Amazon RDSResources>.
+-- For an overview on tagging an Amazon RDS resource, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Tagging.html Tagging Amazon RDS Resources>.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ListTagsForResource.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ListTagsForResource.html AWS API Reference> for ListTagsForResource.
 module Network.AWS.RDS.ListTagsForResource
     (
-    -- * Request
-      ListTagsForResource
-    -- ** Request constructor
-    , listTagsForResource
-    -- ** Request lenses
+    -- * Creating a Request
+      listTagsForResource
+    , ListTagsForResource
+    -- * Request Lenses
     , ltfrFilters
     , ltfrResourceName
 
-    -- * Response
-    , ListTagsForResourceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listTagsForResourceResponse
-    -- ** Response lenses
-    , ltfrrTagList
+    , ListTagsForResourceResponse
+    -- * Response Lenses
+    , ltfrrsTagList
+    , ltfrrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data ListTagsForResource = ListTagsForResource
-    { _ltfrFilters      :: List "member" Filter
-    , _ltfrResourceName :: Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ListTagsForResource' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+    { _ltfrFilters      :: !(Maybe [Filter])
+    , _ltfrResourceName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListTagsForResource' with the minimum fields required to make a request.
 --
--- * 'ltfrFilters' @::@ ['Filter']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ltfrResourceName' @::@ 'Text'
+-- * 'ltfrFilters'
 --
-listTagsForResource :: Text -- ^ 'ltfrResourceName'
-                    -> ListTagsForResource
-listTagsForResource p1 = ListTagsForResource
-    { _ltfrResourceName = p1
-    , _ltfrFilters      = mempty
+-- * 'ltfrResourceName'
+listTagsForResource
+    :: Text -- ^ 'ltfrResourceName'
+    -> ListTagsForResource
+listTagsForResource pResourceName_ =
+    ListTagsForResource'
+    { _ltfrFilters = Nothing
+    , _ltfrResourceName = pResourceName_
     }
 
 -- | This parameter is not currently supported.
 ltfrFilters :: Lens' ListTagsForResource [Filter]
-ltfrFilters = lens _ltfrFilters (\s a -> s { _ltfrFilters = a }) . _List
+ltfrFilters = lens _ltfrFilters (\ s a -> s{_ltfrFilters = a}) . _Default . _Coerce;
 
 -- | The Amazon RDS resource with tags to be listed. This value is an Amazon
--- Resource Name (ARN). For information about creating an ARN, see <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN  Constructingan RDS Amazon Resource Name (ARN)>.
+-- Resource Name (ARN). For information about creating an ARN, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN Constructing an RDS Amazon Resource Name (ARN)>.
 ltfrResourceName :: Lens' ListTagsForResource Text
-ltfrResourceName = lens _ltfrResourceName (\s a -> s { _ltfrResourceName = a })
+ltfrResourceName = lens _ltfrResourceName (\ s a -> s{_ltfrResourceName = a});
 
-newtype ListTagsForResourceResponse = ListTagsForResourceResponse
-    { _ltfrrTagList :: List "member" Tag
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest ListTagsForResource where
+        type Sv ListTagsForResource = RDS
+        type Rs ListTagsForResource =
+             ListTagsForResourceResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "ListTagsForResourceResult"
+              (\ s h x ->
+                 ListTagsForResourceResponse' <$>
+                   (x .@? "TagList" .!@ mempty >>=
+                      may (parseXMLList "Tag"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList ListTagsForResourceResponse where
-    type Item ListTagsForResourceResponse = Tag
+instance ToHeaders ListTagsForResource where
+        toHeaders = const mempty
 
-    fromList = ListTagsForResourceResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _ltfrrTagList
+instance ToPath ListTagsForResource where
+        toPath = const "/"
 
--- | 'ListTagsForResourceResponse' constructor.
+instance ToQuery ListTagsForResource where
+        toQuery ListTagsForResource'{..}
+          = mconcat
+              ["Action" =: ("ListTagsForResource" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "Filter" <$> _ltfrFilters),
+               "ResourceName" =: _ltfrResourceName]
+
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+    { _ltfrrsTagList :: !(Maybe [Tag])
+    , _ltfrrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListTagsForResourceResponse' with the minimum fields required to make a request.
 --
--- * 'ltfrrTagList' @::@ ['Tag']
+-- Use one of the following lenses to modify other fields as desired:
 --
-listTagsForResourceResponse :: ListTagsForResourceResponse
-listTagsForResourceResponse = ListTagsForResourceResponse
-    { _ltfrrTagList = mempty
+-- * 'ltfrrsTagList'
+--
+-- * 'ltfrrsStatus'
+listTagsForResourceResponse
+    :: Int -- ^ 'ltfrrsStatus'
+    -> ListTagsForResourceResponse
+listTagsForResourceResponse pStatus_ =
+    ListTagsForResourceResponse'
+    { _ltfrrsTagList = Nothing
+    , _ltfrrsStatus = pStatus_
     }
 
 -- | List of tags returned by the ListTagsForResource operation.
-ltfrrTagList :: Lens' ListTagsForResourceResponse [Tag]
-ltfrrTagList = lens _ltfrrTagList (\s a -> s { _ltfrrTagList = a }) . _List
-
-instance ToPath ListTagsForResource where
-    toPath = const "/"
-
-instance ToQuery ListTagsForResource where
-    toQuery ListTagsForResource{..} = mconcat
-        [ "Filters"      =? _ltfrFilters
-        , "ResourceName" =? _ltfrResourceName
-        ]
-
-instance ToHeaders ListTagsForResource
-
-instance AWSRequest ListTagsForResource where
-    type Sv ListTagsForResource = RDS
-    type Rs ListTagsForResource = ListTagsForResourceResponse
-
-    request  = post "ListTagsForResource"
-    response = xmlResponse
+ltfrrsTagList :: Lens' ListTagsForResourceResponse [Tag]
+ltfrrsTagList = lens _ltfrrsTagList (\ s a -> s{_ltfrrsTagList = a}) . _Default . _Coerce;
 
-instance FromXML ListTagsForResourceResponse where
-    parseXML = withElement "ListTagsForResourceResult" $ \x -> ListTagsForResourceResponse
-        <$> x .@? "TagList" .!@ mempty
+-- | The response status code.
+ltfrrsStatus :: Lens' ListTagsForResourceResponse Int
+ltfrrsStatus = lens _ltfrrsStatus (\ s a -> s{_ltfrrsStatus = a});
diff --git a/gen/Network/AWS/RDS/ModifyDBCluster.hs b/gen/Network/AWS/RDS/ModifyDBCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/ModifyDBCluster.hs
@@ -0,0 +1,309 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.ModifyDBCluster
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modify a setting for an Amazon Aurora DB cluster. You can change one or
+-- more database configuration parameters by specifying these parameters
+-- and the new values in the request. For more information on Amazon
+-- Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html AWS API Reference> for ModifyDBCluster.
+module Network.AWS.RDS.ModifyDBCluster
+    (
+    -- * Creating a Request
+      modifyDBCluster
+    , ModifyDBCluster
+    -- * Request Lenses
+    , mdcDBClusterIdentifier
+    , mdcMasterUserPassword
+    , mdcPreferredMaintenanceWindow
+    , mdcPreferredBackupWindow
+    , mdcBackupRetentionPeriod
+    , mdcVPCSecurityGroupIds
+    , mdcDBClusterParameterGroupName
+    , mdcApplyImmediately
+    , mdcOptionGroupName
+    , mdcNewDBClusterIdentifier
+    , mdcPort
+
+    -- * Destructuring the Response
+    , modifyDBClusterResponse
+    , ModifyDBClusterResponse
+    -- * Response Lenses
+    , mdcrsDBCluster
+    , mdcrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'modifyDBCluster' smart constructor.
+data ModifyDBCluster = ModifyDBCluster'
+    { _mdcDBClusterIdentifier         :: !(Maybe Text)
+    , _mdcMasterUserPassword          :: !(Maybe Text)
+    , _mdcPreferredMaintenanceWindow  :: !(Maybe Text)
+    , _mdcPreferredBackupWindow       :: !(Maybe Text)
+    , _mdcBackupRetentionPeriod       :: !(Maybe Int)
+    , _mdcVPCSecurityGroupIds         :: !(Maybe [Text])
+    , _mdcDBClusterParameterGroupName :: !(Maybe Text)
+    , _mdcApplyImmediately            :: !(Maybe Bool)
+    , _mdcOptionGroupName             :: !(Maybe Text)
+    , _mdcNewDBClusterIdentifier      :: !(Maybe Text)
+    , _mdcPort                        :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyDBCluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdcDBClusterIdentifier'
+--
+-- * 'mdcMasterUserPassword'
+--
+-- * 'mdcPreferredMaintenanceWindow'
+--
+-- * 'mdcPreferredBackupWindow'
+--
+-- * 'mdcBackupRetentionPeriod'
+--
+-- * 'mdcVPCSecurityGroupIds'
+--
+-- * 'mdcDBClusterParameterGroupName'
+--
+-- * 'mdcApplyImmediately'
+--
+-- * 'mdcOptionGroupName'
+--
+-- * 'mdcNewDBClusterIdentifier'
+--
+-- * 'mdcPort'
+modifyDBCluster
+    :: ModifyDBCluster
+modifyDBCluster =
+    ModifyDBCluster'
+    { _mdcDBClusterIdentifier = Nothing
+    , _mdcMasterUserPassword = Nothing
+    , _mdcPreferredMaintenanceWindow = Nothing
+    , _mdcPreferredBackupWindow = Nothing
+    , _mdcBackupRetentionPeriod = Nothing
+    , _mdcVPCSecurityGroupIds = Nothing
+    , _mdcDBClusterParameterGroupName = Nothing
+    , _mdcApplyImmediately = Nothing
+    , _mdcOptionGroupName = Nothing
+    , _mdcNewDBClusterIdentifier = Nothing
+    , _mdcPort = Nothing
+    }
+
+-- | The DB cluster identifier for the cluster being modified. This parameter
+-- is not case-sensitive.
+--
+-- Constraints:
+--
+-- -   Must be the identifier for an existing DB cluster.
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
+-- -   First character must be a letter.
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+mdcDBClusterIdentifier :: Lens' ModifyDBCluster (Maybe Text)
+mdcDBClusterIdentifier = lens _mdcDBClusterIdentifier (\ s a -> s{_mdcDBClusterIdentifier = a});
+
+-- | The new password for the master database user. This password can contain
+-- any printable ASCII character except \"\/\", \"\"\", or \"\'\".
+--
+-- Constraints: Must contain from 8 to 41 characters.
+mdcMasterUserPassword :: Lens' ModifyDBCluster (Maybe Text)
+mdcMasterUserPassword = lens _mdcMasterUserPassword (\ s a -> s{_mdcMasterUserPassword = a});
+
+-- | The weekly time range during which system maintenance can occur, in
+-- Universal Coordinated Time (UTC).
+--
+-- Format: 'ddd:hh24:mi-ddd:hh24:mi'
+--
+-- Default: A 30-minute window selected at random from an 8-hour block of
+-- time per region, occurring on a random day of the week. To see the time
+-- blocks available, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
+-- in the /Amazon RDS User Guide./
+--
+-- Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+--
+-- Constraints: Minimum 30-minute window.
+mdcPreferredMaintenanceWindow :: Lens' ModifyDBCluster (Maybe Text)
+mdcPreferredMaintenanceWindow = lens _mdcPreferredMaintenanceWindow (\ s a -> s{_mdcPreferredMaintenanceWindow = a});
+
+-- | The daily time range during which automated backups are created if
+-- automated backups are enabled, using the 'BackupRetentionPeriod'
+-- parameter.
+--
+-- Default: A 30-minute window selected at random from an 8-hour block of
+-- time per region. To see the time blocks available, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
+-- in the /Amazon RDS User Guide./
+--
+-- Constraints:
+--
+-- -   Must be in the format 'hh24:mi-hh24:mi'.
+-- -   Times should be in Universal Coordinated Time (UTC).
+-- -   Must not conflict with the preferred maintenance window.
+-- -   Must be at least 30 minutes.
+mdcPreferredBackupWindow :: Lens' ModifyDBCluster (Maybe Text)
+mdcPreferredBackupWindow = lens _mdcPreferredBackupWindow (\ s a -> s{_mdcPreferredBackupWindow = a});
+
+-- | The number of days for which automated backups are retained. Setting
+-- this parameter to a positive number enables backups. Setting this
+-- parameter to 0 disables automated backups.
+--
+-- Default: 1
+--
+-- Constraints:
+--
+-- -   Must be a value from 0 to 35
+mdcBackupRetentionPeriod :: Lens' ModifyDBCluster (Maybe Int)
+mdcBackupRetentionPeriod = lens _mdcBackupRetentionPeriod (\ s a -> s{_mdcBackupRetentionPeriod = a});
+
+-- | A lst of VPC security groups that the DB cluster will belong to.
+mdcVPCSecurityGroupIds :: Lens' ModifyDBCluster [Text]
+mdcVPCSecurityGroupIds = lens _mdcVPCSecurityGroupIds (\ s a -> s{_mdcVPCSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | The name of the DB cluster parameter group to use for the DB cluster.
+mdcDBClusterParameterGroupName :: Lens' ModifyDBCluster (Maybe Text)
+mdcDBClusterParameterGroupName = lens _mdcDBClusterParameterGroupName (\ s a -> s{_mdcDBClusterParameterGroupName = a});
+
+-- | A value that specifies whether the modifications in this request and any
+-- pending modifications are asynchronously applied as soon as possible,
+-- regardless of the 'PreferredMaintenanceWindow' setting for the DB
+-- cluster.
+--
+-- If this parameter is set to 'false', changes to the DB cluster are
+-- applied during the next maintenance window.
+--
+-- Default: 'false'
+mdcApplyImmediately :: Lens' ModifyDBCluster (Maybe Bool)
+mdcApplyImmediately = lens _mdcApplyImmediately (\ s a -> s{_mdcApplyImmediately = a});
+
+-- | A value that indicates that the DB cluster should be associated with the
+-- specified option group. Changing this parameter does not result in an
+-- outage except in the following case, and the change is applied during
+-- the next maintenance window unless the 'ApplyImmediately' parameter is
+-- set to 'true' for this request. If the parameter change results in an
+-- option group that enables OEM, this change can cause a brief
+-- (sub-second) period during which new connections are rejected but
+-- existing connections are not interrupted.
+--
+-- Permanent options cannot be removed from an option group. The option
+-- group cannot be removed from a DB cluster once it is associated with a
+-- DB cluster.
+mdcOptionGroupName :: Lens' ModifyDBCluster (Maybe Text)
+mdcOptionGroupName = lens _mdcOptionGroupName (\ s a -> s{_mdcOptionGroupName = a});
+
+-- | The new DB cluster identifier for the DB cluster when renaming a DB
+-- cluster. This value is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+--
+-- Example: 'my-cluster2'
+mdcNewDBClusterIdentifier :: Lens' ModifyDBCluster (Maybe Text)
+mdcNewDBClusterIdentifier = lens _mdcNewDBClusterIdentifier (\ s a -> s{_mdcNewDBClusterIdentifier = a});
+
+-- | The port number on which the DB cluster accepts connections.
+--
+-- Constraints: Value must be '1150-65535'
+--
+-- Default: The same port as the original DB cluster.
+mdcPort :: Lens' ModifyDBCluster (Maybe Int)
+mdcPort = lens _mdcPort (\ s a -> s{_mdcPort = a});
+
+instance AWSRequest ModifyDBCluster where
+        type Sv ModifyDBCluster = RDS
+        type Rs ModifyDBCluster = ModifyDBClusterResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "ModifyDBClusterResult"
+              (\ s h x ->
+                 ModifyDBClusterResponse' <$>
+                   (x .@? "DBCluster") <*> (pure (fromEnum s)))
+
+instance ToHeaders ModifyDBCluster where
+        toHeaders = const mempty
+
+instance ToPath ModifyDBCluster where
+        toPath = const "/"
+
+instance ToQuery ModifyDBCluster where
+        toQuery ModifyDBCluster'{..}
+          = mconcat
+              ["Action" =: ("ModifyDBCluster" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBClusterIdentifier" =: _mdcDBClusterIdentifier,
+               "MasterUserPassword" =: _mdcMasterUserPassword,
+               "PreferredMaintenanceWindow" =:
+                 _mdcPreferredMaintenanceWindow,
+               "PreferredBackupWindow" =: _mdcPreferredBackupWindow,
+               "BackupRetentionPeriod" =: _mdcBackupRetentionPeriod,
+               "VpcSecurityGroupIds" =:
+                 toQuery
+                   (toQueryList "VpcSecurityGroupId" <$>
+                      _mdcVPCSecurityGroupIds),
+               "DBClusterParameterGroupName" =:
+                 _mdcDBClusterParameterGroupName,
+               "ApplyImmediately" =: _mdcApplyImmediately,
+               "OptionGroupName" =: _mdcOptionGroupName,
+               "NewDBClusterIdentifier" =:
+                 _mdcNewDBClusterIdentifier,
+               "Port" =: _mdcPort]
+
+-- | /See:/ 'modifyDBClusterResponse' smart constructor.
+data ModifyDBClusterResponse = ModifyDBClusterResponse'
+    { _mdcrsDBCluster :: !(Maybe DBCluster)
+    , _mdcrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyDBClusterResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdcrsDBCluster'
+--
+-- * 'mdcrsStatus'
+modifyDBClusterResponse
+    :: Int -- ^ 'mdcrsStatus'
+    -> ModifyDBClusterResponse
+modifyDBClusterResponse pStatus_ =
+    ModifyDBClusterResponse'
+    { _mdcrsDBCluster = Nothing
+    , _mdcrsStatus = pStatus_
+    }
+
+-- | Undocumented member.
+mdcrsDBCluster :: Lens' ModifyDBClusterResponse (Maybe DBCluster)
+mdcrsDBCluster = lens _mdcrsDBCluster (\ s a -> s{_mdcrsDBCluster = a});
+
+-- | The response status code.
+mdcrsStatus :: Lens' ModifyDBClusterResponse Int
+mdcrsStatus = lens _mdcrsStatus (\ s a -> s{_mdcrsStatus = a});
diff --git a/gen/Network/AWS/RDS/ModifyDBClusterParameterGroup.hs b/gen/Network/AWS/RDS/ModifyDBClusterParameterGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/ModifyDBClusterParameterGroup.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.ModifyDBClusterParameterGroup
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies the parameters of a DB cluster parameter group. To modify more
+-- than one parameter, submit a list of the following: 'ParameterName',
+-- 'ParameterValue', and 'ApplyMethod'. A maximum of 20 parameters can be
+-- modified in a single request.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- Changes to dynamic parameters are applied immediately. Changes to static
+-- parameters require a reboot without failover to the DB cluster
+-- associated with the parameter group before the change can take effect.
+--
+-- After you create a DB cluster parameter group, you should wait at least
+-- 5 minutes before creating your first DB cluster that uses that DB
+-- cluster parameter group as the default parameter group. This allows
+-- Amazon RDS to fully complete the create action before the parameter
+-- group is used as the default for a new DB cluster. This is especially
+-- important for parameters that are critical when creating the default
+-- database for a DB cluster, such as the character set for the default
+-- database defined by the 'character_set_database' parameter. You can use
+-- the /Parameter Groups/ option of the
+-- <https://console.aws.amazon.com/rds/ Amazon RDS console> or the
+-- DescribeDBClusterParameters command to verify that your DB cluster
+-- parameter group has been created or modified.
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterParameterGroup.html AWS API Reference> for ModifyDBClusterParameterGroup.
+module Network.AWS.RDS.ModifyDBClusterParameterGroup
+    (
+    -- * Creating a Request
+      modifyDBClusterParameterGroup
+    , ModifyDBClusterParameterGroup
+    -- * Request Lenses
+    , mdcpgDBClusterParameterGroupName
+    , mdcpgParameters
+
+    -- * Destructuring the Response
+    , dbClusterParameterGroupNameMessage
+    , DBClusterParameterGroupNameMessage
+    -- * Response Lenses
+    , dcpgnmDBClusterParameterGroupName
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'modifyDBClusterParameterGroup' smart constructor.
+data ModifyDBClusterParameterGroup = ModifyDBClusterParameterGroup'
+    { _mdcpgDBClusterParameterGroupName :: !Text
+    , _mdcpgParameters                  :: ![Parameter]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyDBClusterParameterGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdcpgDBClusterParameterGroupName'
+--
+-- * 'mdcpgParameters'
+modifyDBClusterParameterGroup
+    :: Text -- ^ 'mdcpgDBClusterParameterGroupName'
+    -> ModifyDBClusterParameterGroup
+modifyDBClusterParameterGroup pDBClusterParameterGroupName_ =
+    ModifyDBClusterParameterGroup'
+    { _mdcpgDBClusterParameterGroupName = pDBClusterParameterGroupName_
+    , _mdcpgParameters = mempty
+    }
+
+-- | The name of the DB cluster parameter group to modify.
+mdcpgDBClusterParameterGroupName :: Lens' ModifyDBClusterParameterGroup Text
+mdcpgDBClusterParameterGroupName = lens _mdcpgDBClusterParameterGroupName (\ s a -> s{_mdcpgDBClusterParameterGroupName = a});
+
+-- | A list of parameters in the DB cluster parameter group to modify.
+mdcpgParameters :: Lens' ModifyDBClusterParameterGroup [Parameter]
+mdcpgParameters = lens _mdcpgParameters (\ s a -> s{_mdcpgParameters = a}) . _Coerce;
+
+instance AWSRequest ModifyDBClusterParameterGroup
+         where
+        type Sv ModifyDBClusterParameterGroup = RDS
+        type Rs ModifyDBClusterParameterGroup =
+             DBClusterParameterGroupNameMessage
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "ModifyDBClusterParameterGroupResult"
+              (\ s h x -> parseXML x)
+
+instance ToHeaders ModifyDBClusterParameterGroup
+         where
+        toHeaders = const mempty
+
+instance ToPath ModifyDBClusterParameterGroup where
+        toPath = const "/"
+
+instance ToQuery ModifyDBClusterParameterGroup where
+        toQuery ModifyDBClusterParameterGroup'{..}
+          = mconcat
+              ["Action" =:
+                 ("ModifyDBClusterParameterGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBClusterParameterGroupName" =:
+                 _mdcpgDBClusterParameterGroupName,
+               "Parameters" =:
+                 toQueryList "Parameter" _mdcpgParameters]
diff --git a/gen/Network/AWS/RDS/ModifyDBInstance.hs b/gen/Network/AWS/RDS/ModifyDBInstance.hs
--- a/gen/Network/AWS/RDS/ModifyDBInstance.hs
+++ b/gen/Network/AWS/RDS/ModifyDBInstance.hs
@@ -1,598 +1,644 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.ModifyDBInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Modify settings for a DB instance. You can change one or more database
--- configuration parameters by specifying these parameters and the new values in
--- the request.
+-- Modify settings for a DB instance. You can change one or more database
+-- configuration parameters by specifying these parameters and the new
+-- values in the request.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html AWS API Reference> for ModifyDBInstance.
 module Network.AWS.RDS.ModifyDBInstance
     (
-    -- * Request
-      ModifyDBInstance
-    -- ** Request constructor
-    , modifyDBInstance
-    -- ** Request lenses
-    , mdbiAllocatedStorage
-    , mdbiAllowMajorVersionUpgrade
-    , mdbiApplyImmediately
-    , mdbiAutoMinorVersionUpgrade
-    , mdbiBackupRetentionPeriod
-    , mdbiCACertificateIdentifier
-    , mdbiDBInstanceClass
-    , mdbiDBInstanceIdentifier
-    , mdbiDBParameterGroupName
-    , mdbiDBSecurityGroups
-    , mdbiEngineVersion
-    , mdbiIops
-    , mdbiMasterUserPassword
-    , mdbiMultiAZ
-    , mdbiNewDBInstanceIdentifier
-    , mdbiOptionGroupName
-    , mdbiPreferredBackupWindow
-    , mdbiPreferredMaintenanceWindow
-    , mdbiStorageType
-    , mdbiTdeCredentialArn
-    , mdbiTdeCredentialPassword
-    , mdbiVpcSecurityGroupIds
+    -- * Creating a Request
+      modifyDBInstance
+    , ModifyDBInstance
+    -- * Request Lenses
+    , mdiDBSecurityGroups
+    , mdiEngineVersion
+    , mdiAutoMinorVersionUpgrade
+    , mdiMasterUserPassword
+    , mdiIOPS
+    , mdiAllowMajorVersionUpgrade
+    , mdiNewDBInstanceIdentifier
+    , mdiDomain
+    , mdiTDECredentialPassword
+    , mdiDBInstanceClass
+    , mdiPreferredMaintenanceWindow
+    , mdiCACertificateIdentifier
+    , mdiPreferredBackupWindow
+    , mdiBackupRetentionPeriod
+    , mdiDBParameterGroupName
+    , mdiVPCSecurityGroupIds
+    , mdiMultiAZ
+    , mdiAllocatedStorage
+    , mdiApplyImmediately
+    , mdiTDECredentialARN
+    , mdiOptionGroupName
+    , mdiCopyTagsToSnapshot
+    , mdiStorageType
+    , mdiDBInstanceIdentifier
 
-    -- * Response
-    , ModifyDBInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , modifyDBInstanceResponse
-    -- ** Response lenses
-    , mdbirDBInstance
+    , ModifyDBInstanceResponse
+    -- * Response Lenses
+    , mdirsDBInstance
+    , mdirsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data ModifyDBInstance = ModifyDBInstance
-    { _mdbiAllocatedStorage           :: Maybe Int
-    , _mdbiAllowMajorVersionUpgrade   :: Maybe Bool
-    , _mdbiApplyImmediately           :: Maybe Bool
-    , _mdbiAutoMinorVersionUpgrade    :: Maybe Bool
-    , _mdbiBackupRetentionPeriod      :: Maybe Int
-    , _mdbiCACertificateIdentifier    :: Maybe Text
-    , _mdbiDBInstanceClass            :: Maybe Text
-    , _mdbiDBInstanceIdentifier       :: Text
-    , _mdbiDBParameterGroupName       :: Maybe Text
-    , _mdbiDBSecurityGroups           :: List "member" Text
-    , _mdbiEngineVersion              :: Maybe Text
-    , _mdbiIops                       :: Maybe Int
-    , _mdbiMasterUserPassword         :: Maybe Text
-    , _mdbiMultiAZ                    :: Maybe Bool
-    , _mdbiNewDBInstanceIdentifier    :: Maybe Text
-    , _mdbiOptionGroupName            :: Maybe Text
-    , _mdbiPreferredBackupWindow      :: Maybe Text
-    , _mdbiPreferredMaintenanceWindow :: Maybe Text
-    , _mdbiStorageType                :: Maybe Text
-    , _mdbiTdeCredentialArn           :: Maybe Text
-    , _mdbiTdeCredentialPassword      :: Maybe Text
-    , _mdbiVpcSecurityGroupIds        :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- |
+--
+-- /See:/ 'modifyDBInstance' smart constructor.
+data ModifyDBInstance = ModifyDBInstance'
+    { _mdiDBSecurityGroups           :: !(Maybe [Text])
+    , _mdiEngineVersion              :: !(Maybe Text)
+    , _mdiAutoMinorVersionUpgrade    :: !(Maybe Bool)
+    , _mdiMasterUserPassword         :: !(Maybe Text)
+    , _mdiIOPS                       :: !(Maybe Int)
+    , _mdiAllowMajorVersionUpgrade   :: !(Maybe Bool)
+    , _mdiNewDBInstanceIdentifier    :: !(Maybe Text)
+    , _mdiDomain                     :: !(Maybe Text)
+    , _mdiTDECredentialPassword      :: !(Maybe Text)
+    , _mdiDBInstanceClass            :: !(Maybe Text)
+    , _mdiPreferredMaintenanceWindow :: !(Maybe Text)
+    , _mdiCACertificateIdentifier    :: !(Maybe Text)
+    , _mdiPreferredBackupWindow      :: !(Maybe Text)
+    , _mdiBackupRetentionPeriod      :: !(Maybe Int)
+    , _mdiDBParameterGroupName       :: !(Maybe Text)
+    , _mdiVPCSecurityGroupIds        :: !(Maybe [Text])
+    , _mdiMultiAZ                    :: !(Maybe Bool)
+    , _mdiAllocatedStorage           :: !(Maybe Int)
+    , _mdiApplyImmediately           :: !(Maybe Bool)
+    , _mdiTDECredentialARN           :: !(Maybe Text)
+    , _mdiOptionGroupName            :: !(Maybe Text)
+    , _mdiCopyTagsToSnapshot         :: !(Maybe Bool)
+    , _mdiStorageType                :: !(Maybe Text)
+    , _mdiDBInstanceIdentifier       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ModifyDBInstance' constructor.
+-- | Creates a value of 'ModifyDBInstance' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mdbiAllocatedStorage' @::@ 'Maybe' 'Int'
+-- * 'mdiDBSecurityGroups'
 --
--- * 'mdbiAllowMajorVersionUpgrade' @::@ 'Maybe' 'Bool'
+-- * 'mdiEngineVersion'
 --
--- * 'mdbiApplyImmediately' @::@ 'Maybe' 'Bool'
+-- * 'mdiAutoMinorVersionUpgrade'
 --
--- * 'mdbiAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'
+-- * 'mdiMasterUserPassword'
 --
--- * 'mdbiBackupRetentionPeriod' @::@ 'Maybe' 'Int'
+-- * 'mdiIOPS'
 --
--- * 'mdbiCACertificateIdentifier' @::@ 'Maybe' 'Text'
+-- * 'mdiAllowMajorVersionUpgrade'
 --
--- * 'mdbiDBInstanceClass' @::@ 'Maybe' 'Text'
+-- * 'mdiNewDBInstanceIdentifier'
 --
--- * 'mdbiDBInstanceIdentifier' @::@ 'Text'
+-- * 'mdiDomain'
 --
--- * 'mdbiDBParameterGroupName' @::@ 'Maybe' 'Text'
+-- * 'mdiTDECredentialPassword'
 --
--- * 'mdbiDBSecurityGroups' @::@ ['Text']
+-- * 'mdiDBInstanceClass'
 --
--- * 'mdbiEngineVersion' @::@ 'Maybe' 'Text'
+-- * 'mdiPreferredMaintenanceWindow'
 --
--- * 'mdbiIops' @::@ 'Maybe' 'Int'
+-- * 'mdiCACertificateIdentifier'
 --
--- * 'mdbiMasterUserPassword' @::@ 'Maybe' 'Text'
+-- * 'mdiPreferredBackupWindow'
 --
--- * 'mdbiMultiAZ' @::@ 'Maybe' 'Bool'
+-- * 'mdiBackupRetentionPeriod'
 --
--- * 'mdbiNewDBInstanceIdentifier' @::@ 'Maybe' 'Text'
+-- * 'mdiDBParameterGroupName'
 --
--- * 'mdbiOptionGroupName' @::@ 'Maybe' 'Text'
+-- * 'mdiVPCSecurityGroupIds'
 --
--- * 'mdbiPreferredBackupWindow' @::@ 'Maybe' 'Text'
+-- * 'mdiMultiAZ'
 --
--- * 'mdbiPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'
+-- * 'mdiAllocatedStorage'
 --
--- * 'mdbiStorageType' @::@ 'Maybe' 'Text'
+-- * 'mdiApplyImmediately'
 --
--- * 'mdbiTdeCredentialArn' @::@ 'Maybe' 'Text'
+-- * 'mdiTDECredentialARN'
 --
--- * 'mdbiTdeCredentialPassword' @::@ 'Maybe' 'Text'
+-- * 'mdiOptionGroupName'
 --
--- * 'mdbiVpcSecurityGroupIds' @::@ ['Text']
+-- * 'mdiCopyTagsToSnapshot'
 --
-modifyDBInstance :: Text -- ^ 'mdbiDBInstanceIdentifier'
-                 -> ModifyDBInstance
-modifyDBInstance p1 = ModifyDBInstance
-    { _mdbiDBInstanceIdentifier       = p1
-    , _mdbiAllocatedStorage           = Nothing
-    , _mdbiDBInstanceClass            = Nothing
-    , _mdbiDBSecurityGroups           = mempty
-    , _mdbiVpcSecurityGroupIds        = mempty
-    , _mdbiApplyImmediately           = Nothing
-    , _mdbiMasterUserPassword         = Nothing
-    , _mdbiDBParameterGroupName       = Nothing
-    , _mdbiBackupRetentionPeriod      = Nothing
-    , _mdbiPreferredBackupWindow      = Nothing
-    , _mdbiPreferredMaintenanceWindow = Nothing
-    , _mdbiMultiAZ                    = Nothing
-    , _mdbiEngineVersion              = Nothing
-    , _mdbiAllowMajorVersionUpgrade   = Nothing
-    , _mdbiAutoMinorVersionUpgrade    = Nothing
-    , _mdbiIops                       = Nothing
-    , _mdbiOptionGroupName            = Nothing
-    , _mdbiNewDBInstanceIdentifier    = Nothing
-    , _mdbiStorageType                = Nothing
-    , _mdbiTdeCredentialArn           = Nothing
-    , _mdbiTdeCredentialPassword      = Nothing
-    , _mdbiCACertificateIdentifier    = Nothing
+-- * 'mdiStorageType'
+--
+-- * 'mdiDBInstanceIdentifier'
+modifyDBInstance
+    :: Text -- ^ 'mdiDBInstanceIdentifier'
+    -> ModifyDBInstance
+modifyDBInstance pDBInstanceIdentifier_ =
+    ModifyDBInstance'
+    { _mdiDBSecurityGroups = Nothing
+    , _mdiEngineVersion = Nothing
+    , _mdiAutoMinorVersionUpgrade = Nothing
+    , _mdiMasterUserPassword = Nothing
+    , _mdiIOPS = Nothing
+    , _mdiAllowMajorVersionUpgrade = Nothing
+    , _mdiNewDBInstanceIdentifier = Nothing
+    , _mdiDomain = Nothing
+    , _mdiTDECredentialPassword = Nothing
+    , _mdiDBInstanceClass = Nothing
+    , _mdiPreferredMaintenanceWindow = Nothing
+    , _mdiCACertificateIdentifier = Nothing
+    , _mdiPreferredBackupWindow = Nothing
+    , _mdiBackupRetentionPeriod = Nothing
+    , _mdiDBParameterGroupName = Nothing
+    , _mdiVPCSecurityGroupIds = Nothing
+    , _mdiMultiAZ = Nothing
+    , _mdiAllocatedStorage = Nothing
+    , _mdiApplyImmediately = Nothing
+    , _mdiTDECredentialARN = Nothing
+    , _mdiOptionGroupName = Nothing
+    , _mdiCopyTagsToSnapshot = Nothing
+    , _mdiStorageType = Nothing
+    , _mdiDBInstanceIdentifier = pDBInstanceIdentifier_
     }
 
--- | The new storage capacity of the RDS instance. Changing this setting does not
--- result in an outage and the change is applied during the next maintenance
--- window unless 'ApplyImmediately' is set to 'true' for this request.
---
--- MySQL
+-- | A list of DB security groups to authorize on this DB instance. Changing
+-- this setting does not result in an outage and the change is
+-- asynchronously applied as soon as possible.
 --
--- Default: Uses existing setting
+-- Constraints:
 --
--- Valid Values: 5-3072
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+mdiDBSecurityGroups :: Lens' ModifyDBInstance [Text]
+mdiDBSecurityGroups = lens _mdiDBSecurityGroups (\ s a -> s{_mdiDBSecurityGroups = a}) . _Default . _Coerce;
+
+-- | The version number of the database engine to upgrade to. Changing this
+-- parameter results in an outage and the change is applied during the next
+-- maintenance window unless the 'ApplyImmediately' parameter is set to
+-- 'true' for this request.
 --
--- Constraints: Value supplied must be at least 10% greater than the current
--- value. Values that are not at least 10% greater than the existing value are
--- rounded up so that they are 10% greater than the current value.
+-- For major version upgrades, if a non-default DB parameter group is
+-- currently in use, a new DB parameter group in the DB parameter group
+-- family for the new engine version must be specified. The new DB
+-- parameter group can be the default for that DB parameter group family.
 --
--- Type: Integer
+-- For a list of valid engine versions, see CreateDBInstance.
+mdiEngineVersion :: Lens' ModifyDBInstance (Maybe Text)
+mdiEngineVersion = lens _mdiEngineVersion (\ s a -> s{_mdiEngineVersion = a});
+
+-- | Indicates that minor version upgrades will be applied automatically to
+-- the DB instance during the maintenance window. Changing this parameter
+-- does not result in an outage except in the following case and the change
+-- is asynchronously applied as soon as possible. An outage will result if
+-- this parameter is set to 'true' during the maintenance window, and a
+-- newer minor version is available, and RDS has enabled auto patching for
+-- that engine version.
+mdiAutoMinorVersionUpgrade :: Lens' ModifyDBInstance (Maybe Bool)
+mdiAutoMinorVersionUpgrade = lens _mdiAutoMinorVersionUpgrade (\ s a -> s{_mdiAutoMinorVersionUpgrade = a});
+
+-- | The new password for the DB instance master user. Can be any printable
+-- ASCII character except \"\/\", \"\"\", or \"\'\".
 --
--- PostgreSQL
+-- Changing this parameter does not result in an outage and the change is
+-- asynchronously applied as soon as possible. Between the time of the
+-- request and the completion of the request, the 'MasterUserPassword'
+-- element exists in the 'PendingModifiedValues' element of the operation
+-- response.
 --
 -- Default: Uses existing setting
 --
--- Valid Values: 5-3072
---
--- Constraints: Value supplied must be at least 10% greater than the current
--- value. Values that are not at least 10% greater than the existing value are
--- rounded up so that they are 10% greater than the current value.
---
--- Type: Integer
+-- Constraints: Must be 8 to 41 alphanumeric characters (MySQL), 8 to 30
+-- alphanumeric characters (Oracle), or 8 to 128 alphanumeric characters
+-- (SQL Server).
 --
--- Oracle
+-- Amazon RDS API actions never return the password, so this action
+-- provides a way to regain access to a primary instance user if the
+-- password is lost. This includes restoring privileges that might have
+-- been accidentally revoked.
+mdiMasterUserPassword :: Lens' ModifyDBInstance (Maybe Text)
+mdiMasterUserPassword = lens _mdiMasterUserPassword (\ s a -> s{_mdiMasterUserPassword = a});
+
+-- | The new Provisioned IOPS (I\/O operations per second) value for the RDS
+-- instance. Changing this setting does not result in an outage and the
+-- change is applied during the next maintenance window unless the
+-- 'ApplyImmediately' parameter is set to 'true' for this request.
 --
 -- Default: Uses existing setting
 --
--- Valid Values: 10-3072
+-- Constraints: Value supplied must be at least 10% greater than the
+-- current value. Values that are not at least 10% greater than the
+-- existing value are rounded up so that they are 10% greater than the
+-- current value. If you are migrating from Provisioned IOPS to standard
+-- storage, set this value to 0. The DB instance will require a reboot for
+-- the change in storage type to take effect.
 --
--- Constraints: Value supplied must be at least 10% greater than the current
--- value. Values that are not at least 10% greater than the existing value are
--- rounded up so that they are 10% greater than the current value.
+-- __SQL Server__
 --
--- SQL Server
+-- Setting the IOPS value for the SQL Server database engine is not
+-- supported.
 --
--- Cannot be modified.
+-- Type: Integer
 --
 -- If you choose to migrate your DB instance from using standard storage to
 -- using Provisioned IOPS, or from using Provisioned IOPS to using standard
--- storage, the process can take time. The duration of the migration depends on
--- several factors such as database load, storage size, storage type (standard
--- or Provisioned IOPS), amount of IOPS provisioned (if any), and the number of
--- prior scale storage operations. Typical migration times are under 24 hours,
--- but the process can take up to several days in some cases. During the
--- migration, the DB instance will be available for use, but may experience
--- performance degradation. While the migration takes place, nightly backups for
--- the instance will be suspended. No other Amazon RDS operations can take place
--- for the instance, including modifying the instance, rebooting the instance,
--- deleting the instance, creating a Read Replica for the instance, and creating
--- a DB snapshot of the instance.
-mdbiAllocatedStorage :: Lens' ModifyDBInstance (Maybe Int)
-mdbiAllocatedStorage =
-    lens _mdbiAllocatedStorage (\s a -> s { _mdbiAllocatedStorage = a })
+-- storage, the process can take time. The duration of the migration
+-- depends on several factors such as database load, storage size, storage
+-- type (standard or Provisioned IOPS), amount of IOPS provisioned (if
+-- any), and the number of prior scale storage operations. Typical
+-- migration times are under 24 hours, but the process can take up to
+-- several days in some cases. During the migration, the DB instance will
+-- be available for use, but might experience performance degradation.
+-- While the migration takes place, nightly backups for the instance will
+-- be suspended. No other Amazon RDS operations can take place for the
+-- instance, including modifying the instance, rebooting the instance,
+-- deleting the instance, creating a Read Replica for the instance, and
+-- creating a DB snapshot of the instance.
+mdiIOPS :: Lens' ModifyDBInstance (Maybe Int)
+mdiIOPS = lens _mdiIOPS (\ s a -> s{_mdiIOPS = a});
 
--- | Indicates that major version upgrades are allowed. Changing this parameter
--- does not result in an outage and the change is asynchronously applied as soon
--- as possible.
+-- | Indicates that major version upgrades are allowed. Changing this
+-- parameter does not result in an outage and the change is asynchronously
+-- applied as soon as possible.
 --
--- Constraints: This parameter must be set to true when specifying a value for
--- the EngineVersion parameter that is a different major version than the DB
--- instance's current version.
-mdbiAllowMajorVersionUpgrade :: Lens' ModifyDBInstance (Maybe Bool)
-mdbiAllowMajorVersionUpgrade =
-    lens _mdbiAllowMajorVersionUpgrade
-        (\s a -> s { _mdbiAllowMajorVersionUpgrade = a })
+-- Constraints: This parameter must be set to true when specifying a value
+-- for the EngineVersion parameter that is a different major version than
+-- the DB instance\'s current version.
+mdiAllowMajorVersionUpgrade :: Lens' ModifyDBInstance (Maybe Bool)
+mdiAllowMajorVersionUpgrade = lens _mdiAllowMajorVersionUpgrade (\ s a -> s{_mdiAllowMajorVersionUpgrade = a});
 
--- | Specifies whether the modifications in this request and any pending
--- modifications are asynchronously applied as soon as possible, regardless of
--- the 'PreferredMaintenanceWindow' setting for the DB instance.
+-- | The new DB instance identifier for the DB instance when renaming a DB
+-- instance. When you change the DB instance identifier, an instance reboot
+-- will occur immediately if you set 'Apply Immediately' to true, or will
+-- occur during the next maintenance window if 'Apply Immediately' to
+-- false. This value is stored as a lowercase string.
 --
--- If this parameter is set to 'false', changes to the DB instance are applied
--- during the next maintenance window. Some parameter changes can cause an
--- outage and will be applied on the next call to 'RebootDBInstance', or the next
--- failure reboot. Review the table of parameters in <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.html#Overview.DBInstance.Modifying Modifying a DB Instance andUsing the Apply Immediately Parameter> to see the impact that setting 'ApplyImmediately' to 'true' or 'false' has for each modified parameter and to determine when the
--- changes will be applied.
+-- Constraints:
 --
--- Default: 'false'
-mdbiApplyImmediately :: Lens' ModifyDBInstance (Maybe Bool)
-mdbiApplyImmediately =
-    lens _mdbiApplyImmediately (\s a -> s { _mdbiApplyImmediately = a })
-
--- | Indicates that minor version upgrades will be applied automatically to the
--- DB instance during the maintenance window. Changing this parameter does not
--- result in an outage except in the following case and the change is
--- asynchronously applied as soon as possible. An outage will result if this
--- parameter is set to 'true' during the maintenance window, and a newer minor
--- version is available, and RDS has enabled auto patching for that engine
--- version.
-mdbiAutoMinorVersionUpgrade :: Lens' ModifyDBInstance (Maybe Bool)
-mdbiAutoMinorVersionUpgrade =
-    lens _mdbiAutoMinorVersionUpgrade
-        (\s a -> s { _mdbiAutoMinorVersionUpgrade = a })
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+mdiNewDBInstanceIdentifier :: Lens' ModifyDBInstance (Maybe Text)
+mdiNewDBInstanceIdentifier = lens _mdiNewDBInstanceIdentifier (\ s a -> s{_mdiNewDBInstanceIdentifier = a});
 
--- | The number of days to retain automated backups. Setting this parameter to a
--- positive number enables backups. Setting this parameter to 0 disables
--- automated backups.
---
--- Changing this parameter can result in an outage if you change from 0 to a
--- non-zero value or from a non-zero value to 0. These changes are applied
--- during the next maintenance window unless the 'ApplyImmediately' parameter is
--- set to 'true' for this request. If you change the parameter from one non-zero
--- value to another non-zero value, the change is asynchronously applied as soon
--- as possible.
---
--- Default: Uses existing setting
---
--- Constraints:
+-- | Specify the Active Directory Domain to move the instance to.
 --
--- Must be a value from 0 to 35 Can be specified for a MySQL Read Replica only
--- if the source is running MySQL 5.6 Can be specified for a PostgreSQL Read
--- Replica only if the source is running PostgreSQL 9.3.5 Cannot be set to 0 if
--- the DB instance is a source to Read Replicas
-mdbiBackupRetentionPeriod :: Lens' ModifyDBInstance (Maybe Int)
-mdbiBackupRetentionPeriod =
-    lens _mdbiBackupRetentionPeriod
-        (\s a -> s { _mdbiBackupRetentionPeriod = a })
+-- The specified Active Directory Domain must be created prior to this
+-- operation. Currently only SQL Server instance can be created in a Domain
+mdiDomain :: Lens' ModifyDBInstance (Maybe Text)
+mdiDomain = lens _mdiDomain (\ s a -> s{_mdiDomain = a});
 
--- | Indicates the certificate which needs to be associated with the instance.
-mdbiCACertificateIdentifier :: Lens' ModifyDBInstance (Maybe Text)
-mdbiCACertificateIdentifier =
-    lens _mdbiCACertificateIdentifier
-        (\s a -> s { _mdbiCACertificateIdentifier = a })
+-- | The password for the given ARN from the Key Store in order to access the
+-- device.
+mdiTDECredentialPassword :: Lens' ModifyDBInstance (Maybe Text)
+mdiTDECredentialPassword = lens _mdiTDECredentialPassword (\ s a -> s{_mdiTDECredentialPassword = a});
 
 -- | The new compute and memory capacity of the DB instance. To determine the
--- instance classes that are available for a particular DB engine, use the 'DescribeOrderableDBInstanceOptions' action.
+-- instance classes that are available for a particular DB engine, use the
+-- DescribeOrderableDBInstanceOptions action.
 --
--- Passing a value for this setting causes an outage during the change and is
--- applied during the next maintenance window, unless 'ApplyImmediately' is
--- specified as 'true' for this request.
+-- Passing a value for this setting causes an outage during the change and
+-- is applied during the next maintenance window, unless 'ApplyImmediately'
+-- is specified as 'true' for this request.
 --
 -- Default: Uses existing setting
 --
--- Valid Values: 'db.t1.micro | db.m1.small | db.m1.medium | db.m1.large |db.m1.xlarge | db.m2.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium |db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge |db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small |db.t2.medium'
-mdbiDBInstanceClass :: Lens' ModifyDBInstance (Maybe Text)
-mdbiDBInstanceClass =
-    lens _mdbiDBInstanceClass (\s a -> s { _mdbiDBInstanceClass = a })
+-- Valid Values:
+-- 'db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium'
+mdiDBInstanceClass :: Lens' ModifyDBInstance (Maybe Text)
+mdiDBInstanceClass = lens _mdiDBInstanceClass (\ s a -> s{_mdiDBInstanceClass = a});
 
--- | The DB instance identifier. This value is stored as a lowercase string.
+-- | The weekly time range (in UTC) during which system maintenance can
+-- occur, which might result in an outage. Changing this parameter does not
+-- result in an outage, except in the following situation, and the change
+-- is asynchronously applied as soon as possible. If there are pending
+-- actions that cause a reboot, and the maintenance window is changed to
+-- include the current time, then changing this parameter will cause a
+-- reboot of the DB instance. If moving this window to the current time,
+-- there must be at least 30 minutes between the current time and end of
+-- the window to ensure pending changes are applied.
 --
--- Constraints:
+-- Default: Uses existing setting
 --
--- Must be the identifier for an existing DB instance Must contain from 1 to
--- 63 alphanumeric characters or hyphens First character must be a letter Cannot
--- end with a hyphen or contain two consecutive hyphens
-mdbiDBInstanceIdentifier :: Lens' ModifyDBInstance Text
-mdbiDBInstanceIdentifier =
-    lens _mdbiDBInstanceIdentifier
-        (\s a -> s { _mdbiDBInstanceIdentifier = a })
-
--- | The name of the DB parameter group to apply to the DB instance. Changing
--- this setting does not result in an outage. The parameter group name itself is
--- changed immediately, but the actual parameter changes are not applied until
--- you reboot the instance without failover. The db instance will NOT be
--- rebooted automatically and the parameter changes will NOT be applied during
--- the next maintenance window.
+-- Format: ddd:hh24:mi-ddd:hh24:mi
 --
--- Default: Uses existing setting
+-- Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun
 --
--- Constraints: The DB parameter group must be in the same DB parameter group
--- family as this DB instance.
-mdbiDBParameterGroupName :: Lens' ModifyDBInstance (Maybe Text)
-mdbiDBParameterGroupName =
-    lens _mdbiDBParameterGroupName
-        (\s a -> s { _mdbiDBParameterGroupName = a })
+-- Constraints: Must be at least 30 minutes
+mdiPreferredMaintenanceWindow :: Lens' ModifyDBInstance (Maybe Text)
+mdiPreferredMaintenanceWindow = lens _mdiPreferredMaintenanceWindow (\ s a -> s{_mdiPreferredMaintenanceWindow = a});
 
--- | A list of DB security groups to authorize on this DB instance. Changing this
--- setting does not result in an outage and the change is asynchronously applied
--- as soon as possible.
+-- | Indicates the certificate that needs to be associated with the instance.
+mdiCACertificateIdentifier :: Lens' ModifyDBInstance (Maybe Text)
+mdiCACertificateIdentifier = lens _mdiCACertificateIdentifier (\ s a -> s{_mdiCACertificateIdentifier = a});
+
+-- | The daily time range during which automated backups are created if
+-- automated backups are enabled, as determined by the
+-- 'BackupRetentionPeriod' parameter. Changing this parameter does not
+-- result in an outage and the change is asynchronously applied as soon as
+-- possible.
 --
 -- Constraints:
 --
--- Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
---
-mdbiDBSecurityGroups :: Lens' ModifyDBInstance [Text]
-mdbiDBSecurityGroups =
-    lens _mdbiDBSecurityGroups (\s a -> s { _mdbiDBSecurityGroups = a })
-        . _List
+-- -   Must be in the format hh24:mi-hh24:mi
+-- -   Times should be in Universal Time Coordinated (UTC)
+-- -   Must not conflict with the preferred maintenance window
+-- -   Must be at least 30 minutes
+mdiPreferredBackupWindow :: Lens' ModifyDBInstance (Maybe Text)
+mdiPreferredBackupWindow = lens _mdiPreferredBackupWindow (\ s a -> s{_mdiPreferredBackupWindow = a});
 
--- | The version number of the database engine to upgrade to. Changing this
--- parameter results in an outage and the change is applied during the next
--- maintenance window unless the 'ApplyImmediately' parameter is set to 'true' for
--- this request.
+-- | The number of days to retain automated backups. Setting this parameter
+-- to a positive number enables backups. Setting this parameter to 0
+-- disables automated backups.
 --
--- For major version upgrades, if a non-default DB parameter group is
--- currently in use, a new DB parameter group in the DB parameter group family
--- for the new engine version must be specified. The new DB parameter group can
--- be the default for that DB parameter group family.
+-- Changing this parameter can result in an outage if you change from 0 to
+-- a non-zero value or from a non-zero value to 0. These changes are
+-- applied during the next maintenance window unless the 'ApplyImmediately'
+-- parameter is set to 'true' for this request. If you change the parameter
+-- from one non-zero value to another non-zero value, the change is
+-- asynchronously applied as soon as possible.
 --
--- For a list of valid engine versions, see 'CreateDBInstance'.
-mdbiEngineVersion :: Lens' ModifyDBInstance (Maybe Text)
-mdbiEngineVersion =
-    lens _mdbiEngineVersion (\s a -> s { _mdbiEngineVersion = a })
+-- Default: Uses existing setting
+--
+-- Constraints:
+--
+-- -   Must be a value from 0 to 35
+-- -   Can be specified for a MySQL Read Replica only if the source is
+--     running MySQL 5.6
+-- -   Can be specified for a PostgreSQL Read Replica only if the source is
+--     running PostgreSQL 9.3.5
+-- -   Cannot be set to 0 if the DB instance is a source to Read Replicas
+mdiBackupRetentionPeriod :: Lens' ModifyDBInstance (Maybe Int)
+mdiBackupRetentionPeriod = lens _mdiBackupRetentionPeriod (\ s a -> s{_mdiBackupRetentionPeriod = a});
 
--- | The new Provisioned IOPS (I/O operations per second) value for the RDS
--- instance. Changing this setting does not result in an outage and the change
--- is applied during the next maintenance window unless the 'ApplyImmediately'
--- parameter is set to 'true' for this request.
+-- | The name of the DB parameter group to apply to the DB instance. Changing
+-- this setting does not result in an outage. The parameter group name
+-- itself is changed immediately, but the actual parameter changes are not
+-- applied until you reboot the instance without failover. The db instance
+-- will NOT be rebooted automatically and the parameter changes will NOT be
+-- applied during the next maintenance window.
 --
 -- Default: Uses existing setting
 --
--- Constraints: Value supplied must be at least 10% greater than the current
--- value. Values that are not at least 10% greater than the existing value are
--- rounded up so that they are 10% greater than the current value. If you are
--- migrating from Provisioned IOPS to standard storage, set this value to 0. The
--- DB instance will require a reboot for the change in storage type to take
--- effect.
---
--- SQL Server
+-- Constraints: The DB parameter group must be in the same DB parameter
+-- group family as this DB instance.
+mdiDBParameterGroupName :: Lens' ModifyDBInstance (Maybe Text)
+mdiDBParameterGroupName = lens _mdiDBParameterGroupName (\ s a -> s{_mdiDBParameterGroupName = a});
+
+-- | A list of EC2 VPC security groups to authorize on this DB instance. This
+-- change is asynchronously applied as soon as possible.
 --
--- Setting the IOPS value for the SQL Server database engine is not supported.
+-- Constraints:
 --
--- Type: Integer
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+mdiVPCSecurityGroupIds :: Lens' ModifyDBInstance [Text]
+mdiVPCSecurityGroupIds = lens _mdiVPCSecurityGroupIds (\ s a -> s{_mdiVPCSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | Specifies if the DB instance is a Multi-AZ deployment. Changing this
+-- parameter does not result in an outage and the change is applied during
+-- the next maintenance window unless the 'ApplyImmediately' parameter is
+-- set to 'true' for this request.
 --
--- If you choose to migrate your DB instance from using standard storage to
--- using Provisioned IOPS, or from using Provisioned IOPS to using standard
--- storage, the process can take time. The duration of the migration depends on
--- several factors such as database load, storage size, storage type (standard
--- or Provisioned IOPS), amount of IOPS provisioned (if any), and the number of
--- prior scale storage operations. Typical migration times are under 24 hours,
--- but the process can take up to several days in some cases. During the
--- migration, the DB instance will be available for use, but may experience
--- performance degradation. While the migration takes place, nightly backups for
--- the instance will be suspended. No other Amazon RDS operations can take place
--- for the instance, including modifying the instance, rebooting the instance,
--- deleting the instance, creating a Read Replica for the instance, and creating
--- a DB snapshot of the instance.
-mdbiIops :: Lens' ModifyDBInstance (Maybe Int)
-mdbiIops = lens _mdbiIops (\s a -> s { _mdbiIops = a })
+-- Constraints: Cannot be specified if the DB instance is a Read Replica.
+-- This parameter cannot be used with SQL Server DB instances. Multi-AZ for
+-- SQL Server DB instances is set using the Mirroring option in an option
+-- group associated with the DB instance.
+mdiMultiAZ :: Lens' ModifyDBInstance (Maybe Bool)
+mdiMultiAZ = lens _mdiMultiAZ (\ s a -> s{_mdiMultiAZ = a});
 
--- | The new password for the DB instance master user. Can be any printable ASCII
--- character except "/", """, or "@".
+-- | The new storage capacity of the RDS instance. Changing this setting does
+-- not result in an outage and the change is applied during the next
+-- maintenance window unless 'ApplyImmediately' is set to 'true' for this
+-- request.
 --
--- Changing this parameter does not result in an outage and the change is
--- asynchronously applied as soon as possible. Between the time of the request
--- and the completion of the request, the 'MasterUserPassword' element exists in
--- the 'PendingModifiedValues' element of the operation response.
+-- __MySQL__
 --
 -- Default: Uses existing setting
 --
--- Constraints: Must be 8 to 41 alphanumeric characters (MySQL), 8 to 30
--- alphanumeric characters (Oracle), or 8 to 128 alphanumeric characters (SQL
--- Server).
+-- Valid Values: 5-6144
 --
--- Amazon RDS API actions never return the password, so this action provides a
--- way to regain access to a primary instance user if the password is lost. This
--- includes restoring privileges that may have been accidentally revoked.
-mdbiMasterUserPassword :: Lens' ModifyDBInstance (Maybe Text)
-mdbiMasterUserPassword =
-    lens _mdbiMasterUserPassword (\s a -> s { _mdbiMasterUserPassword = a })
-
--- | Specifies if the DB instance is a Multi-AZ deployment. Changing this
--- parameter does not result in an outage and the change is applied during the
--- next maintenance window unless the 'ApplyImmediately' parameter is set to 'true'
--- for this request.
+-- Constraints: Value supplied must be at least 10% greater than the
+-- current value. Values that are not at least 10% greater than the
+-- existing value are rounded up so that they are 10% greater than the
+-- current value.
 --
--- Constraints: Cannot be specified if the DB instance is a Read Replica.
-mdbiMultiAZ :: Lens' ModifyDBInstance (Maybe Bool)
-mdbiMultiAZ = lens _mdbiMultiAZ (\s a -> s { _mdbiMultiAZ = a })
-
--- | The new DB instance identifier for the DB instance when renaming a DB
--- instance. When you change the DB instance identifier, an instance reboot will
--- occur immediately if you set 'Apply Immediately' to true, or will occur during
--- the next maintenance window if 'Apply Immediately' to false. This value is
--- stored as a lowercase string.
+-- Type: Integer
 --
--- Constraints:
+-- __PostgreSQL__
 --
--- Must contain from 1 to 63 alphanumeric characters or hyphens First
--- character must be a letter Cannot end with a hyphen or contain two
--- consecutive hyphens
-mdbiNewDBInstanceIdentifier :: Lens' ModifyDBInstance (Maybe Text)
-mdbiNewDBInstanceIdentifier =
-    lens _mdbiNewDBInstanceIdentifier
-        (\s a -> s { _mdbiNewDBInstanceIdentifier = a })
-
--- | Indicates that the DB instance should be associated with the specified
--- option group. Changing this parameter does not result in an outage except in
--- the following case and the change is applied during the next maintenance
--- window unless the 'ApplyImmediately' parameter is set to 'true' for this request.
--- If the parameter change results in an option group that enables OEM, this
--- change can cause a brief (sub-second) period during which new connections are
--- rejected but existing connections are not interrupted.
+-- Default: Uses existing setting
 --
--- Permanent options, such as the TDE option for Oracle Advanced Security TDE,
--- cannot be removed from an option group, and that option group cannot be
--- removed from a DB instance once it is associated with a DB instance
-mdbiOptionGroupName :: Lens' ModifyDBInstance (Maybe Text)
-mdbiOptionGroupName =
-    lens _mdbiOptionGroupName (\s a -> s { _mdbiOptionGroupName = a })
-
--- | The daily time range during which automated backups are created if automated
--- backups are enabled, as determined by the 'BackupRetentionPeriod'. Changing
--- this parameter does not result in an outage and the change is asynchronously
--- applied as soon as possible.
+-- Valid Values: 5-6144
 --
--- Constraints:
+-- Constraints: Value supplied must be at least 10% greater than the
+-- current value. Values that are not at least 10% greater than the
+-- existing value are rounded up so that they are 10% greater than the
+-- current value.
 --
--- Must be in the format hh24:mi-hh24:mi Times should be Universal Time
--- Coordinated (UTC) Must not conflict with the preferred maintenance window Must be at least 30 minutes
+-- Type: Integer
 --
-mdbiPreferredBackupWindow :: Lens' ModifyDBInstance (Maybe Text)
-mdbiPreferredBackupWindow =
-    lens _mdbiPreferredBackupWindow
-        (\s a -> s { _mdbiPreferredBackupWindow = a })
-
--- | The weekly time range (in UTC) during which system maintenance can occur,
--- which may result in an outage. Changing this parameter does not result in an
--- outage, except in the following situation, and the change is asynchronously
--- applied as soon as possible. If there are pending actions that cause a
--- reboot, and the maintenance window is changed to include the current time,
--- then changing this parameter will cause a reboot of the DB instance. If
--- moving this window to the current time, there must be at least 30 minutes
--- between the current time and end of the window to ensure pending changes are
--- applied.
+-- __Oracle__
 --
 -- Default: Uses existing setting
 --
--- Format: ddd:hh24:mi-ddd:hh24:mi
+-- Valid Values: 10-6144
 --
--- Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun
+-- Constraints: Value supplied must be at least 10% greater than the
+-- current value. Values that are not at least 10% greater than the
+-- existing value are rounded up so that they are 10% greater than the
+-- current value.
 --
--- Constraints: Must be at least 30 minutes
-mdbiPreferredMaintenanceWindow :: Lens' ModifyDBInstance (Maybe Text)
-mdbiPreferredMaintenanceWindow =
-    lens _mdbiPreferredMaintenanceWindow
-        (\s a -> s { _mdbiPreferredMaintenanceWindow = a })
-
--- | Specifies the storage type to be associated with the DB instance.
+-- __SQL Server__
 --
--- Valid values: 'standard | gp2 | io1'
+-- Cannot be modified.
 --
--- If you specify 'io1', you must also include a value for the 'Iops' parameter.
+-- If you choose to migrate your DB instance from using standard storage to
+-- using Provisioned IOPS, or from using Provisioned IOPS to using standard
+-- storage, the process can take time. The duration of the migration
+-- depends on several factors such as database load, storage size, storage
+-- type (standard or Provisioned IOPS), amount of IOPS provisioned (if
+-- any), and the number of prior scale storage operations. Typical
+-- migration times are under 24 hours, but the process can take up to
+-- several days in some cases. During the migration, the DB instance will
+-- be available for use, but might experience performance degradation.
+-- While the migration takes place, nightly backups for the instance will
+-- be suspended. No other Amazon RDS operations can take place for the
+-- instance, including modifying the instance, rebooting the instance,
+-- deleting the instance, creating a Read Replica for the instance, and
+-- creating a DB snapshot of the instance.
+mdiAllocatedStorage :: Lens' ModifyDBInstance (Maybe Int)
+mdiAllocatedStorage = lens _mdiAllocatedStorage (\ s a -> s{_mdiAllocatedStorage = a});
+
+-- | Specifies whether the modifications in this request and any pending
+-- modifications are asynchronously applied as soon as possible, regardless
+-- of the 'PreferredMaintenanceWindow' setting for the DB instance.
 --
--- Default: 'io1' if the 'Iops' parameter is specified; otherwise 'standard'
-mdbiStorageType :: Lens' ModifyDBInstance (Maybe Text)
-mdbiStorageType = lens _mdbiStorageType (\s a -> s { _mdbiStorageType = a })
+-- If this parameter is set to 'false', changes to the DB instance are
+-- applied during the next maintenance window. Some parameter changes can
+-- cause an outage and will be applied on the next call to
+-- RebootDBInstance, or the next failure reboot. Review the table of
+-- parameters in
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.html#Overview.DBInstance.Modifying Modifying a DB Instance and Using the Apply Immediately Parameter>
+-- to see the impact that setting 'ApplyImmediately' to 'true' or 'false'
+-- has for each modified parameter and to determine when the changes will
+-- be applied.
+--
+-- Default: 'false'
+mdiApplyImmediately :: Lens' ModifyDBInstance (Maybe Bool)
+mdiApplyImmediately = lens _mdiApplyImmediately (\ s a -> s{_mdiApplyImmediately = a});
 
 -- | The ARN from the Key Store with which to associate the instance for TDE
 -- encryption.
-mdbiTdeCredentialArn :: Lens' ModifyDBInstance (Maybe Text)
-mdbiTdeCredentialArn =
-    lens _mdbiTdeCredentialArn (\s a -> s { _mdbiTdeCredentialArn = a })
+mdiTDECredentialARN :: Lens' ModifyDBInstance (Maybe Text)
+mdiTDECredentialARN = lens _mdiTDECredentialARN (\ s a -> s{_mdiTDECredentialARN = a});
 
--- | The password for the given ARN from the Key Store in order to access the
--- device.
-mdbiTdeCredentialPassword :: Lens' ModifyDBInstance (Maybe Text)
-mdbiTdeCredentialPassword =
-    lens _mdbiTdeCredentialPassword
-        (\s a -> s { _mdbiTdeCredentialPassword = a })
+-- | Indicates that the DB instance should be associated with the specified
+-- option group. Changing this parameter does not result in an outage
+-- except in the following case and the change is applied during the next
+-- maintenance window unless the 'ApplyImmediately' parameter is set to
+-- 'true' for this request. If the parameter change results in an option
+-- group that enables OEM, this change can cause a brief (sub-second)
+-- period during which new connections are rejected but existing
+-- connections are not interrupted.
+--
+-- Permanent options, such as the TDE option for Oracle Advanced Security
+-- TDE, cannot be removed from an option group, and that option group
+-- cannot be removed from a DB instance once it is associated with a DB
+-- instance
+mdiOptionGroupName :: Lens' ModifyDBInstance (Maybe Text)
+mdiOptionGroupName = lens _mdiOptionGroupName (\ s a -> s{_mdiOptionGroupName = a});
 
--- | A list of EC2 VPC security groups to authorize on this DB instance. This
--- change is asynchronously applied as soon as possible.
+-- | This property is not currently implemented.
+mdiCopyTagsToSnapshot :: Lens' ModifyDBInstance (Maybe Bool)
+mdiCopyTagsToSnapshot = lens _mdiCopyTagsToSnapshot (\ s a -> s{_mdiCopyTagsToSnapshot = a});
+
+-- | Specifies the storage type to be associated with the DB instance.
 --
--- Constraints:
+-- Valid values: 'standard | gp2 | io1'
 --
--- Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
+-- If you specify 'io1', you must also include a value for the 'Iops'
+-- parameter.
 --
-mdbiVpcSecurityGroupIds :: Lens' ModifyDBInstance [Text]
-mdbiVpcSecurityGroupIds =
-    lens _mdbiVpcSecurityGroupIds (\s a -> s { _mdbiVpcSecurityGroupIds = a })
-        . _List
-
-newtype ModifyDBInstanceResponse = ModifyDBInstanceResponse
-    { _mdbirDBInstance :: Maybe DBInstance
-    } deriving (Eq, Read, Show)
+-- Default: 'io1' if the 'Iops' parameter is specified; otherwise
+-- 'standard'
+mdiStorageType :: Lens' ModifyDBInstance (Maybe Text)
+mdiStorageType = lens _mdiStorageType (\ s a -> s{_mdiStorageType = a});
 
--- | 'ModifyDBInstanceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | The DB instance identifier. This value is stored as a lowercase string.
 --
--- * 'mdbirDBInstance' @::@ 'Maybe' 'DBInstance'
+-- Constraints:
 --
-modifyDBInstanceResponse :: ModifyDBInstanceResponse
-modifyDBInstanceResponse = ModifyDBInstanceResponse
-    { _mdbirDBInstance = Nothing
-    }
+-- -   Must be the identifier for an existing DB instance
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+mdiDBInstanceIdentifier :: Lens' ModifyDBInstance Text
+mdiDBInstanceIdentifier = lens _mdiDBInstanceIdentifier (\ s a -> s{_mdiDBInstanceIdentifier = a});
 
-mdbirDBInstance :: Lens' ModifyDBInstanceResponse (Maybe DBInstance)
-mdbirDBInstance = lens _mdbirDBInstance (\s a -> s { _mdbirDBInstance = a })
+instance AWSRequest ModifyDBInstance where
+        type Sv ModifyDBInstance = RDS
+        type Rs ModifyDBInstance = ModifyDBInstanceResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "ModifyDBInstanceResult"
+              (\ s h x ->
+                 ModifyDBInstanceResponse' <$>
+                   (x .@? "DBInstance") <*> (pure (fromEnum s)))
 
+instance ToHeaders ModifyDBInstance where
+        toHeaders = const mempty
+
 instance ToPath ModifyDBInstance where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ModifyDBInstance where
-    toQuery ModifyDBInstance{..} = mconcat
-        [ "AllocatedStorage"           =? _mdbiAllocatedStorage
-        , "AllowMajorVersionUpgrade"   =? _mdbiAllowMajorVersionUpgrade
-        , "ApplyImmediately"           =? _mdbiApplyImmediately
-        , "AutoMinorVersionUpgrade"    =? _mdbiAutoMinorVersionUpgrade
-        , "BackupRetentionPeriod"      =? _mdbiBackupRetentionPeriod
-        , "CACertificateIdentifier"    =? _mdbiCACertificateIdentifier
-        , "DBInstanceClass"            =? _mdbiDBInstanceClass
-        , "DBInstanceIdentifier"       =? _mdbiDBInstanceIdentifier
-        , "DBParameterGroupName"       =? _mdbiDBParameterGroupName
-        , "DBSecurityGroups"           =? _mdbiDBSecurityGroups
-        , "EngineVersion"              =? _mdbiEngineVersion
-        , "Iops"                       =? _mdbiIops
-        , "MasterUserPassword"         =? _mdbiMasterUserPassword
-        , "MultiAZ"                    =? _mdbiMultiAZ
-        , "NewDBInstanceIdentifier"    =? _mdbiNewDBInstanceIdentifier
-        , "OptionGroupName"            =? _mdbiOptionGroupName
-        , "PreferredBackupWindow"      =? _mdbiPreferredBackupWindow
-        , "PreferredMaintenanceWindow" =? _mdbiPreferredMaintenanceWindow
-        , "StorageType"                =? _mdbiStorageType
-        , "TdeCredentialArn"           =? _mdbiTdeCredentialArn
-        , "TdeCredentialPassword"      =? _mdbiTdeCredentialPassword
-        , "VpcSecurityGroupIds"        =? _mdbiVpcSecurityGroupIds
-        ]
+        toQuery ModifyDBInstance'{..}
+          = mconcat
+              ["Action" =: ("ModifyDBInstance" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBSecurityGroups" =:
+                 toQuery
+                   (toQueryList "DBSecurityGroupName" <$>
+                      _mdiDBSecurityGroups),
+               "EngineVersion" =: _mdiEngineVersion,
+               "AutoMinorVersionUpgrade" =:
+                 _mdiAutoMinorVersionUpgrade,
+               "MasterUserPassword" =: _mdiMasterUserPassword,
+               "Iops" =: _mdiIOPS,
+               "AllowMajorVersionUpgrade" =:
+                 _mdiAllowMajorVersionUpgrade,
+               "NewDBInstanceIdentifier" =:
+                 _mdiNewDBInstanceIdentifier,
+               "Domain" =: _mdiDomain,
+               "TdeCredentialPassword" =: _mdiTDECredentialPassword,
+               "DBInstanceClass" =: _mdiDBInstanceClass,
+               "PreferredMaintenanceWindow" =:
+                 _mdiPreferredMaintenanceWindow,
+               "CACertificateIdentifier" =:
+                 _mdiCACertificateIdentifier,
+               "PreferredBackupWindow" =: _mdiPreferredBackupWindow,
+               "BackupRetentionPeriod" =: _mdiBackupRetentionPeriod,
+               "DBParameterGroupName" =: _mdiDBParameterGroupName,
+               "VpcSecurityGroupIds" =:
+                 toQuery
+                   (toQueryList "VpcSecurityGroupId" <$>
+                      _mdiVPCSecurityGroupIds),
+               "MultiAZ" =: _mdiMultiAZ,
+               "AllocatedStorage" =: _mdiAllocatedStorage,
+               "ApplyImmediately" =: _mdiApplyImmediately,
+               "TdeCredentialArn" =: _mdiTDECredentialARN,
+               "OptionGroupName" =: _mdiOptionGroupName,
+               "CopyTagsToSnapshot" =: _mdiCopyTagsToSnapshot,
+               "StorageType" =: _mdiStorageType,
+               "DBInstanceIdentifier" =: _mdiDBInstanceIdentifier]
 
-instance ToHeaders ModifyDBInstance
+-- | /See:/ 'modifyDBInstanceResponse' smart constructor.
+data ModifyDBInstanceResponse = ModifyDBInstanceResponse'
+    { _mdirsDBInstance :: !(Maybe DBInstance)
+    , _mdirsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ModifyDBInstance where
-    type Sv ModifyDBInstance = RDS
-    type Rs ModifyDBInstance = ModifyDBInstanceResponse
+-- | Creates a value of 'ModifyDBInstanceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdirsDBInstance'
+--
+-- * 'mdirsStatus'
+modifyDBInstanceResponse
+    :: Int -- ^ 'mdirsStatus'
+    -> ModifyDBInstanceResponse
+modifyDBInstanceResponse pStatus_ =
+    ModifyDBInstanceResponse'
+    { _mdirsDBInstance = Nothing
+    , _mdirsStatus = pStatus_
+    }
 
-    request  = post "ModifyDBInstance"
-    response = xmlResponse
+-- | Undocumented member.
+mdirsDBInstance :: Lens' ModifyDBInstanceResponse (Maybe DBInstance)
+mdirsDBInstance = lens _mdirsDBInstance (\ s a -> s{_mdirsDBInstance = a});
 
-instance FromXML ModifyDBInstanceResponse where
-    parseXML = withElement "ModifyDBInstanceResult" $ \x -> ModifyDBInstanceResponse
-        <$> x .@? "DBInstance"
+-- | The response status code.
+mdirsStatus :: Lens' ModifyDBInstanceResponse Int
+mdirsStatus = lens _mdirsStatus (\ s a -> s{_mdirsStatus = a});
diff --git a/gen/Network/AWS/RDS/ModifyDBParameterGroup.hs b/gen/Network/AWS/RDS/ModifyDBParameterGroup.hs
--- a/gen/Network/AWS/RDS/ModifyDBParameterGroup.hs
+++ b/gen/Network/AWS/RDS/ModifyDBParameterGroup.hs
@@ -1,153 +1,137 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.ModifyDBParameterGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Modifies the parameters of a DB parameter group. To modify more than one
--- parameter, submit a list of the following: 'ParameterName', 'ParameterValue', and 'ApplyMethod'. A maximum of 20 parameters can be modified in a single request.
+-- Modifies the parameters of a DB parameter group. To modify more than one
+-- parameter, submit a list of the following: 'ParameterName',
+-- 'ParameterValue', and 'ApplyMethod'. A maximum of 20 parameters can be
+-- modified in a single request.
 --
 -- Changes to dynamic parameters are applied immediately. Changes to static
--- parameters require a reboot without failover to the DB instance associated
--- with the parameter group before the change can take effect.
---
--- After you modify a DB parameter group, you should wait at least 5 minutes
--- before creating your first DB instance that uses that DB parameter group as
--- the default parameter group. This allows Amazon RDS to fully complete the
--- modify action before the parameter group is used as the default for a new DB
--- instance. This is especially important for parameters that are critical when
--- creating the default database for a DB instance, such as the character set
--- for the default database defined by the 'character_set_database' parameter. You
--- can use the /Parameter Groups/ option of the <https://console.aws.amazon.com/rds/ Amazon RDS console> or the /DescribeDBParameters/ command to verify that your DB parameter group has been created or modified.
---
+-- parameters require a reboot without failover to the DB instance
+-- associated with the parameter group before the change can take effect.
 --
+-- After you modify a DB parameter group, you should wait at least 5
+-- minutes before creating your first DB instance that uses that DB
+-- parameter group as the default parameter group. This allows Amazon RDS
+-- to fully complete the modify action before the parameter group is used
+-- as the default for a new DB instance. This is especially important for
+-- parameters that are critical when creating the default database for a DB
+-- instance, such as the character set for the default database defined by
+-- the 'character_set_database' parameter. You can use the /Parameter
+-- Groups/ option of the
+-- <https://console.aws.amazon.com/rds/ Amazon RDS console> or the
+-- /DescribeDBParameters/ command to verify that your DB parameter group
+-- has been created or modified.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html AWS API Reference> for ModifyDBParameterGroup.
 module Network.AWS.RDS.ModifyDBParameterGroup
     (
-    -- * Request
-      ModifyDBParameterGroup
-    -- ** Request constructor
-    , modifyDBParameterGroup
-    -- ** Request lenses
-    , mdbpgDBParameterGroupName
-    , mdbpgParameters
+    -- * Creating a Request
+      modifyDBParameterGroup
+    , ModifyDBParameterGroup
+    -- * Request Lenses
+    , mdpgDBParameterGroupName
+    , mdpgParameters
 
-    -- * Response
-    , ModifyDBParameterGroupResponse
-    -- ** Response constructor
-    , modifyDBParameterGroupResponse
-    -- ** Response lenses
-    , mdbpgrDBParameterGroupName
+    -- * Destructuring the Response
+    , dbParameterGroupNameMessage
+    , DBParameterGroupNameMessage
+    -- * Response Lenses
+    , dpgnmDBParameterGroupName
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data ModifyDBParameterGroup = ModifyDBParameterGroup
-    { _mdbpgDBParameterGroupName :: Text
-    , _mdbpgParameters           :: List "member" Parameter
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ModifyDBParameterGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'modifyDBParameterGroup' smart constructor.
+data ModifyDBParameterGroup = ModifyDBParameterGroup'
+    { _mdpgDBParameterGroupName :: !Text
+    , _mdpgParameters           :: ![Parameter]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyDBParameterGroup' with the minimum fields required to make a request.
 --
--- * 'mdbpgDBParameterGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mdbpgParameters' @::@ ['Parameter']
+-- * 'mdpgDBParameterGroupName'
 --
-modifyDBParameterGroup :: Text -- ^ 'mdbpgDBParameterGroupName'
-                       -> ModifyDBParameterGroup
-modifyDBParameterGroup p1 = ModifyDBParameterGroup
-    { _mdbpgDBParameterGroupName = p1
-    , _mdbpgParameters           = mempty
+-- * 'mdpgParameters'
+modifyDBParameterGroup
+    :: Text -- ^ 'mdpgDBParameterGroupName'
+    -> ModifyDBParameterGroup
+modifyDBParameterGroup pDBParameterGroupName_ =
+    ModifyDBParameterGroup'
+    { _mdpgDBParameterGroupName = pDBParameterGroupName_
+    , _mdpgParameters = mempty
     }
 
 -- | The name of the DB parameter group.
 --
 -- Constraints:
 --
--- Must be the name of an existing DB parameter group Must be 1 to 255
--- alphanumeric characters First character must be a letter Cannot end with a
--- hyphen or contain two consecutive hyphens
-mdbpgDBParameterGroupName :: Lens' ModifyDBParameterGroup Text
-mdbpgDBParameterGroupName =
-    lens _mdbpgDBParameterGroupName
-        (\s a -> s { _mdbpgDBParameterGroupName = a })
+-- -   Must be the name of an existing DB parameter group
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+mdpgDBParameterGroupName :: Lens' ModifyDBParameterGroup Text
+mdpgDBParameterGroupName = lens _mdpgDBParameterGroupName (\ s a -> s{_mdpgDBParameterGroupName = a});
 
--- | An array of parameter names, values, and the apply method for the parameter
--- update. At least one parameter name, value, and apply method must be
--- supplied; subsequent arguments are optional. A maximum of 20 parameters may
--- be modified in a single request.
+-- | An array of parameter names, values, and the apply method for the
+-- parameter update. At least one parameter name, value, and apply method
+-- must be supplied; subsequent arguments are optional. A maximum of 20
+-- parameters can be modified in a single request.
 --
 -- Valid Values (for the application method): 'immediate | pending-reboot'
 --
--- You can use the immediate value with dynamic parameters only. You can use
--- the pending-reboot value for both dynamic and static parameters, and changes
--- are applied when you reboot the DB instance without failover.
-mdbpgParameters :: Lens' ModifyDBParameterGroup [Parameter]
-mdbpgParameters = lens _mdbpgParameters (\s a -> s { _mdbpgParameters = a }) . _List
-
-newtype ModifyDBParameterGroupResponse = ModifyDBParameterGroupResponse
-    { _mdbpgrDBParameterGroupName :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- You can use the immediate value with dynamic parameters only. You can
+-- use the pending-reboot value for both dynamic and static parameters, and
+-- changes are applied when you reboot the DB instance without failover.
+mdpgParameters :: Lens' ModifyDBParameterGroup [Parameter]
+mdpgParameters = lens _mdpgParameters (\ s a -> s{_mdpgParameters = a}) . _Coerce;
 
--- | 'ModifyDBParameterGroupResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mdbpgrDBParameterGroupName' @::@ 'Maybe' 'Text'
---
-modifyDBParameterGroupResponse :: ModifyDBParameterGroupResponse
-modifyDBParameterGroupResponse = ModifyDBParameterGroupResponse
-    { _mdbpgrDBParameterGroupName = Nothing
-    }
+instance AWSRequest ModifyDBParameterGroup where
+        type Sv ModifyDBParameterGroup = RDS
+        type Rs ModifyDBParameterGroup =
+             DBParameterGroupNameMessage
+        request = postQuery
+        response
+          = receiveXMLWrapper "ModifyDBParameterGroupResult"
+              (\ s h x -> parseXML x)
 
--- | The name of the DB parameter group.
-mdbpgrDBParameterGroupName :: Lens' ModifyDBParameterGroupResponse (Maybe Text)
-mdbpgrDBParameterGroupName =
-    lens _mdbpgrDBParameterGroupName
-        (\s a -> s { _mdbpgrDBParameterGroupName = a })
+instance ToHeaders ModifyDBParameterGroup where
+        toHeaders = const mempty
 
 instance ToPath ModifyDBParameterGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ModifyDBParameterGroup where
-    toQuery ModifyDBParameterGroup{..} = mconcat
-        [ "DBParameterGroupName" =? _mdbpgDBParameterGroupName
-        , "Parameters"           =? _mdbpgParameters
-        ]
-
-instance ToHeaders ModifyDBParameterGroup
-
-instance AWSRequest ModifyDBParameterGroup where
-    type Sv ModifyDBParameterGroup = RDS
-    type Rs ModifyDBParameterGroup = ModifyDBParameterGroupResponse
-
-    request  = post "ModifyDBParameterGroup"
-    response = xmlResponse
-
-instance FromXML ModifyDBParameterGroupResponse where
-    parseXML = withElement "ModifyDBParameterGroupResult" $ \x -> ModifyDBParameterGroupResponse
-        <$> x .@? "DBParameterGroupName"
+        toQuery ModifyDBParameterGroup'{..}
+          = mconcat
+              ["Action" =:
+                 ("ModifyDBParameterGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBParameterGroupName" =: _mdpgDBParameterGroupName,
+               "Parameters" =:
+                 toQueryList "Parameter" _mdpgParameters]
diff --git a/gen/Network/AWS/RDS/ModifyDBSubnetGroup.hs b/gen/Network/AWS/RDS/ModifyDBSubnetGroup.hs
--- a/gen/Network/AWS/RDS/ModifyDBSubnetGroup.hs
+++ b/gen/Network/AWS/RDS/ModifyDBSubnetGroup.hs
@@ -1,138 +1,151 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.ModifyDBSubnetGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Modifies an existing DB subnet group. DB subnet groups must contain at least
--- one subnet in at least two AZs in the region.
+-- Modifies an existing DB subnet group. DB subnet groups must contain at
+-- least one subnet in at least two AZs in the region.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBSubnetGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBSubnetGroup.html AWS API Reference> for ModifyDBSubnetGroup.
 module Network.AWS.RDS.ModifyDBSubnetGroup
     (
-    -- * Request
-      ModifyDBSubnetGroup
-    -- ** Request constructor
-    , modifyDBSubnetGroup
-    -- ** Request lenses
-    , mdbsgDBSubnetGroupDescription
-    , mdbsgDBSubnetGroupName
-    , mdbsgSubnetIds
+    -- * Creating a Request
+      modifyDBSubnetGroup
+    , ModifyDBSubnetGroup
+    -- * Request Lenses
+    , mdsgDBSubnetGroupDescription
+    , mdsgDBSubnetGroupName
+    , mdsgSubnetIds
 
-    -- * Response
-    , ModifyDBSubnetGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , modifyDBSubnetGroupResponse
-    -- ** Response lenses
-    , mdbsgrDBSubnetGroup
+    , ModifyDBSubnetGroupResponse
+    -- * Response Lenses
+    , mdsgrsDBSubnetGroup
+    , mdsgrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data ModifyDBSubnetGroup = ModifyDBSubnetGroup
-    { _mdbsgDBSubnetGroupDescription :: Maybe Text
-    , _mdbsgDBSubnetGroupName        :: Text
-    , _mdbsgSubnetIds                :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ModifyDBSubnetGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'modifyDBSubnetGroup' smart constructor.
+data ModifyDBSubnetGroup = ModifyDBSubnetGroup'
+    { _mdsgDBSubnetGroupDescription :: !(Maybe Text)
+    , _mdsgDBSubnetGroupName        :: !Text
+    , _mdsgSubnetIds                :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyDBSubnetGroup' with the minimum fields required to make a request.
 --
--- * 'mdbsgDBSubnetGroupDescription' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mdbsgDBSubnetGroupName' @::@ 'Text'
+-- * 'mdsgDBSubnetGroupDescription'
 --
--- * 'mdbsgSubnetIds' @::@ ['Text']
+-- * 'mdsgDBSubnetGroupName'
 --
-modifyDBSubnetGroup :: Text -- ^ 'mdbsgDBSubnetGroupName'
-                    -> ModifyDBSubnetGroup
-modifyDBSubnetGroup p1 = ModifyDBSubnetGroup
-    { _mdbsgDBSubnetGroupName        = p1
-    , _mdbsgDBSubnetGroupDescription = Nothing
-    , _mdbsgSubnetIds                = mempty
+-- * 'mdsgSubnetIds'
+modifyDBSubnetGroup
+    :: Text -- ^ 'mdsgDBSubnetGroupName'
+    -> ModifyDBSubnetGroup
+modifyDBSubnetGroup pDBSubnetGroupName_ =
+    ModifyDBSubnetGroup'
+    { _mdsgDBSubnetGroupDescription = Nothing
+    , _mdsgDBSubnetGroupName = pDBSubnetGroupName_
+    , _mdsgSubnetIds = mempty
     }
 
 -- | The description for the DB subnet group.
-mdbsgDBSubnetGroupDescription :: Lens' ModifyDBSubnetGroup (Maybe Text)
-mdbsgDBSubnetGroupDescription =
-    lens _mdbsgDBSubnetGroupDescription
-        (\s a -> s { _mdbsgDBSubnetGroupDescription = a })
+mdsgDBSubnetGroupDescription :: Lens' ModifyDBSubnetGroup (Maybe Text)
+mdsgDBSubnetGroupDescription = lens _mdsgDBSubnetGroupDescription (\ s a -> s{_mdsgDBSubnetGroupDescription = a});
 
 -- | The name for the DB subnet group. This value is stored as a lowercase
 -- string.
 --
 -- Constraints: Must contain no more than 255 alphanumeric characters or
--- hyphens. Must not be "Default".
+-- hyphens. Must not be \"Default\".
 --
 -- Example: 'mySubnetgroup'
-mdbsgDBSubnetGroupName :: Lens' ModifyDBSubnetGroup Text
-mdbsgDBSubnetGroupName =
-    lens _mdbsgDBSubnetGroupName (\s a -> s { _mdbsgDBSubnetGroupName = a })
+mdsgDBSubnetGroupName :: Lens' ModifyDBSubnetGroup Text
+mdsgDBSubnetGroupName = lens _mdsgDBSubnetGroupName (\ s a -> s{_mdsgDBSubnetGroupName = a});
 
 -- | The EC2 subnet IDs for the DB subnet group.
-mdbsgSubnetIds :: Lens' ModifyDBSubnetGroup [Text]
-mdbsgSubnetIds = lens _mdbsgSubnetIds (\s a -> s { _mdbsgSubnetIds = a }) . _List
-
-newtype ModifyDBSubnetGroupResponse = ModifyDBSubnetGroupResponse
-    { _mdbsgrDBSubnetGroup :: Maybe DBSubnetGroup
-    } deriving (Eq, Read, Show)
+mdsgSubnetIds :: Lens' ModifyDBSubnetGroup [Text]
+mdsgSubnetIds = lens _mdsgSubnetIds (\ s a -> s{_mdsgSubnetIds = a}) . _Coerce;
 
--- | 'ModifyDBSubnetGroupResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mdbsgrDBSubnetGroup' @::@ 'Maybe' 'DBSubnetGroup'
---
-modifyDBSubnetGroupResponse :: ModifyDBSubnetGroupResponse
-modifyDBSubnetGroupResponse = ModifyDBSubnetGroupResponse
-    { _mdbsgrDBSubnetGroup = Nothing
-    }
+instance AWSRequest ModifyDBSubnetGroup where
+        type Sv ModifyDBSubnetGroup = RDS
+        type Rs ModifyDBSubnetGroup =
+             ModifyDBSubnetGroupResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "ModifyDBSubnetGroupResult"
+              (\ s h x ->
+                 ModifyDBSubnetGroupResponse' <$>
+                   (x .@? "DBSubnetGroup") <*> (pure (fromEnum s)))
 
-mdbsgrDBSubnetGroup :: Lens' ModifyDBSubnetGroupResponse (Maybe DBSubnetGroup)
-mdbsgrDBSubnetGroup =
-    lens _mdbsgrDBSubnetGroup (\s a -> s { _mdbsgrDBSubnetGroup = a })
+instance ToHeaders ModifyDBSubnetGroup where
+        toHeaders = const mempty
 
 instance ToPath ModifyDBSubnetGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ModifyDBSubnetGroup where
-    toQuery ModifyDBSubnetGroup{..} = mconcat
-        [ "DBSubnetGroupDescription" =? _mdbsgDBSubnetGroupDescription
-        , "DBSubnetGroupName"        =? _mdbsgDBSubnetGroupName
-        , "SubnetIds"                =? _mdbsgSubnetIds
-        ]
+        toQuery ModifyDBSubnetGroup'{..}
+          = mconcat
+              ["Action" =: ("ModifyDBSubnetGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBSubnetGroupDescription" =:
+                 _mdsgDBSubnetGroupDescription,
+               "DBSubnetGroupName" =: _mdsgDBSubnetGroupName,
+               "SubnetIds" =:
+                 toQueryList "SubnetIdentifier" _mdsgSubnetIds]
 
-instance ToHeaders ModifyDBSubnetGroup
+-- | /See:/ 'modifyDBSubnetGroupResponse' smart constructor.
+data ModifyDBSubnetGroupResponse = ModifyDBSubnetGroupResponse'
+    { _mdsgrsDBSubnetGroup :: !(Maybe DBSubnetGroup)
+    , _mdsgrsStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ModifyDBSubnetGroup where
-    type Sv ModifyDBSubnetGroup = RDS
-    type Rs ModifyDBSubnetGroup = ModifyDBSubnetGroupResponse
+-- | Creates a value of 'ModifyDBSubnetGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdsgrsDBSubnetGroup'
+--
+-- * 'mdsgrsStatus'
+modifyDBSubnetGroupResponse
+    :: Int -- ^ 'mdsgrsStatus'
+    -> ModifyDBSubnetGroupResponse
+modifyDBSubnetGroupResponse pStatus_ =
+    ModifyDBSubnetGroupResponse'
+    { _mdsgrsDBSubnetGroup = Nothing
+    , _mdsgrsStatus = pStatus_
+    }
 
-    request  = post "ModifyDBSubnetGroup"
-    response = xmlResponse
+-- | Undocumented member.
+mdsgrsDBSubnetGroup :: Lens' ModifyDBSubnetGroupResponse (Maybe DBSubnetGroup)
+mdsgrsDBSubnetGroup = lens _mdsgrsDBSubnetGroup (\ s a -> s{_mdsgrsDBSubnetGroup = a});
 
-instance FromXML ModifyDBSubnetGroupResponse where
-    parseXML = withElement "ModifyDBSubnetGroupResult" $ \x -> ModifyDBSubnetGroupResponse
-        <$> x .@? "DBSubnetGroup"
+-- | The response status code.
+mdsgrsStatus :: Lens' ModifyDBSubnetGroupResponse Int
+mdsgrsStatus = lens _mdsgrsStatus (\ s a -> s{_mdsgrsStatus = a});
diff --git a/gen/Network/AWS/RDS/ModifyEventSubscription.hs b/gen/Network/AWS/RDS/ModifyEventSubscription.hs
--- a/gen/Network/AWS/RDS/ModifyEventSubscription.hs
+++ b/gen/Network/AWS/RDS/ModifyEventSubscription.hs
@@ -1,167 +1,187 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.ModifyEventSubscription
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Modifies an existing RDS event notification subscription. Note that you
+-- Modifies an existing RDS event notification subscription. Note that you
 -- cannot modify the source identifiers using this call; to change source
--- identifiers for a subscription, use the 'AddSourceIdentifierToSubscription' and 'RemoveSourceIdentifierFromSubscription' calls.
+-- identifiers for a subscription, use the
+-- AddSourceIdentifierToSubscription and
+-- RemoveSourceIdentifierFromSubscription calls.
 --
--- You can see a list of the event categories for a given SourceType in the <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html Events> topic in the Amazon RDS User Guide or by using the DescribeEventCategories
--- action.
+-- You can see a list of the event categories for a given SourceType in the
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html Events>
+-- topic in the Amazon RDS User Guide or by using the
+-- __DescribeEventCategories__ action.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyEventSubscription.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyEventSubscription.html AWS API Reference> for ModifyEventSubscription.
 module Network.AWS.RDS.ModifyEventSubscription
     (
-    -- * Request
-      ModifyEventSubscription
-    -- ** Request constructor
-    , modifyEventSubscription
-    -- ** Request lenses
+    -- * Creating a Request
+      modifyEventSubscription
+    , ModifyEventSubscription
+    -- * Request Lenses
+    , mesSNSTopicARN
     , mesEnabled
-    , mesEventCategories
-    , mesSnsTopicArn
     , mesSourceType
+    , mesEventCategories
     , mesSubscriptionName
 
-    -- * Response
-    , ModifyEventSubscriptionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , modifyEventSubscriptionResponse
-    -- ** Response lenses
-    , mesrEventSubscription
+    , ModifyEventSubscriptionResponse
+    -- * Response Lenses
+    , mesrsEventSubscription
+    , mesrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data ModifyEventSubscription = ModifyEventSubscription
-    { _mesEnabled          :: Maybe Bool
-    , _mesEventCategories  :: List "member" Text
-    , _mesSnsTopicArn      :: Maybe Text
-    , _mesSourceType       :: Maybe Text
-    , _mesSubscriptionName :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ModifyEventSubscription' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'modifyEventSubscription' smart constructor.
+data ModifyEventSubscription = ModifyEventSubscription'
+    { _mesSNSTopicARN      :: !(Maybe Text)
+    , _mesEnabled          :: !(Maybe Bool)
+    , _mesSourceType       :: !(Maybe Text)
+    , _mesEventCategories  :: !(Maybe [Text])
+    , _mesSubscriptionName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyEventSubscription' with the minimum fields required to make a request.
 --
--- * 'mesEnabled' @::@ 'Maybe' 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mesEventCategories' @::@ ['Text']
+-- * 'mesSNSTopicARN'
 --
--- * 'mesSnsTopicArn' @::@ 'Maybe' 'Text'
+-- * 'mesEnabled'
 --
--- * 'mesSourceType' @::@ 'Maybe' 'Text'
+-- * 'mesSourceType'
 --
--- * 'mesSubscriptionName' @::@ 'Text'
+-- * 'mesEventCategories'
 --
-modifyEventSubscription :: Text -- ^ 'mesSubscriptionName'
-                        -> ModifyEventSubscription
-modifyEventSubscription p1 = ModifyEventSubscription
-    { _mesSubscriptionName = p1
-    , _mesSnsTopicArn      = Nothing
-    , _mesSourceType       = Nothing
-    , _mesEventCategories  = mempty
-    , _mesEnabled          = Nothing
+-- * 'mesSubscriptionName'
+modifyEventSubscription
+    :: Text -- ^ 'mesSubscriptionName'
+    -> ModifyEventSubscription
+modifyEventSubscription pSubscriptionName_ =
+    ModifyEventSubscription'
+    { _mesSNSTopicARN = Nothing
+    , _mesEnabled = Nothing
+    , _mesSourceType = Nothing
+    , _mesEventCategories = Nothing
+    , _mesSubscriptionName = pSubscriptionName_
     }
 
--- | A Boolean value; set to true to activate the subscription.
-mesEnabled :: Lens' ModifyEventSubscription (Maybe Bool)
-mesEnabled = lens _mesEnabled (\s a -> s { _mesEnabled = a })
-
--- | A list of event categories for a SourceType that you want to subscribe to.
--- You can see a list of the categories for a given SourceType in the <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html Events>
--- topic in the Amazon RDS User Guide or by using the DescribeEventCategories
--- action.
-mesEventCategories :: Lens' ModifyEventSubscription [Text]
-mesEventCategories =
-    lens _mesEventCategories (\s a -> s { _mesEventCategories = a })
-        . _List
-
 -- | The Amazon Resource Name (ARN) of the SNS topic created for event
--- notification. The ARN is created by Amazon SNS when you create a topic and
--- subscribe to it.
-mesSnsTopicArn :: Lens' ModifyEventSubscription (Maybe Text)
-mesSnsTopicArn = lens _mesSnsTopicArn (\s a -> s { _mesSnsTopicArn = a })
+-- notification. The ARN is created by Amazon SNS when you create a topic
+-- and subscribe to it.
+mesSNSTopicARN :: Lens' ModifyEventSubscription (Maybe Text)
+mesSNSTopicARN = lens _mesSNSTopicARN (\ s a -> s{_mesSNSTopicARN = a});
 
--- | The type of source that will be generating the events. For example, if you
--- want to be notified of events generated by a DB instance, you would set this
--- parameter to db-instance. if this value is not specified, all events are
--- returned.
+-- | A Boolean value; set to __true__ to activate the subscription.
+mesEnabled :: Lens' ModifyEventSubscription (Maybe Bool)
+mesEnabled = lens _mesEnabled (\ s a -> s{_mesEnabled = a});
+
+-- | The type of source that will be generating the events. For example, if
+-- you want to be notified of events generated by a DB instance, you would
+-- set this parameter to db-instance. if this value is not specified, all
+-- events are returned.
 --
 -- Valid values: db-instance | db-parameter-group | db-security-group |
 -- db-snapshot
 mesSourceType :: Lens' ModifyEventSubscription (Maybe Text)
-mesSourceType = lens _mesSourceType (\s a -> s { _mesSourceType = a })
+mesSourceType = lens _mesSourceType (\ s a -> s{_mesSourceType = a});
 
+-- | A list of event categories for a SourceType that you want to subscribe
+-- to. You can see a list of the categories for a given SourceType in the
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html Events>
+-- topic in the Amazon RDS User Guide or by using the
+-- __DescribeEventCategories__ action.
+mesEventCategories :: Lens' ModifyEventSubscription [Text]
+mesEventCategories = lens _mesEventCategories (\ s a -> s{_mesEventCategories = a}) . _Default . _Coerce;
+
 -- | The name of the RDS event notification subscription.
 mesSubscriptionName :: Lens' ModifyEventSubscription Text
-mesSubscriptionName =
-    lens _mesSubscriptionName (\s a -> s { _mesSubscriptionName = a })
-
-newtype ModifyEventSubscriptionResponse = ModifyEventSubscriptionResponse
-    { _mesrEventSubscription :: Maybe EventSubscription
-    } deriving (Eq, Read, Show)
+mesSubscriptionName = lens _mesSubscriptionName (\ s a -> s{_mesSubscriptionName = a});
 
--- | 'ModifyEventSubscriptionResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mesrEventSubscription' @::@ 'Maybe' 'EventSubscription'
---
-modifyEventSubscriptionResponse :: ModifyEventSubscriptionResponse
-modifyEventSubscriptionResponse = ModifyEventSubscriptionResponse
-    { _mesrEventSubscription = Nothing
-    }
+instance AWSRequest ModifyEventSubscription where
+        type Sv ModifyEventSubscription = RDS
+        type Rs ModifyEventSubscription =
+             ModifyEventSubscriptionResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "ModifyEventSubscriptionResult"
+              (\ s h x ->
+                 ModifyEventSubscriptionResponse' <$>
+                   (x .@? "EventSubscription") <*> (pure (fromEnum s)))
 
-mesrEventSubscription :: Lens' ModifyEventSubscriptionResponse (Maybe EventSubscription)
-mesrEventSubscription =
-    lens _mesrEventSubscription (\s a -> s { _mesrEventSubscription = a })
+instance ToHeaders ModifyEventSubscription where
+        toHeaders = const mempty
 
 instance ToPath ModifyEventSubscription where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ModifyEventSubscription where
-    toQuery ModifyEventSubscription{..} = mconcat
-        [ "Enabled"          =? _mesEnabled
-        , "EventCategories"  =? _mesEventCategories
-        , "SnsTopicArn"      =? _mesSnsTopicArn
-        , "SourceType"       =? _mesSourceType
-        , "SubscriptionName" =? _mesSubscriptionName
-        ]
+        toQuery ModifyEventSubscription'{..}
+          = mconcat
+              ["Action" =:
+                 ("ModifyEventSubscription" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "SnsTopicArn" =: _mesSNSTopicARN,
+               "Enabled" =: _mesEnabled,
+               "SourceType" =: _mesSourceType,
+               "EventCategories" =:
+                 toQuery
+                   (toQueryList "EventCategory" <$>
+                      _mesEventCategories),
+               "SubscriptionName" =: _mesSubscriptionName]
 
-instance ToHeaders ModifyEventSubscription
+-- | /See:/ 'modifyEventSubscriptionResponse' smart constructor.
+data ModifyEventSubscriptionResponse = ModifyEventSubscriptionResponse'
+    { _mesrsEventSubscription :: !(Maybe EventSubscription)
+    , _mesrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ModifyEventSubscription where
-    type Sv ModifyEventSubscription = RDS
-    type Rs ModifyEventSubscription = ModifyEventSubscriptionResponse
+-- | Creates a value of 'ModifyEventSubscriptionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mesrsEventSubscription'
+--
+-- * 'mesrsStatus'
+modifyEventSubscriptionResponse
+    :: Int -- ^ 'mesrsStatus'
+    -> ModifyEventSubscriptionResponse
+modifyEventSubscriptionResponse pStatus_ =
+    ModifyEventSubscriptionResponse'
+    { _mesrsEventSubscription = Nothing
+    , _mesrsStatus = pStatus_
+    }
 
-    request  = post "ModifyEventSubscription"
-    response = xmlResponse
+-- | Undocumented member.
+mesrsEventSubscription :: Lens' ModifyEventSubscriptionResponse (Maybe EventSubscription)
+mesrsEventSubscription = lens _mesrsEventSubscription (\ s a -> s{_mesrsEventSubscription = a});
 
-instance FromXML ModifyEventSubscriptionResponse where
-    parseXML = withElement "ModifyEventSubscriptionResult" $ \x -> ModifyEventSubscriptionResponse
-        <$> x .@? "EventSubscription"
+-- | The response status code.
+mesrsStatus :: Lens' ModifyEventSubscriptionResponse Int
+mesrsStatus = lens _mesrsStatus (\ s a -> s{_mesrsStatus = a});
diff --git a/gen/Network/AWS/RDS/ModifyOptionGroup.hs b/gen/Network/AWS/RDS/ModifyOptionGroup.hs
--- a/gen/Network/AWS/RDS/ModifyOptionGroup.hs
+++ b/gen/Network/AWS/RDS/ModifyOptionGroup.hs
@@ -1,149 +1,165 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.ModifyOptionGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Modifies an existing option group.
+-- Modifies an existing option group.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyOptionGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyOptionGroup.html AWS API Reference> for ModifyOptionGroup.
 module Network.AWS.RDS.ModifyOptionGroup
     (
-    -- * Request
-      ModifyOptionGroup
-    -- ** Request constructor
-    , modifyOptionGroup
-    -- ** Request lenses
-    , mogApplyImmediately
-    , mogOptionGroupName
+    -- * Creating a Request
+      modifyOptionGroup
+    , ModifyOptionGroup
+    -- * Request Lenses
     , mogOptionsToInclude
     , mogOptionsToRemove
+    , mogApplyImmediately
+    , mogOptionGroupName
 
-    -- * Response
-    , ModifyOptionGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , modifyOptionGroupResponse
-    -- ** Response lenses
-    , mogrOptionGroup
+    , ModifyOptionGroupResponse
+    -- * Response Lenses
+    , mogrsOptionGroup
+    , mogrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data ModifyOptionGroup = ModifyOptionGroup
-    { _mogApplyImmediately :: Maybe Bool
-    , _mogOptionGroupName  :: Text
-    , _mogOptionsToInclude :: List "member" OptionConfiguration
-    , _mogOptionsToRemove  :: List "member" Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ModifyOptionGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'modifyOptionGroup' smart constructor.
+data ModifyOptionGroup = ModifyOptionGroup'
+    { _mogOptionsToInclude :: !(Maybe [OptionConfiguration])
+    , _mogOptionsToRemove  :: !(Maybe [Text])
+    , _mogApplyImmediately :: !(Maybe Bool)
+    , _mogOptionGroupName  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyOptionGroup' with the minimum fields required to make a request.
 --
--- * 'mogApplyImmediately' @::@ 'Maybe' 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mogOptionGroupName' @::@ 'Text'
+-- * 'mogOptionsToInclude'
 --
--- * 'mogOptionsToInclude' @::@ ['OptionConfiguration']
+-- * 'mogOptionsToRemove'
 --
--- * 'mogOptionsToRemove' @::@ ['Text']
+-- * 'mogApplyImmediately'
 --
-modifyOptionGroup :: Text -- ^ 'mogOptionGroupName'
-                  -> ModifyOptionGroup
-modifyOptionGroup p1 = ModifyOptionGroup
-    { _mogOptionGroupName  = p1
-    , _mogOptionsToInclude = mempty
-    , _mogOptionsToRemove  = mempty
+-- * 'mogOptionGroupName'
+modifyOptionGroup
+    :: Text -- ^ 'mogOptionGroupName'
+    -> ModifyOptionGroup
+modifyOptionGroup pOptionGroupName_ =
+    ModifyOptionGroup'
+    { _mogOptionsToInclude = Nothing
+    , _mogOptionsToRemove = Nothing
     , _mogApplyImmediately = Nothing
+    , _mogOptionGroupName = pOptionGroupName_
     }
 
--- | Indicates whether the changes should be applied immediately, or during the
--- next maintenance window for each instance associated with the option group.
-mogApplyImmediately :: Lens' ModifyOptionGroup (Maybe Bool)
-mogApplyImmediately =
-    lens _mogApplyImmediately (\s a -> s { _mogApplyImmediately = a })
-
--- | The name of the option group to be modified.
---
--- Permanent options, such as the TDE option for Oracle Advanced Security TDE,
--- cannot be removed from an option group, and that option group cannot be
--- removed from a DB instance once it is associated with a DB instance
-mogOptionGroupName :: Lens' ModifyOptionGroup Text
-mogOptionGroupName =
-    lens _mogOptionGroupName (\s a -> s { _mogOptionGroupName = a })
-
--- | Options in this list are added to the option group or, if already present,
--- the specified configuration is used to update the existing configuration.
+-- | Options in this list are added to the option group or, if already
+-- present, the specified configuration is used to update the existing
+-- configuration.
 mogOptionsToInclude :: Lens' ModifyOptionGroup [OptionConfiguration]
-mogOptionsToInclude =
-    lens _mogOptionsToInclude (\s a -> s { _mogOptionsToInclude = a })
-        . _List
+mogOptionsToInclude = lens _mogOptionsToInclude (\ s a -> s{_mogOptionsToInclude = a}) . _Default . _Coerce;
 
 -- | Options in this list are removed from the option group.
 mogOptionsToRemove :: Lens' ModifyOptionGroup [Text]
-mogOptionsToRemove =
-    lens _mogOptionsToRemove (\s a -> s { _mogOptionsToRemove = a })
-        . _List
+mogOptionsToRemove = lens _mogOptionsToRemove (\ s a -> s{_mogOptionsToRemove = a}) . _Default . _Coerce;
 
-newtype ModifyOptionGroupResponse = ModifyOptionGroupResponse
-    { _mogrOptionGroup :: Maybe OptionGroup
-    } deriving (Eq, Read, Show)
+-- | Indicates whether the changes should be applied immediately, or during
+-- the next maintenance window for each instance associated with the option
+-- group.
+mogApplyImmediately :: Lens' ModifyOptionGroup (Maybe Bool)
+mogApplyImmediately = lens _mogApplyImmediately (\ s a -> s{_mogApplyImmediately = a});
 
--- | 'ModifyOptionGroupResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mogrOptionGroup' @::@ 'Maybe' 'OptionGroup'
+-- | The name of the option group to be modified.
 --
-modifyOptionGroupResponse :: ModifyOptionGroupResponse
-modifyOptionGroupResponse = ModifyOptionGroupResponse
-    { _mogrOptionGroup = Nothing
-    }
+-- Permanent options, such as the TDE option for Oracle Advanced Security
+-- TDE, cannot be removed from an option group, and that option group
+-- cannot be removed from a DB instance once it is associated with a DB
+-- instance
+mogOptionGroupName :: Lens' ModifyOptionGroup Text
+mogOptionGroupName = lens _mogOptionGroupName (\ s a -> s{_mogOptionGroupName = a});
 
-mogrOptionGroup :: Lens' ModifyOptionGroupResponse (Maybe OptionGroup)
-mogrOptionGroup = lens _mogrOptionGroup (\s a -> s { _mogrOptionGroup = a })
+instance AWSRequest ModifyOptionGroup where
+        type Sv ModifyOptionGroup = RDS
+        type Rs ModifyOptionGroup = ModifyOptionGroupResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "ModifyOptionGroupResult"
+              (\ s h x ->
+                 ModifyOptionGroupResponse' <$>
+                   (x .@? "OptionGroup") <*> (pure (fromEnum s)))
 
+instance ToHeaders ModifyOptionGroup where
+        toHeaders = const mempty
+
 instance ToPath ModifyOptionGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ModifyOptionGroup where
-    toQuery ModifyOptionGroup{..} = mconcat
-        [ "ApplyImmediately" =? _mogApplyImmediately
-        , "OptionGroupName"  =? _mogOptionGroupName
-        , "OptionsToInclude" =? _mogOptionsToInclude
-        , "OptionsToRemove"  =? _mogOptionsToRemove
-        ]
+        toQuery ModifyOptionGroup'{..}
+          = mconcat
+              ["Action" =: ("ModifyOptionGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "OptionsToInclude" =:
+                 toQuery
+                   (toQueryList "OptionConfiguration" <$>
+                      _mogOptionsToInclude),
+               "OptionsToRemove" =:
+                 toQuery
+                   (toQueryList "member" <$> _mogOptionsToRemove),
+               "ApplyImmediately" =: _mogApplyImmediately,
+               "OptionGroupName" =: _mogOptionGroupName]
 
-instance ToHeaders ModifyOptionGroup
+-- | /See:/ 'modifyOptionGroupResponse' smart constructor.
+data ModifyOptionGroupResponse = ModifyOptionGroupResponse'
+    { _mogrsOptionGroup :: !(Maybe OptionGroup)
+    , _mogrsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ModifyOptionGroup where
-    type Sv ModifyOptionGroup = RDS
-    type Rs ModifyOptionGroup = ModifyOptionGroupResponse
+-- | Creates a value of 'ModifyOptionGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mogrsOptionGroup'
+--
+-- * 'mogrsStatus'
+modifyOptionGroupResponse
+    :: Int -- ^ 'mogrsStatus'
+    -> ModifyOptionGroupResponse
+modifyOptionGroupResponse pStatus_ =
+    ModifyOptionGroupResponse'
+    { _mogrsOptionGroup = Nothing
+    , _mogrsStatus = pStatus_
+    }
 
-    request  = post "ModifyOptionGroup"
-    response = xmlResponse
+-- | Undocumented member.
+mogrsOptionGroup :: Lens' ModifyOptionGroupResponse (Maybe OptionGroup)
+mogrsOptionGroup = lens _mogrsOptionGroup (\ s a -> s{_mogrsOptionGroup = a});
 
-instance FromXML ModifyOptionGroupResponse where
-    parseXML = withElement "ModifyOptionGroupResult" $ \x -> ModifyOptionGroupResponse
-        <$> x .@? "OptionGroup"
+-- | The response status code.
+mogrsStatus :: Lens' ModifyOptionGroupResponse Int
+mogrsStatus = lens _mogrsStatus (\ s a -> s{_mogrsStatus = a});
diff --git a/gen/Network/AWS/RDS/PromoteReadReplica.hs b/gen/Network/AWS/RDS/PromoteReadReplica.hs
--- a/gen/Network/AWS/RDS/PromoteReadReplica.hs
+++ b/gen/Network/AWS/RDS/PromoteReadReplica.hs
@@ -1,163 +1,178 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.PromoteReadReplica
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Promotes a Read Replica DB instance to a standalone DB instance.
---
--- We recommend that you enable automated backups on your Read Replica before
--- promoting the Read Replica. This ensures that no backup is taken during the
--- promotion process. Once the instance is promoted to a primary instance,
--- backups are taken based on your backup settings.
---
+-- Promotes a Read Replica DB instance to a standalone DB instance.
 --
+-- We recommend that you enable automated backups on your Read Replica
+-- before promoting the Read Replica. This ensures that no backup is taken
+-- during the promotion process. Once the instance is promoted to a primary
+-- instance, backups are taken based on your backup settings.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html AWS API Reference> for PromoteReadReplica.
 module Network.AWS.RDS.PromoteReadReplica
     (
-    -- * Request
-      PromoteReadReplica
-    -- ** Request constructor
-    , promoteReadReplica
-    -- ** Request lenses
+    -- * Creating a Request
+      promoteReadReplica
+    , PromoteReadReplica
+    -- * Request Lenses
+    , prrPreferredBackupWindow
     , prrBackupRetentionPeriod
     , prrDBInstanceIdentifier
-    , prrPreferredBackupWindow
 
-    -- * Response
-    , PromoteReadReplicaResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , promoteReadReplicaResponse
-    -- ** Response lenses
-    , prrrDBInstance
+    , PromoteReadReplicaResponse
+    -- * Response Lenses
+    , prrrsDBInstance
+    , prrrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data PromoteReadReplica = PromoteReadReplica
-    { _prrBackupRetentionPeriod :: Maybe Int
-    , _prrDBInstanceIdentifier  :: Text
-    , _prrPreferredBackupWindow :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'PromoteReadReplica' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'promoteReadReplica' smart constructor.
+data PromoteReadReplica = PromoteReadReplica'
+    { _prrPreferredBackupWindow :: !(Maybe Text)
+    , _prrBackupRetentionPeriod :: !(Maybe Int)
+    , _prrDBInstanceIdentifier  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PromoteReadReplica' with the minimum fields required to make a request.
 --
--- * 'prrBackupRetentionPeriod' @::@ 'Maybe' 'Int'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'prrDBInstanceIdentifier' @::@ 'Text'
+-- * 'prrPreferredBackupWindow'
 --
--- * 'prrPreferredBackupWindow' @::@ 'Maybe' 'Text'
+-- * 'prrBackupRetentionPeriod'
 --
-promoteReadReplica :: Text -- ^ 'prrDBInstanceIdentifier'
-                   -> PromoteReadReplica
-promoteReadReplica p1 = PromoteReadReplica
-    { _prrDBInstanceIdentifier  = p1
+-- * 'prrDBInstanceIdentifier'
+promoteReadReplica
+    :: Text -- ^ 'prrDBInstanceIdentifier'
+    -> PromoteReadReplica
+promoteReadReplica pDBInstanceIdentifier_ =
+    PromoteReadReplica'
+    { _prrPreferredBackupWindow = Nothing
     , _prrBackupRetentionPeriod = Nothing
-    , _prrPreferredBackupWindow = Nothing
+    , _prrDBInstanceIdentifier = pDBInstanceIdentifier_
     }
 
--- | The number of days to retain automated backups. Setting this parameter to a
--- positive number enables backups. Setting this parameter to 0 disables
--- automated backups.
+-- | The daily time range during which automated backups are created if
+-- automated backups are enabled, using the 'BackupRetentionPeriod'
+-- parameter.
 --
+-- Default: A 30-minute window selected at random from an 8-hour block of
+-- time per region. To see the time blocks available, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
+-- in the /Amazon RDS User Guide./
+--
+-- Constraints:
+--
+-- -   Must be in the format 'hh24:mi-hh24:mi'.
+-- -   Times should be in Universal Coordinated Time (UTC).
+-- -   Must not conflict with the preferred maintenance window.
+-- -   Must be at least 30 minutes.
+prrPreferredBackupWindow :: Lens' PromoteReadReplica (Maybe Text)
+prrPreferredBackupWindow = lens _prrPreferredBackupWindow (\ s a -> s{_prrPreferredBackupWindow = a});
+
+-- | The number of days to retain automated backups. Setting this parameter
+-- to a positive number enables backups. Setting this parameter to 0
+-- disables automated backups.
+--
 -- Default: 1
 --
 -- Constraints:
 --
--- Must be a value from 0 to 8
+-- -   Must be a value from 0 to 8
 prrBackupRetentionPeriod :: Lens' PromoteReadReplica (Maybe Int)
-prrBackupRetentionPeriod =
-    lens _prrBackupRetentionPeriod
-        (\s a -> s { _prrBackupRetentionPeriod = a })
+prrBackupRetentionPeriod = lens _prrBackupRetentionPeriod (\ s a -> s{_prrBackupRetentionPeriod = a});
 
 -- | The DB instance identifier. This value is stored as a lowercase string.
 --
 -- Constraints:
 --
--- Must be the identifier for an existing Read Replica DB instance Must
--- contain from 1 to 63 alphanumeric characters or hyphens First character must
--- be a letter Cannot end with a hyphen or contain two consecutive hyphens  Example:
--- mydbinstance
-prrDBInstanceIdentifier :: Lens' PromoteReadReplica Text
-prrDBInstanceIdentifier =
-    lens _prrDBInstanceIdentifier (\s a -> s { _prrDBInstanceIdentifier = a })
-
--- | The daily time range during which automated backups are created if automated
--- backups are enabled, using the 'BackupRetentionPeriod' parameter.
---
--- Default: A 30-minute window selected at random from an 8-hour block of time
--- per region. See the Amazon RDS User Guide for the time blocks for each region
--- from which the default backup windows are assigned.
+-- -   Must be the identifier for an existing Read Replica DB instance
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
 --
--- Constraints: Must be in the format 'hh24:mi-hh24:mi'. Times should be
--- Universal Time Coordinated (UTC). Must not conflict with the preferred
--- maintenance window. Must be at least 30 minutes.
-prrPreferredBackupWindow :: Lens' PromoteReadReplica (Maybe Text)
-prrPreferredBackupWindow =
-    lens _prrPreferredBackupWindow
-        (\s a -> s { _prrPreferredBackupWindow = a })
-
-newtype PromoteReadReplicaResponse = PromoteReadReplicaResponse
-    { _prrrDBInstance :: Maybe DBInstance
-    } deriving (Eq, Read, Show)
+-- Example: mydbinstance
+prrDBInstanceIdentifier :: Lens' PromoteReadReplica Text
+prrDBInstanceIdentifier = lens _prrDBInstanceIdentifier (\ s a -> s{_prrDBInstanceIdentifier = a});
 
--- | 'PromoteReadReplicaResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'prrrDBInstance' @::@ 'Maybe' 'DBInstance'
---
-promoteReadReplicaResponse :: PromoteReadReplicaResponse
-promoteReadReplicaResponse = PromoteReadReplicaResponse
-    { _prrrDBInstance = Nothing
-    }
+instance AWSRequest PromoteReadReplica where
+        type Sv PromoteReadReplica = RDS
+        type Rs PromoteReadReplica =
+             PromoteReadReplicaResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "PromoteReadReplicaResult"
+              (\ s h x ->
+                 PromoteReadReplicaResponse' <$>
+                   (x .@? "DBInstance") <*> (pure (fromEnum s)))
 
-prrrDBInstance :: Lens' PromoteReadReplicaResponse (Maybe DBInstance)
-prrrDBInstance = lens _prrrDBInstance (\s a -> s { _prrrDBInstance = a })
+instance ToHeaders PromoteReadReplica where
+        toHeaders = const mempty
 
 instance ToPath PromoteReadReplica where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery PromoteReadReplica where
-    toQuery PromoteReadReplica{..} = mconcat
-        [ "BackupRetentionPeriod" =? _prrBackupRetentionPeriod
-        , "DBInstanceIdentifier"  =? _prrDBInstanceIdentifier
-        , "PreferredBackupWindow" =? _prrPreferredBackupWindow
-        ]
+        toQuery PromoteReadReplica'{..}
+          = mconcat
+              ["Action" =: ("PromoteReadReplica" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "PreferredBackupWindow" =: _prrPreferredBackupWindow,
+               "BackupRetentionPeriod" =: _prrBackupRetentionPeriod,
+               "DBInstanceIdentifier" =: _prrDBInstanceIdentifier]
 
-instance ToHeaders PromoteReadReplica
+-- | /See:/ 'promoteReadReplicaResponse' smart constructor.
+data PromoteReadReplicaResponse = PromoteReadReplicaResponse'
+    { _prrrsDBInstance :: !(Maybe DBInstance)
+    , _prrrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest PromoteReadReplica where
-    type Sv PromoteReadReplica = RDS
-    type Rs PromoteReadReplica = PromoteReadReplicaResponse
+-- | Creates a value of 'PromoteReadReplicaResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'prrrsDBInstance'
+--
+-- * 'prrrsStatus'
+promoteReadReplicaResponse
+    :: Int -- ^ 'prrrsStatus'
+    -> PromoteReadReplicaResponse
+promoteReadReplicaResponse pStatus_ =
+    PromoteReadReplicaResponse'
+    { _prrrsDBInstance = Nothing
+    , _prrrsStatus = pStatus_
+    }
 
-    request  = post "PromoteReadReplica"
-    response = xmlResponse
+-- | Undocumented member.
+prrrsDBInstance :: Lens' PromoteReadReplicaResponse (Maybe DBInstance)
+prrrsDBInstance = lens _prrrsDBInstance (\ s a -> s{_prrrsDBInstance = a});
 
-instance FromXML PromoteReadReplicaResponse where
-    parseXML = withElement "PromoteReadReplicaResult" $ \x -> PromoteReadReplicaResponse
-        <$> x .@? "DBInstance"
+-- | The response status code.
+prrrsStatus :: Lens' PromoteReadReplicaResponse Int
+prrrsStatus = lens _prrrsStatus (\ s a -> s{_prrrsStatus = a});
diff --git a/gen/Network/AWS/RDS/PurchaseReservedDBInstancesOffering.hs b/gen/Network/AWS/RDS/PurchaseReservedDBInstancesOffering.hs
--- a/gen/Network/AWS/RDS/PurchaseReservedDBInstancesOffering.hs
+++ b/gen/Network/AWS/RDS/PurchaseReservedDBInstancesOffering.hs
@@ -1,149 +1,166 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.PurchaseReservedDBInstancesOffering
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Purchases a reserved DB instance offering.
+-- Purchases a reserved DB instance offering.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PurchaseReservedDBInstancesOffering.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PurchaseReservedDBInstancesOffering.html AWS API Reference> for PurchaseReservedDBInstancesOffering.
 module Network.AWS.RDS.PurchaseReservedDBInstancesOffering
     (
-    -- * Request
-      PurchaseReservedDBInstancesOffering
-    -- ** Request constructor
-    , purchaseReservedDBInstancesOffering
-    -- ** Request lenses
-    , prdbioDBInstanceCount
-    , prdbioReservedDBInstanceId
-    , prdbioReservedDBInstancesOfferingId
-    , prdbioTags
+    -- * Creating a Request
+      purchaseReservedDBInstancesOffering
+    , PurchaseReservedDBInstancesOffering
+    -- * Request Lenses
+    , prdioDBInstanceCount
+    , prdioReservedDBInstanceId
+    , prdioTags
+    , prdioReservedDBInstancesOfferingId
 
-    -- * Response
-    , PurchaseReservedDBInstancesOfferingResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , purchaseReservedDBInstancesOfferingResponse
-    -- ** Response lenses
-    , prdbiorReservedDBInstance
+    , PurchaseReservedDBInstancesOfferingResponse
+    -- * Response Lenses
+    , prdiorsReservedDBInstance
+    , prdiorsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data PurchaseReservedDBInstancesOffering = PurchaseReservedDBInstancesOffering
-    { _prdbioDBInstanceCount               :: Maybe Int
-    , _prdbioReservedDBInstanceId          :: Maybe Text
-    , _prdbioReservedDBInstancesOfferingId :: Text
-    , _prdbioTags                          :: List "member" Tag
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'PurchaseReservedDBInstancesOffering' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'purchaseReservedDBInstancesOffering' smart constructor.
+data PurchaseReservedDBInstancesOffering = PurchaseReservedDBInstancesOffering'
+    { _prdioDBInstanceCount               :: !(Maybe Int)
+    , _prdioReservedDBInstanceId          :: !(Maybe Text)
+    , _prdioTags                          :: !(Maybe [Tag])
+    , _prdioReservedDBInstancesOfferingId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PurchaseReservedDBInstancesOffering' with the minimum fields required to make a request.
 --
--- * 'prdbioDBInstanceCount' @::@ 'Maybe' 'Int'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'prdbioReservedDBInstanceId' @::@ 'Maybe' 'Text'
+-- * 'prdioDBInstanceCount'
 --
--- * 'prdbioReservedDBInstancesOfferingId' @::@ 'Text'
+-- * 'prdioReservedDBInstanceId'
 --
--- * 'prdbioTags' @::@ ['Tag']
+-- * 'prdioTags'
 --
-purchaseReservedDBInstancesOffering :: Text -- ^ 'prdbioReservedDBInstancesOfferingId'
-                                    -> PurchaseReservedDBInstancesOffering
-purchaseReservedDBInstancesOffering p1 = PurchaseReservedDBInstancesOffering
-    { _prdbioReservedDBInstancesOfferingId = p1
-    , _prdbioReservedDBInstanceId          = Nothing
-    , _prdbioDBInstanceCount               = Nothing
-    , _prdbioTags                          = mempty
+-- * 'prdioReservedDBInstancesOfferingId'
+purchaseReservedDBInstancesOffering
+    :: Text -- ^ 'prdioReservedDBInstancesOfferingId'
+    -> PurchaseReservedDBInstancesOffering
+purchaseReservedDBInstancesOffering pReservedDBInstancesOfferingId_ =
+    PurchaseReservedDBInstancesOffering'
+    { _prdioDBInstanceCount = Nothing
+    , _prdioReservedDBInstanceId = Nothing
+    , _prdioTags = Nothing
+    , _prdioReservedDBInstancesOfferingId = pReservedDBInstancesOfferingId_
     }
 
 -- | The number of instances to reserve.
 --
 -- Default: '1'
-prdbioDBInstanceCount :: Lens' PurchaseReservedDBInstancesOffering (Maybe Int)
-prdbioDBInstanceCount =
-    lens _prdbioDBInstanceCount (\s a -> s { _prdbioDBInstanceCount = a })
+prdioDBInstanceCount :: Lens' PurchaseReservedDBInstancesOffering (Maybe Int)
+prdioDBInstanceCount = lens _prdioDBInstanceCount (\ s a -> s{_prdioDBInstanceCount = a});
 
 -- | Customer-specified identifier to track this reservation.
 --
 -- Example: myreservationID
-prdbioReservedDBInstanceId :: Lens' PurchaseReservedDBInstancesOffering (Maybe Text)
-prdbioReservedDBInstanceId =
-    lens _prdbioReservedDBInstanceId
-        (\s a -> s { _prdbioReservedDBInstanceId = a })
+prdioReservedDBInstanceId :: Lens' PurchaseReservedDBInstancesOffering (Maybe Text)
+prdioReservedDBInstanceId = lens _prdioReservedDBInstanceId (\ s a -> s{_prdioReservedDBInstanceId = a});
 
+-- | Undocumented member.
+prdioTags :: Lens' PurchaseReservedDBInstancesOffering [Tag]
+prdioTags = lens _prdioTags (\ s a -> s{_prdioTags = a}) . _Default . _Coerce;
+
 -- | The ID of the Reserved DB instance offering to purchase.
 --
 -- Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
-prdbioReservedDBInstancesOfferingId :: Lens' PurchaseReservedDBInstancesOffering Text
-prdbioReservedDBInstancesOfferingId =
-    lens _prdbioReservedDBInstancesOfferingId
-        (\s a -> s { _prdbioReservedDBInstancesOfferingId = a })
+prdioReservedDBInstancesOfferingId :: Lens' PurchaseReservedDBInstancesOffering Text
+prdioReservedDBInstancesOfferingId = lens _prdioReservedDBInstancesOfferingId (\ s a -> s{_prdioReservedDBInstancesOfferingId = a});
 
-prdbioTags :: Lens' PurchaseReservedDBInstancesOffering [Tag]
-prdbioTags = lens _prdbioTags (\s a -> s { _prdbioTags = a }) . _List
+instance AWSRequest
+         PurchaseReservedDBInstancesOffering where
+        type Sv PurchaseReservedDBInstancesOffering = RDS
+        type Rs PurchaseReservedDBInstancesOffering =
+             PurchaseReservedDBInstancesOfferingResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "PurchaseReservedDBInstancesOfferingResult"
+              (\ s h x ->
+                 PurchaseReservedDBInstancesOfferingResponse' <$>
+                   (x .@? "ReservedDBInstance") <*> (pure (fromEnum s)))
 
-newtype PurchaseReservedDBInstancesOfferingResponse = PurchaseReservedDBInstancesOfferingResponse
-    { _prdbiorReservedDBInstance :: Maybe ReservedDBInstance
-    } deriving (Eq, Read, Show)
+instance ToHeaders
+         PurchaseReservedDBInstancesOffering where
+        toHeaders = const mempty
 
--- | 'PurchaseReservedDBInstancesOfferingResponse' constructor.
+instance ToPath PurchaseReservedDBInstancesOffering
+         where
+        toPath = const "/"
+
+instance ToQuery PurchaseReservedDBInstancesOffering
+         where
+        toQuery PurchaseReservedDBInstancesOffering'{..}
+          = mconcat
+              ["Action" =:
+                 ("PurchaseReservedDBInstancesOffering" ::
+                    ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBInstanceCount" =: _prdioDBInstanceCount,
+               "ReservedDBInstanceId" =: _prdioReservedDBInstanceId,
+               "Tags" =: toQuery (toQueryList "Tag" <$> _prdioTags),
+               "ReservedDBInstancesOfferingId" =:
+                 _prdioReservedDBInstancesOfferingId]
+
+-- | /See:/ 'purchaseReservedDBInstancesOfferingResponse' smart constructor.
+data PurchaseReservedDBInstancesOfferingResponse = PurchaseReservedDBInstancesOfferingResponse'
+    { _prdiorsReservedDBInstance :: !(Maybe ReservedDBInstance)
+    , _prdiorsStatus             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PurchaseReservedDBInstancesOfferingResponse' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'prdbiorReservedDBInstance' @::@ 'Maybe' 'ReservedDBInstance'
+-- * 'prdiorsReservedDBInstance'
 --
-purchaseReservedDBInstancesOfferingResponse :: PurchaseReservedDBInstancesOfferingResponse
-purchaseReservedDBInstancesOfferingResponse = PurchaseReservedDBInstancesOfferingResponse
-    { _prdbiorReservedDBInstance = Nothing
+-- * 'prdiorsStatus'
+purchaseReservedDBInstancesOfferingResponse
+    :: Int -- ^ 'prdiorsStatus'
+    -> PurchaseReservedDBInstancesOfferingResponse
+purchaseReservedDBInstancesOfferingResponse pStatus_ =
+    PurchaseReservedDBInstancesOfferingResponse'
+    { _prdiorsReservedDBInstance = Nothing
+    , _prdiorsStatus = pStatus_
     }
 
-prdbiorReservedDBInstance :: Lens' PurchaseReservedDBInstancesOfferingResponse (Maybe ReservedDBInstance)
-prdbiorReservedDBInstance =
-    lens _prdbiorReservedDBInstance
-        (\s a -> s { _prdbiorReservedDBInstance = a })
-
-instance ToPath PurchaseReservedDBInstancesOffering where
-    toPath = const "/"
-
-instance ToQuery PurchaseReservedDBInstancesOffering where
-    toQuery PurchaseReservedDBInstancesOffering{..} = mconcat
-        [ "DBInstanceCount"               =? _prdbioDBInstanceCount
-        , "ReservedDBInstanceId"          =? _prdbioReservedDBInstanceId
-        , "ReservedDBInstancesOfferingId" =? _prdbioReservedDBInstancesOfferingId
-        , "Tags"                          =? _prdbioTags
-        ]
-
-instance ToHeaders PurchaseReservedDBInstancesOffering
-
-instance AWSRequest PurchaseReservedDBInstancesOffering where
-    type Sv PurchaseReservedDBInstancesOffering = RDS
-    type Rs PurchaseReservedDBInstancesOffering = PurchaseReservedDBInstancesOfferingResponse
-
-    request  = post "PurchaseReservedDBInstancesOffering"
-    response = xmlResponse
+-- | Undocumented member.
+prdiorsReservedDBInstance :: Lens' PurchaseReservedDBInstancesOfferingResponse (Maybe ReservedDBInstance)
+prdiorsReservedDBInstance = lens _prdiorsReservedDBInstance (\ s a -> s{_prdiorsReservedDBInstance = a});
 
-instance FromXML PurchaseReservedDBInstancesOfferingResponse where
-    parseXML = withElement "PurchaseReservedDBInstancesOfferingResult" $ \x -> PurchaseReservedDBInstancesOfferingResponse
-        <$> x .@? "ReservedDBInstance"
+-- | The response status code.
+prdiorsStatus :: Lens' PurchaseReservedDBInstancesOfferingResponse Int
+prdiorsStatus = lens _prdiorsStatus (\ s a -> s{_prdiorsStatus = a});
diff --git a/gen/Network/AWS/RDS/RebootDBInstance.hs b/gen/Network/AWS/RDS/RebootDBInstance.hs
--- a/gen/Network/AWS/RDS/RebootDBInstance.hs
+++ b/gen/Network/AWS/RDS/RebootDBInstance.hs
@@ -1,145 +1,158 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.RebootDBInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Rebooting a DB instance restarts the database engine service. A reboot also
--- applies to the DB instance any modifications to the associated DB parameter
--- group that were pending. Rebooting a DB instance results in a momentary
--- outage of the instance, during which the DB instance status is set to
--- rebooting. If the RDS instance is configured for MultiAZ, it is possible that
--- the reboot will be conducted through a failover. An Amazon RDS event is
--- created when the reboot is completed.
+-- Rebooting a DB instance restarts the database engine service. A reboot
+-- also applies to the DB instance any modifications to the associated DB
+-- parameter group that were pending. Rebooting a DB instance results in a
+-- momentary outage of the instance, during which the DB instance status is
+-- set to rebooting. If the RDS instance is configured for MultiAZ, it is
+-- possible that the reboot will be conducted through a failover. An Amazon
+-- RDS event is created when the reboot is completed.
 --
 -- If your DB instance is deployed in multiple Availability Zones, you can
--- force a failover from one AZ to the other during the reboot. You might force
--- a failover to test the availability of your DB instance deployment or to
--- restore operations to the original AZ after a failover occurs.
+-- force a failover from one AZ to the other during the reboot. You might
+-- force a failover to test the availability of your DB instance deployment
+-- or to restore operations to the original AZ after a failover occurs.
 --
--- The time required to reboot is a function of the specific database engine's
--- crash recovery process. To improve the reboot time, we recommend that you
--- reduce database activities as much as possible during the reboot process to
--- reduce rollback activity for in-transit transactions.
+-- The time required to reboot is a function of the specific database
+-- engine\'s crash recovery process. To improve the reboot time, we
+-- recommend that you reduce database activities as much as possible during
+-- the reboot process to reduce rollback activity for in-transit
+-- transactions.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RebootDBInstance.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RebootDBInstance.html AWS API Reference> for RebootDBInstance.
 module Network.AWS.RDS.RebootDBInstance
     (
-    -- * Request
-      RebootDBInstance
-    -- ** Request constructor
-    , rebootDBInstance
-    -- ** Request lenses
-    , rdbiDBInstanceIdentifier
-    , rdbiForceFailover
+    -- * Creating a Request
+      rebootDBInstance
+    , RebootDBInstance
+    -- * Request Lenses
+    , rdiForceFailover
+    , rdiDBInstanceIdentifier
 
-    -- * Response
-    , RebootDBInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , rebootDBInstanceResponse
-    -- ** Response lenses
-    , rdbirDBInstance
+    , RebootDBInstanceResponse
+    -- * Response Lenses
+    , rdirsDBInstance
+    , rdirsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data RebootDBInstance = RebootDBInstance
-    { _rdbiDBInstanceIdentifier :: Text
-    , _rdbiForceFailover        :: Maybe Bool
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'RebootDBInstance' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'rebootDBInstance' smart constructor.
+data RebootDBInstance = RebootDBInstance'
+    { _rdiForceFailover        :: !(Maybe Bool)
+    , _rdiDBInstanceIdentifier :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RebootDBInstance' with the minimum fields required to make a request.
 --
--- * 'rdbiDBInstanceIdentifier' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rdbiForceFailover' @::@ 'Maybe' 'Bool'
+-- * 'rdiForceFailover'
 --
-rebootDBInstance :: Text -- ^ 'rdbiDBInstanceIdentifier'
-                 -> RebootDBInstance
-rebootDBInstance p1 = RebootDBInstance
-    { _rdbiDBInstanceIdentifier = p1
-    , _rdbiForceFailover        = Nothing
+-- * 'rdiDBInstanceIdentifier'
+rebootDBInstance
+    :: Text -- ^ 'rdiDBInstanceIdentifier'
+    -> RebootDBInstance
+rebootDBInstance pDBInstanceIdentifier_ =
+    RebootDBInstance'
+    { _rdiForceFailover = Nothing
+    , _rdiDBInstanceIdentifier = pDBInstanceIdentifier_
     }
 
--- | The DB instance identifier. This parameter is stored as a lowercase string.
---
--- Constraints:
---
--- Must contain from 1 to 63 alphanumeric characters or hyphens First
--- character must be a letter Cannot end with a hyphen or contain two
--- consecutive hyphens
-rdbiDBInstanceIdentifier :: Lens' RebootDBInstance Text
-rdbiDBInstanceIdentifier =
-    lens _rdbiDBInstanceIdentifier
-        (\s a -> s { _rdbiDBInstanceIdentifier = a })
-
 -- | When 'true', the reboot will be conducted through a MultiAZ failover.
 --
--- Constraint: You cannot specify 'true' if the instance is not configured for
--- MultiAZ.
-rdbiForceFailover :: Lens' RebootDBInstance (Maybe Bool)
-rdbiForceFailover =
-    lens _rdbiForceFailover (\s a -> s { _rdbiForceFailover = a })
-
-newtype RebootDBInstanceResponse = RebootDBInstanceResponse
-    { _rdbirDBInstance :: Maybe DBInstance
-    } deriving (Eq, Read, Show)
+-- Constraint: You cannot specify 'true' if the instance is not configured
+-- for MultiAZ.
+rdiForceFailover :: Lens' RebootDBInstance (Maybe Bool)
+rdiForceFailover = lens _rdiForceFailover (\ s a -> s{_rdiForceFailover = a});
 
--- | 'RebootDBInstanceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | The DB instance identifier. This parameter is stored as a lowercase
+-- string.
 --
--- * 'rdbirDBInstance' @::@ 'Maybe' 'DBInstance'
+-- Constraints:
 --
-rebootDBInstanceResponse :: RebootDBInstanceResponse
-rebootDBInstanceResponse = RebootDBInstanceResponse
-    { _rdbirDBInstance = Nothing
-    }
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+rdiDBInstanceIdentifier :: Lens' RebootDBInstance Text
+rdiDBInstanceIdentifier = lens _rdiDBInstanceIdentifier (\ s a -> s{_rdiDBInstanceIdentifier = a});
 
-rdbirDBInstance :: Lens' RebootDBInstanceResponse (Maybe DBInstance)
-rdbirDBInstance = lens _rdbirDBInstance (\s a -> s { _rdbirDBInstance = a })
+instance AWSRequest RebootDBInstance where
+        type Sv RebootDBInstance = RDS
+        type Rs RebootDBInstance = RebootDBInstanceResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "RebootDBInstanceResult"
+              (\ s h x ->
+                 RebootDBInstanceResponse' <$>
+                   (x .@? "DBInstance") <*> (pure (fromEnum s)))
 
+instance ToHeaders RebootDBInstance where
+        toHeaders = const mempty
+
 instance ToPath RebootDBInstance where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery RebootDBInstance where
-    toQuery RebootDBInstance{..} = mconcat
-        [ "DBInstanceIdentifier" =? _rdbiDBInstanceIdentifier
-        , "ForceFailover"        =? _rdbiForceFailover
-        ]
+        toQuery RebootDBInstance'{..}
+          = mconcat
+              ["Action" =: ("RebootDBInstance" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "ForceFailover" =: _rdiForceFailover,
+               "DBInstanceIdentifier" =: _rdiDBInstanceIdentifier]
 
-instance ToHeaders RebootDBInstance
+-- | /See:/ 'rebootDBInstanceResponse' smart constructor.
+data RebootDBInstanceResponse = RebootDBInstanceResponse'
+    { _rdirsDBInstance :: !(Maybe DBInstance)
+    , _rdirsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest RebootDBInstance where
-    type Sv RebootDBInstance = RDS
-    type Rs RebootDBInstance = RebootDBInstanceResponse
+-- | Creates a value of 'RebootDBInstanceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdirsDBInstance'
+--
+-- * 'rdirsStatus'
+rebootDBInstanceResponse
+    :: Int -- ^ 'rdirsStatus'
+    -> RebootDBInstanceResponse
+rebootDBInstanceResponse pStatus_ =
+    RebootDBInstanceResponse'
+    { _rdirsDBInstance = Nothing
+    , _rdirsStatus = pStatus_
+    }
 
-    request  = post "RebootDBInstance"
-    response = xmlResponse
+-- | Undocumented member.
+rdirsDBInstance :: Lens' RebootDBInstanceResponse (Maybe DBInstance)
+rdirsDBInstance = lens _rdirsDBInstance (\ s a -> s{_rdirsDBInstance = a});
 
-instance FromXML RebootDBInstanceResponse where
-    parseXML = withElement "RebootDBInstanceResult" $ \x -> RebootDBInstanceResponse
-        <$> x .@? "DBInstance"
+-- | The response status code.
+rdirsStatus :: Lens' RebootDBInstanceResponse Int
+rdirsStatus = lens _rdirsStatus (\ s a -> s{_rdirsStatus = a});
diff --git a/gen/Network/AWS/RDS/RemoveSourceIdentifierFromSubscription.hs b/gen/Network/AWS/RDS/RemoveSourceIdentifierFromSubscription.hs
--- a/gen/Network/AWS/RDS/RemoveSourceIdentifierFromSubscription.hs
+++ b/gen/Network/AWS/RDS/RemoveSourceIdentifierFromSubscription.hs
@@ -1,124 +1,144 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.RemoveSourceIdentifierFromSubscription
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Removes a source identifier from an existing RDS event notification
+-- Removes a source identifier from an existing RDS event notification
 -- subscription.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RemoveSourceIdentifierFromSubscription.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RemoveSourceIdentifierFromSubscription.html AWS API Reference> for RemoveSourceIdentifierFromSubscription.
 module Network.AWS.RDS.RemoveSourceIdentifierFromSubscription
     (
-    -- * Request
-      RemoveSourceIdentifierFromSubscription
-    -- ** Request constructor
-    , removeSourceIdentifierFromSubscription
-    -- ** Request lenses
-    , rsifsSourceIdentifier
+    -- * Creating a Request
+      removeSourceIdentifierFromSubscription
+    , RemoveSourceIdentifierFromSubscription
+    -- * Request Lenses
     , rsifsSubscriptionName
+    , rsifsSourceIdentifier
 
-    -- * Response
-    , RemoveSourceIdentifierFromSubscriptionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , removeSourceIdentifierFromSubscriptionResponse
-    -- ** Response lenses
-    , rsifsrEventSubscription
+    , RemoveSourceIdentifierFromSubscriptionResponse
+    -- * Response Lenses
+    , rsifsrsEventSubscription
+    , rsifsrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data RemoveSourceIdentifierFromSubscription = RemoveSourceIdentifierFromSubscription
-    { _rsifsSourceIdentifier :: Text
-    , _rsifsSubscriptionName :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'RemoveSourceIdentifierFromSubscription' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'removeSourceIdentifierFromSubscription' smart constructor.
+data RemoveSourceIdentifierFromSubscription = RemoveSourceIdentifierFromSubscription'
+    { _rsifsSubscriptionName :: !Text
+    , _rsifsSourceIdentifier :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RemoveSourceIdentifierFromSubscription' with the minimum fields required to make a request.
 --
--- * 'rsifsSourceIdentifier' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rsifsSubscriptionName' @::@ 'Text'
+-- * 'rsifsSubscriptionName'
 --
-removeSourceIdentifierFromSubscription :: Text -- ^ 'rsifsSubscriptionName'
-                                       -> Text -- ^ 'rsifsSourceIdentifier'
-                                       -> RemoveSourceIdentifierFromSubscription
-removeSourceIdentifierFromSubscription p1 p2 = RemoveSourceIdentifierFromSubscription
-    { _rsifsSubscriptionName = p1
-    , _rsifsSourceIdentifier = p2
+-- * 'rsifsSourceIdentifier'
+removeSourceIdentifierFromSubscription
+    :: Text -- ^ 'rsifsSubscriptionName'
+    -> Text -- ^ 'rsifsSourceIdentifier'
+    -> RemoveSourceIdentifierFromSubscription
+removeSourceIdentifierFromSubscription pSubscriptionName_ pSourceIdentifier_ =
+    RemoveSourceIdentifierFromSubscription'
+    { _rsifsSubscriptionName = pSubscriptionName_
+    , _rsifsSourceIdentifier = pSourceIdentifier_
     }
 
--- | The source identifier to be removed from the subscription, such as the DB
--- instance identifier for a DB instance or the name of a security group.
-rsifsSourceIdentifier :: Lens' RemoveSourceIdentifierFromSubscription Text
-rsifsSourceIdentifier =
-    lens _rsifsSourceIdentifier (\s a -> s { _rsifsSourceIdentifier = a })
-
 -- | The name of the RDS event notification subscription you want to remove a
 -- source identifier from.
 rsifsSubscriptionName :: Lens' RemoveSourceIdentifierFromSubscription Text
-rsifsSubscriptionName =
-    lens _rsifsSubscriptionName (\s a -> s { _rsifsSubscriptionName = a })
+rsifsSubscriptionName = lens _rsifsSubscriptionName (\ s a -> s{_rsifsSubscriptionName = a});
 
-newtype RemoveSourceIdentifierFromSubscriptionResponse = RemoveSourceIdentifierFromSubscriptionResponse
-    { _rsifsrEventSubscription :: Maybe EventSubscription
-    } deriving (Eq, Read, Show)
+-- | The source identifier to be removed from the subscription, such as the
+-- __DB instance identifier__ for a DB instance or the name of a security
+-- group.
+rsifsSourceIdentifier :: Lens' RemoveSourceIdentifierFromSubscription Text
+rsifsSourceIdentifier = lens _rsifsSourceIdentifier (\ s a -> s{_rsifsSourceIdentifier = a});
 
--- | 'RemoveSourceIdentifierFromSubscriptionResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rsifsrEventSubscription' @::@ 'Maybe' 'EventSubscription'
---
-removeSourceIdentifierFromSubscriptionResponse :: RemoveSourceIdentifierFromSubscriptionResponse
-removeSourceIdentifierFromSubscriptionResponse = RemoveSourceIdentifierFromSubscriptionResponse
-    { _rsifsrEventSubscription = Nothing
-    }
+instance AWSRequest
+         RemoveSourceIdentifierFromSubscription where
+        type Sv RemoveSourceIdentifierFromSubscription = RDS
+        type Rs RemoveSourceIdentifierFromSubscription =
+             RemoveSourceIdentifierFromSubscriptionResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "RemoveSourceIdentifierFromSubscriptionResult"
+              (\ s h x ->
+                 RemoveSourceIdentifierFromSubscriptionResponse' <$>
+                   (x .@? "EventSubscription") <*> (pure (fromEnum s)))
 
-rsifsrEventSubscription :: Lens' RemoveSourceIdentifierFromSubscriptionResponse (Maybe EventSubscription)
-rsifsrEventSubscription =
-    lens _rsifsrEventSubscription (\s a -> s { _rsifsrEventSubscription = a })
+instance ToHeaders
+         RemoveSourceIdentifierFromSubscription where
+        toHeaders = const mempty
 
-instance ToPath RemoveSourceIdentifierFromSubscription where
-    toPath = const "/"
+instance ToPath
+         RemoveSourceIdentifierFromSubscription where
+        toPath = const "/"
 
-instance ToQuery RemoveSourceIdentifierFromSubscription where
-    toQuery RemoveSourceIdentifierFromSubscription{..} = mconcat
-        [ "SourceIdentifier" =? _rsifsSourceIdentifier
-        , "SubscriptionName" =? _rsifsSubscriptionName
-        ]
+instance ToQuery
+         RemoveSourceIdentifierFromSubscription where
+        toQuery RemoveSourceIdentifierFromSubscription'{..}
+          = mconcat
+              ["Action" =:
+                 ("RemoveSourceIdentifierFromSubscription" ::
+                    ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "SubscriptionName" =: _rsifsSubscriptionName,
+               "SourceIdentifier" =: _rsifsSourceIdentifier]
 
-instance ToHeaders RemoveSourceIdentifierFromSubscription
+-- | /See:/ 'removeSourceIdentifierFromSubscriptionResponse' smart constructor.
+data RemoveSourceIdentifierFromSubscriptionResponse = RemoveSourceIdentifierFromSubscriptionResponse'
+    { _rsifsrsEventSubscription :: !(Maybe EventSubscription)
+    , _rsifsrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest RemoveSourceIdentifierFromSubscription where
-    type Sv RemoveSourceIdentifierFromSubscription = RDS
-    type Rs RemoveSourceIdentifierFromSubscription = RemoveSourceIdentifierFromSubscriptionResponse
+-- | Creates a value of 'RemoveSourceIdentifierFromSubscriptionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rsifsrsEventSubscription'
+--
+-- * 'rsifsrsStatus'
+removeSourceIdentifierFromSubscriptionResponse
+    :: Int -- ^ 'rsifsrsStatus'
+    -> RemoveSourceIdentifierFromSubscriptionResponse
+removeSourceIdentifierFromSubscriptionResponse pStatus_ =
+    RemoveSourceIdentifierFromSubscriptionResponse'
+    { _rsifsrsEventSubscription = Nothing
+    , _rsifsrsStatus = pStatus_
+    }
 
-    request  = post "RemoveSourceIdentifierFromSubscription"
-    response = xmlResponse
+-- | Undocumented member.
+rsifsrsEventSubscription :: Lens' RemoveSourceIdentifierFromSubscriptionResponse (Maybe EventSubscription)
+rsifsrsEventSubscription = lens _rsifsrsEventSubscription (\ s a -> s{_rsifsrsEventSubscription = a});
 
-instance FromXML RemoveSourceIdentifierFromSubscriptionResponse where
-    parseXML = withElement "RemoveSourceIdentifierFromSubscriptionResult" $ \x -> RemoveSourceIdentifierFromSubscriptionResponse
-        <$> x .@? "EventSubscription"
+-- | The response status code.
+rsifsrsStatus :: Lens' RemoveSourceIdentifierFromSubscriptionResponse Int
+rsifsrsStatus = lens _rsifsrsStatus (\ s a -> s{_rsifsrsStatus = a});
diff --git a/gen/Network/AWS/RDS/RemoveTagsFromResource.hs b/gen/Network/AWS/RDS/RemoveTagsFromResource.hs
--- a/gen/Network/AWS/RDS/RemoveTagsFromResource.hs
+++ b/gen/Network/AWS/RDS/RemoveTagsFromResource.hs
@@ -1,103 +1,113 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.RemoveTagsFromResource
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Removes metadata tags from an Amazon RDS resource.
+-- Removes metadata tags from an Amazon RDS resource.
 --
--- For an overview on tagging an Amazon RDS resource, see <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Tagging.html Tagging Amazon RDSResources>.
+-- For an overview on tagging an Amazon RDS resource, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Tagging.html Tagging Amazon RDS Resources>.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RemoveTagsFromResource.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RemoveTagsFromResource.html AWS API Reference> for RemoveTagsFromResource.
 module Network.AWS.RDS.RemoveTagsFromResource
     (
-    -- * Request
-      RemoveTagsFromResource
-    -- ** Request constructor
-    , removeTagsFromResource
-    -- ** Request lenses
+    -- * Creating a Request
+      removeTagsFromResource
+    , RemoveTagsFromResource
+    -- * Request Lenses
     , rtfrResourceName
     , rtfrTagKeys
 
-    -- * Response
-    , RemoveTagsFromResourceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , removeTagsFromResourceResponse
+    , RemoveTagsFromResourceResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data RemoveTagsFromResource = RemoveTagsFromResource
-    { _rtfrResourceName :: Text
-    , _rtfrTagKeys      :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'RemoveTagsFromResource' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'removeTagsFromResource' smart constructor.
+data RemoveTagsFromResource = RemoveTagsFromResource'
+    { _rtfrResourceName :: !Text
+    , _rtfrTagKeys      :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RemoveTagsFromResource' with the minimum fields required to make a request.
 --
--- * 'rtfrResourceName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rtfrTagKeys' @::@ ['Text']
+-- * 'rtfrResourceName'
 --
-removeTagsFromResource :: Text -- ^ 'rtfrResourceName'
-                       -> RemoveTagsFromResource
-removeTagsFromResource p1 = RemoveTagsFromResource
-    { _rtfrResourceName = p1
-    , _rtfrTagKeys      = mempty
+-- * 'rtfrTagKeys'
+removeTagsFromResource
+    :: Text -- ^ 'rtfrResourceName'
+    -> RemoveTagsFromResource
+removeTagsFromResource pResourceName_ =
+    RemoveTagsFromResource'
+    { _rtfrResourceName = pResourceName_
+    , _rtfrTagKeys = mempty
     }
 
 -- | The Amazon RDS resource the tags will be removed from. This value is an
--- Amazon Resource Name (ARN). For information about creating an ARN, see <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN Constructing an RDS Amazon Resource Name (ARN)>.
+-- Amazon Resource Name (ARN). For information about creating an ARN, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN Constructing an RDS Amazon Resource Name (ARN)>.
 rtfrResourceName :: Lens' RemoveTagsFromResource Text
-rtfrResourceName = lens _rtfrResourceName (\s a -> s { _rtfrResourceName = a })
+rtfrResourceName = lens _rtfrResourceName (\ s a -> s{_rtfrResourceName = a});
 
 -- | The tag key (name) of the tag to be removed.
 rtfrTagKeys :: Lens' RemoveTagsFromResource [Text]
-rtfrTagKeys = lens _rtfrTagKeys (\s a -> s { _rtfrTagKeys = a }) . _List
+rtfrTagKeys = lens _rtfrTagKeys (\ s a -> s{_rtfrTagKeys = a}) . _Coerce;
 
-data RemoveTagsFromResourceResponse = RemoveTagsFromResourceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest RemoveTagsFromResource where
+        type Sv RemoveTagsFromResource = RDS
+        type Rs RemoveTagsFromResource =
+             RemoveTagsFromResourceResponse
+        request = postQuery
+        response
+          = receiveNull RemoveTagsFromResourceResponse'
 
--- | 'RemoveTagsFromResourceResponse' constructor.
-removeTagsFromResourceResponse :: RemoveTagsFromResourceResponse
-removeTagsFromResourceResponse = RemoveTagsFromResourceResponse
+instance ToHeaders RemoveTagsFromResource where
+        toHeaders = const mempty
 
 instance ToPath RemoveTagsFromResource where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery RemoveTagsFromResource where
-    toQuery RemoveTagsFromResource{..} = mconcat
-        [ "ResourceName" =? _rtfrResourceName
-        , "TagKeys"      =? _rtfrTagKeys
-        ]
-
-instance ToHeaders RemoveTagsFromResource
+        toQuery RemoveTagsFromResource'{..}
+          = mconcat
+              ["Action" =:
+                 ("RemoveTagsFromResource" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "ResourceName" =: _rtfrResourceName,
+               "TagKeys" =: toQueryList "member" _rtfrTagKeys]
 
-instance AWSRequest RemoveTagsFromResource where
-    type Sv RemoveTagsFromResource = RDS
-    type Rs RemoveTagsFromResource = RemoveTagsFromResourceResponse
+-- | /See:/ 'removeTagsFromResourceResponse' smart constructor.
+data RemoveTagsFromResourceResponse =
+    RemoveTagsFromResourceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "RemoveTagsFromResource"
-    response = nullResponse RemoveTagsFromResourceResponse
+-- | Creates a value of 'RemoveTagsFromResourceResponse' with the minimum fields required to make a request.
+--
+removeTagsFromResourceResponse
+    :: RemoveTagsFromResourceResponse
+removeTagsFromResourceResponse = RemoveTagsFromResourceResponse'
diff --git a/gen/Network/AWS/RDS/ResetDBClusterParameterGroup.hs b/gen/Network/AWS/RDS/ResetDBClusterParameterGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/ResetDBClusterParameterGroup.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.ResetDBClusterParameterGroup
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies the parameters of a DB cluster parameter group to the default
+-- value. To reset specific parameters submit a list of the following:
+-- 'ParameterName' and 'ApplyMethod'. To reset the entire DB cluster
+-- parameter group, specify the 'DBClusterParameterGroupName' and
+-- 'ResetAllParameters' parameters.
+--
+-- When resetting the entire group, dynamic parameters are updated
+-- immediately and static parameters are set to 'pending-reboot' to take
+-- effect on the next DB instance restart or RebootDBInstance request. You
+-- must call RebootDBInstance for every DB instance in your DB cluster that
+-- you want the updated static parameter to apply to.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ResetDBClusterParameterGroup.html AWS API Reference> for ResetDBClusterParameterGroup.
+module Network.AWS.RDS.ResetDBClusterParameterGroup
+    (
+    -- * Creating a Request
+      resetDBClusterParameterGroup
+    , ResetDBClusterParameterGroup
+    -- * Request Lenses
+    , rdcpgResetAllParameters
+    , rdcpgParameters
+    , rdcpgDBClusterParameterGroupName
+
+    -- * Destructuring the Response
+    , dbClusterParameterGroupNameMessage
+    , DBClusterParameterGroupNameMessage
+    -- * Response Lenses
+    , dcpgnmDBClusterParameterGroupName
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'resetDBClusterParameterGroup' smart constructor.
+data ResetDBClusterParameterGroup = ResetDBClusterParameterGroup'
+    { _rdcpgResetAllParameters          :: !(Maybe Bool)
+    , _rdcpgParameters                  :: !(Maybe [Parameter])
+    , _rdcpgDBClusterParameterGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResetDBClusterParameterGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdcpgResetAllParameters'
+--
+-- * 'rdcpgParameters'
+--
+-- * 'rdcpgDBClusterParameterGroupName'
+resetDBClusterParameterGroup
+    :: Text -- ^ 'rdcpgDBClusterParameterGroupName'
+    -> ResetDBClusterParameterGroup
+resetDBClusterParameterGroup pDBClusterParameterGroupName_ =
+    ResetDBClusterParameterGroup'
+    { _rdcpgResetAllParameters = Nothing
+    , _rdcpgParameters = Nothing
+    , _rdcpgDBClusterParameterGroupName = pDBClusterParameterGroupName_
+    }
+
+-- | A value that is set to 'true' to reset all parameters in the DB cluster
+-- parameter group to their default values, and 'false' otherwise. You
+-- cannot use this parameter if there is a list of parameter names
+-- specified for the 'Parameters' parameter.
+rdcpgResetAllParameters :: Lens' ResetDBClusterParameterGroup (Maybe Bool)
+rdcpgResetAllParameters = lens _rdcpgResetAllParameters (\ s a -> s{_rdcpgResetAllParameters = a});
+
+-- | A list of parameter names in the DB cluster parameter group to reset to
+-- the default values. You cannot use this parameter if the
+-- 'ResetAllParameters' parameter is set to 'true'.
+rdcpgParameters :: Lens' ResetDBClusterParameterGroup [Parameter]
+rdcpgParameters = lens _rdcpgParameters (\ s a -> s{_rdcpgParameters = a}) . _Default . _Coerce;
+
+-- | The name of the DB cluster parameter group to reset.
+rdcpgDBClusterParameterGroupName :: Lens' ResetDBClusterParameterGroup Text
+rdcpgDBClusterParameterGroupName = lens _rdcpgDBClusterParameterGroupName (\ s a -> s{_rdcpgDBClusterParameterGroupName = a});
+
+instance AWSRequest ResetDBClusterParameterGroup
+         where
+        type Sv ResetDBClusterParameterGroup = RDS
+        type Rs ResetDBClusterParameterGroup =
+             DBClusterParameterGroupNameMessage
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "ResetDBClusterParameterGroupResult"
+              (\ s h x -> parseXML x)
+
+instance ToHeaders ResetDBClusterParameterGroup where
+        toHeaders = const mempty
+
+instance ToPath ResetDBClusterParameterGroup where
+        toPath = const "/"
+
+instance ToQuery ResetDBClusterParameterGroup where
+        toQuery ResetDBClusterParameterGroup'{..}
+          = mconcat
+              ["Action" =:
+                 ("ResetDBClusterParameterGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "ResetAllParameters" =: _rdcpgResetAllParameters,
+               "Parameters" =:
+                 toQuery
+                   (toQueryList "Parameter" <$> _rdcpgParameters),
+               "DBClusterParameterGroupName" =:
+                 _rdcpgDBClusterParameterGroupName]
diff --git a/gen/Network/AWS/RDS/ResetDBParameterGroup.hs b/gen/Network/AWS/RDS/ResetDBParameterGroup.hs
--- a/gen/Network/AWS/RDS/ResetDBParameterGroup.hs
+++ b/gen/Network/AWS/RDS/ResetDBParameterGroup.hs
@@ -1,158 +1,142 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.ResetDBParameterGroup
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Modifies the parameters of a DB parameter group to the engine/system default
--- value. To reset specific parameters submit a list of the following: 'ParameterName' and 'ApplyMethod'. To reset the entire DB parameter group, specify the 'DBParameterGroup' name and 'ResetAllParameters' parameters. When resetting the entire group,
--- dynamic parameters are updated immediately and static parameters are set to 'pending-reboot' to take effect on the next DB instance restart or 'RebootDBInstance' request.
+-- Modifies the parameters of a DB parameter group to the engine\/system
+-- default value. To reset specific parameters submit a list of the
+-- following: 'ParameterName' and 'ApplyMethod'. To reset the entire DB
+-- parameter group, specify the 'DBParameterGroup' name and
+-- 'ResetAllParameters' parameters. When resetting the entire group,
+-- dynamic parameters are updated immediately and static parameters are set
+-- to 'pending-reboot' to take effect on the next DB instance restart or
+-- 'RebootDBInstance' request.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ResetDBParameterGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ResetDBParameterGroup.html AWS API Reference> for ResetDBParameterGroup.
 module Network.AWS.RDS.ResetDBParameterGroup
     (
-    -- * Request
-      ResetDBParameterGroup
-    -- ** Request constructor
-    , resetDBParameterGroup
-    -- ** Request lenses
-    , rdbpgDBParameterGroupName
-    , rdbpgParameters
-    , rdbpgResetAllParameters
+    -- * Creating a Request
+      resetDBParameterGroup
+    , ResetDBParameterGroup
+    -- * Request Lenses
+    , rdpgResetAllParameters
+    , rdpgParameters
+    , rdpgDBParameterGroupName
 
-    -- * Response
-    , ResetDBParameterGroupResponse
-    -- ** Response constructor
-    , resetDBParameterGroupResponse
-    -- ** Response lenses
-    , rdbpgrDBParameterGroupName
+    -- * Destructuring the Response
+    , dbParameterGroupNameMessage
+    , DBParameterGroupNameMessage
+    -- * Response Lenses
+    , dpgnmDBParameterGroupName
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data ResetDBParameterGroup = ResetDBParameterGroup
-    { _rdbpgDBParameterGroupName :: Text
-    , _rdbpgParameters           :: List "member" Parameter
-    , _rdbpgResetAllParameters   :: Maybe Bool
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ResetDBParameterGroup' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'resetDBParameterGroup' smart constructor.
+data ResetDBParameterGroup = ResetDBParameterGroup'
+    { _rdpgResetAllParameters   :: !(Maybe Bool)
+    , _rdpgParameters           :: !(Maybe [Parameter])
+    , _rdpgDBParameterGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResetDBParameterGroup' with the minimum fields required to make a request.
 --
--- * 'rdbpgDBParameterGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rdbpgParameters' @::@ ['Parameter']
+-- * 'rdpgResetAllParameters'
 --
--- * 'rdbpgResetAllParameters' @::@ 'Maybe' 'Bool'
+-- * 'rdpgParameters'
 --
-resetDBParameterGroup :: Text -- ^ 'rdbpgDBParameterGroupName'
-                      -> ResetDBParameterGroup
-resetDBParameterGroup p1 = ResetDBParameterGroup
-    { _rdbpgDBParameterGroupName = p1
-    , _rdbpgResetAllParameters   = Nothing
-    , _rdbpgParameters           = mempty
+-- * 'rdpgDBParameterGroupName'
+resetDBParameterGroup
+    :: Text -- ^ 'rdpgDBParameterGroupName'
+    -> ResetDBParameterGroup
+resetDBParameterGroup pDBParameterGroupName_ =
+    ResetDBParameterGroup'
+    { _rdpgResetAllParameters = Nothing
+    , _rdpgParameters = Nothing
+    , _rdpgDBParameterGroupName = pDBParameterGroupName_
     }
 
--- | The name of the DB parameter group.
---
--- Constraints:
---
--- Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
+-- | Specifies whether ('true') or not ('false') to reset all parameters in
+-- the DB parameter group to default values.
 --
-rdbpgDBParameterGroupName :: Lens' ResetDBParameterGroup Text
-rdbpgDBParameterGroupName =
-    lens _rdbpgDBParameterGroupName
-        (\s a -> s { _rdbpgDBParameterGroupName = a })
+-- Default: 'true'
+rdpgResetAllParameters :: Lens' ResetDBParameterGroup (Maybe Bool)
+rdpgResetAllParameters = lens _rdpgResetAllParameters (\ s a -> s{_rdpgResetAllParameters = a});
 
--- | An array of parameter names, values, and the apply method for the parameter
--- update. At least one parameter name, value, and apply method must be
--- supplied; subsequent arguments are optional. A maximum of 20 parameters may
--- be modified in a single request.
+-- | An array of parameter names, values, and the apply method for the
+-- parameter update. At least one parameter name, value, and apply method
+-- must be supplied; subsequent arguments are optional. A maximum of 20
+-- parameters can be modified in a single request.
 --
--- MySQL
+-- __MySQL__
 --
 -- Valid Values (for Apply method): 'immediate' | 'pending-reboot'
 --
--- You can use the immediate value with dynamic parameters only. You can use
--- the 'pending-reboot' value for both dynamic and static parameters, and changes
--- are applied when DB instance reboots.
+-- You can use the immediate value with dynamic parameters only. You can
+-- use the 'pending-reboot' value for both dynamic and static parameters,
+-- and changes are applied when DB instance reboots.
 --
--- Oracle
+-- __Oracle__
 --
 -- Valid Values (for Apply method): 'pending-reboot'
-rdbpgParameters :: Lens' ResetDBParameterGroup [Parameter]
-rdbpgParameters = lens _rdbpgParameters (\s a -> s { _rdbpgParameters = a }) . _List
-
--- | Specifies whether ('true') or not ('false') to reset all parameters in the DB
--- parameter group to default values.
---
--- Default: 'true'
-rdbpgResetAllParameters :: Lens' ResetDBParameterGroup (Maybe Bool)
-rdbpgResetAllParameters =
-    lens _rdbpgResetAllParameters (\s a -> s { _rdbpgResetAllParameters = a })
-
-newtype ResetDBParameterGroupResponse = ResetDBParameterGroupResponse
-    { _rdbpgrDBParameterGroupName :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+rdpgParameters :: Lens' ResetDBParameterGroup [Parameter]
+rdpgParameters = lens _rdpgParameters (\ s a -> s{_rdpgParameters = a}) . _Default . _Coerce;
 
--- | 'ResetDBParameterGroupResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | The name of the DB parameter group.
 --
--- * 'rdbpgrDBParameterGroupName' @::@ 'Maybe' 'Text'
+-- Constraints:
 --
-resetDBParameterGroupResponse :: ResetDBParameterGroupResponse
-resetDBParameterGroupResponse = ResetDBParameterGroupResponse
-    { _rdbpgrDBParameterGroupName = Nothing
-    }
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+rdpgDBParameterGroupName :: Lens' ResetDBParameterGroup Text
+rdpgDBParameterGroupName = lens _rdpgDBParameterGroupName (\ s a -> s{_rdpgDBParameterGroupName = a});
 
--- | The name of the DB parameter group.
-rdbpgrDBParameterGroupName :: Lens' ResetDBParameterGroupResponse (Maybe Text)
-rdbpgrDBParameterGroupName =
-    lens _rdbpgrDBParameterGroupName
-        (\s a -> s { _rdbpgrDBParameterGroupName = a })
+instance AWSRequest ResetDBParameterGroup where
+        type Sv ResetDBParameterGroup = RDS
+        type Rs ResetDBParameterGroup =
+             DBParameterGroupNameMessage
+        request = postQuery
+        response
+          = receiveXMLWrapper "ResetDBParameterGroupResult"
+              (\ s h x -> parseXML x)
 
+instance ToHeaders ResetDBParameterGroup where
+        toHeaders = const mempty
+
 instance ToPath ResetDBParameterGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ResetDBParameterGroup where
-    toQuery ResetDBParameterGroup{..} = mconcat
-        [ "DBParameterGroupName" =? _rdbpgDBParameterGroupName
-        , "Parameters"           =? _rdbpgParameters
-        , "ResetAllParameters"   =? _rdbpgResetAllParameters
-        ]
-
-instance ToHeaders ResetDBParameterGroup
-
-instance AWSRequest ResetDBParameterGroup where
-    type Sv ResetDBParameterGroup = RDS
-    type Rs ResetDBParameterGroup = ResetDBParameterGroupResponse
-
-    request  = post "ResetDBParameterGroup"
-    response = xmlResponse
-
-instance FromXML ResetDBParameterGroupResponse where
-    parseXML = withElement "ResetDBParameterGroupResult" $ \x -> ResetDBParameterGroupResponse
-        <$> x .@? "DBParameterGroupName"
+        toQuery ResetDBParameterGroup'{..}
+          = mconcat
+              ["Action" =: ("ResetDBParameterGroup" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "ResetAllParameters" =: _rdpgResetAllParameters,
+               "Parameters" =:
+                 toQuery
+                   (toQueryList "Parameter" <$> _rdpgParameters),
+               "DBParameterGroupName" =: _rdpgDBParameterGroupName]
diff --git a/gen/Network/AWS/RDS/RestoreDBClusterFromSnapshot.hs b/gen/Network/AWS/RDS/RestoreDBClusterFromSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/RestoreDBClusterFromSnapshot.hs
@@ -0,0 +1,264 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.RestoreDBClusterFromSnapshot
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new DB cluster from a DB cluster snapshot. The target DB
+-- cluster is created from the source DB cluster restore point with the
+-- same configuration as the original source DB cluster, except that the
+-- new DB cluster is created with the default security group.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html AWS API Reference> for RestoreDBClusterFromSnapshot.
+module Network.AWS.RDS.RestoreDBClusterFromSnapshot
+    (
+    -- * Creating a Request
+      restoreDBClusterFromSnapshot
+    , RestoreDBClusterFromSnapshot
+    -- * Request Lenses
+    , rdcfsEngineVersion
+    , rdcfsDBSubnetGroupName
+    , rdcfsAvailabilityZones
+    , rdcfsDatabaseName
+    , rdcfsVPCSecurityGroupIds
+    , rdcfsOptionGroupName
+    , rdcfsTags
+    , rdcfsPort
+    , rdcfsDBClusterIdentifier
+    , rdcfsSnapshotIdentifier
+    , rdcfsEngine
+
+    -- * Destructuring the Response
+    , restoreDBClusterFromSnapshotResponse
+    , RestoreDBClusterFromSnapshotResponse
+    -- * Response Lenses
+    , rdcfsrsDBCluster
+    , rdcfsrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'restoreDBClusterFromSnapshot' smart constructor.
+data RestoreDBClusterFromSnapshot = RestoreDBClusterFromSnapshot'
+    { _rdcfsEngineVersion       :: !(Maybe Text)
+    , _rdcfsDBSubnetGroupName   :: !(Maybe Text)
+    , _rdcfsAvailabilityZones   :: !(Maybe [Text])
+    , _rdcfsDatabaseName        :: !(Maybe Text)
+    , _rdcfsVPCSecurityGroupIds :: !(Maybe [Text])
+    , _rdcfsOptionGroupName     :: !(Maybe Text)
+    , _rdcfsTags                :: !(Maybe [Tag])
+    , _rdcfsPort                :: !(Maybe Int)
+    , _rdcfsDBClusterIdentifier :: !Text
+    , _rdcfsSnapshotIdentifier  :: !Text
+    , _rdcfsEngine              :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RestoreDBClusterFromSnapshot' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdcfsEngineVersion'
+--
+-- * 'rdcfsDBSubnetGroupName'
+--
+-- * 'rdcfsAvailabilityZones'
+--
+-- * 'rdcfsDatabaseName'
+--
+-- * 'rdcfsVPCSecurityGroupIds'
+--
+-- * 'rdcfsOptionGroupName'
+--
+-- * 'rdcfsTags'
+--
+-- * 'rdcfsPort'
+--
+-- * 'rdcfsDBClusterIdentifier'
+--
+-- * 'rdcfsSnapshotIdentifier'
+--
+-- * 'rdcfsEngine'
+restoreDBClusterFromSnapshot
+    :: Text -- ^ 'rdcfsDBClusterIdentifier'
+    -> Text -- ^ 'rdcfsSnapshotIdentifier'
+    -> Text -- ^ 'rdcfsEngine'
+    -> RestoreDBClusterFromSnapshot
+restoreDBClusterFromSnapshot pDBClusterIdentifier_ pSnapshotIdentifier_ pEngine_ =
+    RestoreDBClusterFromSnapshot'
+    { _rdcfsEngineVersion = Nothing
+    , _rdcfsDBSubnetGroupName = Nothing
+    , _rdcfsAvailabilityZones = Nothing
+    , _rdcfsDatabaseName = Nothing
+    , _rdcfsVPCSecurityGroupIds = Nothing
+    , _rdcfsOptionGroupName = Nothing
+    , _rdcfsTags = Nothing
+    , _rdcfsPort = Nothing
+    , _rdcfsDBClusterIdentifier = pDBClusterIdentifier_
+    , _rdcfsSnapshotIdentifier = pSnapshotIdentifier_
+    , _rdcfsEngine = pEngine_
+    }
+
+-- | The version of the database engine to use for the new DB cluster.
+rdcfsEngineVersion :: Lens' RestoreDBClusterFromSnapshot (Maybe Text)
+rdcfsEngineVersion = lens _rdcfsEngineVersion (\ s a -> s{_rdcfsEngineVersion = a});
+
+-- | The name of the DB subnet group to use for the new DB cluster.
+rdcfsDBSubnetGroupName :: Lens' RestoreDBClusterFromSnapshot (Maybe Text)
+rdcfsDBSubnetGroupName = lens _rdcfsDBSubnetGroupName (\ s a -> s{_rdcfsDBSubnetGroupName = a});
+
+-- | Provides the list of EC2 Availability Zones that instances in the
+-- restored DB cluster can be created in.
+rdcfsAvailabilityZones :: Lens' RestoreDBClusterFromSnapshot [Text]
+rdcfsAvailabilityZones = lens _rdcfsAvailabilityZones (\ s a -> s{_rdcfsAvailabilityZones = a}) . _Default . _Coerce;
+
+-- | The database name for the restored DB cluster.
+rdcfsDatabaseName :: Lens' RestoreDBClusterFromSnapshot (Maybe Text)
+rdcfsDatabaseName = lens _rdcfsDatabaseName (\ s a -> s{_rdcfsDatabaseName = a});
+
+-- | A list of VPC security groups that the new DB cluster will belong to.
+rdcfsVPCSecurityGroupIds :: Lens' RestoreDBClusterFromSnapshot [Text]
+rdcfsVPCSecurityGroupIds = lens _rdcfsVPCSecurityGroupIds (\ s a -> s{_rdcfsVPCSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | The name of the option group to use for the restored DB cluster.
+rdcfsOptionGroupName :: Lens' RestoreDBClusterFromSnapshot (Maybe Text)
+rdcfsOptionGroupName = lens _rdcfsOptionGroupName (\ s a -> s{_rdcfsOptionGroupName = a});
+
+-- | The tags to be assigned to the restored DB cluster.
+rdcfsTags :: Lens' RestoreDBClusterFromSnapshot [Tag]
+rdcfsTags = lens _rdcfsTags (\ s a -> s{_rdcfsTags = a}) . _Default . _Coerce;
+
+-- | The port number on which the new DB cluster accepts connections.
+--
+-- Constraints: Value must be '1150-65535'
+--
+-- Default: The same port as the original DB cluster.
+rdcfsPort :: Lens' RestoreDBClusterFromSnapshot (Maybe Int)
+rdcfsPort = lens _rdcfsPort (\ s a -> s{_rdcfsPort = a});
+
+-- | The name of the DB cluster to create from the DB cluster snapshot. This
+-- parameter isn\'t case-sensitive.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 255 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+--
+-- Example: 'my-snapshot-id'
+rdcfsDBClusterIdentifier :: Lens' RestoreDBClusterFromSnapshot Text
+rdcfsDBClusterIdentifier = lens _rdcfsDBClusterIdentifier (\ s a -> s{_rdcfsDBClusterIdentifier = a});
+
+-- | The identifier for the DB cluster snapshot to restore from.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+rdcfsSnapshotIdentifier :: Lens' RestoreDBClusterFromSnapshot Text
+rdcfsSnapshotIdentifier = lens _rdcfsSnapshotIdentifier (\ s a -> s{_rdcfsSnapshotIdentifier = a});
+
+-- | The database engine to use for the new DB cluster.
+--
+-- Default: The same as source
+--
+-- Constraint: Must be compatible with the engine of the source
+rdcfsEngine :: Lens' RestoreDBClusterFromSnapshot Text
+rdcfsEngine = lens _rdcfsEngine (\ s a -> s{_rdcfsEngine = a});
+
+instance AWSRequest RestoreDBClusterFromSnapshot
+         where
+        type Sv RestoreDBClusterFromSnapshot = RDS
+        type Rs RestoreDBClusterFromSnapshot =
+             RestoreDBClusterFromSnapshotResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "RestoreDBClusterFromSnapshotResult"
+              (\ s h x ->
+                 RestoreDBClusterFromSnapshotResponse' <$>
+                   (x .@? "DBCluster") <*> (pure (fromEnum s)))
+
+instance ToHeaders RestoreDBClusterFromSnapshot where
+        toHeaders = const mempty
+
+instance ToPath RestoreDBClusterFromSnapshot where
+        toPath = const "/"
+
+instance ToQuery RestoreDBClusterFromSnapshot where
+        toQuery RestoreDBClusterFromSnapshot'{..}
+          = mconcat
+              ["Action" =:
+                 ("RestoreDBClusterFromSnapshot" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "EngineVersion" =: _rdcfsEngineVersion,
+               "DBSubnetGroupName" =: _rdcfsDBSubnetGroupName,
+               "AvailabilityZones" =:
+                 toQuery
+                   (toQueryList "AvailabilityZone" <$>
+                      _rdcfsAvailabilityZones),
+               "DatabaseName" =: _rdcfsDatabaseName,
+               "VpcSecurityGroupIds" =:
+                 toQuery
+                   (toQueryList "VpcSecurityGroupId" <$>
+                      _rdcfsVPCSecurityGroupIds),
+               "OptionGroupName" =: _rdcfsOptionGroupName,
+               "Tags" =: toQuery (toQueryList "Tag" <$> _rdcfsTags),
+               "Port" =: _rdcfsPort,
+               "DBClusterIdentifier" =: _rdcfsDBClusterIdentifier,
+               "SnapshotIdentifier" =: _rdcfsSnapshotIdentifier,
+               "Engine" =: _rdcfsEngine]
+
+-- | /See:/ 'restoreDBClusterFromSnapshotResponse' smart constructor.
+data RestoreDBClusterFromSnapshotResponse = RestoreDBClusterFromSnapshotResponse'
+    { _rdcfsrsDBCluster :: !(Maybe DBCluster)
+    , _rdcfsrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RestoreDBClusterFromSnapshotResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdcfsrsDBCluster'
+--
+-- * 'rdcfsrsStatus'
+restoreDBClusterFromSnapshotResponse
+    :: Int -- ^ 'rdcfsrsStatus'
+    -> RestoreDBClusterFromSnapshotResponse
+restoreDBClusterFromSnapshotResponse pStatus_ =
+    RestoreDBClusterFromSnapshotResponse'
+    { _rdcfsrsDBCluster = Nothing
+    , _rdcfsrsStatus = pStatus_
+    }
+
+-- | Undocumented member.
+rdcfsrsDBCluster :: Lens' RestoreDBClusterFromSnapshotResponse (Maybe DBCluster)
+rdcfsrsDBCluster = lens _rdcfsrsDBCluster (\ s a -> s{_rdcfsrsDBCluster = a});
+
+-- | The response status code.
+rdcfsrsStatus :: Lens' RestoreDBClusterFromSnapshotResponse Int
+rdcfsrsStatus = lens _rdcfsrsStatus (\ s a -> s{_rdcfsrsStatus = a});
diff --git a/gen/Network/AWS/RDS/RestoreDBClusterToPointInTime.hs b/gen/Network/AWS/RDS/RestoreDBClusterToPointInTime.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/RestoreDBClusterToPointInTime.hs
@@ -0,0 +1,255 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.RestoreDBClusterToPointInTime
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Restores a DB cluster to an arbitrary point in time. Users can restore
+-- to any point in time before 'LatestRestorableTime' for up to
+-- 'BackupRetentionPeriod' days. The target DB cluster is created from the
+-- source DB cluster with the same configuration as the original DB
+-- cluster, except that the new DB cluster is created with the default DB
+-- security group.
+--
+-- For more information on Amazon Aurora, see
+-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html Aurora on Amazon RDS>
+-- in the /Amazon RDS User Guide./
+--
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html AWS API Reference> for RestoreDBClusterToPointInTime.
+module Network.AWS.RDS.RestoreDBClusterToPointInTime
+    (
+    -- * Creating a Request
+      restoreDBClusterToPointInTime
+    , RestoreDBClusterToPointInTime
+    -- * Request Lenses
+    , rdctpitUseLatestRestorableTime
+    , rdctpitDBSubnetGroupName
+    , rdctpitVPCSecurityGroupIds
+    , rdctpitOptionGroupName
+    , rdctpitRestoreToTime
+    , rdctpitTags
+    , rdctpitPort
+    , rdctpitDBClusterIdentifier
+    , rdctpitSourceDBClusterIdentifier
+
+    -- * Destructuring the Response
+    , restoreDBClusterToPointInTimeResponse
+    , RestoreDBClusterToPointInTimeResponse
+    -- * Response Lenses
+    , rdctpitrsDBCluster
+    , rdctpitrsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- |
+--
+-- /See:/ 'restoreDBClusterToPointInTime' smart constructor.
+data RestoreDBClusterToPointInTime = RestoreDBClusterToPointInTime'
+    { _rdctpitUseLatestRestorableTime   :: !(Maybe Bool)
+    , _rdctpitDBSubnetGroupName         :: !(Maybe Text)
+    , _rdctpitVPCSecurityGroupIds       :: !(Maybe [Text])
+    , _rdctpitOptionGroupName           :: !(Maybe Text)
+    , _rdctpitRestoreToTime             :: !(Maybe ISO8601)
+    , _rdctpitTags                      :: !(Maybe [Tag])
+    , _rdctpitPort                      :: !(Maybe Int)
+    , _rdctpitDBClusterIdentifier       :: !Text
+    , _rdctpitSourceDBClusterIdentifier :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RestoreDBClusterToPointInTime' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdctpitUseLatestRestorableTime'
+--
+-- * 'rdctpitDBSubnetGroupName'
+--
+-- * 'rdctpitVPCSecurityGroupIds'
+--
+-- * 'rdctpitOptionGroupName'
+--
+-- * 'rdctpitRestoreToTime'
+--
+-- * 'rdctpitTags'
+--
+-- * 'rdctpitPort'
+--
+-- * 'rdctpitDBClusterIdentifier'
+--
+-- * 'rdctpitSourceDBClusterIdentifier'
+restoreDBClusterToPointInTime
+    :: Text -- ^ 'rdctpitDBClusterIdentifier'
+    -> Text -- ^ 'rdctpitSourceDBClusterIdentifier'
+    -> RestoreDBClusterToPointInTime
+restoreDBClusterToPointInTime pDBClusterIdentifier_ pSourceDBClusterIdentifier_ =
+    RestoreDBClusterToPointInTime'
+    { _rdctpitUseLatestRestorableTime = Nothing
+    , _rdctpitDBSubnetGroupName = Nothing
+    , _rdctpitVPCSecurityGroupIds = Nothing
+    , _rdctpitOptionGroupName = Nothing
+    , _rdctpitRestoreToTime = Nothing
+    , _rdctpitTags = Nothing
+    , _rdctpitPort = Nothing
+    , _rdctpitDBClusterIdentifier = pDBClusterIdentifier_
+    , _rdctpitSourceDBClusterIdentifier = pSourceDBClusterIdentifier_
+    }
+
+-- | A value that is set to 'true' to restore the DB cluster to the latest
+-- restorable backup time, and 'false' otherwise.
+--
+-- Default: 'false'
+--
+-- Constraints: Cannot be specified if 'RestoreToTime' parameter is
+-- provided.
+rdctpitUseLatestRestorableTime :: Lens' RestoreDBClusterToPointInTime (Maybe Bool)
+rdctpitUseLatestRestorableTime = lens _rdctpitUseLatestRestorableTime (\ s a -> s{_rdctpitUseLatestRestorableTime = a});
+
+-- | The DB subnet group name to use for the new DB cluster.
+rdctpitDBSubnetGroupName :: Lens' RestoreDBClusterToPointInTime (Maybe Text)
+rdctpitDBSubnetGroupName = lens _rdctpitDBSubnetGroupName (\ s a -> s{_rdctpitDBSubnetGroupName = a});
+
+-- | A lst of VPC security groups that the new DB cluster belongs to.
+rdctpitVPCSecurityGroupIds :: Lens' RestoreDBClusterToPointInTime [Text]
+rdctpitVPCSecurityGroupIds = lens _rdctpitVPCSecurityGroupIds (\ s a -> s{_rdctpitVPCSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | The name of the option group for the new DB cluster.
+rdctpitOptionGroupName :: Lens' RestoreDBClusterToPointInTime (Maybe Text)
+rdctpitOptionGroupName = lens _rdctpitOptionGroupName (\ s a -> s{_rdctpitOptionGroupName = a});
+
+-- | The date and time to restore the DB cluster to.
+--
+-- Valid Values: Value must be a time in Universal Coordinated Time (UTC)
+-- format
+--
+-- Constraints:
+--
+-- -   Must be before the latest restorable time for the DB instance
+-- -   Cannot be specified if 'UseLatestRestorableTime' parameter is true
+--
+-- Example: '2015-03-07T23:45:00Z'
+rdctpitRestoreToTime :: Lens' RestoreDBClusterToPointInTime (Maybe UTCTime)
+rdctpitRestoreToTime = lens _rdctpitRestoreToTime (\ s a -> s{_rdctpitRestoreToTime = a}) . mapping _Time;
+
+-- | Undocumented member.
+rdctpitTags :: Lens' RestoreDBClusterToPointInTime [Tag]
+rdctpitTags = lens _rdctpitTags (\ s a -> s{_rdctpitTags = a}) . _Default . _Coerce;
+
+-- | The port number on which the new DB cluster accepts connections.
+--
+-- Constraints: Value must be '1150-65535'
+--
+-- Default: The same port as the original DB cluster.
+rdctpitPort :: Lens' RestoreDBClusterToPointInTime (Maybe Int)
+rdctpitPort = lens _rdctpitPort (\ s a -> s{_rdctpitPort = a});
+
+-- | The name of the new DB cluster to be created.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+rdctpitDBClusterIdentifier :: Lens' RestoreDBClusterToPointInTime Text
+rdctpitDBClusterIdentifier = lens _rdctpitDBClusterIdentifier (\ s a -> s{_rdctpitDBClusterIdentifier = a});
+
+-- | The identifier of the source DB cluster from which to restore.
+--
+-- Constraints:
+--
+-- -   Must be the identifier of an existing database instance
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+rdctpitSourceDBClusterIdentifier :: Lens' RestoreDBClusterToPointInTime Text
+rdctpitSourceDBClusterIdentifier = lens _rdctpitSourceDBClusterIdentifier (\ s a -> s{_rdctpitSourceDBClusterIdentifier = a});
+
+instance AWSRequest RestoreDBClusterToPointInTime
+         where
+        type Sv RestoreDBClusterToPointInTime = RDS
+        type Rs RestoreDBClusterToPointInTime =
+             RestoreDBClusterToPointInTimeResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "RestoreDBClusterToPointInTimeResult"
+              (\ s h x ->
+                 RestoreDBClusterToPointInTimeResponse' <$>
+                   (x .@? "DBCluster") <*> (pure (fromEnum s)))
+
+instance ToHeaders RestoreDBClusterToPointInTime
+         where
+        toHeaders = const mempty
+
+instance ToPath RestoreDBClusterToPointInTime where
+        toPath = const "/"
+
+instance ToQuery RestoreDBClusterToPointInTime where
+        toQuery RestoreDBClusterToPointInTime'{..}
+          = mconcat
+              ["Action" =:
+                 ("RestoreDBClusterToPointInTime" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "UseLatestRestorableTime" =:
+                 _rdctpitUseLatestRestorableTime,
+               "DBSubnetGroupName" =: _rdctpitDBSubnetGroupName,
+               "VpcSecurityGroupIds" =:
+                 toQuery
+                   (toQueryList "VpcSecurityGroupId" <$>
+                      _rdctpitVPCSecurityGroupIds),
+               "OptionGroupName" =: _rdctpitOptionGroupName,
+               "RestoreToTime" =: _rdctpitRestoreToTime,
+               "Tags" =:
+                 toQuery (toQueryList "Tag" <$> _rdctpitTags),
+               "Port" =: _rdctpitPort,
+               "DBClusterIdentifier" =: _rdctpitDBClusterIdentifier,
+               "SourceDBClusterIdentifier" =:
+                 _rdctpitSourceDBClusterIdentifier]
+
+-- | /See:/ 'restoreDBClusterToPointInTimeResponse' smart constructor.
+data RestoreDBClusterToPointInTimeResponse = RestoreDBClusterToPointInTimeResponse'
+    { _rdctpitrsDBCluster :: !(Maybe DBCluster)
+    , _rdctpitrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RestoreDBClusterToPointInTimeResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdctpitrsDBCluster'
+--
+-- * 'rdctpitrsStatus'
+restoreDBClusterToPointInTimeResponse
+    :: Int -- ^ 'rdctpitrsStatus'
+    -> RestoreDBClusterToPointInTimeResponse
+restoreDBClusterToPointInTimeResponse pStatus_ =
+    RestoreDBClusterToPointInTimeResponse'
+    { _rdctpitrsDBCluster = Nothing
+    , _rdctpitrsStatus = pStatus_
+    }
+
+-- | Undocumented member.
+rdctpitrsDBCluster :: Lens' RestoreDBClusterToPointInTimeResponse (Maybe DBCluster)
+rdctpitrsDBCluster = lens _rdctpitrsDBCluster (\ s a -> s{_rdctpitrsDBCluster = a});
+
+-- | The response status code.
+rdctpitrsStatus :: Lens' RestoreDBClusterToPointInTimeResponse Int
+rdctpitrsStatus = lens _rdctpitrsStatus (\ s a -> s{_rdctpitrsStatus = a});
diff --git a/gen/Network/AWS/RDS/RestoreDBInstanceFromDBSnapshot.hs b/gen/Network/AWS/RDS/RestoreDBInstanceFromDBSnapshot.hs
--- a/gen/Network/AWS/RDS/RestoreDBInstanceFromDBSnapshot.hs
+++ b/gen/Network/AWS/RDS/RestoreDBInstanceFromDBSnapshot.hs
@@ -1,231 +1,247 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.RestoreDBInstanceFromDBSnapshot
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a new DB instance from a DB snapshot. The target database is created
--- from the source database restore point with the same configuration as the
--- original source database, except that the new RDS instance is created with
--- the default security group.
+-- Creates a new DB instance from a DB snapshot. The target database is
+-- created from the source database restore point with the most of original
+-- configuration, but in a system chosen availability zone with the default
+-- security group, the default subnet group, and the default DB parameter
+-- group. By default, the new DB instance is created as a single-AZ
+-- deployment except when the instance is a SQL Server instance that has an
+-- option group that is associated with mirroring; in this case, the
+-- instance becomes a mirrored AZ deployment and not a single-AZ
+-- deployment.
 --
 -- If your intent is to replace your original DB instance with the new,
--- restored DB instance, then rename your original DB instance before you call
--- the RestoreDBInstanceFromDBSnapshot action. RDS does not allow two DB
--- instances with the same name. Once you have renamed your original DB instance
--- with a different identifier, then you can pass the original name of the DB
--- instance as the DBInstanceIdentifier in the call to the
--- RestoreDBInstanceFromDBSnapshot action. The result is that you will replace
--- the original DB instance with the DB instance created from the snapshot.
+-- restored DB instance, then rename your original DB instance before you
+-- call the RestoreDBInstanceFromDBSnapshot action. RDS does not allow two
+-- DB instances with the same name. Once you have renamed your original DB
+-- instance with a different identifier, then you can pass the original
+-- name of the DB instance as the DBInstanceIdentifier in the call to the
+-- RestoreDBInstanceFromDBSnapshot action. The result is that you will
+-- replace the original DB instance with the DB instance created from the
+-- snapshot.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html AWS API Reference> for RestoreDBInstanceFromDBSnapshot.
 module Network.AWS.RDS.RestoreDBInstanceFromDBSnapshot
     (
-    -- * Request
-      RestoreDBInstanceFromDBSnapshot
-    -- ** Request constructor
-    , restoreDBInstanceFromDBSnapshot
-    -- ** Request lenses
-    , rdbifdbsAutoMinorVersionUpgrade
-    , rdbifdbsAvailabilityZone
-    , rdbifdbsDBInstanceClass
-    , rdbifdbsDBInstanceIdentifier
-    , rdbifdbsDBName
-    , rdbifdbsDBSnapshotIdentifier
-    , rdbifdbsDBSubnetGroupName
-    , rdbifdbsEngine
-    , rdbifdbsIops
-    , rdbifdbsLicenseModel
-    , rdbifdbsMultiAZ
-    , rdbifdbsOptionGroupName
-    , rdbifdbsPort
-    , rdbifdbsPubliclyAccessible
-    , rdbifdbsStorageType
-    , rdbifdbsTags
-    , rdbifdbsTdeCredentialArn
-    , rdbifdbsTdeCredentialPassword
+    -- * Creating a Request
+      restoreDBInstanceFromDBSnapshot
+    , RestoreDBInstanceFromDBSnapshot
+    -- * Request Lenses
+    , rdifdsDBSecurityGroups
+    , rdifdsAutoMinorVersionUpgrade
+    , rdifdsPubliclyAccessible
+    , rdifdsDBSubnetGroupName
+    , rdifdsIOPS
+    , rdifdsDomain
+    , rdifdsEngine
+    , rdifdsTDECredentialPassword
+    , rdifdsDBInstanceClass
+    , rdifdsLicenseModel
+    , rdifdsAvailabilityZone
+    , rdifdsVPCSecurityGroupIds
+    , rdifdsMultiAZ
+    , rdifdsTDECredentialARN
+    , rdifdsOptionGroupName
+    , rdifdsCopyTagsToSnapshot
+    , rdifdsDBName
+    , rdifdsTags
+    , rdifdsPort
+    , rdifdsStorageType
+    , rdifdsDBInstanceIdentifier
+    , rdifdsDBSnapshotIdentifier
 
-    -- * Response
-    , RestoreDBInstanceFromDBSnapshotResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , restoreDBInstanceFromDBSnapshotResponse
-    -- ** Response lenses
-    , rdbifdbsrDBInstance
+    , RestoreDBInstanceFromDBSnapshotResponse
+    -- * Response Lenses
+    , rdifdsrsDBInstance
+    , rdifdsrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data RestoreDBInstanceFromDBSnapshot = RestoreDBInstanceFromDBSnapshot
-    { _rdbifdbsAutoMinorVersionUpgrade :: Maybe Bool
-    , _rdbifdbsAvailabilityZone        :: Maybe Text
-    , _rdbifdbsDBInstanceClass         :: Maybe Text
-    , _rdbifdbsDBInstanceIdentifier    :: Text
-    , _rdbifdbsDBName                  :: Maybe Text
-    , _rdbifdbsDBSnapshotIdentifier    :: Text
-    , _rdbifdbsDBSubnetGroupName       :: Maybe Text
-    , _rdbifdbsEngine                  :: Maybe Text
-    , _rdbifdbsIops                    :: Maybe Int
-    , _rdbifdbsLicenseModel            :: Maybe Text
-    , _rdbifdbsMultiAZ                 :: Maybe Bool
-    , _rdbifdbsOptionGroupName         :: Maybe Text
-    , _rdbifdbsPort                    :: Maybe Int
-    , _rdbifdbsPubliclyAccessible      :: Maybe Bool
-    , _rdbifdbsStorageType             :: Maybe Text
-    , _rdbifdbsTags                    :: List "member" Tag
-    , _rdbifdbsTdeCredentialArn        :: Maybe Text
-    , _rdbifdbsTdeCredentialPassword   :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- |
+--
+-- /See:/ 'restoreDBInstanceFromDBSnapshot' smart constructor.
+data RestoreDBInstanceFromDBSnapshot = RestoreDBInstanceFromDBSnapshot'
+    { _rdifdsDBSecurityGroups        :: !(Maybe [Text])
+    , _rdifdsAutoMinorVersionUpgrade :: !(Maybe Bool)
+    , _rdifdsPubliclyAccessible      :: !(Maybe Bool)
+    , _rdifdsDBSubnetGroupName       :: !(Maybe Text)
+    , _rdifdsIOPS                    :: !(Maybe Int)
+    , _rdifdsDomain                  :: !(Maybe Text)
+    , _rdifdsEngine                  :: !(Maybe Text)
+    , _rdifdsTDECredentialPassword   :: !(Maybe Text)
+    , _rdifdsDBInstanceClass         :: !(Maybe Text)
+    , _rdifdsLicenseModel            :: !(Maybe Text)
+    , _rdifdsAvailabilityZone        :: !(Maybe Text)
+    , _rdifdsVPCSecurityGroupIds     :: !(Maybe [Text])
+    , _rdifdsMultiAZ                 :: !(Maybe Bool)
+    , _rdifdsTDECredentialARN        :: !(Maybe Text)
+    , _rdifdsOptionGroupName         :: !(Maybe Text)
+    , _rdifdsCopyTagsToSnapshot      :: !(Maybe Bool)
+    , _rdifdsDBName                  :: !(Maybe Text)
+    , _rdifdsTags                    :: !(Maybe [Tag])
+    , _rdifdsPort                    :: !(Maybe Int)
+    , _rdifdsStorageType             :: !(Maybe Text)
+    , _rdifdsDBInstanceIdentifier    :: !Text
+    , _rdifdsDBSnapshotIdentifier    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'RestoreDBInstanceFromDBSnapshot' constructor.
+-- | Creates a value of 'RestoreDBInstanceFromDBSnapshot' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rdbifdbsAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'
+-- * 'rdifdsDBSecurityGroups'
 --
--- * 'rdbifdbsAvailabilityZone' @::@ 'Maybe' 'Text'
+-- * 'rdifdsAutoMinorVersionUpgrade'
 --
--- * 'rdbifdbsDBInstanceClass' @::@ 'Maybe' 'Text'
+-- * 'rdifdsPubliclyAccessible'
 --
--- * 'rdbifdbsDBInstanceIdentifier' @::@ 'Text'
+-- * 'rdifdsDBSubnetGroupName'
 --
--- * 'rdbifdbsDBName' @::@ 'Maybe' 'Text'
+-- * 'rdifdsIOPS'
 --
--- * 'rdbifdbsDBSnapshotIdentifier' @::@ 'Text'
+-- * 'rdifdsDomain'
 --
--- * 'rdbifdbsDBSubnetGroupName' @::@ 'Maybe' 'Text'
+-- * 'rdifdsEngine'
 --
--- * 'rdbifdbsEngine' @::@ 'Maybe' 'Text'
+-- * 'rdifdsTDECredentialPassword'
 --
--- * 'rdbifdbsIops' @::@ 'Maybe' 'Int'
+-- * 'rdifdsDBInstanceClass'
 --
--- * 'rdbifdbsLicenseModel' @::@ 'Maybe' 'Text'
+-- * 'rdifdsLicenseModel'
 --
--- * 'rdbifdbsMultiAZ' @::@ 'Maybe' 'Bool'
+-- * 'rdifdsAvailabilityZone'
 --
--- * 'rdbifdbsOptionGroupName' @::@ 'Maybe' 'Text'
+-- * 'rdifdsVPCSecurityGroupIds'
 --
--- * 'rdbifdbsPort' @::@ 'Maybe' 'Int'
+-- * 'rdifdsMultiAZ'
 --
--- * 'rdbifdbsPubliclyAccessible' @::@ 'Maybe' 'Bool'
+-- * 'rdifdsTDECredentialARN'
 --
--- * 'rdbifdbsStorageType' @::@ 'Maybe' 'Text'
+-- * 'rdifdsOptionGroupName'
 --
--- * 'rdbifdbsTags' @::@ ['Tag']
+-- * 'rdifdsCopyTagsToSnapshot'
 --
--- * 'rdbifdbsTdeCredentialArn' @::@ 'Maybe' 'Text'
+-- * 'rdifdsDBName'
 --
--- * 'rdbifdbsTdeCredentialPassword' @::@ 'Maybe' 'Text'
+-- * 'rdifdsTags'
 --
-restoreDBInstanceFromDBSnapshot :: Text -- ^ 'rdbifdbsDBInstanceIdentifier'
-                                -> Text -- ^ 'rdbifdbsDBSnapshotIdentifier'
-                                -> RestoreDBInstanceFromDBSnapshot
-restoreDBInstanceFromDBSnapshot p1 p2 = RestoreDBInstanceFromDBSnapshot
-    { _rdbifdbsDBInstanceIdentifier    = p1
-    , _rdbifdbsDBSnapshotIdentifier    = p2
-    , _rdbifdbsDBInstanceClass         = Nothing
-    , _rdbifdbsPort                    = Nothing
-    , _rdbifdbsAvailabilityZone        = Nothing
-    , _rdbifdbsDBSubnetGroupName       = Nothing
-    , _rdbifdbsMultiAZ                 = Nothing
-    , _rdbifdbsPubliclyAccessible      = Nothing
-    , _rdbifdbsAutoMinorVersionUpgrade = Nothing
-    , _rdbifdbsLicenseModel            = Nothing
-    , _rdbifdbsDBName                  = Nothing
-    , _rdbifdbsEngine                  = Nothing
-    , _rdbifdbsIops                    = Nothing
-    , _rdbifdbsOptionGroupName         = Nothing
-    , _rdbifdbsTags                    = mempty
-    , _rdbifdbsStorageType             = Nothing
-    , _rdbifdbsTdeCredentialArn        = Nothing
-    , _rdbifdbsTdeCredentialPassword   = Nothing
-    }
-
--- | Indicates that minor version upgrades will be applied automatically to the
--- DB instance during the maintenance window.
-rdbifdbsAutoMinorVersionUpgrade :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Bool)
-rdbifdbsAutoMinorVersionUpgrade =
-    lens _rdbifdbsAutoMinorVersionUpgrade
-        (\s a -> s { _rdbifdbsAutoMinorVersionUpgrade = a })
-
--- | The EC2 Availability Zone that the database instance will be created in.
+-- * 'rdifdsPort'
 --
--- Default: A random, system-chosen Availability Zone.
+-- * 'rdifdsStorageType'
 --
--- Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ
--- parameter is set to 'true'.
+-- * 'rdifdsDBInstanceIdentifier'
 --
--- Example: 'us-east-1a'
-rdbifdbsAvailabilityZone :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
-rdbifdbsAvailabilityZone =
-    lens _rdbifdbsAvailabilityZone
-        (\s a -> s { _rdbifdbsAvailabilityZone = a })
+-- * 'rdifdsDBSnapshotIdentifier'
+restoreDBInstanceFromDBSnapshot
+    :: Text -- ^ 'rdifdsDBInstanceIdentifier'
+    -> Text -- ^ 'rdifdsDBSnapshotIdentifier'
+    -> RestoreDBInstanceFromDBSnapshot
+restoreDBInstanceFromDBSnapshot pDBInstanceIdentifier_ pDBSnapshotIdentifier_ =
+    RestoreDBInstanceFromDBSnapshot'
+    { _rdifdsDBSecurityGroups = Nothing
+    , _rdifdsAutoMinorVersionUpgrade = Nothing
+    , _rdifdsPubliclyAccessible = Nothing
+    , _rdifdsDBSubnetGroupName = Nothing
+    , _rdifdsIOPS = Nothing
+    , _rdifdsDomain = Nothing
+    , _rdifdsEngine = Nothing
+    , _rdifdsTDECredentialPassword = Nothing
+    , _rdifdsDBInstanceClass = Nothing
+    , _rdifdsLicenseModel = Nothing
+    , _rdifdsAvailabilityZone = Nothing
+    , _rdifdsVPCSecurityGroupIds = Nothing
+    , _rdifdsMultiAZ = Nothing
+    , _rdifdsTDECredentialARN = Nothing
+    , _rdifdsOptionGroupName = Nothing
+    , _rdifdsCopyTagsToSnapshot = Nothing
+    , _rdifdsDBName = Nothing
+    , _rdifdsTags = Nothing
+    , _rdifdsPort = Nothing
+    , _rdifdsStorageType = Nothing
+    , _rdifdsDBInstanceIdentifier = pDBInstanceIdentifier_
+    , _rdifdsDBSnapshotIdentifier = pDBSnapshotIdentifier_
+    }
 
--- | The compute and memory capacity of the Amazon RDS DB instance.
+-- | A list of DB security groups to associate with this DB instance.
 --
--- Valid Values: 'db.t1.micro | db.m1.small | db.m1.medium | db.m1.large |db.m1.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large |db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge |db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium'
-rdbifdbsDBInstanceClass :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
-rdbifdbsDBInstanceClass =
-    lens _rdbifdbsDBInstanceClass (\s a -> s { _rdbifdbsDBInstanceClass = a })
+-- Default: The default DB security group for the database engine.
+rdifdsDBSecurityGroups :: Lens' RestoreDBInstanceFromDBSnapshot [Text]
+rdifdsDBSecurityGroups = lens _rdifdsDBSecurityGroups (\ s a -> s{_rdifdsDBSecurityGroups = a}) . _Default . _Coerce;
 
--- | Name of the DB instance to create from the DB snapshot. This parameter isn't
--- case sensitive.
---
--- Constraints:
---
--- Must contain from 1 to 255 alphanumeric characters or hyphens First
--- character must be a letter Cannot end with a hyphen or contain two
--- consecutive hyphens  Example: 'my-snapshot-id'
-rdbifdbsDBInstanceIdentifier :: Lens' RestoreDBInstanceFromDBSnapshot Text
-rdbifdbsDBInstanceIdentifier =
-    lens _rdbifdbsDBInstanceIdentifier
-        (\s a -> s { _rdbifdbsDBInstanceIdentifier = a })
+-- | Indicates that minor version upgrades will be applied automatically to
+-- the DB instance during the maintenance window.
+rdifdsAutoMinorVersionUpgrade :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Bool)
+rdifdsAutoMinorVersionUpgrade = lens _rdifdsAutoMinorVersionUpgrade (\ s a -> s{_rdifdsAutoMinorVersionUpgrade = a});
 
--- | The database name for the restored DB instance.
+-- | Specifies the accessibility options for the DB instance. A value of true
+-- specifies an Internet-facing instance with a publicly resolvable DNS
+-- name, which resolves to a public IP address. A value of false specifies
+-- an internal instance with a DNS name that resolves to a private IP
+-- address.
 --
--- This parameter doesn't apply to the MySQL engine.
+-- Default: The default behavior varies depending on whether a VPC has been
+-- requested or not. The following list shows the default behavior in each
+-- case.
 --
+-- -   __Default VPC:__ true
+-- -   __VPC:__ false
 --
-rdbifdbsDBName :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
-rdbifdbsDBName = lens _rdbifdbsDBName (\s a -> s { _rdbifdbsDBName = a })
+-- If no DB subnet group has been specified as part of the request and the
+-- PubliclyAccessible value has not been set, the DB instance will be
+-- publicly accessible. If a specific DB subnet group has been specified as
+-- part of the request and the PubliclyAccessible value has not been set,
+-- the DB instance will be private.
+rdifdsPubliclyAccessible :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Bool)
+rdifdsPubliclyAccessible = lens _rdifdsPubliclyAccessible (\ s a -> s{_rdifdsPubliclyAccessible = a});
 
--- | The identifier for the DB snapshot to restore from.
+-- | The DB subnet group name to use for the new instance.
+rdifdsDBSubnetGroupName :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
+rdifdsDBSubnetGroupName = lens _rdifdsDBSubnetGroupName (\ s a -> s{_rdifdsDBSubnetGroupName = a});
+
+-- | Specifies the amount of provisioned IOPS for the DB instance, expressed
+-- in I\/O operations per second. If this parameter is not specified, the
+-- IOPS value will be taken from the backup. If this parameter is set to 0,
+-- the new instance will be converted to a non-PIOPS instance, which will
+-- take additional time, though your DB instance will be available for
+-- connections before the conversion starts.
 --
--- Constraints:
+-- Constraints: Must be an integer greater than 1000.
 --
--- Must contain from 1 to 63 alphanumeric characters or hyphens First
--- character must be a letter Cannot end with a hyphen or contain two
--- consecutive hyphens
-rdbifdbsDBSnapshotIdentifier :: Lens' RestoreDBInstanceFromDBSnapshot Text
-rdbifdbsDBSnapshotIdentifier =
-    lens _rdbifdbsDBSnapshotIdentifier
-        (\s a -> s { _rdbifdbsDBSnapshotIdentifier = a })
+-- __SQL Server__
+--
+-- Setting the IOPS value for the SQL Server database engine is not
+-- supported.
+rdifdsIOPS :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Int)
+rdifdsIOPS = lens _rdifdsIOPS (\ s a -> s{_rdifdsIOPS = a});
 
--- | The DB subnet group name to use for the new instance.
-rdbifdbsDBSubnetGroupName :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
-rdbifdbsDBSubnetGroupName =
-    lens _rdbifdbsDBSubnetGroupName
-        (\s a -> s { _rdbifdbsDBSubnetGroupName = a })
+-- | Specify the Active Directory Domain to restore the instance in.
+rdifdsDomain :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
+rdifdsDomain = lens _rdifdsDomain (\ s a -> s{_rdifdsDomain = a});
 
 -- | The database engine to use for the new instance.
 --
@@ -233,157 +249,215 @@
 --
 -- Constraint: Must be compatible with the engine of the source
 --
--- Valid Values: 'MySQL' | 'oracle-se1' | 'oracle-se' | 'oracle-ee' | 'sqlserver-ee' | 'sqlserver-se' | 'sqlserver-ex' | 'sqlserver-web' | 'postgres'
-rdbifdbsEngine :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
-rdbifdbsEngine = lens _rdbifdbsEngine (\s a -> s { _rdbifdbsEngine = a })
+-- Valid Values: 'MySQL' | 'oracle-se1' | 'oracle-se' | 'oracle-ee' |
+-- 'sqlserver-ee' | 'sqlserver-se' | 'sqlserver-ex' | 'sqlserver-web' |
+-- 'postgres'
+rdifdsEngine :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
+rdifdsEngine = lens _rdifdsEngine (\ s a -> s{_rdifdsEngine = a});
 
--- | Specifies the amount of provisioned IOPS for the DB instance, expressed in
--- I/O operations per second. If this parameter is not specified, the IOPS value
--- will be taken from the backup. If this parameter is set to 0, the new
--- instance will be converted to a non-PIOPS instance, which will take
--- additional time, though your DB instance will be available for connections
--- before the conversion starts.
---
--- Constraints: Must be an integer greater than 1000.
---
--- SQL Server
+-- | The password for the given ARN from the Key Store in order to access the
+-- device.
+rdifdsTDECredentialPassword :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
+rdifdsTDECredentialPassword = lens _rdifdsTDECredentialPassword (\ s a -> s{_rdifdsTDECredentialPassword = a});
+
+-- | The compute and memory capacity of the Amazon RDS DB instance.
 --
--- Setting the IOPS value for the SQL Server database engine is not supported.
-rdbifdbsIops :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Int)
-rdbifdbsIops = lens _rdbifdbsIops (\s a -> s { _rdbifdbsIops = a })
+-- Valid Values:
+-- 'db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium'
+rdifdsDBInstanceClass :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
+rdifdsDBInstanceClass = lens _rdifdsDBInstanceClass (\ s a -> s{_rdifdsDBInstanceClass = a});
 
 -- | License model information for the restored DB instance.
 --
 -- Default: Same as source.
 --
--- Valid values: 'license-included' | 'bring-your-own-license' | 'general-public-license'
-rdbifdbsLicenseModel :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
-rdbifdbsLicenseModel =
-    lens _rdbifdbsLicenseModel (\s a -> s { _rdbifdbsLicenseModel = a })
+-- Valid values: 'license-included' | 'bring-your-own-license' |
+-- 'general-public-license'
+rdifdsLicenseModel :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
+rdifdsLicenseModel = lens _rdifdsLicenseModel (\ s a -> s{_rdifdsLicenseModel = a});
 
+-- | The EC2 Availability Zone that the database instance will be created in.
+--
+-- Default: A random, system-chosen Availability Zone.
+--
+-- Constraint: You cannot specify the AvailabilityZone parameter if the
+-- MultiAZ parameter is set to 'true'.
+--
+-- Example: 'us-east-1a'
+rdifdsAvailabilityZone :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
+rdifdsAvailabilityZone = lens _rdifdsAvailabilityZone (\ s a -> s{_rdifdsAvailabilityZone = a});
+
+-- | A list of EC2 VPC security groups to associate with this DB instance.
+--
+-- Default: The default EC2 VPC security group for the DB subnet group\'s
+-- VPC.
+rdifdsVPCSecurityGroupIds :: Lens' RestoreDBInstanceFromDBSnapshot [Text]
+rdifdsVPCSecurityGroupIds = lens _rdifdsVPCSecurityGroupIds (\ s a -> s{_rdifdsVPCSecurityGroupIds = a}) . _Default . _Coerce;
+
 -- | Specifies if the DB instance is a Multi-AZ deployment.
 --
--- Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ
--- parameter is set to 'true'.
-rdbifdbsMultiAZ :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Bool)
-rdbifdbsMultiAZ = lens _rdbifdbsMultiAZ (\s a -> s { _rdbifdbsMultiAZ = a })
+-- Constraint: You cannot specify the AvailabilityZone parameter if the
+-- MultiAZ parameter is set to 'true'.
+rdifdsMultiAZ :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Bool)
+rdifdsMultiAZ = lens _rdifdsMultiAZ (\ s a -> s{_rdifdsMultiAZ = a});
 
+-- | The ARN from the Key Store with which to associate the instance for TDE
+-- encryption.
+rdifdsTDECredentialARN :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
+rdifdsTDECredentialARN = lens _rdifdsTDECredentialARN (\ s a -> s{_rdifdsTDECredentialARN = a});
+
 -- | The name of the option group to be used for the restored DB instance.
 --
--- Permanent options, such as the TDE option for Oracle Advanced Security TDE,
--- cannot be removed from an option group, and that option group cannot be
--- removed from a DB instance once it is associated with a DB instance
-rdbifdbsOptionGroupName :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
-rdbifdbsOptionGroupName =
-    lens _rdbifdbsOptionGroupName (\s a -> s { _rdbifdbsOptionGroupName = a })
+-- Permanent options, such as the TDE option for Oracle Advanced Security
+-- TDE, cannot be removed from an option group, and that option group
+-- cannot be removed from a DB instance once it is associated with a DB
+-- instance
+rdifdsOptionGroupName :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
+rdifdsOptionGroupName = lens _rdifdsOptionGroupName (\ s a -> s{_rdifdsOptionGroupName = a});
 
+-- | This property is not currently implemented.
+rdifdsCopyTagsToSnapshot :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Bool)
+rdifdsCopyTagsToSnapshot = lens _rdifdsCopyTagsToSnapshot (\ s a -> s{_rdifdsCopyTagsToSnapshot = a});
+
+-- | The database name for the restored DB instance.
+--
+-- This parameter doesn\'t apply to the MySQL engine.
+rdifdsDBName :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
+rdifdsDBName = lens _rdifdsDBName (\ s a -> s{_rdifdsDBName = a});
+
+-- | Undocumented member.
+rdifdsTags :: Lens' RestoreDBInstanceFromDBSnapshot [Tag]
+rdifdsTags = lens _rdifdsTags (\ s a -> s{_rdifdsTags = a}) . _Default . _Coerce;
+
 -- | The port number on which the database accepts connections.
 --
 -- Default: The same port as the original DB instance
 --
 -- Constraints: Value must be '1150-65535'
-rdbifdbsPort :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Int)
-rdbifdbsPort = lens _rdbifdbsPort (\s a -> s { _rdbifdbsPort = a })
-
--- | Specifies the accessibility options for the DB instance. A value of true
--- specifies an Internet-facing instance with a publicly resolvable DNS name,
--- which resolves to a public IP address. A value of false specifies an internal
--- instance with a DNS name that resolves to a private IP address.
---
--- Default: The default behavior varies depending on whether a VPC has been
--- requested or not. The following list shows the default behavior in each case.
---
--- Default VPC: true  VPC: false   If no DB subnet group has been specified
--- as part of the request and the PubliclyAccessible value has not been set, the
--- DB instance will be publicly accessible. If a specific DB subnet group has
--- been specified as part of the request and the PubliclyAccessible value has
--- not been set, the DB instance will be private.
-rdbifdbsPubliclyAccessible :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Bool)
-rdbifdbsPubliclyAccessible =
-    lens _rdbifdbsPubliclyAccessible
-        (\s a -> s { _rdbifdbsPubliclyAccessible = a })
+rdifdsPort :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Int)
+rdifdsPort = lens _rdifdsPort (\ s a -> s{_rdifdsPort = a});
 
 -- | Specifies the storage type to be associated with the DB instance.
 --
 -- Valid values: 'standard | gp2 | io1'
 --
--- If you specify 'io1', you must also include a value for the 'Iops' parameter.
+-- If you specify 'io1', you must also include a value for the 'Iops'
+-- parameter.
 --
--- Default: 'io1' if the 'Iops' parameter is specified; otherwise 'standard'
-rdbifdbsStorageType :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
-rdbifdbsStorageType =
-    lens _rdbifdbsStorageType (\s a -> s { _rdbifdbsStorageType = a })
-
-rdbifdbsTags :: Lens' RestoreDBInstanceFromDBSnapshot [Tag]
-rdbifdbsTags = lens _rdbifdbsTags (\s a -> s { _rdbifdbsTags = a }) . _List
-
--- | The ARN from the Key Store with which to associate the instance for TDE
--- encryption.
-rdbifdbsTdeCredentialArn :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
-rdbifdbsTdeCredentialArn =
-    lens _rdbifdbsTdeCredentialArn
-        (\s a -> s { _rdbifdbsTdeCredentialArn = a })
-
--- | The password for the given ARN from the Key Store in order to access the
--- device.
-rdbifdbsTdeCredentialPassword :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
-rdbifdbsTdeCredentialPassword =
-    lens _rdbifdbsTdeCredentialPassword
-        (\s a -> s { _rdbifdbsTdeCredentialPassword = a })
-
-newtype RestoreDBInstanceFromDBSnapshotResponse = RestoreDBInstanceFromDBSnapshotResponse
-    { _rdbifdbsrDBInstance :: Maybe DBInstance
-    } deriving (Eq, Read, Show)
+-- Default: 'io1' if the 'Iops' parameter is specified; otherwise
+-- 'standard'
+rdifdsStorageType :: Lens' RestoreDBInstanceFromDBSnapshot (Maybe Text)
+rdifdsStorageType = lens _rdifdsStorageType (\ s a -> s{_rdifdsStorageType = a});
 
--- | 'RestoreDBInstanceFromDBSnapshotResponse' constructor.
+-- | Name of the DB instance to create from the DB snapshot. This parameter
+-- isn\'t case-sensitive.
 --
--- The fields accessible through corresponding lenses are:
+-- Constraints:
 --
--- * 'rdbifdbsrDBInstance' @::@ 'Maybe' 'DBInstance'
+-- -   Must contain from 1 to 255 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
 --
-restoreDBInstanceFromDBSnapshotResponse :: RestoreDBInstanceFromDBSnapshotResponse
-restoreDBInstanceFromDBSnapshotResponse = RestoreDBInstanceFromDBSnapshotResponse
-    { _rdbifdbsrDBInstance = Nothing
-    }
+-- Example: 'my-snapshot-id'
+rdifdsDBInstanceIdentifier :: Lens' RestoreDBInstanceFromDBSnapshot Text
+rdifdsDBInstanceIdentifier = lens _rdifdsDBInstanceIdentifier (\ s a -> s{_rdifdsDBInstanceIdentifier = a});
 
-rdbifdbsrDBInstance :: Lens' RestoreDBInstanceFromDBSnapshotResponse (Maybe DBInstance)
-rdbifdbsrDBInstance =
-    lens _rdbifdbsrDBInstance (\s a -> s { _rdbifdbsrDBInstance = a })
+-- | The identifier for the DB snapshot to restore from.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+rdifdsDBSnapshotIdentifier :: Lens' RestoreDBInstanceFromDBSnapshot Text
+rdifdsDBSnapshotIdentifier = lens _rdifdsDBSnapshotIdentifier (\ s a -> s{_rdifdsDBSnapshotIdentifier = a});
 
+instance AWSRequest RestoreDBInstanceFromDBSnapshot
+         where
+        type Sv RestoreDBInstanceFromDBSnapshot = RDS
+        type Rs RestoreDBInstanceFromDBSnapshot =
+             RestoreDBInstanceFromDBSnapshotResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "RestoreDBInstanceFromDBSnapshotResult"
+              (\ s h x ->
+                 RestoreDBInstanceFromDBSnapshotResponse' <$>
+                   (x .@? "DBInstance") <*> (pure (fromEnum s)))
+
+instance ToHeaders RestoreDBInstanceFromDBSnapshot
+         where
+        toHeaders = const mempty
+
 instance ToPath RestoreDBInstanceFromDBSnapshot where
-    toPath = const "/"
+        toPath = const "/"
 
-instance ToQuery RestoreDBInstanceFromDBSnapshot where
-    toQuery RestoreDBInstanceFromDBSnapshot{..} = mconcat
-        [ "AutoMinorVersionUpgrade" =? _rdbifdbsAutoMinorVersionUpgrade
-        , "AvailabilityZone"        =? _rdbifdbsAvailabilityZone
-        , "DBInstanceClass"         =? _rdbifdbsDBInstanceClass
-        , "DBInstanceIdentifier"    =? _rdbifdbsDBInstanceIdentifier
-        , "DBName"                  =? _rdbifdbsDBName
-        , "DBSnapshotIdentifier"    =? _rdbifdbsDBSnapshotIdentifier
-        , "DBSubnetGroupName"       =? _rdbifdbsDBSubnetGroupName
-        , "Engine"                  =? _rdbifdbsEngine
-        , "Iops"                    =? _rdbifdbsIops
-        , "LicenseModel"            =? _rdbifdbsLicenseModel
-        , "MultiAZ"                 =? _rdbifdbsMultiAZ
-        , "OptionGroupName"         =? _rdbifdbsOptionGroupName
-        , "Port"                    =? _rdbifdbsPort
-        , "PubliclyAccessible"      =? _rdbifdbsPubliclyAccessible
-        , "StorageType"             =? _rdbifdbsStorageType
-        , "Tags"                    =? _rdbifdbsTags
-        , "TdeCredentialArn"        =? _rdbifdbsTdeCredentialArn
-        , "TdeCredentialPassword"   =? _rdbifdbsTdeCredentialPassword
-        ]
+instance ToQuery RestoreDBInstanceFromDBSnapshot
+         where
+        toQuery RestoreDBInstanceFromDBSnapshot'{..}
+          = mconcat
+              ["Action" =:
+                 ("RestoreDBInstanceFromDBSnapshot" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBSecurityGroups" =:
+                 toQuery
+                   (toQueryList "DBSecurityGroupName" <$>
+                      _rdifdsDBSecurityGroups),
+               "AutoMinorVersionUpgrade" =:
+                 _rdifdsAutoMinorVersionUpgrade,
+               "PubliclyAccessible" =: _rdifdsPubliclyAccessible,
+               "DBSubnetGroupName" =: _rdifdsDBSubnetGroupName,
+               "Iops" =: _rdifdsIOPS, "Domain" =: _rdifdsDomain,
+               "Engine" =: _rdifdsEngine,
+               "TdeCredentialPassword" =:
+                 _rdifdsTDECredentialPassword,
+               "DBInstanceClass" =: _rdifdsDBInstanceClass,
+               "LicenseModel" =: _rdifdsLicenseModel,
+               "AvailabilityZone" =: _rdifdsAvailabilityZone,
+               "VpcSecurityGroupIds" =:
+                 toQuery
+                   (toQueryList "VpcSecurityGroupId" <$>
+                      _rdifdsVPCSecurityGroupIds),
+               "MultiAZ" =: _rdifdsMultiAZ,
+               "TdeCredentialArn" =: _rdifdsTDECredentialARN,
+               "OptionGroupName" =: _rdifdsOptionGroupName,
+               "CopyTagsToSnapshot" =: _rdifdsCopyTagsToSnapshot,
+               "DBName" =: _rdifdsDBName,
+               "Tags" =:
+                 toQuery (toQueryList "Tag" <$> _rdifdsTags),
+               "Port" =: _rdifdsPort,
+               "StorageType" =: _rdifdsStorageType,
+               "DBInstanceIdentifier" =:
+                 _rdifdsDBInstanceIdentifier,
+               "DBSnapshotIdentifier" =:
+                 _rdifdsDBSnapshotIdentifier]
 
-instance ToHeaders RestoreDBInstanceFromDBSnapshot
+-- | /See:/ 'restoreDBInstanceFromDBSnapshotResponse' smart constructor.
+data RestoreDBInstanceFromDBSnapshotResponse = RestoreDBInstanceFromDBSnapshotResponse'
+    { _rdifdsrsDBInstance :: !(Maybe DBInstance)
+    , _rdifdsrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest RestoreDBInstanceFromDBSnapshot where
-    type Sv RestoreDBInstanceFromDBSnapshot = RDS
-    type Rs RestoreDBInstanceFromDBSnapshot = RestoreDBInstanceFromDBSnapshotResponse
+-- | Creates a value of 'RestoreDBInstanceFromDBSnapshotResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdifdsrsDBInstance'
+--
+-- * 'rdifdsrsStatus'
+restoreDBInstanceFromDBSnapshotResponse
+    :: Int -- ^ 'rdifdsrsStatus'
+    -> RestoreDBInstanceFromDBSnapshotResponse
+restoreDBInstanceFromDBSnapshotResponse pStatus_ =
+    RestoreDBInstanceFromDBSnapshotResponse'
+    { _rdifdsrsDBInstance = Nothing
+    , _rdifdsrsStatus = pStatus_
+    }
 
-    request  = post "RestoreDBInstanceFromDBSnapshot"
-    response = xmlResponse
+-- | Undocumented member.
+rdifdsrsDBInstance :: Lens' RestoreDBInstanceFromDBSnapshotResponse (Maybe DBInstance)
+rdifdsrsDBInstance = lens _rdifdsrsDBInstance (\ s a -> s{_rdifdsrsDBInstance = a});
 
-instance FromXML RestoreDBInstanceFromDBSnapshotResponse where
-    parseXML = withElement "RestoreDBInstanceFromDBSnapshotResult" $ \x -> RestoreDBInstanceFromDBSnapshotResponse
-        <$> x .@? "DBInstance"
+-- | The response status code.
+rdifdsrsStatus :: Lens' RestoreDBInstanceFromDBSnapshotResponse Int
+rdifdsrsStatus = lens _rdifdsrsStatus (\ s a -> s{_rdifdsrsStatus = a});
diff --git a/gen/Network/AWS/RDS/RestoreDBInstanceToPointInTime.hs b/gen/Network/AWS/RDS/RestoreDBInstanceToPointInTime.hs
--- a/gen/Network/AWS/RDS/RestoreDBInstanceToPointInTime.hs
+++ b/gen/Network/AWS/RDS/RestoreDBInstanceToPointInTime.hs
@@ -1,210 +1,267 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.RestoreDBInstanceToPointInTime
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Restores a DB instance to an arbitrary point-in-time. Users can restore to
--- any point in time before the LatestRestorableTime for up to
--- BackupRetentionPeriod days. The target database is created from the source
--- database with the same configuration as the original database except that the
--- DB instance is created with the default DB security group.
+-- Restores a DB instance to an arbitrary point-in-time. Users can restore
+-- to any point in time before the LatestRestorableTime for up to
+-- BackupRetentionPeriod days. The target database is created with the most
+-- of original configuration, but in a system chosen availability zone with
+-- the default security group, the default subnet group, and the default DB
+-- parameter group. By default, the new DB instance is created as a
+-- single-AZ deployment except when the instance is a SQL Server instance
+-- that has an option group that is associated with mirroring; in this
+-- case, the instance becomes a mirrored deployment and not a single-AZ
+-- deployment.
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html AWS API Reference> for RestoreDBInstanceToPointInTime.
 module Network.AWS.RDS.RestoreDBInstanceToPointInTime
     (
-    -- * Request
-      RestoreDBInstanceToPointInTime
-    -- ** Request constructor
-    , restoreDBInstanceToPointInTime
-    -- ** Request lenses
-    , rdbitpitAutoMinorVersionUpgrade
-    , rdbitpitAvailabilityZone
-    , rdbitpitDBInstanceClass
-    , rdbitpitDBName
-    , rdbitpitDBSubnetGroupName
-    , rdbitpitEngine
-    , rdbitpitIops
-    , rdbitpitLicenseModel
-    , rdbitpitMultiAZ
-    , rdbitpitOptionGroupName
-    , rdbitpitPort
-    , rdbitpitPubliclyAccessible
-    , rdbitpitRestoreTime
-    , rdbitpitSourceDBInstanceIdentifier
-    , rdbitpitStorageType
-    , rdbitpitTags
-    , rdbitpitTargetDBInstanceIdentifier
-    , rdbitpitTdeCredentialArn
-    , rdbitpitTdeCredentialPassword
-    , rdbitpitUseLatestRestorableTime
+    -- * Creating a Request
+      restoreDBInstanceToPointInTime
+    , RestoreDBInstanceToPointInTime
+    -- * Request Lenses
+    , rditpitDBSecurityGroups
+    , rditpitUseLatestRestorableTime
+    , rditpitAutoMinorVersionUpgrade
+    , rditpitPubliclyAccessible
+    , rditpitDBSubnetGroupName
+    , rditpitRestoreTime
+    , rditpitIOPS
+    , rditpitDomain
+    , rditpitEngine
+    , rditpitTDECredentialPassword
+    , rditpitDBInstanceClass
+    , rditpitLicenseModel
+    , rditpitAvailabilityZone
+    , rditpitVPCSecurityGroupIds
+    , rditpitMultiAZ
+    , rditpitTDECredentialARN
+    , rditpitOptionGroupName
+    , rditpitCopyTagsToSnapshot
+    , rditpitDBName
+    , rditpitTags
+    , rditpitPort
+    , rditpitStorageType
+    , rditpitSourceDBInstanceIdentifier
+    , rditpitTargetDBInstanceIdentifier
 
-    -- * Response
-    , RestoreDBInstanceToPointInTimeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , restoreDBInstanceToPointInTimeResponse
-    -- ** Response lenses
-    , rdbitpitrDBInstance
+    , RestoreDBInstanceToPointInTimeResponse
+    -- * Response Lenses
+    , rditpitrsDBInstance
+    , rditpitrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data RestoreDBInstanceToPointInTime = RestoreDBInstanceToPointInTime
-    { _rdbitpitAutoMinorVersionUpgrade    :: Maybe Bool
-    , _rdbitpitAvailabilityZone           :: Maybe Text
-    , _rdbitpitDBInstanceClass            :: Maybe Text
-    , _rdbitpitDBName                     :: Maybe Text
-    , _rdbitpitDBSubnetGroupName          :: Maybe Text
-    , _rdbitpitEngine                     :: Maybe Text
-    , _rdbitpitIops                       :: Maybe Int
-    , _rdbitpitLicenseModel               :: Maybe Text
-    , _rdbitpitMultiAZ                    :: Maybe Bool
-    , _rdbitpitOptionGroupName            :: Maybe Text
-    , _rdbitpitPort                       :: Maybe Int
-    , _rdbitpitPubliclyAccessible         :: Maybe Bool
-    , _rdbitpitRestoreTime                :: Maybe ISO8601
-    , _rdbitpitSourceDBInstanceIdentifier :: Text
-    , _rdbitpitStorageType                :: Maybe Text
-    , _rdbitpitTags                       :: List "member" Tag
-    , _rdbitpitTargetDBInstanceIdentifier :: Text
-    , _rdbitpitTdeCredentialArn           :: Maybe Text
-    , _rdbitpitTdeCredentialPassword      :: Maybe Text
-    , _rdbitpitUseLatestRestorableTime    :: Maybe Bool
-    } deriving (Eq, Read, Show)
+-- |
+--
+-- /See:/ 'restoreDBInstanceToPointInTime' smart constructor.
+data RestoreDBInstanceToPointInTime = RestoreDBInstanceToPointInTime'
+    { _rditpitDBSecurityGroups           :: !(Maybe [Text])
+    , _rditpitUseLatestRestorableTime    :: !(Maybe Bool)
+    , _rditpitAutoMinorVersionUpgrade    :: !(Maybe Bool)
+    , _rditpitPubliclyAccessible         :: !(Maybe Bool)
+    , _rditpitDBSubnetGroupName          :: !(Maybe Text)
+    , _rditpitRestoreTime                :: !(Maybe ISO8601)
+    , _rditpitIOPS                       :: !(Maybe Int)
+    , _rditpitDomain                     :: !(Maybe Text)
+    , _rditpitEngine                     :: !(Maybe Text)
+    , _rditpitTDECredentialPassword      :: !(Maybe Text)
+    , _rditpitDBInstanceClass            :: !(Maybe Text)
+    , _rditpitLicenseModel               :: !(Maybe Text)
+    , _rditpitAvailabilityZone           :: !(Maybe Text)
+    , _rditpitVPCSecurityGroupIds        :: !(Maybe [Text])
+    , _rditpitMultiAZ                    :: !(Maybe Bool)
+    , _rditpitTDECredentialARN           :: !(Maybe Text)
+    , _rditpitOptionGroupName            :: !(Maybe Text)
+    , _rditpitCopyTagsToSnapshot         :: !(Maybe Bool)
+    , _rditpitDBName                     :: !(Maybe Text)
+    , _rditpitTags                       :: !(Maybe [Tag])
+    , _rditpitPort                       :: !(Maybe Int)
+    , _rditpitStorageType                :: !(Maybe Text)
+    , _rditpitSourceDBInstanceIdentifier :: !Text
+    , _rditpitTargetDBInstanceIdentifier :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'RestoreDBInstanceToPointInTime' constructor.
+-- | Creates a value of 'RestoreDBInstanceToPointInTime' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rdbitpitAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'
+-- * 'rditpitDBSecurityGroups'
 --
--- * 'rdbitpitAvailabilityZone' @::@ 'Maybe' 'Text'
+-- * 'rditpitUseLatestRestorableTime'
 --
--- * 'rdbitpitDBInstanceClass' @::@ 'Maybe' 'Text'
+-- * 'rditpitAutoMinorVersionUpgrade'
 --
--- * 'rdbitpitDBName' @::@ 'Maybe' 'Text'
+-- * 'rditpitPubliclyAccessible'
 --
--- * 'rdbitpitDBSubnetGroupName' @::@ 'Maybe' 'Text'
+-- * 'rditpitDBSubnetGroupName'
 --
--- * 'rdbitpitEngine' @::@ 'Maybe' 'Text'
+-- * 'rditpitRestoreTime'
 --
--- * 'rdbitpitIops' @::@ 'Maybe' 'Int'
+-- * 'rditpitIOPS'
 --
--- * 'rdbitpitLicenseModel' @::@ 'Maybe' 'Text'
+-- * 'rditpitDomain'
 --
--- * 'rdbitpitMultiAZ' @::@ 'Maybe' 'Bool'
+-- * 'rditpitEngine'
 --
--- * 'rdbitpitOptionGroupName' @::@ 'Maybe' 'Text'
+-- * 'rditpitTDECredentialPassword'
 --
--- * 'rdbitpitPort' @::@ 'Maybe' 'Int'
+-- * 'rditpitDBInstanceClass'
 --
--- * 'rdbitpitPubliclyAccessible' @::@ 'Maybe' 'Bool'
+-- * 'rditpitLicenseModel'
 --
--- * 'rdbitpitRestoreTime' @::@ 'Maybe' 'UTCTime'
+-- * 'rditpitAvailabilityZone'
 --
--- * 'rdbitpitSourceDBInstanceIdentifier' @::@ 'Text'
+-- * 'rditpitVPCSecurityGroupIds'
 --
--- * 'rdbitpitStorageType' @::@ 'Maybe' 'Text'
+-- * 'rditpitMultiAZ'
 --
--- * 'rdbitpitTags' @::@ ['Tag']
+-- * 'rditpitTDECredentialARN'
 --
--- * 'rdbitpitTargetDBInstanceIdentifier' @::@ 'Text'
+-- * 'rditpitOptionGroupName'
 --
--- * 'rdbitpitTdeCredentialArn' @::@ 'Maybe' 'Text'
+-- * 'rditpitCopyTagsToSnapshot'
 --
--- * 'rdbitpitTdeCredentialPassword' @::@ 'Maybe' 'Text'
+-- * 'rditpitDBName'
 --
--- * 'rdbitpitUseLatestRestorableTime' @::@ 'Maybe' 'Bool'
+-- * 'rditpitTags'
 --
-restoreDBInstanceToPointInTime :: Text -- ^ 'rdbitpitSourceDBInstanceIdentifier'
-                               -> Text -- ^ 'rdbitpitTargetDBInstanceIdentifier'
-                               -> RestoreDBInstanceToPointInTime
-restoreDBInstanceToPointInTime p1 p2 = RestoreDBInstanceToPointInTime
-    { _rdbitpitSourceDBInstanceIdentifier = p1
-    , _rdbitpitTargetDBInstanceIdentifier = p2
-    , _rdbitpitRestoreTime                = Nothing
-    , _rdbitpitUseLatestRestorableTime    = Nothing
-    , _rdbitpitDBInstanceClass            = Nothing
-    , _rdbitpitPort                       = Nothing
-    , _rdbitpitAvailabilityZone           = Nothing
-    , _rdbitpitDBSubnetGroupName          = Nothing
-    , _rdbitpitMultiAZ                    = Nothing
-    , _rdbitpitPubliclyAccessible         = Nothing
-    , _rdbitpitAutoMinorVersionUpgrade    = Nothing
-    , _rdbitpitLicenseModel               = Nothing
-    , _rdbitpitDBName                     = Nothing
-    , _rdbitpitEngine                     = Nothing
-    , _rdbitpitIops                       = Nothing
-    , _rdbitpitOptionGroupName            = Nothing
-    , _rdbitpitTags                       = mempty
-    , _rdbitpitStorageType                = Nothing
-    , _rdbitpitTdeCredentialArn           = Nothing
-    , _rdbitpitTdeCredentialPassword      = Nothing
+-- * 'rditpitPort'
+--
+-- * 'rditpitStorageType'
+--
+-- * 'rditpitSourceDBInstanceIdentifier'
+--
+-- * 'rditpitTargetDBInstanceIdentifier'
+restoreDBInstanceToPointInTime
+    :: Text -- ^ 'rditpitSourceDBInstanceIdentifier'
+    -> Text -- ^ 'rditpitTargetDBInstanceIdentifier'
+    -> RestoreDBInstanceToPointInTime
+restoreDBInstanceToPointInTime pSourceDBInstanceIdentifier_ pTargetDBInstanceIdentifier_ =
+    RestoreDBInstanceToPointInTime'
+    { _rditpitDBSecurityGroups = Nothing
+    , _rditpitUseLatestRestorableTime = Nothing
+    , _rditpitAutoMinorVersionUpgrade = Nothing
+    , _rditpitPubliclyAccessible = Nothing
+    , _rditpitDBSubnetGroupName = Nothing
+    , _rditpitRestoreTime = Nothing
+    , _rditpitIOPS = Nothing
+    , _rditpitDomain = Nothing
+    , _rditpitEngine = Nothing
+    , _rditpitTDECredentialPassword = Nothing
+    , _rditpitDBInstanceClass = Nothing
+    , _rditpitLicenseModel = Nothing
+    , _rditpitAvailabilityZone = Nothing
+    , _rditpitVPCSecurityGroupIds = Nothing
+    , _rditpitMultiAZ = Nothing
+    , _rditpitTDECredentialARN = Nothing
+    , _rditpitOptionGroupName = Nothing
+    , _rditpitCopyTagsToSnapshot = Nothing
+    , _rditpitDBName = Nothing
+    , _rditpitTags = Nothing
+    , _rditpitPort = Nothing
+    , _rditpitStorageType = Nothing
+    , _rditpitSourceDBInstanceIdentifier = pSourceDBInstanceIdentifier_
+    , _rditpitTargetDBInstanceIdentifier = pTargetDBInstanceIdentifier_
     }
 
--- | Indicates that minor version upgrades will be applied automatically to the
--- DB instance during the maintenance window.
-rdbitpitAutoMinorVersionUpgrade :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
-rdbitpitAutoMinorVersionUpgrade =
-    lens _rdbitpitAutoMinorVersionUpgrade
-        (\s a -> s { _rdbitpitAutoMinorVersionUpgrade = a })
+-- | A list of DB security groups to associate with this DB instance.
+--
+-- Default: The default DB security group for the database engine.
+rditpitDBSecurityGroups :: Lens' RestoreDBInstanceToPointInTime [Text]
+rditpitDBSecurityGroups = lens _rditpitDBSecurityGroups (\ s a -> s{_rditpitDBSecurityGroups = a}) . _Default . _Coerce;
 
--- | The EC2 Availability Zone that the database instance will be created in.
+-- | Specifies whether ('true') or not ('false') the DB instance is restored
+-- from the latest backup time.
 --
--- Default: A random, system-chosen Availability Zone.
+-- Default: 'false'
 --
--- Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ
--- parameter is set to true.
+-- Constraints: Cannot be specified if RestoreTime parameter is provided.
+rditpitUseLatestRestorableTime :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
+rditpitUseLatestRestorableTime = lens _rditpitUseLatestRestorableTime (\ s a -> s{_rditpitUseLatestRestorableTime = a});
+
+-- | Indicates that minor version upgrades will be applied automatically to
+-- the DB instance during the maintenance window.
+rditpitAutoMinorVersionUpgrade :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
+rditpitAutoMinorVersionUpgrade = lens _rditpitAutoMinorVersionUpgrade (\ s a -> s{_rditpitAutoMinorVersionUpgrade = a});
+
+-- | Specifies the accessibility options for the DB instance. A value of true
+-- specifies an Internet-facing instance with a publicly resolvable DNS
+-- name, which resolves to a public IP address. A value of false specifies
+-- an internal instance with a DNS name that resolves to a private IP
+-- address.
 --
--- Example: 'us-east-1a'
-rdbitpitAvailabilityZone :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
-rdbitpitAvailabilityZone =
-    lens _rdbitpitAvailabilityZone
-        (\s a -> s { _rdbitpitAvailabilityZone = a })
+-- Default: The default behavior varies depending on whether a VPC has been
+-- requested or not. The following list shows the default behavior in each
+-- case.
+--
+-- -   __Default VPC:__true
+-- -   __VPC:__false
+--
+-- If no DB subnet group has been specified as part of the request and the
+-- PubliclyAccessible value has not been set, the DB instance will be
+-- publicly accessible. If a specific DB subnet group has been specified as
+-- part of the request and the PubliclyAccessible value has not been set,
+-- the DB instance will be private.
+rditpitPubliclyAccessible :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
+rditpitPubliclyAccessible = lens _rditpitPubliclyAccessible (\ s a -> s{_rditpitPubliclyAccessible = a});
 
--- | The compute and memory capacity of the Amazon RDS DB instance.
+-- | The DB subnet group name to use for the new instance.
+rditpitDBSubnetGroupName :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
+rditpitDBSubnetGroupName = lens _rditpitDBSubnetGroupName (\ s a -> s{_rditpitDBSubnetGroupName = a});
+
+-- | The date and time to restore from.
 --
--- Valid Values: 'db.t1.micro | db.m1.small | db.m1.medium | db.m1.large |db.m1.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large |db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge |db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium'
+-- Valid Values: Value must be a time in Universal Coordinated Time (UTC)
+-- format
 --
--- Default: The same DBInstanceClass as the original DB instance.
-rdbitpitDBInstanceClass :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
-rdbitpitDBInstanceClass =
-    lens _rdbitpitDBInstanceClass (\s a -> s { _rdbitpitDBInstanceClass = a })
+-- Constraints:
+--
+-- -   Must be before the latest restorable time for the DB instance
+-- -   Cannot be specified if UseLatestRestorableTime parameter is true
+--
+-- Example: '2009-09-07T23:45:00Z'
+rditpitRestoreTime :: Lens' RestoreDBInstanceToPointInTime (Maybe UTCTime)
+rditpitRestoreTime = lens _rditpitRestoreTime (\ s a -> s{_rditpitRestoreTime = a}) . mapping _Time;
 
--- | The database name for the restored DB instance.
+-- | The amount of Provisioned IOPS (input\/output operations per second) to
+-- be initially allocated for the DB instance.
 --
--- This parameter is not used for the MySQL engine.
+-- Constraints: Must be an integer greater than 1000.
 --
+-- __SQL Server__
 --
-rdbitpitDBName :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
-rdbitpitDBName = lens _rdbitpitDBName (\s a -> s { _rdbitpitDBName = a })
+-- Setting the IOPS value for the SQL Server database engine is not
+-- supported.
+rditpitIOPS :: Lens' RestoreDBInstanceToPointInTime (Maybe Int)
+rditpitIOPS = lens _rditpitIOPS (\ s a -> s{_rditpitIOPS = a});
 
--- | The DB subnet group name to use for the new instance.
-rdbitpitDBSubnetGroupName :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
-rdbitpitDBSubnetGroupName =
-    lens _rdbitpitDBSubnetGroupName
-        (\s a -> s { _rdbitpitDBSubnetGroupName = a })
+-- | Specify the Active Directory Domain to restore the instance in.
+rditpitDomain :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
+rditpitDomain = lens _rditpitDomain (\ s a -> s{_rditpitDomain = a});
 
 -- | The database engine to use for the new instance.
 --
@@ -212,203 +269,217 @@
 --
 -- Constraint: Must be compatible with the engine of the source
 --
--- Valid Values: 'MySQL' | 'oracle-se1' | 'oracle-se' | 'oracle-ee' | 'sqlserver-ee' | 'sqlserver-se' | 'sqlserver-ex' | 'sqlserver-web' | 'postgres'
-rdbitpitEngine :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
-rdbitpitEngine = lens _rdbitpitEngine (\s a -> s { _rdbitpitEngine = a })
+-- Valid Values: 'MySQL' | 'oracle-se1' | 'oracle-se' | 'oracle-ee' |
+-- 'sqlserver-ee' | 'sqlserver-se' | 'sqlserver-ex' | 'sqlserver-web' |
+-- 'postgres'
+rditpitEngine :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
+rditpitEngine = lens _rditpitEngine (\ s a -> s{_rditpitEngine = a});
 
--- | The amount of Provisioned IOPS (input/output operations per second) to be
--- initially allocated for the DB instance.
---
--- Constraints: Must be an integer greater than 1000.
+-- | The password for the given ARN from the Key Store in order to access the
+-- device.
+rditpitTDECredentialPassword :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
+rditpitTDECredentialPassword = lens _rditpitTDECredentialPassword (\ s a -> s{_rditpitTDECredentialPassword = a});
+
+-- | The compute and memory capacity of the Amazon RDS DB instance.
 --
--- SQL Server
+-- Valid Values:
+-- 'db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium'
 --
--- Setting the IOPS value for the SQL Server database engine is not supported.
-rdbitpitIops :: Lens' RestoreDBInstanceToPointInTime (Maybe Int)
-rdbitpitIops = lens _rdbitpitIops (\s a -> s { _rdbitpitIops = a })
+-- Default: The same DBInstanceClass as the original DB instance.
+rditpitDBInstanceClass :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
+rditpitDBInstanceClass = lens _rditpitDBInstanceClass (\ s a -> s{_rditpitDBInstanceClass = a});
 
 -- | License model information for the restored DB instance.
 --
 -- Default: Same as source.
 --
--- Valid values: 'license-included' | 'bring-your-own-license' | 'general-public-license'
-rdbitpitLicenseModel :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
-rdbitpitLicenseModel =
-    lens _rdbitpitLicenseModel (\s a -> s { _rdbitpitLicenseModel = a })
+-- Valid values: 'license-included' | 'bring-your-own-license' |
+-- 'general-public-license'
+rditpitLicenseModel :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
+rditpitLicenseModel = lens _rditpitLicenseModel (\ s a -> s{_rditpitLicenseModel = a});
 
+-- | The EC2 Availability Zone that the database instance will be created in.
+--
+-- Default: A random, system-chosen Availability Zone.
+--
+-- Constraint: You cannot specify the AvailabilityZone parameter if the
+-- MultiAZ parameter is set to true.
+--
+-- Example: 'us-east-1a'
+rditpitAvailabilityZone :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
+rditpitAvailabilityZone = lens _rditpitAvailabilityZone (\ s a -> s{_rditpitAvailabilityZone = a});
+
+-- | A list of EC2 VPC security groups to associate with this DB instance.
+--
+-- Default: The default EC2 VPC security group for the DB subnet group\'s
+-- VPC.
+rditpitVPCSecurityGroupIds :: Lens' RestoreDBInstanceToPointInTime [Text]
+rditpitVPCSecurityGroupIds = lens _rditpitVPCSecurityGroupIds (\ s a -> s{_rditpitVPCSecurityGroupIds = a}) . _Default . _Coerce;
+
 -- | Specifies if the DB instance is a Multi-AZ deployment.
 --
--- Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ
--- parameter is set to 'true'.
-rdbitpitMultiAZ :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
-rdbitpitMultiAZ = lens _rdbitpitMultiAZ (\s a -> s { _rdbitpitMultiAZ = a })
+-- Constraint: You cannot specify the AvailabilityZone parameter if the
+-- MultiAZ parameter is set to 'true'.
+rditpitMultiAZ :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
+rditpitMultiAZ = lens _rditpitMultiAZ (\ s a -> s{_rditpitMultiAZ = a});
 
+-- | The ARN from the Key Store with which to associate the instance for TDE
+-- encryption.
+rditpitTDECredentialARN :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
+rditpitTDECredentialARN = lens _rditpitTDECredentialARN (\ s a -> s{_rditpitTDECredentialARN = a});
+
 -- | The name of the option group to be used for the restored DB instance.
 --
--- Permanent options, such as the TDE option for Oracle Advanced Security TDE,
--- cannot be removed from an option group, and that option group cannot be
--- removed from a DB instance once it is associated with a DB instance
-rdbitpitOptionGroupName :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
-rdbitpitOptionGroupName =
-    lens _rdbitpitOptionGroupName (\s a -> s { _rdbitpitOptionGroupName = a })
+-- Permanent options, such as the TDE option for Oracle Advanced Security
+-- TDE, cannot be removed from an option group, and that option group
+-- cannot be removed from a DB instance once it is associated with a DB
+-- instance
+rditpitOptionGroupName :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
+rditpitOptionGroupName = lens _rditpitOptionGroupName (\ s a -> s{_rditpitOptionGroupName = a});
 
+-- | This property is not currently implemented.
+rditpitCopyTagsToSnapshot :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
+rditpitCopyTagsToSnapshot = lens _rditpitCopyTagsToSnapshot (\ s a -> s{_rditpitCopyTagsToSnapshot = a});
+
+-- | The database name for the restored DB instance.
+--
+-- This parameter is not used for the MySQL engine.
+rditpitDBName :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
+rditpitDBName = lens _rditpitDBName (\ s a -> s{_rditpitDBName = a});
+
+-- | Undocumented member.
+rditpitTags :: Lens' RestoreDBInstanceToPointInTime [Tag]
+rditpitTags = lens _rditpitTags (\ s a -> s{_rditpitTags = a}) . _Default . _Coerce;
+
 -- | The port number on which the database accepts connections.
 --
 -- Constraints: Value must be '1150-65535'
 --
 -- Default: The same port as the original DB instance.
-rdbitpitPort :: Lens' RestoreDBInstanceToPointInTime (Maybe Int)
-rdbitpitPort = lens _rdbitpitPort (\s a -> s { _rdbitpitPort = a })
-
--- | Specifies the accessibility options for the DB instance. A value of true
--- specifies an Internet-facing instance with a publicly resolvable DNS name,
--- which resolves to a public IP address. A value of false specifies an internal
--- instance with a DNS name that resolves to a private IP address.
---
--- Default: The default behavior varies depending on whether a VPC has been
--- requested or not. The following list shows the default behavior in each case.
---
--- Default VPC:true  VPC:false   If no DB subnet group has been specified as
--- part of the request and the PubliclyAccessible value has not been set, the DB
--- instance will be publicly accessible. If a specific DB subnet group has been
--- specified as part of the request and the PubliclyAccessible value has not
--- been set, the DB instance will be private.
-rdbitpitPubliclyAccessible :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
-rdbitpitPubliclyAccessible =
-    lens _rdbitpitPubliclyAccessible
-        (\s a -> s { _rdbitpitPubliclyAccessible = a })
+rditpitPort :: Lens' RestoreDBInstanceToPointInTime (Maybe Int)
+rditpitPort = lens _rditpitPort (\ s a -> s{_rditpitPort = a});
 
--- | The date and time to restore from.
+-- | Specifies the storage type to be associated with the DB instance.
 --
--- Valid Values: Value must be a UTC time
+-- Valid values: 'standard | gp2 | io1'
 --
--- Constraints:
+-- If you specify 'io1', you must also include a value for the 'Iops'
+-- parameter.
 --
--- Must be before the latest restorable time for the DB instance Cannot be
--- specified if UseLatestRestorableTime parameter is true  Example: '2009-09-07T23:45:00Z'
-rdbitpitRestoreTime :: Lens' RestoreDBInstanceToPointInTime (Maybe UTCTime)
-rdbitpitRestoreTime =
-    lens _rdbitpitRestoreTime (\s a -> s { _rdbitpitRestoreTime = a })
-        . mapping _Time
+-- Default: 'io1' if the 'Iops' parameter is specified; otherwise
+-- 'standard'
+rditpitStorageType :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
+rditpitStorageType = lens _rditpitStorageType (\ s a -> s{_rditpitStorageType = a});
 
 -- | The identifier of the source DB instance from which to restore.
 --
 -- Constraints:
 --
--- Must be the identifier of an existing database instance Must contain from 1
--- to 63 alphanumeric characters or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
---
-rdbitpitSourceDBInstanceIdentifier :: Lens' RestoreDBInstanceToPointInTime Text
-rdbitpitSourceDBInstanceIdentifier =
-    lens _rdbitpitSourceDBInstanceIdentifier
-        (\s a -> s { _rdbitpitSourceDBInstanceIdentifier = a })
-
--- | Specifies the storage type to be associated with the DB instance.
---
--- Valid values: 'standard | gp2 | io1'
---
--- If you specify 'io1', you must also include a value for the 'Iops' parameter.
---
--- Default: 'io1' if the 'Iops' parameter is specified; otherwise 'standard'
-rdbitpitStorageType :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
-rdbitpitStorageType =
-    lens _rdbitpitStorageType (\s a -> s { _rdbitpitStorageType = a })
-
-rdbitpitTags :: Lens' RestoreDBInstanceToPointInTime [Tag]
-rdbitpitTags = lens _rdbitpitTags (\s a -> s { _rdbitpitTags = a }) . _List
+-- -   Must be the identifier of an existing database instance
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+rditpitSourceDBInstanceIdentifier :: Lens' RestoreDBInstanceToPointInTime Text
+rditpitSourceDBInstanceIdentifier = lens _rditpitSourceDBInstanceIdentifier (\ s a -> s{_rditpitSourceDBInstanceIdentifier = a});
 
 -- | The name of the new database instance to be created.
 --
 -- Constraints:
 --
--- Must contain from 1 to 63 alphanumeric characters or hyphens First
--- character must be a letter Cannot end with a hyphen or contain two
--- consecutive hyphens
-rdbitpitTargetDBInstanceIdentifier :: Lens' RestoreDBInstanceToPointInTime Text
-rdbitpitTargetDBInstanceIdentifier =
-    lens _rdbitpitTargetDBInstanceIdentifier
-        (\s a -> s { _rdbitpitTargetDBInstanceIdentifier = a })
+-- -   Must contain from 1 to 63 alphanumeric characters or hyphens
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+rditpitTargetDBInstanceIdentifier :: Lens' RestoreDBInstanceToPointInTime Text
+rditpitTargetDBInstanceIdentifier = lens _rditpitTargetDBInstanceIdentifier (\ s a -> s{_rditpitTargetDBInstanceIdentifier = a});
 
--- | The ARN from the Key Store with which to associate the instance for TDE
--- encryption.
-rdbitpitTdeCredentialArn :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
-rdbitpitTdeCredentialArn =
-    lens _rdbitpitTdeCredentialArn
-        (\s a -> s { _rdbitpitTdeCredentialArn = a })
+instance AWSRequest RestoreDBInstanceToPointInTime
+         where
+        type Sv RestoreDBInstanceToPointInTime = RDS
+        type Rs RestoreDBInstanceToPointInTime =
+             RestoreDBInstanceToPointInTimeResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "RestoreDBInstanceToPointInTimeResult"
+              (\ s h x ->
+                 RestoreDBInstanceToPointInTimeResponse' <$>
+                   (x .@? "DBInstance") <*> (pure (fromEnum s)))
 
--- | The password for the given ARN from the Key Store in order to access the
--- device.
-rdbitpitTdeCredentialPassword :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
-rdbitpitTdeCredentialPassword =
-    lens _rdbitpitTdeCredentialPassword
-        (\s a -> s { _rdbitpitTdeCredentialPassword = a })
+instance ToHeaders RestoreDBInstanceToPointInTime
+         where
+        toHeaders = const mempty
 
--- | Specifies whether ('true') or not ('false') the DB instance is restored from the
--- latest backup time.
---
--- Default: 'false'
---
--- Constraints: Cannot be specified if RestoreTime parameter is provided.
-rdbitpitUseLatestRestorableTime :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
-rdbitpitUseLatestRestorableTime =
-    lens _rdbitpitUseLatestRestorableTime
-        (\s a -> s { _rdbitpitUseLatestRestorableTime = a })
+instance ToPath RestoreDBInstanceToPointInTime where
+        toPath = const "/"
 
-newtype RestoreDBInstanceToPointInTimeResponse = RestoreDBInstanceToPointInTimeResponse
-    { _rdbitpitrDBInstance :: Maybe DBInstance
-    } deriving (Eq, Read, Show)
+instance ToQuery RestoreDBInstanceToPointInTime where
+        toQuery RestoreDBInstanceToPointInTime'{..}
+          = mconcat
+              ["Action" =:
+                 ("RestoreDBInstanceToPointInTime" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "DBSecurityGroups" =:
+                 toQuery
+                   (toQueryList "DBSecurityGroupName" <$>
+                      _rditpitDBSecurityGroups),
+               "UseLatestRestorableTime" =:
+                 _rditpitUseLatestRestorableTime,
+               "AutoMinorVersionUpgrade" =:
+                 _rditpitAutoMinorVersionUpgrade,
+               "PubliclyAccessible" =: _rditpitPubliclyAccessible,
+               "DBSubnetGroupName" =: _rditpitDBSubnetGroupName,
+               "RestoreTime" =: _rditpitRestoreTime,
+               "Iops" =: _rditpitIOPS, "Domain" =: _rditpitDomain,
+               "Engine" =: _rditpitEngine,
+               "TdeCredentialPassword" =:
+                 _rditpitTDECredentialPassword,
+               "DBInstanceClass" =: _rditpitDBInstanceClass,
+               "LicenseModel" =: _rditpitLicenseModel,
+               "AvailabilityZone" =: _rditpitAvailabilityZone,
+               "VpcSecurityGroupIds" =:
+                 toQuery
+                   (toQueryList "VpcSecurityGroupId" <$>
+                      _rditpitVPCSecurityGroupIds),
+               "MultiAZ" =: _rditpitMultiAZ,
+               "TdeCredentialArn" =: _rditpitTDECredentialARN,
+               "OptionGroupName" =: _rditpitOptionGroupName,
+               "CopyTagsToSnapshot" =: _rditpitCopyTagsToSnapshot,
+               "DBName" =: _rditpitDBName,
+               "Tags" =:
+                 toQuery (toQueryList "Tag" <$> _rditpitTags),
+               "Port" =: _rditpitPort,
+               "StorageType" =: _rditpitStorageType,
+               "SourceDBInstanceIdentifier" =:
+                 _rditpitSourceDBInstanceIdentifier,
+               "TargetDBInstanceIdentifier" =:
+                 _rditpitTargetDBInstanceIdentifier]
 
--- | 'RestoreDBInstanceToPointInTimeResponse' constructor.
+-- | /See:/ 'restoreDBInstanceToPointInTimeResponse' smart constructor.
+data RestoreDBInstanceToPointInTimeResponse = RestoreDBInstanceToPointInTimeResponse'
+    { _rditpitrsDBInstance :: !(Maybe DBInstance)
+    , _rditpitrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RestoreDBInstanceToPointInTimeResponse' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rdbitpitrDBInstance' @::@ 'Maybe' 'DBInstance'
+-- * 'rditpitrsDBInstance'
 --
-restoreDBInstanceToPointInTimeResponse :: RestoreDBInstanceToPointInTimeResponse
-restoreDBInstanceToPointInTimeResponse = RestoreDBInstanceToPointInTimeResponse
-    { _rdbitpitrDBInstance = Nothing
+-- * 'rditpitrsStatus'
+restoreDBInstanceToPointInTimeResponse
+    :: Int -- ^ 'rditpitrsStatus'
+    -> RestoreDBInstanceToPointInTimeResponse
+restoreDBInstanceToPointInTimeResponse pStatus_ =
+    RestoreDBInstanceToPointInTimeResponse'
+    { _rditpitrsDBInstance = Nothing
+    , _rditpitrsStatus = pStatus_
     }
 
-rdbitpitrDBInstance :: Lens' RestoreDBInstanceToPointInTimeResponse (Maybe DBInstance)
-rdbitpitrDBInstance =
-    lens _rdbitpitrDBInstance (\s a -> s { _rdbitpitrDBInstance = a })
-
-instance ToPath RestoreDBInstanceToPointInTime where
-    toPath = const "/"
-
-instance ToQuery RestoreDBInstanceToPointInTime where
-    toQuery RestoreDBInstanceToPointInTime{..} = mconcat
-        [ "AutoMinorVersionUpgrade"    =? _rdbitpitAutoMinorVersionUpgrade
-        , "AvailabilityZone"           =? _rdbitpitAvailabilityZone
-        , "DBInstanceClass"            =? _rdbitpitDBInstanceClass
-        , "DBName"                     =? _rdbitpitDBName
-        , "DBSubnetGroupName"          =? _rdbitpitDBSubnetGroupName
-        , "Engine"                     =? _rdbitpitEngine
-        , "Iops"                       =? _rdbitpitIops
-        , "LicenseModel"               =? _rdbitpitLicenseModel
-        , "MultiAZ"                    =? _rdbitpitMultiAZ
-        , "OptionGroupName"            =? _rdbitpitOptionGroupName
-        , "Port"                       =? _rdbitpitPort
-        , "PubliclyAccessible"         =? _rdbitpitPubliclyAccessible
-        , "RestoreTime"                =? _rdbitpitRestoreTime
-        , "SourceDBInstanceIdentifier" =? _rdbitpitSourceDBInstanceIdentifier
-        , "StorageType"                =? _rdbitpitStorageType
-        , "Tags"                       =? _rdbitpitTags
-        , "TargetDBInstanceIdentifier" =? _rdbitpitTargetDBInstanceIdentifier
-        , "TdeCredentialArn"           =? _rdbitpitTdeCredentialArn
-        , "TdeCredentialPassword"      =? _rdbitpitTdeCredentialPassword
-        , "UseLatestRestorableTime"    =? _rdbitpitUseLatestRestorableTime
-        ]
-
-instance ToHeaders RestoreDBInstanceToPointInTime
-
-instance AWSRequest RestoreDBInstanceToPointInTime where
-    type Sv RestoreDBInstanceToPointInTime = RDS
-    type Rs RestoreDBInstanceToPointInTime = RestoreDBInstanceToPointInTimeResponse
-
-    request  = post "RestoreDBInstanceToPointInTime"
-    response = xmlResponse
+-- | Undocumented member.
+rditpitrsDBInstance :: Lens' RestoreDBInstanceToPointInTimeResponse (Maybe DBInstance)
+rditpitrsDBInstance = lens _rditpitrsDBInstance (\ s a -> s{_rditpitrsDBInstance = a});
 
-instance FromXML RestoreDBInstanceToPointInTimeResponse where
-    parseXML = withElement "RestoreDBInstanceToPointInTimeResult" $ \x -> RestoreDBInstanceToPointInTimeResponse
-        <$> x .@? "DBInstance"
+-- | The response status code.
+rditpitrsStatus :: Lens' RestoreDBInstanceToPointInTimeResponse Int
+rditpitrsStatus = lens _rditpitrsStatus (\ s a -> s{_rditpitrsStatus = a});
diff --git a/gen/Network/AWS/RDS/RevokeDBSecurityGroupIngress.hs b/gen/Network/AWS/RDS/RevokeDBSecurityGroupIngress.hs
--- a/gen/Network/AWS/RDS/RevokeDBSecurityGroupIngress.hs
+++ b/gen/Network/AWS/RDS/RevokeDBSecurityGroupIngress.hs
@@ -1,170 +1,182 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.RevokeDBSecurityGroupIngress
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Revokes ingress from a DBSecurityGroup for previously authorized IP ranges
--- or EC2 or VPC Security Groups. Required parameters for this API are one of
--- CIDRIP, EC2SecurityGroupId for VPC, or (EC2SecurityGroupOwnerId and either
--- EC2SecurityGroupName or EC2SecurityGroupId).
+-- Revokes ingress from a DBSecurityGroup for previously authorized IP
+-- ranges or EC2 or VPC Security Groups. Required parameters for this API
+-- are one of CIDRIP, EC2SecurityGroupId for VPC, or
+-- (EC2SecurityGroupOwnerId and either EC2SecurityGroupName or
+-- EC2SecurityGroupId).
 --
--- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RevokeDBSecurityGroupIngress.html>
+-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RevokeDBSecurityGroupIngress.html AWS API Reference> for RevokeDBSecurityGroupIngress.
 module Network.AWS.RDS.RevokeDBSecurityGroupIngress
     (
-    -- * Request
-      RevokeDBSecurityGroupIngress
-    -- ** Request constructor
-    , revokeDBSecurityGroupIngress
-    -- ** Request lenses
-    , rdbsgiCIDRIP
-    , rdbsgiDBSecurityGroupName
-    , rdbsgiEC2SecurityGroupId
-    , rdbsgiEC2SecurityGroupName
-    , rdbsgiEC2SecurityGroupOwnerId
+    -- * Creating a Request
+      revokeDBSecurityGroupIngress
+    , RevokeDBSecurityGroupIngress
+    -- * Request Lenses
+    , rdsgiEC2SecurityGroupOwnerId
+    , rdsgiEC2SecurityGroupName
+    , rdsgiCIdRIP
+    , rdsgiEC2SecurityGroupId
+    , rdsgiDBSecurityGroupName
 
-    -- * Response
-    , RevokeDBSecurityGroupIngressResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , revokeDBSecurityGroupIngressResponse
-    -- ** Response lenses
-    , rdbsgirDBSecurityGroup
+    , RevokeDBSecurityGroupIngressResponse
+    -- * Response Lenses
+    , rdsgirsDBSecurityGroup
+    , rdsgirsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.RDS.Types
-import qualified GHC.Exts
-
-data RevokeDBSecurityGroupIngress = RevokeDBSecurityGroupIngress
-    { _rdbsgiCIDRIP                  :: Maybe Text
-    , _rdbsgiDBSecurityGroupName     :: Text
-    , _rdbsgiEC2SecurityGroupId      :: Maybe Text
-    , _rdbsgiEC2SecurityGroupName    :: Maybe Text
-    , _rdbsgiEC2SecurityGroupOwnerId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'RevokeDBSecurityGroupIngress' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'revokeDBSecurityGroupIngress' smart constructor.
+data RevokeDBSecurityGroupIngress = RevokeDBSecurityGroupIngress'
+    { _rdsgiEC2SecurityGroupOwnerId :: !(Maybe Text)
+    , _rdsgiEC2SecurityGroupName    :: !(Maybe Text)
+    , _rdsgiCIdRIP                  :: !(Maybe Text)
+    , _rdsgiEC2SecurityGroupId      :: !(Maybe Text)
+    , _rdsgiDBSecurityGroupName     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RevokeDBSecurityGroupIngress' with the minimum fields required to make a request.
 --
--- * 'rdbsgiCIDRIP' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rdbsgiDBSecurityGroupName' @::@ 'Text'
+-- * 'rdsgiEC2SecurityGroupOwnerId'
 --
--- * 'rdbsgiEC2SecurityGroupId' @::@ 'Maybe' 'Text'
+-- * 'rdsgiEC2SecurityGroupName'
 --
--- * 'rdbsgiEC2SecurityGroupName' @::@ 'Maybe' 'Text'
+-- * 'rdsgiCIdRIP'
 --
--- * 'rdbsgiEC2SecurityGroupOwnerId' @::@ 'Maybe' 'Text'
+-- * 'rdsgiEC2SecurityGroupId'
 --
-revokeDBSecurityGroupIngress :: Text -- ^ 'rdbsgiDBSecurityGroupName'
-                             -> RevokeDBSecurityGroupIngress
-revokeDBSecurityGroupIngress p1 = RevokeDBSecurityGroupIngress
-    { _rdbsgiDBSecurityGroupName     = p1
-    , _rdbsgiCIDRIP                  = Nothing
-    , _rdbsgiEC2SecurityGroupName    = Nothing
-    , _rdbsgiEC2SecurityGroupId      = Nothing
-    , _rdbsgiEC2SecurityGroupOwnerId = Nothing
+-- * 'rdsgiDBSecurityGroupName'
+revokeDBSecurityGroupIngress
+    :: Text -- ^ 'rdsgiDBSecurityGroupName'
+    -> RevokeDBSecurityGroupIngress
+revokeDBSecurityGroupIngress pDBSecurityGroupName_ =
+    RevokeDBSecurityGroupIngress'
+    { _rdsgiEC2SecurityGroupOwnerId = Nothing
+    , _rdsgiEC2SecurityGroupName = Nothing
+    , _rdsgiCIdRIP = Nothing
+    , _rdsgiEC2SecurityGroupId = Nothing
+    , _rdsgiDBSecurityGroupName = pDBSecurityGroupName_
     }
 
--- | The IP range to revoke access from. Must be a valid CIDR range. If 'CIDRIP' is
--- specified, 'EC2SecurityGroupName', 'EC2SecurityGroupId' and 'EC2SecurityGroupOwnerId' cannot be provided.
-rdbsgiCIDRIP :: Lens' RevokeDBSecurityGroupIngress (Maybe Text)
-rdbsgiCIDRIP = lens _rdbsgiCIDRIP (\s a -> s { _rdbsgiCIDRIP = a })
-
--- | The name of the DB security group to revoke ingress from.
-rdbsgiDBSecurityGroupName :: Lens' RevokeDBSecurityGroupIngress Text
-rdbsgiDBSecurityGroupName =
-    lens _rdbsgiDBSecurityGroupName
-        (\s a -> s { _rdbsgiDBSecurityGroupName = a })
-
--- | The id of the EC2 security group to revoke access from. For VPC DB security
--- groups, 'EC2SecurityGroupId' must be provided. Otherwise,
--- EC2SecurityGroupOwnerId and either 'EC2SecurityGroupName' or 'EC2SecurityGroupId'
--- must be provided.
-rdbsgiEC2SecurityGroupId :: Lens' RevokeDBSecurityGroupIngress (Maybe Text)
-rdbsgiEC2SecurityGroupId =
-    lens _rdbsgiEC2SecurityGroupId
-        (\s a -> s { _rdbsgiEC2SecurityGroupId = a })
+-- | The AWS Account Number of the owner of the EC2 security group specified
+-- in the 'EC2SecurityGroupName' parameter. The AWS Access Key ID is not an
+-- acceptable value. For VPC DB security groups, 'EC2SecurityGroupId' must
+-- be provided. Otherwise, EC2SecurityGroupOwnerId and either
+-- 'EC2SecurityGroupName' or 'EC2SecurityGroupId' must be provided.
+rdsgiEC2SecurityGroupOwnerId :: Lens' RevokeDBSecurityGroupIngress (Maybe Text)
+rdsgiEC2SecurityGroupOwnerId = lens _rdsgiEC2SecurityGroupOwnerId (\ s a -> s{_rdsgiEC2SecurityGroupOwnerId = a});
 
 -- | The name of the EC2 security group to revoke access from. For VPC DB
 -- security groups, 'EC2SecurityGroupId' must be provided. Otherwise,
--- EC2SecurityGroupOwnerId and either 'EC2SecurityGroupName' or 'EC2SecurityGroupId'
--- must be provided.
-rdbsgiEC2SecurityGroupName :: Lens' RevokeDBSecurityGroupIngress (Maybe Text)
-rdbsgiEC2SecurityGroupName =
-    lens _rdbsgiEC2SecurityGroupName
-        (\s a -> s { _rdbsgiEC2SecurityGroupName = a })
+-- EC2SecurityGroupOwnerId and either 'EC2SecurityGroupName' or
+-- 'EC2SecurityGroupId' must be provided.
+rdsgiEC2SecurityGroupName :: Lens' RevokeDBSecurityGroupIngress (Maybe Text)
+rdsgiEC2SecurityGroupName = lens _rdsgiEC2SecurityGroupName (\ s a -> s{_rdsgiEC2SecurityGroupName = a});
 
--- | The AWS Account Number of the owner of the EC2 security group specified in
--- the 'EC2SecurityGroupName' parameter. The AWS Access Key ID is not an
--- acceptable value. For VPC DB security groups, 'EC2SecurityGroupId' must be
--- provided. Otherwise, EC2SecurityGroupOwnerId and either 'EC2SecurityGroupName'
--- or 'EC2SecurityGroupId' must be provided.
-rdbsgiEC2SecurityGroupOwnerId :: Lens' RevokeDBSecurityGroupIngress (Maybe Text)
-rdbsgiEC2SecurityGroupOwnerId =
-    lens _rdbsgiEC2SecurityGroupOwnerId
-        (\s a -> s { _rdbsgiEC2SecurityGroupOwnerId = a })
+-- | The IP range to revoke access from. Must be a valid CIDR range. If
+-- 'CIDRIP' is specified, 'EC2SecurityGroupName', 'EC2SecurityGroupId' and
+-- 'EC2SecurityGroupOwnerId' cannot be provided.
+rdsgiCIdRIP :: Lens' RevokeDBSecurityGroupIngress (Maybe Text)
+rdsgiCIdRIP = lens _rdsgiCIdRIP (\ s a -> s{_rdsgiCIdRIP = a});
 
-newtype RevokeDBSecurityGroupIngressResponse = RevokeDBSecurityGroupIngressResponse
-    { _rdbsgirDBSecurityGroup :: Maybe DBSecurityGroup
-    } deriving (Eq, Read, Show)
+-- | The id of the EC2 security group to revoke access from. For VPC DB
+-- security groups, 'EC2SecurityGroupId' must be provided. Otherwise,
+-- EC2SecurityGroupOwnerId and either 'EC2SecurityGroupName' or
+-- 'EC2SecurityGroupId' must be provided.
+rdsgiEC2SecurityGroupId :: Lens' RevokeDBSecurityGroupIngress (Maybe Text)
+rdsgiEC2SecurityGroupId = lens _rdsgiEC2SecurityGroupId (\ s a -> s{_rdsgiEC2SecurityGroupId = a});
 
--- | 'RevokeDBSecurityGroupIngressResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rdbsgirDBSecurityGroup' @::@ 'Maybe' 'DBSecurityGroup'
---
-revokeDBSecurityGroupIngressResponse :: RevokeDBSecurityGroupIngressResponse
-revokeDBSecurityGroupIngressResponse = RevokeDBSecurityGroupIngressResponse
-    { _rdbsgirDBSecurityGroup = Nothing
-    }
+-- | The name of the DB security group to revoke ingress from.
+rdsgiDBSecurityGroupName :: Lens' RevokeDBSecurityGroupIngress Text
+rdsgiDBSecurityGroupName = lens _rdsgiDBSecurityGroupName (\ s a -> s{_rdsgiDBSecurityGroupName = a});
 
-rdbsgirDBSecurityGroup :: Lens' RevokeDBSecurityGroupIngressResponse (Maybe DBSecurityGroup)
-rdbsgirDBSecurityGroup =
-    lens _rdbsgirDBSecurityGroup (\s a -> s { _rdbsgirDBSecurityGroup = a })
+instance AWSRequest RevokeDBSecurityGroupIngress
+         where
+        type Sv RevokeDBSecurityGroupIngress = RDS
+        type Rs RevokeDBSecurityGroupIngress =
+             RevokeDBSecurityGroupIngressResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "RevokeDBSecurityGroupIngressResult"
+              (\ s h x ->
+                 RevokeDBSecurityGroupIngressResponse' <$>
+                   (x .@? "DBSecurityGroup") <*> (pure (fromEnum s)))
 
+instance ToHeaders RevokeDBSecurityGroupIngress where
+        toHeaders = const mempty
+
 instance ToPath RevokeDBSecurityGroupIngress where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery RevokeDBSecurityGroupIngress where
-    toQuery RevokeDBSecurityGroupIngress{..} = mconcat
-        [ "CIDRIP"                  =? _rdbsgiCIDRIP
-        , "DBSecurityGroupName"     =? _rdbsgiDBSecurityGroupName
-        , "EC2SecurityGroupId"      =? _rdbsgiEC2SecurityGroupId
-        , "EC2SecurityGroupName"    =? _rdbsgiEC2SecurityGroupName
-        , "EC2SecurityGroupOwnerId" =? _rdbsgiEC2SecurityGroupOwnerId
-        ]
+        toQuery RevokeDBSecurityGroupIngress'{..}
+          = mconcat
+              ["Action" =:
+                 ("RevokeDBSecurityGroupIngress" :: ByteString),
+               "Version" =: ("2014-10-31" :: ByteString),
+               "EC2SecurityGroupOwnerId" =:
+                 _rdsgiEC2SecurityGroupOwnerId,
+               "EC2SecurityGroupName" =: _rdsgiEC2SecurityGroupName,
+               "CIDRIP" =: _rdsgiCIdRIP,
+               "EC2SecurityGroupId" =: _rdsgiEC2SecurityGroupId,
+               "DBSecurityGroupName" =: _rdsgiDBSecurityGroupName]
 
-instance ToHeaders RevokeDBSecurityGroupIngress
+-- | /See:/ 'revokeDBSecurityGroupIngressResponse' smart constructor.
+data RevokeDBSecurityGroupIngressResponse = RevokeDBSecurityGroupIngressResponse'
+    { _rdsgirsDBSecurityGroup :: !(Maybe DBSecurityGroup)
+    , _rdsgirsStatus          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest RevokeDBSecurityGroupIngress where
-    type Sv RevokeDBSecurityGroupIngress = RDS
-    type Rs RevokeDBSecurityGroupIngress = RevokeDBSecurityGroupIngressResponse
+-- | Creates a value of 'RevokeDBSecurityGroupIngressResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdsgirsDBSecurityGroup'
+--
+-- * 'rdsgirsStatus'
+revokeDBSecurityGroupIngressResponse
+    :: Int -- ^ 'rdsgirsStatus'
+    -> RevokeDBSecurityGroupIngressResponse
+revokeDBSecurityGroupIngressResponse pStatus_ =
+    RevokeDBSecurityGroupIngressResponse'
+    { _rdsgirsDBSecurityGroup = Nothing
+    , _rdsgirsStatus = pStatus_
+    }
 
-    request  = post "RevokeDBSecurityGroupIngress"
-    response = xmlResponse
+-- | Undocumented member.
+rdsgirsDBSecurityGroup :: Lens' RevokeDBSecurityGroupIngressResponse (Maybe DBSecurityGroup)
+rdsgirsDBSecurityGroup = lens _rdsgirsDBSecurityGroup (\ s a -> s{_rdsgirsDBSecurityGroup = a});
 
-instance FromXML RevokeDBSecurityGroupIngressResponse where
-    parseXML = withElement "RevokeDBSecurityGroupIngressResult" $ \x -> RevokeDBSecurityGroupIngressResponse
-        <$> x .@? "DBSecurityGroup"
+-- | The response status code.
+rdsgirsStatus :: Lens' RevokeDBSecurityGroupIngressResponse Int
+rdsgirsStatus = lens _rdsgirsStatus (\ s a -> s{_rdsgirsStatus = a});
diff --git a/gen/Network/AWS/RDS/Types.hs b/gen/Network/AWS/RDS/Types.hs
--- a/gen/Network/AWS/RDS/Types.hs
+++ b/gen/Network/AWS/RDS/Types.hs
@@ -1,4135 +1,1029 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-{-# LANGUAGE ViewPatterns                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.RDS.Types
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
-module Network.AWS.RDS.Types
-    (
-    -- * Service
-      RDS
-    -- ** Error
-    , RESTError
-    -- ** XML
-    , ns
-
-    -- * PendingMaintenanceAction
-    , PendingMaintenanceAction
-    , pendingMaintenanceAction
-    , pmaAction
-    , pmaAutoAppliedAfterDate
-    , pmaCurrentApplyDate
-    , pmaDescription
-    , pmaForcedApplyDate
-    , pmaOptInStatus
-
-    -- * OptionGroup
-    , OptionGroup
-    , optionGroup
-    , ogAllowsVpcAndNonVpcInstanceMemberships
-    , ogEngineName
-    , ogMajorEngineVersion
-    , ogOptionGroupDescription
-    , ogOptionGroupName
-    , ogOptions
-    , ogVpcId
-
-    -- * DBParameterGroupStatus
-    , DBParameterGroupStatus
-    , dbparameterGroupStatus
-    , dbpgsDBParameterGroupName
-    , dbpgsParameterApplyStatus
-
-    -- * Event
-    , Event
-    , event
-    , eDate
-    , eEventCategories
-    , eMessage
-    , eSourceIdentifier
-    , eSourceType
-
-    -- * DBSecurityGroup
-    , DBSecurityGroup
-    , dbsecurityGroup
-    , dbsgDBSecurityGroupDescription
-    , dbsgDBSecurityGroupName
-    , dbsgEC2SecurityGroups
-    , dbsgIPRanges
-    , dbsgOwnerId
-    , dbsgVpcId
-
-    -- * Tag
-    , Tag
-    , tag
-    , tagKey
-    , tagValue
-
-    -- * DBEngineVersion
-    , DBEngineVersion
-    , dbengineVersion
-    , dbevDBEngineDescription
-    , dbevDBEngineVersionDescription
-    , dbevDBParameterGroupFamily
-    , dbevDefaultCharacterSet
-    , dbevEngine
-    , dbevEngineVersion
-    , dbevSupportedCharacterSets
-
-    -- * DBSnapshot
-    , DBSnapshot
-    , dbsnapshot
-    , dbsAllocatedStorage
-    , dbsAvailabilityZone
-    , dbsDBInstanceIdentifier
-    , dbsDBSnapshotIdentifier
-    , dbsEncrypted
-    , dbsEngine
-    , dbsEngineVersion
-    , dbsInstanceCreateTime
-    , dbsIops
-    , dbsKmsKeyId
-    , dbsLicenseModel
-    , dbsMasterUsername
-    , dbsOptionGroupName
-    , dbsPercentProgress
-    , dbsPort
-    , dbsSnapshotCreateTime
-    , dbsSnapshotType
-    , dbsSourceRegion
-    , dbsStatus
-    , dbsStorageType
-    , dbsTdeCredentialArn
-    , dbsVpcId
-
-    -- * DBSecurityGroupMembership
-    , DBSecurityGroupMembership
-    , dbsecurityGroupMembership
-    , dbsgmDBSecurityGroupName
-    , dbsgmStatus
-
-    -- * EC2SecurityGroup
-    , EC2SecurityGroup
-    , ec2SecurityGroup
-    , ecsgEC2SecurityGroupId
-    , ecsgEC2SecurityGroupName
-    , ecsgEC2SecurityGroupOwnerId
-    , ecsgStatus
-
-    -- * SourceType
-    , SourceType (..)
-
-    -- * ResourcePendingMaintenanceActions
-    , ResourcePendingMaintenanceActions
-    , resourcePendingMaintenanceActions
-    , rpmaPendingMaintenanceActionDetails
-    , rpmaResourceIdentifier
-
-    -- * DBParameterGroup
-    , DBParameterGroup
-    , dbparameterGroup
-    , dbpgDBParameterGroupFamily
-    , dbpgDBParameterGroupName
-    , dbpgDescription
-
-    -- * ReservedDBInstancesOffering
-    , ReservedDBInstancesOffering
-    , reservedDBInstancesOffering
-    , rdbioCurrencyCode
-    , rdbioDBInstanceClass
-    , rdbioDuration
-    , rdbioFixedPrice
-    , rdbioMultiAZ
-    , rdbioOfferingType
-    , rdbioProductDescription
-    , rdbioRecurringCharges
-    , rdbioReservedDBInstancesOfferingId
-    , rdbioUsagePrice
-
-    -- * ApplyMethod
-    , ApplyMethod (..)
-
-    -- * CharacterSet
-    , CharacterSet
-    , characterSet
-    , csCharacterSetDescription
-    , csCharacterSetName
-
-    -- * Subnet
-    , Subnet
-    , subnet
-    , sSubnetAvailabilityZone
-    , sSubnetIdentifier
-    , sSubnetStatus
-
-    -- * ReservedDBInstance
-    , ReservedDBInstance
-    , reservedDBInstance
-    , rdbiCurrencyCode
-    , rdbiDBInstanceClass
-    , rdbiDBInstanceCount
-    , rdbiDuration
-    , rdbiFixedPrice
-    , rdbiMultiAZ
-    , rdbiOfferingType
-    , rdbiProductDescription
-    , rdbiRecurringCharges
-    , rdbiReservedDBInstanceId
-    , rdbiReservedDBInstancesOfferingId
-    , rdbiStartTime
-    , rdbiState
-    , rdbiUsagePrice
-
-    -- * EngineDefaults
-    , EngineDefaults
-    , engineDefaults
-    , edDBParameterGroupFamily
-    , edMarker
-    , edParameters
-
-    -- * DBParameterGroupNameMessage
-    , DBParameterGroupNameMessage
-    , dbparameterGroupNameMessage
-    , dbpgnmDBParameterGroupName
-
-    -- * OptionGroupOption
-    , OptionGroupOption
-    , optionGroupOption
-    , ogoDefaultPort
-    , ogoDescription
-    , ogoEngineName
-    , ogoMajorEngineVersion
-    , ogoMinimumRequiredMinorEngineVersion
-    , ogoName
-    , ogoOptionGroupOptionSettings
-    , ogoOptionsDependedOn
-    , ogoPermanent
-    , ogoPersistent
-    , ogoPortRequired
-
-    -- * DBInstance
-    , DBInstance
-    , dbinstance
-    , dbiAllocatedStorage
-    , dbiAutoMinorVersionUpgrade
-    , dbiAvailabilityZone
-    , dbiBackupRetentionPeriod
-    , dbiCACertificateIdentifier
-    , dbiCharacterSetName
-    , dbiDBInstanceClass
-    , dbiDBInstanceIdentifier
-    , dbiDBInstanceStatus
-    , dbiDBName
-    , dbiDBParameterGroups
-    , dbiDBSecurityGroups
-    , dbiDBSubnetGroup
-    , dbiDbiResourceId
-    , dbiEndpoint
-    , dbiEngine
-    , dbiEngineVersion
-    , dbiInstanceCreateTime
-    , dbiIops
-    , dbiKmsKeyId
-    , dbiLatestRestorableTime
-    , dbiLicenseModel
-    , dbiMasterUsername
-    , dbiMultiAZ
-    , dbiOptionGroupMemberships
-    , dbiPendingModifiedValues
-    , dbiPreferredBackupWindow
-    , dbiPreferredMaintenanceWindow
-    , dbiPubliclyAccessible
-    , dbiReadReplicaDBInstanceIdentifiers
-    , dbiReadReplicaSourceDBInstanceIdentifier
-    , dbiSecondaryAvailabilityZone
-    , dbiStatusInfos
-    , dbiStorageEncrypted
-    , dbiStorageType
-    , dbiTdeCredentialArn
-    , dbiVpcSecurityGroups
-
-    -- * AccountQuota
-    , AccountQuota
-    , accountQuota
-    , aqAccountQuotaName
-    , aqMax
-    , aqUsed
-
-    -- * AvailabilityZone
-    , AvailabilityZone
-    , availabilityZone
-    , azName
-
-    -- * EventSubscription
-    , EventSubscription
-    , eventSubscription
-    , esCustSubscriptionId
-    , esCustomerAwsId
-    , esEnabled
-    , esEventCategoriesList
-    , esSnsTopicArn
-    , esSourceIdsList
-    , esSourceType
-    , esStatus
-    , esSubscriptionCreationTime
-
-    -- * DBSubnetGroup
-    , DBSubnetGroup
-    , dbsubnetGroup
-    , dbsg1DBSubnetGroupDescription
-    , dbsg1DBSubnetGroupName
-    , dbsg1SubnetGroupStatus
-    , dbsg1Subnets
-    , dbsg1VpcId
-
-    -- * Certificate
-    , Certificate
-    , certificate
-    , cCertificateIdentifier
-    , cCertificateType
-    , cThumbprint
-    , cValidFrom
-    , cValidTill
-
-    -- * DBInstanceStatusInfo
-    , DBInstanceStatusInfo
-    , dbinstanceStatusInfo
-    , dbisiMessage
-    , dbisiNormal
-    , dbisiStatus
-    , dbisiStatusType
-
-    -- * OptionSetting
-    , OptionSetting
-    , optionSetting
-    , osAllowedValues
-    , osApplyType
-    , osDataType
-    , osDefaultValue
-    , osDescription
-    , osIsCollection
-    , osIsModifiable
-    , osName
-    , osValue
-
-    -- * DescribeDBLogFilesDetails
-    , DescribeDBLogFilesDetails
-    , describeDBLogFilesDetails
-    , ddblfdLastWritten
-    , ddblfdLogFileName
-    , ddblfdSize
-
-    -- * OrderableDBInstanceOption
-    , OrderableDBInstanceOption
-    , orderableDBInstanceOption
-    , odbioAvailabilityZones
-    , odbioDBInstanceClass
-    , odbioEngine
-    , odbioEngineVersion
-    , odbioLicenseModel
-    , odbioMultiAZCapable
-    , odbioReadReplicaCapable
-    , odbioStorageType
-    , odbioSupportsIops
-    , odbioSupportsStorageEncryption
-    , odbioVpc
-
-    -- * Filter
-    , Filter
-    , filter'
-    , fName
-    , fValues
-
-    -- * RecurringCharge
-    , RecurringCharge
-    , recurringCharge
-    , rcRecurringChargeAmount
-    , rcRecurringChargeFrequency
-
-    -- * Endpoint
-    , Endpoint
-    , endpoint
-    , eAddress
-    , ePort
-
-    -- * OptionConfiguration
-    , OptionConfiguration
-    , optionConfiguration
-    , ocDBSecurityGroupMemberships
-    , ocOptionName
-    , ocOptionSettings
-    , ocPort
-    , ocVpcSecurityGroupMemberships
-
-    -- * Option
-    , Option
-    , option
-    , oDBSecurityGroupMemberships
-    , oOptionDescription
-    , oOptionName
-    , oOptionSettings
-    , oPermanent
-    , oPersistent
-    , oPort
-    , oVpcSecurityGroupMemberships
-
-    -- * IPRange
-    , IPRange
-    , iprange
-    , iprCIDRIP
-    , iprStatus
-
-    -- * OptionGroupMembership
-    , OptionGroupMembership
-    , optionGroupMembership
-    , ogmOptionGroupName
-    , ogmStatus
-
-    -- * EventCategoriesMap
-    , EventCategoriesMap
-    , eventCategoriesMap
-    , ecmEventCategories
-    , ecmSourceType
-
-    -- * PendingModifiedValues
-    , PendingModifiedValues
-    , pendingModifiedValues
-    , pmvAllocatedStorage
-    , pmvBackupRetentionPeriod
-    , pmvCACertificateIdentifier
-    , pmvDBInstanceClass
-    , pmvDBInstanceIdentifier
-    , pmvEngineVersion
-    , pmvIops
-    , pmvMasterUserPassword
-    , pmvMultiAZ
-    , pmvPort
-    , pmvStorageType
-
-    -- * VpcSecurityGroupMembership
-    , VpcSecurityGroupMembership
-    , vpcSecurityGroupMembership
-    , vsgmStatus
-    , vsgmVpcSecurityGroupId
-
-    -- * Parameter
-    , Parameter
-    , parameter
-    , pAllowedValues
-    , pApplyMethod
-    , pApplyType
-    , pDataType
-    , pDescription
-    , pIsModifiable
-    , pMinimumEngineVersion
-    , pParameterName
-    , pParameterValue
-    , pSource
-
-    -- * OptionGroupOptionSetting
-    , OptionGroupOptionSetting
-    , optionGroupOptionSetting
-    , ogosAllowedValues
-    , ogosApplyType
-    , ogosDefaultValue
-    , ogosIsModifiable
-    , ogosSettingDescription
-    , ogosSettingName
-    ) where
-
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
-
--- | Version @2014-10-31@ of the Amazon Relational Database Service service.
-data RDS
-
-instance AWSService RDS where
-    type Sg RDS = V4
-    type Er RDS = RESTError
-
-    service = service'
-      where
-        service' :: Service RDS
-        service' = Service
-            { _svcAbbrev       = "RDS"
-            , _svcPrefix       = "rds"
-            , _svcVersion      = "2014-10-31"
-            , _svcTargetPrefix = Nothing
-            , _svcJSONVersion  = Nothing
-            , _svcHandle       = handle
-            , _svcRetry        = retry
-            }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError RESTError)
-        handle = restError statusSuccess service'
-
-        retry :: Retry RDS
-        retry = Exponential
-            { _retryBase     = 0.05
-            , _retryGrowth   = 2
-            , _retryAttempts = 5
-            , _retryCheck    = check
-            }
-
-        check :: Status
-              -> RESTError
-              -> Bool
-        check (statusCode -> s) (awsErrorCode -> e)
-            | s == 400 && (Just "Throttling") == e = True -- Throttling
-            | s == 500  = True -- General Server Error
-            | s == 509  = True -- Limit Exceeded
-            | s == 503  = True -- Service Unavailable
-            | otherwise = False
-
-ns :: Text
-ns = "http://rds.amazonaws.com/doc/2014-10-31/"
-{-# INLINE ns #-}
-
-data PendingMaintenanceAction = PendingMaintenanceAction
-    { _pmaAction               :: Maybe Text
-    , _pmaAutoAppliedAfterDate :: Maybe ISO8601
-    , _pmaCurrentApplyDate     :: Maybe ISO8601
-    , _pmaDescription          :: Maybe Text
-    , _pmaForcedApplyDate      :: Maybe ISO8601
-    , _pmaOptInStatus          :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'PendingMaintenanceAction' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'pmaAction' @::@ 'Maybe' 'Text'
---
--- * 'pmaAutoAppliedAfterDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'pmaCurrentApplyDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'pmaDescription' @::@ 'Maybe' 'Text'
---
--- * 'pmaForcedApplyDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'pmaOptInStatus' @::@ 'Maybe' 'Text'
---
-pendingMaintenanceAction :: PendingMaintenanceAction
-pendingMaintenanceAction = PendingMaintenanceAction
-    { _pmaAction               = Nothing
-    , _pmaAutoAppliedAfterDate = Nothing
-    , _pmaForcedApplyDate      = Nothing
-    , _pmaOptInStatus          = Nothing
-    , _pmaCurrentApplyDate     = Nothing
-    , _pmaDescription          = Nothing
-    }
-
--- | The type of pending maintenance action that is available for the resource.
-pmaAction :: Lens' PendingMaintenanceAction (Maybe Text)
-pmaAction = lens _pmaAction (\s a -> s { _pmaAction = a })
-
--- | The date of the maintenance window when the action will be applied. The
--- maintenance action will be applied to the resource during its first
--- maintenance window after this date. If this date is specified, any 'next-maintenance' opt-in requests are ignored.
-pmaAutoAppliedAfterDate :: Lens' PendingMaintenanceAction (Maybe UTCTime)
-pmaAutoAppliedAfterDate =
-    lens _pmaAutoAppliedAfterDate (\s a -> s { _pmaAutoAppliedAfterDate = a })
-        . mapping _Time
-
--- | The effective date when the pending maintenance action will be applied to the
--- resource. This date takes into account opt-in requests received from the 'ApplyPendingMaintenanceAction' API, the 'AutoAppliedAfterDate', and the 'ForcedApplyDate'. This value is blank
--- if an opt-in request has not been received and nothing has been specified as 'AutoAppliedAfterDate' or 'ForcedApplyDate'.
-pmaCurrentApplyDate :: Lens' PendingMaintenanceAction (Maybe UTCTime)
-pmaCurrentApplyDate =
-    lens _pmaCurrentApplyDate (\s a -> s { _pmaCurrentApplyDate = a })
-        . mapping _Time
-
--- | A description providing more detail about the maintenance action.
-pmaDescription :: Lens' PendingMaintenanceAction (Maybe Text)
-pmaDescription = lens _pmaDescription (\s a -> s { _pmaDescription = a })
-
--- | The date when the maintenance action will be automatically applied. The
--- maintenance action will be applied to the resource on this date regardless of
--- the maintenance window for the resource. If this date is specified, any 'immediate' opt-in requests are ignored.
-pmaForcedApplyDate :: Lens' PendingMaintenanceAction (Maybe UTCTime)
-pmaForcedApplyDate =
-    lens _pmaForcedApplyDate (\s a -> s { _pmaForcedApplyDate = a })
-        . mapping _Time
-
--- | Indicates the type of opt-in request that has been received for the resource.
-pmaOptInStatus :: Lens' PendingMaintenanceAction (Maybe Text)
-pmaOptInStatus = lens _pmaOptInStatus (\s a -> s { _pmaOptInStatus = a })
-
-instance FromXML PendingMaintenanceAction where
-    parseXML x = PendingMaintenanceAction
-        <$> x .@? "Action"
-        <*> x .@? "AutoAppliedAfterDate"
-        <*> x .@? "CurrentApplyDate"
-        <*> x .@? "Description"
-        <*> x .@? "ForcedApplyDate"
-        <*> x .@? "OptInStatus"
-
-instance ToQuery PendingMaintenanceAction where
-    toQuery PendingMaintenanceAction{..} = mconcat
-        [ "Action"               =? _pmaAction
-        , "AutoAppliedAfterDate" =? _pmaAutoAppliedAfterDate
-        , "CurrentApplyDate"     =? _pmaCurrentApplyDate
-        , "Description"          =? _pmaDescription
-        , "ForcedApplyDate"      =? _pmaForcedApplyDate
-        , "OptInStatus"          =? _pmaOptInStatus
-        ]
-
-data OptionGroup = OptionGroup
-    { _ogAllowsVpcAndNonVpcInstanceMemberships :: Maybe Bool
-    , _ogEngineName                            :: Maybe Text
-    , _ogMajorEngineVersion                    :: Maybe Text
-    , _ogOptionGroupDescription                :: Maybe Text
-    , _ogOptionGroupName                       :: Maybe Text
-    , _ogOptions                               :: List "member" Option
-    , _ogVpcId                                 :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'OptionGroup' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ogAllowsVpcAndNonVpcInstanceMemberships' @::@ 'Maybe' 'Bool'
---
--- * 'ogEngineName' @::@ 'Maybe' 'Text'
---
--- * 'ogMajorEngineVersion' @::@ 'Maybe' 'Text'
---
--- * 'ogOptionGroupDescription' @::@ 'Maybe' 'Text'
---
--- * 'ogOptionGroupName' @::@ 'Maybe' 'Text'
---
--- * 'ogOptions' @::@ ['Option']
---
--- * 'ogVpcId' @::@ 'Maybe' 'Text'
---
-optionGroup :: OptionGroup
-optionGroup = OptionGroup
-    { _ogOptionGroupName                       = Nothing
-    , _ogOptionGroupDescription                = Nothing
-    , _ogEngineName                            = Nothing
-    , _ogMajorEngineVersion                    = Nothing
-    , _ogOptions                               = mempty
-    , _ogAllowsVpcAndNonVpcInstanceMemberships = Nothing
-    , _ogVpcId                                 = Nothing
-    }
-
--- | Indicates whether this option group can be applied to both VPC and non-VPC
--- instances. The value 'true' indicates the option group can be applied to both
--- VPC and non-VPC instances.
-ogAllowsVpcAndNonVpcInstanceMemberships :: Lens' OptionGroup (Maybe Bool)
-ogAllowsVpcAndNonVpcInstanceMemberships =
-    lens _ogAllowsVpcAndNonVpcInstanceMemberships
-        (\s a -> s { _ogAllowsVpcAndNonVpcInstanceMemberships = a })
-
--- | Engine name that this option group can be applied to.
-ogEngineName :: Lens' OptionGroup (Maybe Text)
-ogEngineName = lens _ogEngineName (\s a -> s { _ogEngineName = a })
-
--- | Indicates the major engine version associated with this option group.
-ogMajorEngineVersion :: Lens' OptionGroup (Maybe Text)
-ogMajorEngineVersion =
-    lens _ogMajorEngineVersion (\s a -> s { _ogMajorEngineVersion = a })
-
--- | Provides a description of the option group.
-ogOptionGroupDescription :: Lens' OptionGroup (Maybe Text)
-ogOptionGroupDescription =
-    lens _ogOptionGroupDescription
-        (\s a -> s { _ogOptionGroupDescription = a })
-
--- | Specifies the name of the option group.
-ogOptionGroupName :: Lens' OptionGroup (Maybe Text)
-ogOptionGroupName =
-    lens _ogOptionGroupName (\s a -> s { _ogOptionGroupName = a })
-
--- | Indicates what options are available in the option group.
-ogOptions :: Lens' OptionGroup [Option]
-ogOptions = lens _ogOptions (\s a -> s { _ogOptions = a }) . _List
-
--- | If AllowsVpcAndNonVpcInstanceMemberships is 'false', this field is blank. If AllowsVpcAndNonVpcInstanceMemberships
--- is 'true' and this field is blank, then this option group can be applied to
--- both VPC and non-VPC instances. If this field contains a value, then this
--- option group can only be applied to instances that are in the VPC indicated
--- by this field.
-ogVpcId :: Lens' OptionGroup (Maybe Text)
-ogVpcId = lens _ogVpcId (\s a -> s { _ogVpcId = a })
-
-instance FromXML OptionGroup where
-    parseXML x = OptionGroup
-        <$> x .@? "AllowsVpcAndNonVpcInstanceMemberships"
-        <*> x .@? "EngineName"
-        <*> x .@? "MajorEngineVersion"
-        <*> x .@? "OptionGroupDescription"
-        <*> x .@? "OptionGroupName"
-        <*> x .@? "Options" .!@ mempty
-        <*> x .@? "VpcId"
-
-instance ToQuery OptionGroup where
-    toQuery OptionGroup{..} = mconcat
-        [ "AllowsVpcAndNonVpcInstanceMemberships" =? _ogAllowsVpcAndNonVpcInstanceMemberships
-        , "EngineName"                            =? _ogEngineName
-        , "MajorEngineVersion"                    =? _ogMajorEngineVersion
-        , "OptionGroupDescription"                =? _ogOptionGroupDescription
-        , "OptionGroupName"                       =? _ogOptionGroupName
-        , "Options"                               =? _ogOptions
-        , "VpcId"                                 =? _ogVpcId
-        ]
-
-data DBParameterGroupStatus = DBParameterGroupStatus
-    { _dbpgsDBParameterGroupName :: Maybe Text
-    , _dbpgsParameterApplyStatus :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DBParameterGroupStatus' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dbpgsDBParameterGroupName' @::@ 'Maybe' 'Text'
---
--- * 'dbpgsParameterApplyStatus' @::@ 'Maybe' 'Text'
---
-dbparameterGroupStatus :: DBParameterGroupStatus
-dbparameterGroupStatus = DBParameterGroupStatus
-    { _dbpgsDBParameterGroupName = Nothing
-    , _dbpgsParameterApplyStatus = Nothing
-    }
-
--- | The name of the DP parameter group.
-dbpgsDBParameterGroupName :: Lens' DBParameterGroupStatus (Maybe Text)
-dbpgsDBParameterGroupName =
-    lens _dbpgsDBParameterGroupName
-        (\s a -> s { _dbpgsDBParameterGroupName = a })
-
--- | The status of parameter updates.
-dbpgsParameterApplyStatus :: Lens' DBParameterGroupStatus (Maybe Text)
-dbpgsParameterApplyStatus =
-    lens _dbpgsParameterApplyStatus
-        (\s a -> s { _dbpgsParameterApplyStatus = a })
-
-instance FromXML DBParameterGroupStatus where
-    parseXML x = DBParameterGroupStatus
-        <$> x .@? "DBParameterGroupName"
-        <*> x .@? "ParameterApplyStatus"
-
-instance ToQuery DBParameterGroupStatus where
-    toQuery DBParameterGroupStatus{..} = mconcat
-        [ "DBParameterGroupName" =? _dbpgsDBParameterGroupName
-        , "ParameterApplyStatus" =? _dbpgsParameterApplyStatus
-        ]
-
-data Event = Event
-    { _eDate             :: Maybe ISO8601
-    , _eEventCategories  :: List "member" Text
-    , _eMessage          :: Maybe Text
-    , _eSourceIdentifier :: Maybe Text
-    , _eSourceType       :: Maybe SourceType
-    } deriving (Eq, Read, Show)
-
--- | 'Event' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'eDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'eEventCategories' @::@ ['Text']
---
--- * 'eMessage' @::@ 'Maybe' 'Text'
---
--- * 'eSourceIdentifier' @::@ 'Maybe' 'Text'
---
--- * 'eSourceType' @::@ 'Maybe' 'SourceType'
---
-event :: Event
-event = Event
-    { _eSourceIdentifier = Nothing
-    , _eSourceType       = Nothing
-    , _eMessage          = Nothing
-    , _eEventCategories  = mempty
-    , _eDate             = Nothing
-    }
-
--- | Specifies the date and time of the event.
-eDate :: Lens' Event (Maybe UTCTime)
-eDate = lens _eDate (\s a -> s { _eDate = a }) . mapping _Time
-
--- | Specifies the category for the event.
-eEventCategories :: Lens' Event [Text]
-eEventCategories = lens _eEventCategories (\s a -> s { _eEventCategories = a }) . _List
-
--- | Provides the text of this event.
-eMessage :: Lens' Event (Maybe Text)
-eMessage = lens _eMessage (\s a -> s { _eMessage = a })
-
--- | Provides the identifier for the source of the event.
-eSourceIdentifier :: Lens' Event (Maybe Text)
-eSourceIdentifier =
-    lens _eSourceIdentifier (\s a -> s { _eSourceIdentifier = a })
-
--- | Specifies the source type for this event.
-eSourceType :: Lens' Event (Maybe SourceType)
-eSourceType = lens _eSourceType (\s a -> s { _eSourceType = a })
-
-instance FromXML Event where
-    parseXML x = Event
-        <$> x .@? "Date"
-        <*> x .@? "EventCategories" .!@ mempty
-        <*> x .@? "Message"
-        <*> x .@? "SourceIdentifier"
-        <*> x .@? "SourceType"
-
-instance ToQuery Event where
-    toQuery Event{..} = mconcat
-        [ "Date"             =? _eDate
-        , "EventCategories"  =? _eEventCategories
-        , "Message"          =? _eMessage
-        , "SourceIdentifier" =? _eSourceIdentifier
-        , "SourceType"       =? _eSourceType
-        ]
-
-data DBSecurityGroup = DBSecurityGroup
-    { _dbsgDBSecurityGroupDescription :: Maybe Text
-    , _dbsgDBSecurityGroupName        :: Maybe Text
-    , _dbsgEC2SecurityGroups          :: List "member" EC2SecurityGroup
-    , _dbsgIPRanges                   :: List "member" IPRange
-    , _dbsgOwnerId                    :: Maybe Text
-    , _dbsgVpcId                      :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'DBSecurityGroup' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dbsgDBSecurityGroupDescription' @::@ 'Maybe' 'Text'
---
--- * 'dbsgDBSecurityGroupName' @::@ 'Maybe' 'Text'
---
--- * 'dbsgEC2SecurityGroups' @::@ ['EC2SecurityGroup']
---
--- * 'dbsgIPRanges' @::@ ['IPRange']
---
--- * 'dbsgOwnerId' @::@ 'Maybe' 'Text'
---
--- * 'dbsgVpcId' @::@ 'Maybe' 'Text'
---
-dbsecurityGroup :: DBSecurityGroup
-dbsecurityGroup = DBSecurityGroup
-    { _dbsgOwnerId                    = Nothing
-    , _dbsgDBSecurityGroupName        = Nothing
-    , _dbsgDBSecurityGroupDescription = Nothing
-    , _dbsgVpcId                      = Nothing
-    , _dbsgEC2SecurityGroups          = mempty
-    , _dbsgIPRanges                   = mempty
-    }
-
--- | Provides the description of the DB security group.
-dbsgDBSecurityGroupDescription :: Lens' DBSecurityGroup (Maybe Text)
-dbsgDBSecurityGroupDescription =
-    lens _dbsgDBSecurityGroupDescription
-        (\s a -> s { _dbsgDBSecurityGroupDescription = a })
-
--- | Specifies the name of the DB security group.
-dbsgDBSecurityGroupName :: Lens' DBSecurityGroup (Maybe Text)
-dbsgDBSecurityGroupName =
-    lens _dbsgDBSecurityGroupName (\s a -> s { _dbsgDBSecurityGroupName = a })
-
--- | Contains a list of 'EC2SecurityGroup' elements.
-dbsgEC2SecurityGroups :: Lens' DBSecurityGroup [EC2SecurityGroup]
-dbsgEC2SecurityGroups =
-    lens _dbsgEC2SecurityGroups (\s a -> s { _dbsgEC2SecurityGroups = a })
-        . _List
-
--- | Contains a list of 'IPRange' elements.
-dbsgIPRanges :: Lens' DBSecurityGroup [IPRange]
-dbsgIPRanges = lens _dbsgIPRanges (\s a -> s { _dbsgIPRanges = a }) . _List
-
--- | Provides the AWS ID of the owner of a specific DB security group.
-dbsgOwnerId :: Lens' DBSecurityGroup (Maybe Text)
-dbsgOwnerId = lens _dbsgOwnerId (\s a -> s { _dbsgOwnerId = a })
-
--- | Provides the VpcId of the DB security group.
-dbsgVpcId :: Lens' DBSecurityGroup (Maybe Text)
-dbsgVpcId = lens _dbsgVpcId (\s a -> s { _dbsgVpcId = a })
-
-instance FromXML DBSecurityGroup where
-    parseXML x = DBSecurityGroup
-        <$> x .@? "DBSecurityGroupDescription"
-        <*> x .@? "DBSecurityGroupName"
-        <*> x .@? "EC2SecurityGroups" .!@ mempty
-        <*> x .@? "IPRanges" .!@ mempty
-        <*> x .@? "OwnerId"
-        <*> x .@? "VpcId"
-
-instance ToQuery DBSecurityGroup where
-    toQuery DBSecurityGroup{..} = mconcat
-        [ "DBSecurityGroupDescription" =? _dbsgDBSecurityGroupDescription
-        , "DBSecurityGroupName"        =? _dbsgDBSecurityGroupName
-        , "EC2SecurityGroups"          =? _dbsgEC2SecurityGroups
-        , "IPRanges"                   =? _dbsgIPRanges
-        , "OwnerId"                    =? _dbsgOwnerId
-        , "VpcId"                      =? _dbsgVpcId
-        ]
-
-data Tag = Tag
-    { _tagKey   :: Maybe Text
-    , _tagValue :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Tag' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tagKey' @::@ 'Maybe' 'Text'
---
--- * 'tagValue' @::@ 'Maybe' 'Text'
---
-tag :: Tag
-tag = Tag
-    { _tagKey   = Nothing
-    , _tagValue = Nothing
-    }
-
--- | A key is the required name of the tag. The string value can be from 1 to 128
--- Unicode characters in length and cannot be prefixed with "aws:" or "rds:".
--- The string may only contain only the set of Unicode letters, digits,
--- white-space, '_', '.', '/', '=', '+', '-' (Java regex:
--- "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$").
-tagKey :: Lens' Tag (Maybe Text)
-tagKey = lens _tagKey (\s a -> s { _tagKey = a })
-
--- | A value is the optional value of the tag. The string value can be from 1 to
--- 256 Unicode characters in length and cannot be prefixed with "aws:" or
--- "rds:". The string may only contain only the set of Unicode letters, digits,
--- white-space, '_', '.', '/', '=', '+', '-' (Java regex:
--- "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$").
-tagValue :: Lens' Tag (Maybe Text)
-tagValue = lens _tagValue (\s a -> s { _tagValue = a })
-
-instance FromXML Tag where
-    parseXML x = Tag
-        <$> x .@? "Key"
-        <*> x .@? "Value"
-
-instance ToQuery Tag where
-    toQuery Tag{..} = mconcat
-        [ "Key"   =? _tagKey
-        , "Value" =? _tagValue
-        ]
-
-data DBEngineVersion = DBEngineVersion
-    { _dbevDBEngineDescription        :: Maybe Text
-    , _dbevDBEngineVersionDescription :: Maybe Text
-    , _dbevDBParameterGroupFamily     :: Maybe Text
-    , _dbevDefaultCharacterSet        :: Maybe CharacterSet
-    , _dbevEngine                     :: Maybe Text
-    , _dbevEngineVersion              :: Maybe Text
-    , _dbevSupportedCharacterSets     :: List "member" CharacterSet
-    } deriving (Eq, Read, Show)
-
--- | 'DBEngineVersion' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dbevDBEngineDescription' @::@ 'Maybe' 'Text'
---
--- * 'dbevDBEngineVersionDescription' @::@ 'Maybe' 'Text'
---
--- * 'dbevDBParameterGroupFamily' @::@ 'Maybe' 'Text'
---
--- * 'dbevDefaultCharacterSet' @::@ 'Maybe' 'CharacterSet'
---
--- * 'dbevEngine' @::@ 'Maybe' 'Text'
---
--- * 'dbevEngineVersion' @::@ 'Maybe' 'Text'
---
--- * 'dbevSupportedCharacterSets' @::@ ['CharacterSet']
---
-dbengineVersion :: DBEngineVersion
-dbengineVersion = DBEngineVersion
-    { _dbevEngine                     = Nothing
-    , _dbevEngineVersion              = Nothing
-    , _dbevDBParameterGroupFamily     = Nothing
-    , _dbevDBEngineDescription        = Nothing
-    , _dbevDBEngineVersionDescription = Nothing
-    , _dbevDefaultCharacterSet        = Nothing
-    , _dbevSupportedCharacterSets     = mempty
-    }
-
--- | The description of the database engine.
-dbevDBEngineDescription :: Lens' DBEngineVersion (Maybe Text)
-dbevDBEngineDescription =
-    lens _dbevDBEngineDescription (\s a -> s { _dbevDBEngineDescription = a })
-
--- | The description of the database engine version.
-dbevDBEngineVersionDescription :: Lens' DBEngineVersion (Maybe Text)
-dbevDBEngineVersionDescription =
-    lens _dbevDBEngineVersionDescription
-        (\s a -> s { _dbevDBEngineVersionDescription = a })
-
--- | The name of the DB parameter group family for the database engine.
-dbevDBParameterGroupFamily :: Lens' DBEngineVersion (Maybe Text)
-dbevDBParameterGroupFamily =
-    lens _dbevDBParameterGroupFamily
-        (\s a -> s { _dbevDBParameterGroupFamily = a })
-
--- | The default character set for new instances of this engine version, if the 'CharacterSetName' parameter of the CreateDBInstance API is not specified.
-dbevDefaultCharacterSet :: Lens' DBEngineVersion (Maybe CharacterSet)
-dbevDefaultCharacterSet =
-    lens _dbevDefaultCharacterSet (\s a -> s { _dbevDefaultCharacterSet = a })
-
--- | The name of the database engine.
-dbevEngine :: Lens' DBEngineVersion (Maybe Text)
-dbevEngine = lens _dbevEngine (\s a -> s { _dbevEngine = a })
-
--- | The version number of the database engine.
-dbevEngineVersion :: Lens' DBEngineVersion (Maybe Text)
-dbevEngineVersion =
-    lens _dbevEngineVersion (\s a -> s { _dbevEngineVersion = a })
-
--- | A list of the character sets supported by this engine for the 'CharacterSetName' parameter of the CreateDBInstance API.
-dbevSupportedCharacterSets :: Lens' DBEngineVersion [CharacterSet]
-dbevSupportedCharacterSets =
-    lens _dbevSupportedCharacterSets
-        (\s a -> s { _dbevSupportedCharacterSets = a })
-            . _List
-
-instance FromXML DBEngineVersion where
-    parseXML x = DBEngineVersion
-        <$> x .@? "DBEngineDescription"
-        <*> x .@? "DBEngineVersionDescription"
-        <*> x .@? "DBParameterGroupFamily"
-        <*> x .@? "DefaultCharacterSet"
-        <*> x .@? "Engine"
-        <*> x .@? "EngineVersion"
-        <*> x .@? "SupportedCharacterSets" .!@ mempty
-
-instance ToQuery DBEngineVersion where
-    toQuery DBEngineVersion{..} = mconcat
-        [ "DBEngineDescription"        =? _dbevDBEngineDescription
-        , "DBEngineVersionDescription" =? _dbevDBEngineVersionDescription
-        , "DBParameterGroupFamily"     =? _dbevDBParameterGroupFamily
-        , "DefaultCharacterSet"        =? _dbevDefaultCharacterSet
-        , "Engine"                     =? _dbevEngine
-        , "EngineVersion"              =? _dbevEngineVersion
-        , "SupportedCharacterSets"     =? _dbevSupportedCharacterSets
-        ]
-
-data DBSnapshot = DBSnapshot
-    { _dbsAllocatedStorage     :: Maybe Int
-    , _dbsAvailabilityZone     :: Maybe Text
-    , _dbsDBInstanceIdentifier :: Maybe Text
-    , _dbsDBSnapshotIdentifier :: Maybe Text
-    , _dbsEncrypted            :: Maybe Bool
-    , _dbsEngine               :: Maybe Text
-    , _dbsEngineVersion        :: Maybe Text
-    , _dbsInstanceCreateTime   :: Maybe ISO8601
-    , _dbsIops                 :: Maybe Int
-    , _dbsKmsKeyId             :: Maybe Text
-    , _dbsLicenseModel         :: Maybe Text
-    , _dbsMasterUsername       :: Maybe Text
-    , _dbsOptionGroupName      :: Maybe Text
-    , _dbsPercentProgress      :: Maybe Int
-    , _dbsPort                 :: Maybe Int
-    , _dbsSnapshotCreateTime   :: Maybe ISO8601
-    , _dbsSnapshotType         :: Maybe Text
-    , _dbsSourceRegion         :: Maybe Text
-    , _dbsStatus               :: Maybe Text
-    , _dbsStorageType          :: Maybe Text
-    , _dbsTdeCredentialArn     :: Maybe Text
-    , _dbsVpcId                :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DBSnapshot' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dbsAllocatedStorage' @::@ 'Maybe' 'Int'
---
--- * 'dbsAvailabilityZone' @::@ 'Maybe' 'Text'
---
--- * 'dbsDBInstanceIdentifier' @::@ 'Maybe' 'Text'
---
--- * 'dbsDBSnapshotIdentifier' @::@ 'Maybe' 'Text'
---
--- * 'dbsEncrypted' @::@ 'Maybe' 'Bool'
---
--- * 'dbsEngine' @::@ 'Maybe' 'Text'
---
--- * 'dbsEngineVersion' @::@ 'Maybe' 'Text'
---
--- * 'dbsInstanceCreateTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'dbsIops' @::@ 'Maybe' 'Int'
---
--- * 'dbsKmsKeyId' @::@ 'Maybe' 'Text'
---
--- * 'dbsLicenseModel' @::@ 'Maybe' 'Text'
---
--- * 'dbsMasterUsername' @::@ 'Maybe' 'Text'
---
--- * 'dbsOptionGroupName' @::@ 'Maybe' 'Text'
---
--- * 'dbsPercentProgress' @::@ 'Maybe' 'Int'
---
--- * 'dbsPort' @::@ 'Maybe' 'Int'
---
--- * 'dbsSnapshotCreateTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'dbsSnapshotType' @::@ 'Maybe' 'Text'
---
--- * 'dbsSourceRegion' @::@ 'Maybe' 'Text'
---
--- * 'dbsStatus' @::@ 'Maybe' 'Text'
---
--- * 'dbsStorageType' @::@ 'Maybe' 'Text'
---
--- * 'dbsTdeCredentialArn' @::@ 'Maybe' 'Text'
---
--- * 'dbsVpcId' @::@ 'Maybe' 'Text'
---
-dbsnapshot :: DBSnapshot
-dbsnapshot = DBSnapshot
-    { _dbsDBSnapshotIdentifier = Nothing
-    , _dbsDBInstanceIdentifier = Nothing
-    , _dbsSnapshotCreateTime   = Nothing
-    , _dbsEngine               = Nothing
-    , _dbsAllocatedStorage     = Nothing
-    , _dbsStatus               = Nothing
-    , _dbsPort                 = Nothing
-    , _dbsAvailabilityZone     = Nothing
-    , _dbsVpcId                = Nothing
-    , _dbsInstanceCreateTime   = Nothing
-    , _dbsMasterUsername       = Nothing
-    , _dbsEngineVersion        = Nothing
-    , _dbsLicenseModel         = Nothing
-    , _dbsSnapshotType         = Nothing
-    , _dbsIops                 = Nothing
-    , _dbsOptionGroupName      = Nothing
-    , _dbsPercentProgress      = Nothing
-    , _dbsSourceRegion         = Nothing
-    , _dbsStorageType          = Nothing
-    , _dbsTdeCredentialArn     = Nothing
-    , _dbsEncrypted            = Nothing
-    , _dbsKmsKeyId             = Nothing
-    }
-
--- | Specifies the allocated storage size in gigabytes (GB).
-dbsAllocatedStorage :: Lens' DBSnapshot (Maybe Int)
-dbsAllocatedStorage =
-    lens _dbsAllocatedStorage (\s a -> s { _dbsAllocatedStorage = a })
-
--- | Specifies the name of the Availability Zone the DB instance was located in
--- at the time of the DB snapshot.
-dbsAvailabilityZone :: Lens' DBSnapshot (Maybe Text)
-dbsAvailabilityZone =
-    lens _dbsAvailabilityZone (\s a -> s { _dbsAvailabilityZone = a })
-
--- | Specifies the DB instance identifier of the DB instance this DB snapshot was
--- created from.
-dbsDBInstanceIdentifier :: Lens' DBSnapshot (Maybe Text)
-dbsDBInstanceIdentifier =
-    lens _dbsDBInstanceIdentifier (\s a -> s { _dbsDBInstanceIdentifier = a })
-
--- | Specifies the identifier for the DB snapshot.
-dbsDBSnapshotIdentifier :: Lens' DBSnapshot (Maybe Text)
-dbsDBSnapshotIdentifier =
-    lens _dbsDBSnapshotIdentifier (\s a -> s { _dbsDBSnapshotIdentifier = a })
-
--- | Specifies whether the DB snapshot is encrypted.
-dbsEncrypted :: Lens' DBSnapshot (Maybe Bool)
-dbsEncrypted = lens _dbsEncrypted (\s a -> s { _dbsEncrypted = a })
-
--- | Specifies the name of the database engine.
-dbsEngine :: Lens' DBSnapshot (Maybe Text)
-dbsEngine = lens _dbsEngine (\s a -> s { _dbsEngine = a })
-
--- | Specifies the version of the database engine.
-dbsEngineVersion :: Lens' DBSnapshot (Maybe Text)
-dbsEngineVersion = lens _dbsEngineVersion (\s a -> s { _dbsEngineVersion = a })
-
--- | Specifies the time (UTC) when the snapshot was taken.
-dbsInstanceCreateTime :: Lens' DBSnapshot (Maybe UTCTime)
-dbsInstanceCreateTime =
-    lens _dbsInstanceCreateTime (\s a -> s { _dbsInstanceCreateTime = a })
-        . mapping _Time
-
--- | Specifies the Provisioned IOPS (I/O operations per second) value of the DB
--- instance at the time of the snapshot.
-dbsIops :: Lens' DBSnapshot (Maybe Int)
-dbsIops = lens _dbsIops (\s a -> s { _dbsIops = a })
-
--- | If 'Encrypted' is true, the KMS key identifier for the encrypted DB snapshot.
-dbsKmsKeyId :: Lens' DBSnapshot (Maybe Text)
-dbsKmsKeyId = lens _dbsKmsKeyId (\s a -> s { _dbsKmsKeyId = a })
-
--- | License model information for the restored DB instance.
-dbsLicenseModel :: Lens' DBSnapshot (Maybe Text)
-dbsLicenseModel = lens _dbsLicenseModel (\s a -> s { _dbsLicenseModel = a })
-
--- | Provides the master username for the DB snapshot.
-dbsMasterUsername :: Lens' DBSnapshot (Maybe Text)
-dbsMasterUsername =
-    lens _dbsMasterUsername (\s a -> s { _dbsMasterUsername = a })
-
--- | Provides the option group name for the DB snapshot.
-dbsOptionGroupName :: Lens' DBSnapshot (Maybe Text)
-dbsOptionGroupName =
-    lens _dbsOptionGroupName (\s a -> s { _dbsOptionGroupName = a })
-
--- | The percentage of the estimated data that has been transferred.
-dbsPercentProgress :: Lens' DBSnapshot (Maybe Int)
-dbsPercentProgress =
-    lens _dbsPercentProgress (\s a -> s { _dbsPercentProgress = a })
-
--- | Specifies the port that the database engine was listening on at the time of
--- the snapshot.
-dbsPort :: Lens' DBSnapshot (Maybe Int)
-dbsPort = lens _dbsPort (\s a -> s { _dbsPort = a })
-
--- | Provides the time (UTC) when the snapshot was taken.
-dbsSnapshotCreateTime :: Lens' DBSnapshot (Maybe UTCTime)
-dbsSnapshotCreateTime =
-    lens _dbsSnapshotCreateTime (\s a -> s { _dbsSnapshotCreateTime = a })
-        . mapping _Time
-
--- | Provides the type of the DB snapshot.
-dbsSnapshotType :: Lens' DBSnapshot (Maybe Text)
-dbsSnapshotType = lens _dbsSnapshotType (\s a -> s { _dbsSnapshotType = a })
-
--- | The region that the DB snapshot was created in or copied from.
-dbsSourceRegion :: Lens' DBSnapshot (Maybe Text)
-dbsSourceRegion = lens _dbsSourceRegion (\s a -> s { _dbsSourceRegion = a })
-
--- | Specifies the status of this DB snapshot.
-dbsStatus :: Lens' DBSnapshot (Maybe Text)
-dbsStatus = lens _dbsStatus (\s a -> s { _dbsStatus = a })
-
--- | Specifies the storage type associated with DB Snapshot.
-dbsStorageType :: Lens' DBSnapshot (Maybe Text)
-dbsStorageType = lens _dbsStorageType (\s a -> s { _dbsStorageType = a })
-
--- | The ARN from the Key Store with which to associate the instance for TDE
--- encryption.
-dbsTdeCredentialArn :: Lens' DBSnapshot (Maybe Text)
-dbsTdeCredentialArn =
-    lens _dbsTdeCredentialArn (\s a -> s { _dbsTdeCredentialArn = a })
-
--- | Provides the Vpc Id associated with the DB snapshot.
-dbsVpcId :: Lens' DBSnapshot (Maybe Text)
-dbsVpcId = lens _dbsVpcId (\s a -> s { _dbsVpcId = a })
-
-instance FromXML DBSnapshot where
-    parseXML x = DBSnapshot
-        <$> x .@? "AllocatedStorage"
-        <*> x .@? "AvailabilityZone"
-        <*> x .@? "DBInstanceIdentifier"
-        <*> x .@? "DBSnapshotIdentifier"
-        <*> x .@? "Encrypted"
-        <*> x .@? "Engine"
-        <*> x .@? "EngineVersion"
-        <*> x .@? "InstanceCreateTime"
-        <*> x .@? "Iops"
-        <*> x .@? "KmsKeyId"
-        <*> x .@? "LicenseModel"
-        <*> x .@? "MasterUsername"
-        <*> x .@? "OptionGroupName"
-        <*> x .@? "PercentProgress"
-        <*> x .@? "Port"
-        <*> x .@? "SnapshotCreateTime"
-        <*> x .@? "SnapshotType"
-        <*> x .@? "SourceRegion"
-        <*> x .@? "Status"
-        <*> x .@? "StorageType"
-        <*> x .@? "TdeCredentialArn"
-        <*> x .@? "VpcId"
-
-instance ToQuery DBSnapshot where
-    toQuery DBSnapshot{..} = mconcat
-        [ "AllocatedStorage"     =? _dbsAllocatedStorage
-        , "AvailabilityZone"     =? _dbsAvailabilityZone
-        , "DBInstanceIdentifier" =? _dbsDBInstanceIdentifier
-        , "DBSnapshotIdentifier" =? _dbsDBSnapshotIdentifier
-        , "Encrypted"            =? _dbsEncrypted
-        , "Engine"               =? _dbsEngine
-        , "EngineVersion"        =? _dbsEngineVersion
-        , "InstanceCreateTime"   =? _dbsInstanceCreateTime
-        , "Iops"                 =? _dbsIops
-        , "KmsKeyId"             =? _dbsKmsKeyId
-        , "LicenseModel"         =? _dbsLicenseModel
-        , "MasterUsername"       =? _dbsMasterUsername
-        , "OptionGroupName"      =? _dbsOptionGroupName
-        , "PercentProgress"      =? _dbsPercentProgress
-        , "Port"                 =? _dbsPort
-        , "SnapshotCreateTime"   =? _dbsSnapshotCreateTime
-        , "SnapshotType"         =? _dbsSnapshotType
-        , "SourceRegion"         =? _dbsSourceRegion
-        , "Status"               =? _dbsStatus
-        , "StorageType"          =? _dbsStorageType
-        , "TdeCredentialArn"     =? _dbsTdeCredentialArn
-        , "VpcId"                =? _dbsVpcId
-        ]
-
-data DBSecurityGroupMembership = DBSecurityGroupMembership
-    { _dbsgmDBSecurityGroupName :: Maybe Text
-    , _dbsgmStatus              :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DBSecurityGroupMembership' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dbsgmDBSecurityGroupName' @::@ 'Maybe' 'Text'
---
--- * 'dbsgmStatus' @::@ 'Maybe' 'Text'
---
-dbsecurityGroupMembership :: DBSecurityGroupMembership
-dbsecurityGroupMembership = DBSecurityGroupMembership
-    { _dbsgmDBSecurityGroupName = Nothing
-    , _dbsgmStatus              = Nothing
-    }
-
--- | The name of the DB security group.
-dbsgmDBSecurityGroupName :: Lens' DBSecurityGroupMembership (Maybe Text)
-dbsgmDBSecurityGroupName =
-    lens _dbsgmDBSecurityGroupName
-        (\s a -> s { _dbsgmDBSecurityGroupName = a })
-
--- | The status of the DB security group.
-dbsgmStatus :: Lens' DBSecurityGroupMembership (Maybe Text)
-dbsgmStatus = lens _dbsgmStatus (\s a -> s { _dbsgmStatus = a })
-
-instance FromXML DBSecurityGroupMembership where
-    parseXML x = DBSecurityGroupMembership
-        <$> x .@? "DBSecurityGroupName"
-        <*> x .@? "Status"
-
-instance ToQuery DBSecurityGroupMembership where
-    toQuery DBSecurityGroupMembership{..} = mconcat
-        [ "DBSecurityGroupName" =? _dbsgmDBSecurityGroupName
-        , "Status"              =? _dbsgmStatus
-        ]
-
-data EC2SecurityGroup = EC2SecurityGroup
-    { _ecsgEC2SecurityGroupId      :: Maybe Text
-    , _ecsgEC2SecurityGroupName    :: Maybe Text
-    , _ecsgEC2SecurityGroupOwnerId :: Maybe Text
-    , _ecsgStatus                  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'EC2SecurityGroup' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ecsgEC2SecurityGroupId' @::@ 'Maybe' 'Text'
---
--- * 'ecsgEC2SecurityGroupName' @::@ 'Maybe' 'Text'
---
--- * 'ecsgEC2SecurityGroupOwnerId' @::@ 'Maybe' 'Text'
---
--- * 'ecsgStatus' @::@ 'Maybe' 'Text'
---
-ec2SecurityGroup :: EC2SecurityGroup
-ec2SecurityGroup = EC2SecurityGroup
-    { _ecsgStatus                  = Nothing
-    , _ecsgEC2SecurityGroupName    = Nothing
-    , _ecsgEC2SecurityGroupId      = Nothing
-    , _ecsgEC2SecurityGroupOwnerId = Nothing
-    }
-
--- | Specifies the id of the EC2 security group.
-ecsgEC2SecurityGroupId :: Lens' EC2SecurityGroup (Maybe Text)
-ecsgEC2SecurityGroupId =
-    lens _ecsgEC2SecurityGroupId (\s a -> s { _ecsgEC2SecurityGroupId = a })
-
--- | Specifies the name of the EC2 security group.
-ecsgEC2SecurityGroupName :: Lens' EC2SecurityGroup (Maybe Text)
-ecsgEC2SecurityGroupName =
-    lens _ecsgEC2SecurityGroupName
-        (\s a -> s { _ecsgEC2SecurityGroupName = a })
-
--- | Specifies the AWS ID of the owner of the EC2 security group specified in the 'EC2SecurityGroupName' field.
-ecsgEC2SecurityGroupOwnerId :: Lens' EC2SecurityGroup (Maybe Text)
-ecsgEC2SecurityGroupOwnerId =
-    lens _ecsgEC2SecurityGroupOwnerId
-        (\s a -> s { _ecsgEC2SecurityGroupOwnerId = a })
-
--- | Provides the status of the EC2 security group. Status can be "authorizing",
--- "authorized", "revoking", and "revoked".
-ecsgStatus :: Lens' EC2SecurityGroup (Maybe Text)
-ecsgStatus = lens _ecsgStatus (\s a -> s { _ecsgStatus = a })
-
-instance FromXML EC2SecurityGroup where
-    parseXML x = EC2SecurityGroup
-        <$> x .@? "EC2SecurityGroupId"
-        <*> x .@? "EC2SecurityGroupName"
-        <*> x .@? "EC2SecurityGroupOwnerId"
-        <*> x .@? "Status"
-
-instance ToQuery EC2SecurityGroup where
-    toQuery EC2SecurityGroup{..} = mconcat
-        [ "EC2SecurityGroupId"      =? _ecsgEC2SecurityGroupId
-        , "EC2SecurityGroupName"    =? _ecsgEC2SecurityGroupName
-        , "EC2SecurityGroupOwnerId" =? _ecsgEC2SecurityGroupOwnerId
-        , "Status"                  =? _ecsgStatus
-        ]
-
-data SourceType
-    = DbInstance       -- ^ db-instance
-    | DbParameterGroup -- ^ db-parameter-group
-    | DbSecurityGroup  -- ^ db-security-group
-    | DbSnapshot       -- ^ db-snapshot
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable SourceType
-
-instance FromText SourceType where
-    parser = takeLowerText >>= \case
-        "db-instance"        -> pure DbInstance
-        "db-parameter-group" -> pure DbParameterGroup
-        "db-security-group"  -> pure DbSecurityGroup
-        "db-snapshot"        -> pure DbSnapshot
-        e                    -> fail $
-            "Failure parsing SourceType from " ++ show e
-
-instance ToText SourceType where
-    toText = \case
-        DbInstance       -> "db-instance"
-        DbParameterGroup -> "db-parameter-group"
-        DbSecurityGroup  -> "db-security-group"
-        DbSnapshot       -> "db-snapshot"
-
-instance ToByteString SourceType
-instance ToHeader     SourceType
-instance ToQuery      SourceType
-
-instance FromXML SourceType where
-    parseXML = parseXMLText "SourceType"
-
-data ResourcePendingMaintenanceActions = ResourcePendingMaintenanceActions
-    { _rpmaPendingMaintenanceActionDetails :: List "member" PendingMaintenanceAction
-    , _rpmaResourceIdentifier              :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'ResourcePendingMaintenanceActions' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rpmaPendingMaintenanceActionDetails' @::@ ['PendingMaintenanceAction']
---
--- * 'rpmaResourceIdentifier' @::@ 'Maybe' 'Text'
---
-resourcePendingMaintenanceActions :: ResourcePendingMaintenanceActions
-resourcePendingMaintenanceActions = ResourcePendingMaintenanceActions
-    { _rpmaResourceIdentifier              = Nothing
-    , _rpmaPendingMaintenanceActionDetails = mempty
-    }
-
--- | A list that provides details about the pending maintenance actions for the
--- resource.
-rpmaPendingMaintenanceActionDetails :: Lens' ResourcePendingMaintenanceActions [PendingMaintenanceAction]
-rpmaPendingMaintenanceActionDetails =
-    lens _rpmaPendingMaintenanceActionDetails
-        (\s a -> s { _rpmaPendingMaintenanceActionDetails = a })
-            . _List
-
--- | The ARN of the resource that has pending maintenance actions.
-rpmaResourceIdentifier :: Lens' ResourcePendingMaintenanceActions (Maybe Text)
-rpmaResourceIdentifier =
-    lens _rpmaResourceIdentifier (\s a -> s { _rpmaResourceIdentifier = a })
-
-instance FromXML ResourcePendingMaintenanceActions where
-    parseXML x = ResourcePendingMaintenanceActions
-        <$> x .@? "PendingMaintenanceActionDetails" .!@ mempty
-        <*> x .@? "ResourceIdentifier"
-
-instance ToQuery ResourcePendingMaintenanceActions where
-    toQuery ResourcePendingMaintenanceActions{..} = mconcat
-        [ "PendingMaintenanceActionDetails" =? _rpmaPendingMaintenanceActionDetails
-        , "ResourceIdentifier"              =? _rpmaResourceIdentifier
-        ]
-
-data DBParameterGroup = DBParameterGroup
-    { _dbpgDBParameterGroupFamily :: Maybe Text
-    , _dbpgDBParameterGroupName   :: Maybe Text
-    , _dbpgDescription            :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DBParameterGroup' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dbpgDBParameterGroupFamily' @::@ 'Maybe' 'Text'
---
--- * 'dbpgDBParameterGroupName' @::@ 'Maybe' 'Text'
---
--- * 'dbpgDescription' @::@ 'Maybe' 'Text'
---
-dbparameterGroup :: DBParameterGroup
-dbparameterGroup = DBParameterGroup
-    { _dbpgDBParameterGroupName   = Nothing
-    , _dbpgDBParameterGroupFamily = Nothing
-    , _dbpgDescription            = Nothing
-    }
-
--- | Provides the name of the DB parameter group family that this DB parameter
--- group is compatible with.
-dbpgDBParameterGroupFamily :: Lens' DBParameterGroup (Maybe Text)
-dbpgDBParameterGroupFamily =
-    lens _dbpgDBParameterGroupFamily
-        (\s a -> s { _dbpgDBParameterGroupFamily = a })
-
--- | Provides the name of the DB parameter group.
-dbpgDBParameterGroupName :: Lens' DBParameterGroup (Maybe Text)
-dbpgDBParameterGroupName =
-    lens _dbpgDBParameterGroupName
-        (\s a -> s { _dbpgDBParameterGroupName = a })
-
--- | Provides the customer-specified description for this DB parameter group.
-dbpgDescription :: Lens' DBParameterGroup (Maybe Text)
-dbpgDescription = lens _dbpgDescription (\s a -> s { _dbpgDescription = a })
-
-instance FromXML DBParameterGroup where
-    parseXML x = DBParameterGroup
-        <$> x .@? "DBParameterGroupFamily"
-        <*> x .@? "DBParameterGroupName"
-        <*> x .@? "Description"
-
-instance ToQuery DBParameterGroup where
-    toQuery DBParameterGroup{..} = mconcat
-        [ "DBParameterGroupFamily" =? _dbpgDBParameterGroupFamily
-        , "DBParameterGroupName"   =? _dbpgDBParameterGroupName
-        , "Description"            =? _dbpgDescription
-        ]
-
-data ReservedDBInstancesOffering = ReservedDBInstancesOffering
-    { _rdbioCurrencyCode                  :: Maybe Text
-    , _rdbioDBInstanceClass               :: Maybe Text
-    , _rdbioDuration                      :: Maybe Int
-    , _rdbioFixedPrice                    :: Maybe Double
-    , _rdbioMultiAZ                       :: Maybe Bool
-    , _rdbioOfferingType                  :: Maybe Text
-    , _rdbioProductDescription            :: Maybe Text
-    , _rdbioRecurringCharges              :: List "member" RecurringCharge
-    , _rdbioReservedDBInstancesOfferingId :: Maybe Text
-    , _rdbioUsagePrice                    :: Maybe Double
-    } deriving (Eq, Read, Show)
-
--- | 'ReservedDBInstancesOffering' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rdbioCurrencyCode' @::@ 'Maybe' 'Text'
---
--- * 'rdbioDBInstanceClass' @::@ 'Maybe' 'Text'
---
--- * 'rdbioDuration' @::@ 'Maybe' 'Int'
---
--- * 'rdbioFixedPrice' @::@ 'Maybe' 'Double'
---
--- * 'rdbioMultiAZ' @::@ 'Maybe' 'Bool'
---
--- * 'rdbioOfferingType' @::@ 'Maybe' 'Text'
---
--- * 'rdbioProductDescription' @::@ 'Maybe' 'Text'
---
--- * 'rdbioRecurringCharges' @::@ ['RecurringCharge']
---
--- * 'rdbioReservedDBInstancesOfferingId' @::@ 'Maybe' 'Text'
---
--- * 'rdbioUsagePrice' @::@ 'Maybe' 'Double'
---
-reservedDBInstancesOffering :: ReservedDBInstancesOffering
-reservedDBInstancesOffering = ReservedDBInstancesOffering
-    { _rdbioReservedDBInstancesOfferingId = Nothing
-    , _rdbioDBInstanceClass               = Nothing
-    , _rdbioDuration                      = Nothing
-    , _rdbioFixedPrice                    = Nothing
-    , _rdbioUsagePrice                    = Nothing
-    , _rdbioCurrencyCode                  = Nothing
-    , _rdbioProductDescription            = Nothing
-    , _rdbioOfferingType                  = Nothing
-    , _rdbioMultiAZ                       = Nothing
-    , _rdbioRecurringCharges              = mempty
-    }
-
--- | The currency code for the reserved DB instance offering.
-rdbioCurrencyCode :: Lens' ReservedDBInstancesOffering (Maybe Text)
-rdbioCurrencyCode =
-    lens _rdbioCurrencyCode (\s a -> s { _rdbioCurrencyCode = a })
-
--- | The DB instance class for the reserved DB instance.
-rdbioDBInstanceClass :: Lens' ReservedDBInstancesOffering (Maybe Text)
-rdbioDBInstanceClass =
-    lens _rdbioDBInstanceClass (\s a -> s { _rdbioDBInstanceClass = a })
-
--- | The duration of the offering in seconds.
-rdbioDuration :: Lens' ReservedDBInstancesOffering (Maybe Int)
-rdbioDuration = lens _rdbioDuration (\s a -> s { _rdbioDuration = a })
-
--- | The fixed price charged for this offering.
-rdbioFixedPrice :: Lens' ReservedDBInstancesOffering (Maybe Double)
-rdbioFixedPrice = lens _rdbioFixedPrice (\s a -> s { _rdbioFixedPrice = a })
-
--- | Indicates if the offering applies to Multi-AZ deployments.
-rdbioMultiAZ :: Lens' ReservedDBInstancesOffering (Maybe Bool)
-rdbioMultiAZ = lens _rdbioMultiAZ (\s a -> s { _rdbioMultiAZ = a })
-
--- | The offering type.
-rdbioOfferingType :: Lens' ReservedDBInstancesOffering (Maybe Text)
-rdbioOfferingType =
-    lens _rdbioOfferingType (\s a -> s { _rdbioOfferingType = a })
-
--- | The database engine used by the offering.
-rdbioProductDescription :: Lens' ReservedDBInstancesOffering (Maybe Text)
-rdbioProductDescription =
-    lens _rdbioProductDescription (\s a -> s { _rdbioProductDescription = a })
-
--- | The recurring price charged to run this reserved DB instance.
-rdbioRecurringCharges :: Lens' ReservedDBInstancesOffering [RecurringCharge]
-rdbioRecurringCharges =
-    lens _rdbioRecurringCharges (\s a -> s { _rdbioRecurringCharges = a })
-        . _List
-
--- | The offering identifier.
-rdbioReservedDBInstancesOfferingId :: Lens' ReservedDBInstancesOffering (Maybe Text)
-rdbioReservedDBInstancesOfferingId =
-    lens _rdbioReservedDBInstancesOfferingId
-        (\s a -> s { _rdbioReservedDBInstancesOfferingId = a })
-
--- | The hourly price charged for this offering.
-rdbioUsagePrice :: Lens' ReservedDBInstancesOffering (Maybe Double)
-rdbioUsagePrice = lens _rdbioUsagePrice (\s a -> s { _rdbioUsagePrice = a })
-
-instance FromXML ReservedDBInstancesOffering where
-    parseXML x = ReservedDBInstancesOffering
-        <$> x .@? "CurrencyCode"
-        <*> x .@? "DBInstanceClass"
-        <*> x .@? "Duration"
-        <*> x .@? "FixedPrice"
-        <*> x .@? "MultiAZ"
-        <*> x .@? "OfferingType"
-        <*> x .@? "ProductDescription"
-        <*> x .@? "RecurringCharges" .!@ mempty
-        <*> x .@? "ReservedDBInstancesOfferingId"
-        <*> x .@? "UsagePrice"
-
-instance ToQuery ReservedDBInstancesOffering where
-    toQuery ReservedDBInstancesOffering{..} = mconcat
-        [ "CurrencyCode"                  =? _rdbioCurrencyCode
-        , "DBInstanceClass"               =? _rdbioDBInstanceClass
-        , "Duration"                      =? _rdbioDuration
-        , "FixedPrice"                    =? _rdbioFixedPrice
-        , "MultiAZ"                       =? _rdbioMultiAZ
-        , "OfferingType"                  =? _rdbioOfferingType
-        , "ProductDescription"            =? _rdbioProductDescription
-        , "RecurringCharges"              =? _rdbioRecurringCharges
-        , "ReservedDBInstancesOfferingId" =? _rdbioReservedDBInstancesOfferingId
-        , "UsagePrice"                    =? _rdbioUsagePrice
-        ]
-
-data ApplyMethod
-    = Immediate     -- ^ immediate
-    | PendingReboot -- ^ pending-reboot
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable ApplyMethod
-
-instance FromText ApplyMethod where
-    parser = takeLowerText >>= \case
-        "immediate"      -> pure Immediate
-        "pending-reboot" -> pure PendingReboot
-        e                -> fail $
-            "Failure parsing ApplyMethod from " ++ show e
-
-instance ToText ApplyMethod where
-    toText = \case
-        Immediate     -> "immediate"
-        PendingReboot -> "pending-reboot"
-
-instance ToByteString ApplyMethod
-instance ToHeader     ApplyMethod
-instance ToQuery      ApplyMethod
-
-instance FromXML ApplyMethod where
-    parseXML = parseXMLText "ApplyMethod"
-
-data CharacterSet = CharacterSet
-    { _csCharacterSetDescription :: Maybe Text
-    , _csCharacterSetName        :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'CharacterSet' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'csCharacterSetDescription' @::@ 'Maybe' 'Text'
---
--- * 'csCharacterSetName' @::@ 'Maybe' 'Text'
---
-characterSet :: CharacterSet
-characterSet = CharacterSet
-    { _csCharacterSetName        = Nothing
-    , _csCharacterSetDescription = Nothing
-    }
-
--- | The description of the character set.
-csCharacterSetDescription :: Lens' CharacterSet (Maybe Text)
-csCharacterSetDescription =
-    lens _csCharacterSetDescription
-        (\s a -> s { _csCharacterSetDescription = a })
-
--- | The name of the character set.
-csCharacterSetName :: Lens' CharacterSet (Maybe Text)
-csCharacterSetName =
-    lens _csCharacterSetName (\s a -> s { _csCharacterSetName = a })
-
-instance FromXML CharacterSet where
-    parseXML x = CharacterSet
-        <$> x .@? "CharacterSetDescription"
-        <*> x .@? "CharacterSetName"
-
-instance ToQuery CharacterSet where
-    toQuery CharacterSet{..} = mconcat
-        [ "CharacterSetDescription" =? _csCharacterSetDescription
-        , "CharacterSetName"        =? _csCharacterSetName
-        ]
-
-data Subnet = Subnet
-    { _sSubnetAvailabilityZone :: Maybe AvailabilityZone
-    , _sSubnetIdentifier       :: Maybe Text
-    , _sSubnetStatus           :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'Subnet' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'sSubnetAvailabilityZone' @::@ 'Maybe' 'AvailabilityZone'
---
--- * 'sSubnetIdentifier' @::@ 'Maybe' 'Text'
---
--- * 'sSubnetStatus' @::@ 'Maybe' 'Text'
---
-subnet :: Subnet
-subnet = Subnet
-    { _sSubnetIdentifier       = Nothing
-    , _sSubnetAvailabilityZone = Nothing
-    , _sSubnetStatus           = Nothing
-    }
-
-sSubnetAvailabilityZone :: Lens' Subnet (Maybe AvailabilityZone)
-sSubnetAvailabilityZone =
-    lens _sSubnetAvailabilityZone (\s a -> s { _sSubnetAvailabilityZone = a })
-
--- | Specifies the identifier of the subnet.
-sSubnetIdentifier :: Lens' Subnet (Maybe Text)
-sSubnetIdentifier =
-    lens _sSubnetIdentifier (\s a -> s { _sSubnetIdentifier = a })
-
--- | Specifies the status of the subnet.
-sSubnetStatus :: Lens' Subnet (Maybe Text)
-sSubnetStatus = lens _sSubnetStatus (\s a -> s { _sSubnetStatus = a })
-
-instance FromXML Subnet where
-    parseXML x = Subnet
-        <$> x .@? "SubnetAvailabilityZone"
-        <*> x .@? "SubnetIdentifier"
-        <*> x .@? "SubnetStatus"
-
-instance ToQuery Subnet where
-    toQuery Subnet{..} = mconcat
-        [ "SubnetAvailabilityZone" =? _sSubnetAvailabilityZone
-        , "SubnetIdentifier"       =? _sSubnetIdentifier
-        , "SubnetStatus"           =? _sSubnetStatus
-        ]
-
-data ReservedDBInstance = ReservedDBInstance
-    { _rdbiCurrencyCode                  :: Maybe Text
-    , _rdbiDBInstanceClass               :: Maybe Text
-    , _rdbiDBInstanceCount               :: Maybe Int
-    , _rdbiDuration                      :: Maybe Int
-    , _rdbiFixedPrice                    :: Maybe Double
-    , _rdbiMultiAZ                       :: Maybe Bool
-    , _rdbiOfferingType                  :: Maybe Text
-    , _rdbiProductDescription            :: Maybe Text
-    , _rdbiRecurringCharges              :: List "member" RecurringCharge
-    , _rdbiReservedDBInstanceId          :: Maybe Text
-    , _rdbiReservedDBInstancesOfferingId :: Maybe Text
-    , _rdbiStartTime                     :: Maybe ISO8601
-    , _rdbiState                         :: Maybe Text
-    , _rdbiUsagePrice                    :: Maybe Double
-    } deriving (Eq, Read, Show)
-
--- | 'ReservedDBInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rdbiCurrencyCode' @::@ 'Maybe' 'Text'
---
--- * 'rdbiDBInstanceClass' @::@ 'Maybe' 'Text'
---
--- * 'rdbiDBInstanceCount' @::@ 'Maybe' 'Int'
---
--- * 'rdbiDuration' @::@ 'Maybe' 'Int'
---
--- * 'rdbiFixedPrice' @::@ 'Maybe' 'Double'
---
--- * 'rdbiMultiAZ' @::@ 'Maybe' 'Bool'
---
--- * 'rdbiOfferingType' @::@ 'Maybe' 'Text'
---
--- * 'rdbiProductDescription' @::@ 'Maybe' 'Text'
---
--- * 'rdbiRecurringCharges' @::@ ['RecurringCharge']
---
--- * 'rdbiReservedDBInstanceId' @::@ 'Maybe' 'Text'
---
--- * 'rdbiReservedDBInstancesOfferingId' @::@ 'Maybe' 'Text'
---
--- * 'rdbiStartTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'rdbiState' @::@ 'Maybe' 'Text'
---
--- * 'rdbiUsagePrice' @::@ 'Maybe' 'Double'
---
-reservedDBInstance :: ReservedDBInstance
-reservedDBInstance = ReservedDBInstance
-    { _rdbiReservedDBInstanceId          = Nothing
-    , _rdbiReservedDBInstancesOfferingId = Nothing
-    , _rdbiDBInstanceClass               = Nothing
-    , _rdbiStartTime                     = Nothing
-    , _rdbiDuration                      = Nothing
-    , _rdbiFixedPrice                    = Nothing
-    , _rdbiUsagePrice                    = Nothing
-    , _rdbiCurrencyCode                  = Nothing
-    , _rdbiDBInstanceCount               = Nothing
-    , _rdbiProductDescription            = Nothing
-    , _rdbiOfferingType                  = Nothing
-    , _rdbiMultiAZ                       = Nothing
-    , _rdbiState                         = Nothing
-    , _rdbiRecurringCharges              = mempty
-    }
-
--- | The currency code for the reserved DB instance.
-rdbiCurrencyCode :: Lens' ReservedDBInstance (Maybe Text)
-rdbiCurrencyCode = lens _rdbiCurrencyCode (\s a -> s { _rdbiCurrencyCode = a })
-
--- | The DB instance class for the reserved DB instance.
-rdbiDBInstanceClass :: Lens' ReservedDBInstance (Maybe Text)
-rdbiDBInstanceClass =
-    lens _rdbiDBInstanceClass (\s a -> s { _rdbiDBInstanceClass = a })
-
--- | The number of reserved DB instances.
-rdbiDBInstanceCount :: Lens' ReservedDBInstance (Maybe Int)
-rdbiDBInstanceCount =
-    lens _rdbiDBInstanceCount (\s a -> s { _rdbiDBInstanceCount = a })
-
--- | The duration of the reservation in seconds.
-rdbiDuration :: Lens' ReservedDBInstance (Maybe Int)
-rdbiDuration = lens _rdbiDuration (\s a -> s { _rdbiDuration = a })
-
--- | The fixed price charged for this reserved DB instance.
-rdbiFixedPrice :: Lens' ReservedDBInstance (Maybe Double)
-rdbiFixedPrice = lens _rdbiFixedPrice (\s a -> s { _rdbiFixedPrice = a })
-
--- | Indicates if the reservation applies to Multi-AZ deployments.
-rdbiMultiAZ :: Lens' ReservedDBInstance (Maybe Bool)
-rdbiMultiAZ = lens _rdbiMultiAZ (\s a -> s { _rdbiMultiAZ = a })
-
--- | The offering type of this reserved DB instance.
-rdbiOfferingType :: Lens' ReservedDBInstance (Maybe Text)
-rdbiOfferingType = lens _rdbiOfferingType (\s a -> s { _rdbiOfferingType = a })
-
--- | The description of the reserved DB instance.
-rdbiProductDescription :: Lens' ReservedDBInstance (Maybe Text)
-rdbiProductDescription =
-    lens _rdbiProductDescription (\s a -> s { _rdbiProductDescription = a })
-
--- | The recurring price charged to run this reserved DB instance.
-rdbiRecurringCharges :: Lens' ReservedDBInstance [RecurringCharge]
-rdbiRecurringCharges =
-    lens _rdbiRecurringCharges (\s a -> s { _rdbiRecurringCharges = a })
-        . _List
-
--- | The unique identifier for the reservation.
-rdbiReservedDBInstanceId :: Lens' ReservedDBInstance (Maybe Text)
-rdbiReservedDBInstanceId =
-    lens _rdbiReservedDBInstanceId
-        (\s a -> s { _rdbiReservedDBInstanceId = a })
-
--- | The offering identifier.
-rdbiReservedDBInstancesOfferingId :: Lens' ReservedDBInstance (Maybe Text)
-rdbiReservedDBInstancesOfferingId =
-    lens _rdbiReservedDBInstancesOfferingId
-        (\s a -> s { _rdbiReservedDBInstancesOfferingId = a })
-
--- | The time the reservation started.
-rdbiStartTime :: Lens' ReservedDBInstance (Maybe UTCTime)
-rdbiStartTime = lens _rdbiStartTime (\s a -> s { _rdbiStartTime = a }) . mapping _Time
-
--- | The state of the reserved DB instance.
-rdbiState :: Lens' ReservedDBInstance (Maybe Text)
-rdbiState = lens _rdbiState (\s a -> s { _rdbiState = a })
-
--- | The hourly price charged for this reserved DB instance.
-rdbiUsagePrice :: Lens' ReservedDBInstance (Maybe Double)
-rdbiUsagePrice = lens _rdbiUsagePrice (\s a -> s { _rdbiUsagePrice = a })
-
-instance FromXML ReservedDBInstance where
-    parseXML x = ReservedDBInstance
-        <$> x .@? "CurrencyCode"
-        <*> x .@? "DBInstanceClass"
-        <*> x .@? "DBInstanceCount"
-        <*> x .@? "Duration"
-        <*> x .@? "FixedPrice"
-        <*> x .@? "MultiAZ"
-        <*> x .@? "OfferingType"
-        <*> x .@? "ProductDescription"
-        <*> x .@? "RecurringCharges" .!@ mempty
-        <*> x .@? "ReservedDBInstanceId"
-        <*> x .@? "ReservedDBInstancesOfferingId"
-        <*> x .@? "StartTime"
-        <*> x .@? "State"
-        <*> x .@? "UsagePrice"
-
-instance ToQuery ReservedDBInstance where
-    toQuery ReservedDBInstance{..} = mconcat
-        [ "CurrencyCode"                  =? _rdbiCurrencyCode
-        , "DBInstanceClass"               =? _rdbiDBInstanceClass
-        , "DBInstanceCount"               =? _rdbiDBInstanceCount
-        , "Duration"                      =? _rdbiDuration
-        , "FixedPrice"                    =? _rdbiFixedPrice
-        , "MultiAZ"                       =? _rdbiMultiAZ
-        , "OfferingType"                  =? _rdbiOfferingType
-        , "ProductDescription"            =? _rdbiProductDescription
-        , "RecurringCharges"              =? _rdbiRecurringCharges
-        , "ReservedDBInstanceId"          =? _rdbiReservedDBInstanceId
-        , "ReservedDBInstancesOfferingId" =? _rdbiReservedDBInstancesOfferingId
-        , "StartTime"                     =? _rdbiStartTime
-        , "State"                         =? _rdbiState
-        , "UsagePrice"                    =? _rdbiUsagePrice
-        ]
-
-data EngineDefaults = EngineDefaults
-    { _edDBParameterGroupFamily :: Maybe Text
-    , _edMarker                 :: Maybe Text
-    , _edParameters             :: List "member" Parameter
-    } deriving (Eq, Read, Show)
-
--- | 'EngineDefaults' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'edDBParameterGroupFamily' @::@ 'Maybe' 'Text'
---
--- * 'edMarker' @::@ 'Maybe' 'Text'
---
--- * 'edParameters' @::@ ['Parameter']
---
-engineDefaults :: EngineDefaults
-engineDefaults = EngineDefaults
-    { _edDBParameterGroupFamily = Nothing
-    , _edMarker                 = Nothing
-    , _edParameters             = mempty
-    }
-
--- | Specifies the name of the DB parameter group family which the engine default
--- parameters apply to.
-edDBParameterGroupFamily :: Lens' EngineDefaults (Maybe Text)
-edDBParameterGroupFamily =
-    lens _edDBParameterGroupFamily
-        (\s a -> s { _edDBParameterGroupFamily = a })
-
--- | An optional pagination token provided by a previous EngineDefaults request.
--- If this parameter is specified, the response includes only records beyond the
--- marker, up to the value specified by 'MaxRecords' .
-edMarker :: Lens' EngineDefaults (Maybe Text)
-edMarker = lens _edMarker (\s a -> s { _edMarker = a })
-
--- | Contains a list of engine default parameters.
-edParameters :: Lens' EngineDefaults [Parameter]
-edParameters = lens _edParameters (\s a -> s { _edParameters = a }) . _List
-
-instance FromXML EngineDefaults where
-    parseXML x = EngineDefaults
-        <$> x .@? "DBParameterGroupFamily"
-        <*> x .@? "Marker"
-        <*> x .@? "Parameters" .!@ mempty
-
-instance ToQuery EngineDefaults where
-    toQuery EngineDefaults{..} = mconcat
-        [ "DBParameterGroupFamily" =? _edDBParameterGroupFamily
-        , "Marker"                 =? _edMarker
-        , "Parameters"             =? _edParameters
-        ]
-
-newtype DBParameterGroupNameMessage = DBParameterGroupNameMessage
-    { _dbpgnmDBParameterGroupName :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'DBParameterGroupNameMessage' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dbpgnmDBParameterGroupName' @::@ 'Maybe' 'Text'
---
-dbparameterGroupNameMessage :: DBParameterGroupNameMessage
-dbparameterGroupNameMessage = DBParameterGroupNameMessage
-    { _dbpgnmDBParameterGroupName = Nothing
-    }
-
--- | The name of the DB parameter group.
-dbpgnmDBParameterGroupName :: Lens' DBParameterGroupNameMessage (Maybe Text)
-dbpgnmDBParameterGroupName =
-    lens _dbpgnmDBParameterGroupName
-        (\s a -> s { _dbpgnmDBParameterGroupName = a })
-
-instance FromXML DBParameterGroupNameMessage where
-    parseXML x = DBParameterGroupNameMessage
-        <$> x .@? "DBParameterGroupName"
-
-instance ToQuery DBParameterGroupNameMessage where
-    toQuery DBParameterGroupNameMessage{..} = mconcat
-        [ "DBParameterGroupName" =? _dbpgnmDBParameterGroupName
-        ]
-
-data OptionGroupOption = OptionGroupOption
-    { _ogoDefaultPort                       :: Maybe Int
-    , _ogoDescription                       :: Maybe Text
-    , _ogoEngineName                        :: Maybe Text
-    , _ogoMajorEngineVersion                :: Maybe Text
-    , _ogoMinimumRequiredMinorEngineVersion :: Maybe Text
-    , _ogoName                              :: Maybe Text
-    , _ogoOptionGroupOptionSettings         :: List "member" OptionGroupOptionSetting
-    , _ogoOptionsDependedOn                 :: List "member" Text
-    , _ogoPermanent                         :: Maybe Bool
-    , _ogoPersistent                        :: Maybe Bool
-    , _ogoPortRequired                      :: Maybe Bool
-    } deriving (Eq, Read, Show)
-
--- | 'OptionGroupOption' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ogoDefaultPort' @::@ 'Maybe' 'Int'
---
--- * 'ogoDescription' @::@ 'Maybe' 'Text'
---
--- * 'ogoEngineName' @::@ 'Maybe' 'Text'
---
--- * 'ogoMajorEngineVersion' @::@ 'Maybe' 'Text'
---
--- * 'ogoMinimumRequiredMinorEngineVersion' @::@ 'Maybe' 'Text'
---
--- * 'ogoName' @::@ 'Maybe' 'Text'
---
--- * 'ogoOptionGroupOptionSettings' @::@ ['OptionGroupOptionSetting']
---
--- * 'ogoOptionsDependedOn' @::@ ['Text']
---
--- * 'ogoPermanent' @::@ 'Maybe' 'Bool'
---
--- * 'ogoPersistent' @::@ 'Maybe' 'Bool'
---
--- * 'ogoPortRequired' @::@ 'Maybe' 'Bool'
---
-optionGroupOption :: OptionGroupOption
-optionGroupOption = OptionGroupOption
-    { _ogoName                              = Nothing
-    , _ogoDescription                       = Nothing
-    , _ogoEngineName                        = Nothing
-    , _ogoMajorEngineVersion                = Nothing
-    , _ogoMinimumRequiredMinorEngineVersion = Nothing
-    , _ogoPortRequired                      = Nothing
-    , _ogoDefaultPort                       = Nothing
-    , _ogoOptionsDependedOn                 = mempty
-    , _ogoPersistent                        = Nothing
-    , _ogoPermanent                         = Nothing
-    , _ogoOptionGroupOptionSettings         = mempty
-    }
-
--- | If the option requires a port, specifies the default port for the option.
-ogoDefaultPort :: Lens' OptionGroupOption (Maybe Int)
-ogoDefaultPort = lens _ogoDefaultPort (\s a -> s { _ogoDefaultPort = a })
-
--- | The description of the option.
-ogoDescription :: Lens' OptionGroupOption (Maybe Text)
-ogoDescription = lens _ogoDescription (\s a -> s { _ogoDescription = a })
-
--- | The name of the engine that this option can be applied to.
-ogoEngineName :: Lens' OptionGroupOption (Maybe Text)
-ogoEngineName = lens _ogoEngineName (\s a -> s { _ogoEngineName = a })
-
--- | Indicates the major engine version that the option is available for.
-ogoMajorEngineVersion :: Lens' OptionGroupOption (Maybe Text)
-ogoMajorEngineVersion =
-    lens _ogoMajorEngineVersion (\s a -> s { _ogoMajorEngineVersion = a })
-
--- | The minimum required engine version for the option to be applied.
-ogoMinimumRequiredMinorEngineVersion :: Lens' OptionGroupOption (Maybe Text)
-ogoMinimumRequiredMinorEngineVersion =
-    lens _ogoMinimumRequiredMinorEngineVersion
-        (\s a -> s { _ogoMinimumRequiredMinorEngineVersion = a })
-
--- | The name of the option.
-ogoName :: Lens' OptionGroupOption (Maybe Text)
-ogoName = lens _ogoName (\s a -> s { _ogoName = a })
-
--- | Specifies the option settings that are available (and the default value) for
--- each option in an option group.
-ogoOptionGroupOptionSettings :: Lens' OptionGroupOption [OptionGroupOptionSetting]
-ogoOptionGroupOptionSettings =
-    lens _ogoOptionGroupOptionSettings
-        (\s a -> s { _ogoOptionGroupOptionSettings = a })
-            . _List
-
--- | List of all options that are prerequisites for this option.
-ogoOptionsDependedOn :: Lens' OptionGroupOption [Text]
-ogoOptionsDependedOn =
-    lens _ogoOptionsDependedOn (\s a -> s { _ogoOptionsDependedOn = a })
-        . _List
-
--- | A permanent option cannot be removed from the option group once the option
--- group is used, and it cannot be removed from the db instance after assigning
--- an option group with this permanent option.
-ogoPermanent :: Lens' OptionGroupOption (Maybe Bool)
-ogoPermanent = lens _ogoPermanent (\s a -> s { _ogoPermanent = a })
-
--- | A persistent option cannot be removed from the option group once the option
--- group is used, but this option can be removed from the db instance while
--- modifying the related data and assigning another option group without this
--- option.
-ogoPersistent :: Lens' OptionGroupOption (Maybe Bool)
-ogoPersistent = lens _ogoPersistent (\s a -> s { _ogoPersistent = a })
-
--- | Specifies whether the option requires a port.
-ogoPortRequired :: Lens' OptionGroupOption (Maybe Bool)
-ogoPortRequired = lens _ogoPortRequired (\s a -> s { _ogoPortRequired = a })
-
-instance FromXML OptionGroupOption where
-    parseXML x = OptionGroupOption
-        <$> x .@? "DefaultPort"
-        <*> x .@? "Description"
-        <*> x .@? "EngineName"
-        <*> x .@? "MajorEngineVersion"
-        <*> x .@? "MinimumRequiredMinorEngineVersion"
-        <*> x .@? "Name"
-        <*> x .@? "OptionGroupOptionSettings" .!@ mempty
-        <*> x .@? "OptionsDependedOn" .!@ mempty
-        <*> x .@? "Permanent"
-        <*> x .@? "Persistent"
-        <*> x .@? "PortRequired"
-
-instance ToQuery OptionGroupOption where
-    toQuery OptionGroupOption{..} = mconcat
-        [ "DefaultPort"                       =? _ogoDefaultPort
-        , "Description"                       =? _ogoDescription
-        , "EngineName"                        =? _ogoEngineName
-        , "MajorEngineVersion"                =? _ogoMajorEngineVersion
-        , "MinimumRequiredMinorEngineVersion" =? _ogoMinimumRequiredMinorEngineVersion
-        , "Name"                              =? _ogoName
-        , "OptionGroupOptionSettings"         =? _ogoOptionGroupOptionSettings
-        , "OptionsDependedOn"                 =? _ogoOptionsDependedOn
-        , "Permanent"                         =? _ogoPermanent
-        , "Persistent"                        =? _ogoPersistent
-        , "PortRequired"                      =? _ogoPortRequired
-        ]
-
-data DBInstance = DBInstance
-    { _dbiAllocatedStorage                      :: Maybe Int
-    , _dbiAutoMinorVersionUpgrade               :: Maybe Bool
-    , _dbiAvailabilityZone                      :: Maybe Text
-    , _dbiBackupRetentionPeriod                 :: Maybe Int
-    , _dbiCACertificateIdentifier               :: Maybe Text
-    , _dbiCharacterSetName                      :: Maybe Text
-    , _dbiDBInstanceClass                       :: Maybe Text
-    , _dbiDBInstanceIdentifier                  :: Maybe Text
-    , _dbiDBInstanceStatus                      :: Maybe Text
-    , _dbiDBName                                :: Maybe Text
-    , _dbiDBParameterGroups                     :: List "member" DBParameterGroupStatus
-    , _dbiDBSecurityGroups                      :: List "member" DBSecurityGroupMembership
-    , _dbiDBSubnetGroup                         :: Maybe DBSubnetGroup
-    , _dbiDbiResourceId                         :: Maybe Text
-    , _dbiEndpoint                              :: Maybe Endpoint
-    , _dbiEngine                                :: Maybe Text
-    , _dbiEngineVersion                         :: Maybe Text
-    , _dbiInstanceCreateTime                    :: Maybe ISO8601
-    , _dbiIops                                  :: Maybe Int
-    , _dbiKmsKeyId                              :: Maybe Text
-    , _dbiLatestRestorableTime                  :: Maybe ISO8601
-    , _dbiLicenseModel                          :: Maybe Text
-    , _dbiMasterUsername                        :: Maybe Text
-    , _dbiMultiAZ                               :: Maybe Bool
-    , _dbiOptionGroupMemberships                :: List "member" OptionGroupMembership
-    , _dbiPendingModifiedValues                 :: Maybe PendingModifiedValues
-    , _dbiPreferredBackupWindow                 :: Maybe Text
-    , _dbiPreferredMaintenanceWindow            :: Maybe Text
-    , _dbiPubliclyAccessible                    :: Maybe Bool
-    , _dbiReadReplicaDBInstanceIdentifiers      :: List "member" Text
-    , _dbiReadReplicaSourceDBInstanceIdentifier :: Maybe Text
-    , _dbiSecondaryAvailabilityZone             :: Maybe Text
-    , _dbiStatusInfos                           :: List "member" DBInstanceStatusInfo
-    , _dbiStorageEncrypted                      :: Maybe Bool
-    , _dbiStorageType                           :: Maybe Text
-    , _dbiTdeCredentialArn                      :: Maybe Text
-    , _dbiVpcSecurityGroups                     :: List "member" VpcSecurityGroupMembership
-    } deriving (Eq, Read, Show)
-
--- | 'DBInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dbiAllocatedStorage' @::@ 'Maybe' 'Int'
---
--- * 'dbiAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'
---
--- * 'dbiAvailabilityZone' @::@ 'Maybe' 'Text'
---
--- * 'dbiBackupRetentionPeriod' @::@ 'Maybe' 'Int'
---
--- * 'dbiCACertificateIdentifier' @::@ 'Maybe' 'Text'
---
--- * 'dbiCharacterSetName' @::@ 'Maybe' 'Text'
---
--- * 'dbiDBInstanceClass' @::@ 'Maybe' 'Text'
---
--- * 'dbiDBInstanceIdentifier' @::@ 'Maybe' 'Text'
---
--- * 'dbiDBInstanceStatus' @::@ 'Maybe' 'Text'
---
--- * 'dbiDBName' @::@ 'Maybe' 'Text'
---
--- * 'dbiDBParameterGroups' @::@ ['DBParameterGroupStatus']
---
--- * 'dbiDBSecurityGroups' @::@ ['DBSecurityGroupMembership']
---
--- * 'dbiDBSubnetGroup' @::@ 'Maybe' 'DBSubnetGroup'
---
--- * 'dbiDbiResourceId' @::@ 'Maybe' 'Text'
---
--- * 'dbiEndpoint' @::@ 'Maybe' 'Endpoint'
---
--- * 'dbiEngine' @::@ 'Maybe' 'Text'
---
--- * 'dbiEngineVersion' @::@ 'Maybe' 'Text'
---
--- * 'dbiInstanceCreateTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'dbiIops' @::@ 'Maybe' 'Int'
---
--- * 'dbiKmsKeyId' @::@ 'Maybe' 'Text'
---
--- * 'dbiLatestRestorableTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'dbiLicenseModel' @::@ 'Maybe' 'Text'
---
--- * 'dbiMasterUsername' @::@ 'Maybe' 'Text'
---
--- * 'dbiMultiAZ' @::@ 'Maybe' 'Bool'
---
--- * 'dbiOptionGroupMemberships' @::@ ['OptionGroupMembership']
---
--- * 'dbiPendingModifiedValues' @::@ 'Maybe' 'PendingModifiedValues'
---
--- * 'dbiPreferredBackupWindow' @::@ 'Maybe' 'Text'
---
--- * 'dbiPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'
---
--- * 'dbiPubliclyAccessible' @::@ 'Maybe' 'Bool'
---
--- * 'dbiReadReplicaDBInstanceIdentifiers' @::@ ['Text']
---
--- * 'dbiReadReplicaSourceDBInstanceIdentifier' @::@ 'Maybe' 'Text'
---
--- * 'dbiSecondaryAvailabilityZone' @::@ 'Maybe' 'Text'
---
--- * 'dbiStatusInfos' @::@ ['DBInstanceStatusInfo']
---
--- * 'dbiStorageEncrypted' @::@ 'Maybe' 'Bool'
---
--- * 'dbiStorageType' @::@ 'Maybe' 'Text'
---
--- * 'dbiTdeCredentialArn' @::@ 'Maybe' 'Text'
---
--- * 'dbiVpcSecurityGroups' @::@ ['VpcSecurityGroupMembership']
---
-dbinstance :: DBInstance
-dbinstance = DBInstance
-    { _dbiDBInstanceIdentifier                  = Nothing
-    , _dbiDBInstanceClass                       = Nothing
-    , _dbiEngine                                = Nothing
-    , _dbiDBInstanceStatus                      = Nothing
-    , _dbiMasterUsername                        = Nothing
-    , _dbiDBName                                = Nothing
-    , _dbiEndpoint                              = Nothing
-    , _dbiAllocatedStorage                      = Nothing
-    , _dbiInstanceCreateTime                    = Nothing
-    , _dbiPreferredBackupWindow                 = Nothing
-    , _dbiBackupRetentionPeriod                 = Nothing
-    , _dbiDBSecurityGroups                      = mempty
-    , _dbiVpcSecurityGroups                     = mempty
-    , _dbiDBParameterGroups                     = mempty
-    , _dbiAvailabilityZone                      = Nothing
-    , _dbiDBSubnetGroup                         = Nothing
-    , _dbiPreferredMaintenanceWindow            = Nothing
-    , _dbiPendingModifiedValues                 = Nothing
-    , _dbiLatestRestorableTime                  = Nothing
-    , _dbiMultiAZ                               = Nothing
-    , _dbiEngineVersion                         = Nothing
-    , _dbiAutoMinorVersionUpgrade               = Nothing
-    , _dbiReadReplicaSourceDBInstanceIdentifier = Nothing
-    , _dbiReadReplicaDBInstanceIdentifiers      = mempty
-    , _dbiLicenseModel                          = Nothing
-    , _dbiIops                                  = Nothing
-    , _dbiOptionGroupMemberships                = mempty
-    , _dbiCharacterSetName                      = Nothing
-    , _dbiSecondaryAvailabilityZone             = Nothing
-    , _dbiPubliclyAccessible                    = Nothing
-    , _dbiStatusInfos                           = mempty
-    , _dbiStorageType                           = Nothing
-    , _dbiTdeCredentialArn                      = Nothing
-    , _dbiStorageEncrypted                      = Nothing
-    , _dbiKmsKeyId                              = Nothing
-    , _dbiDbiResourceId                         = Nothing
-    , _dbiCACertificateIdentifier               = Nothing
-    }
-
--- | Specifies the allocated storage size specified in gigabytes.
-dbiAllocatedStorage :: Lens' DBInstance (Maybe Int)
-dbiAllocatedStorage =
-    lens _dbiAllocatedStorage (\s a -> s { _dbiAllocatedStorage = a })
-
--- | Indicates that minor version patches are applied automatically.
-dbiAutoMinorVersionUpgrade :: Lens' DBInstance (Maybe Bool)
-dbiAutoMinorVersionUpgrade =
-    lens _dbiAutoMinorVersionUpgrade
-        (\s a -> s { _dbiAutoMinorVersionUpgrade = a })
-
--- | Specifies the name of the Availability Zone the DB instance is located in.
-dbiAvailabilityZone :: Lens' DBInstance (Maybe Text)
-dbiAvailabilityZone =
-    lens _dbiAvailabilityZone (\s a -> s { _dbiAvailabilityZone = a })
-
--- | Specifies the number of days for which automatic DB snapshots are retained.
-dbiBackupRetentionPeriod :: Lens' DBInstance (Maybe Int)
-dbiBackupRetentionPeriod =
-    lens _dbiBackupRetentionPeriod
-        (\s a -> s { _dbiBackupRetentionPeriod = a })
-
--- | The identifier of the CA certificate for this DB instance.
-dbiCACertificateIdentifier :: Lens' DBInstance (Maybe Text)
-dbiCACertificateIdentifier =
-    lens _dbiCACertificateIdentifier
-        (\s a -> s { _dbiCACertificateIdentifier = a })
-
--- | If present, specifies the name of the character set that this instance is
--- associated with.
-dbiCharacterSetName :: Lens' DBInstance (Maybe Text)
-dbiCharacterSetName =
-    lens _dbiCharacterSetName (\s a -> s { _dbiCharacterSetName = a })
-
--- | Contains the name of the compute and memory capacity class of the DB
--- instance.
-dbiDBInstanceClass :: Lens' DBInstance (Maybe Text)
-dbiDBInstanceClass =
-    lens _dbiDBInstanceClass (\s a -> s { _dbiDBInstanceClass = a })
-
--- | Contains a user-supplied database identifier. This is the unique key that
--- identifies a DB instance.
-dbiDBInstanceIdentifier :: Lens' DBInstance (Maybe Text)
-dbiDBInstanceIdentifier =
-    lens _dbiDBInstanceIdentifier (\s a -> s { _dbiDBInstanceIdentifier = a })
-
--- | Specifies the current state of this database.
-dbiDBInstanceStatus :: Lens' DBInstance (Maybe Text)
-dbiDBInstanceStatus =
-    lens _dbiDBInstanceStatus (\s a -> s { _dbiDBInstanceStatus = a })
-
--- | The meaning of this parameter differs according to the database engine you
--- use. For example, this value returns either MySQL or PostgreSQL information
--- when returning values from CreateDBInstanceReadReplica since Read Replicas
--- are only supported for MySQL and PostgreSQL.
---
--- MySQL, SQL Server, PostgreSQL
---
--- Contains the name of the initial database of this instance that was
--- provided at create time, if one was specified when the DB instance was
--- created. This same name is returned for the life of the DB instance.
---
--- Type: String
---
--- Oracle
---
--- Contains the Oracle System ID (SID) of the created DB instance. Not shown
--- when the returned parameters do not apply to an Oracle DB instance.
-dbiDBName :: Lens' DBInstance (Maybe Text)
-dbiDBName = lens _dbiDBName (\s a -> s { _dbiDBName = a })
-
--- | Provides the list of DB parameter groups applied to this DB instance.
-dbiDBParameterGroups :: Lens' DBInstance [DBParameterGroupStatus]
-dbiDBParameterGroups =
-    lens _dbiDBParameterGroups (\s a -> s { _dbiDBParameterGroups = a })
-        . _List
-
--- | Provides List of DB security group elements containing only 'DBSecurityGroup.Name' and 'DBSecurityGroup.Status' subelements.
-dbiDBSecurityGroups :: Lens' DBInstance [DBSecurityGroupMembership]
-dbiDBSecurityGroups =
-    lens _dbiDBSecurityGroups (\s a -> s { _dbiDBSecurityGroups = a })
-        . _List
-
--- | Specifies information on the subnet group associated with the DB instance,
--- including the name, description, and subnets in the subnet group.
-dbiDBSubnetGroup :: Lens' DBInstance (Maybe DBSubnetGroup)
-dbiDBSubnetGroup = lens _dbiDBSubnetGroup (\s a -> s { _dbiDBSubnetGroup = a })
-
--- | If 'StorageEncrypted' is true, the region-unique, immutable identifier for the
--- encrypted DB instance. This identifier is found in AWS CloudTrail log entries
--- whenever the KMS key for the DB instance is accessed.
-dbiDbiResourceId :: Lens' DBInstance (Maybe Text)
-dbiDbiResourceId = lens _dbiDbiResourceId (\s a -> s { _dbiDbiResourceId = a })
-
--- | Specifies the connection endpoint.
-dbiEndpoint :: Lens' DBInstance (Maybe Endpoint)
-dbiEndpoint = lens _dbiEndpoint (\s a -> s { _dbiEndpoint = a })
-
--- | Provides the name of the database engine to be used for this DB instance.
-dbiEngine :: Lens' DBInstance (Maybe Text)
-dbiEngine = lens _dbiEngine (\s a -> s { _dbiEngine = a })
-
--- | Indicates the database engine version.
-dbiEngineVersion :: Lens' DBInstance (Maybe Text)
-dbiEngineVersion = lens _dbiEngineVersion (\s a -> s { _dbiEngineVersion = a })
-
--- | Provides the date and time the DB instance was created.
-dbiInstanceCreateTime :: Lens' DBInstance (Maybe UTCTime)
-dbiInstanceCreateTime =
-    lens _dbiInstanceCreateTime (\s a -> s { _dbiInstanceCreateTime = a })
-        . mapping _Time
-
--- | Specifies the Provisioned IOPS (I/O operations per second) value.
-dbiIops :: Lens' DBInstance (Maybe Int)
-dbiIops = lens _dbiIops (\s a -> s { _dbiIops = a })
-
--- | If 'StorageEncrypted' is true, the KMS key identifier for the encrypted DB
--- instance.
-dbiKmsKeyId :: Lens' DBInstance (Maybe Text)
-dbiKmsKeyId = lens _dbiKmsKeyId (\s a -> s { _dbiKmsKeyId = a })
-
--- | Specifies the latest time to which a database can be restored with
--- point-in-time restore.
-dbiLatestRestorableTime :: Lens' DBInstance (Maybe UTCTime)
-dbiLatestRestorableTime =
-    lens _dbiLatestRestorableTime (\s a -> s { _dbiLatestRestorableTime = a })
-        . mapping _Time
-
--- | License model information for this DB instance.
-dbiLicenseModel :: Lens' DBInstance (Maybe Text)
-dbiLicenseModel = lens _dbiLicenseModel (\s a -> s { _dbiLicenseModel = a })
-
--- | Contains the master username for the DB instance.
-dbiMasterUsername :: Lens' DBInstance (Maybe Text)
-dbiMasterUsername =
-    lens _dbiMasterUsername (\s a -> s { _dbiMasterUsername = a })
-
--- | Specifies if the DB instance is a Multi-AZ deployment.
-dbiMultiAZ :: Lens' DBInstance (Maybe Bool)
-dbiMultiAZ = lens _dbiMultiAZ (\s a -> s { _dbiMultiAZ = a })
-
--- | Provides the list of option group memberships for this DB instance.
-dbiOptionGroupMemberships :: Lens' DBInstance [OptionGroupMembership]
-dbiOptionGroupMemberships =
-    lens _dbiOptionGroupMemberships
-        (\s a -> s { _dbiOptionGroupMemberships = a })
-            . _List
-
--- | Specifies that changes to the DB instance are pending. This element is only
--- included when changes are pending. Specific changes are identified by
--- subelements.
-dbiPendingModifiedValues :: Lens' DBInstance (Maybe PendingModifiedValues)
-dbiPendingModifiedValues =
-    lens _dbiPendingModifiedValues
-        (\s a -> s { _dbiPendingModifiedValues = a })
-
--- | Specifies the daily time range during which automated backups are created if
--- automated backups are enabled, as determined by the 'BackupRetentionPeriod'.
-dbiPreferredBackupWindow :: Lens' DBInstance (Maybe Text)
-dbiPreferredBackupWindow =
-    lens _dbiPreferredBackupWindow
-        (\s a -> s { _dbiPreferredBackupWindow = a })
-
--- | Specifies the weekly time range (in UTC) during which system maintenance can
--- occur.
-dbiPreferredMaintenanceWindow :: Lens' DBInstance (Maybe Text)
-dbiPreferredMaintenanceWindow =
-    lens _dbiPreferredMaintenanceWindow
-        (\s a -> s { _dbiPreferredMaintenanceWindow = a })
-
--- | Specifies the accessibility options for the DB instance. A value of true
--- specifies an Internet-facing instance with a publicly resolvable DNS name,
--- which resolves to a public IP address. A value of false specifies an internal
--- instance with a DNS name that resolves to a private IP address.
---
--- Default: The default behavior varies depending on whether a VPC has been
--- requested or not. The following list shows the default behavior in each case.
---
--- Default VPC:true  VPC:false   If no DB subnet group has been specified as
--- part of the request and the PubliclyAccessible value has not been set, the DB
--- instance will be publicly accessible. If a specific DB subnet group has been
--- specified as part of the request and the PubliclyAccessible value has not
--- been set, the DB instance will be private.
-dbiPubliclyAccessible :: Lens' DBInstance (Maybe Bool)
-dbiPubliclyAccessible =
-    lens _dbiPubliclyAccessible (\s a -> s { _dbiPubliclyAccessible = a })
-
--- | Contains one or more identifiers of the Read Replicas associated with this
--- DB instance.
-dbiReadReplicaDBInstanceIdentifiers :: Lens' DBInstance [Text]
-dbiReadReplicaDBInstanceIdentifiers =
-    lens _dbiReadReplicaDBInstanceIdentifiers
-        (\s a -> s { _dbiReadReplicaDBInstanceIdentifiers = a })
-            . _List
-
--- | Contains the identifier of the source DB instance if this DB instance is a
--- Read Replica.
-dbiReadReplicaSourceDBInstanceIdentifier :: Lens' DBInstance (Maybe Text)
-dbiReadReplicaSourceDBInstanceIdentifier =
-    lens _dbiReadReplicaSourceDBInstanceIdentifier
-        (\s a -> s { _dbiReadReplicaSourceDBInstanceIdentifier = a })
-
--- | If present, specifies the name of the secondary Availability Zone for a DB
--- instance with multi-AZ support.
-dbiSecondaryAvailabilityZone :: Lens' DBInstance (Maybe Text)
-dbiSecondaryAvailabilityZone =
-    lens _dbiSecondaryAvailabilityZone
-        (\s a -> s { _dbiSecondaryAvailabilityZone = a })
-
--- | The status of a Read Replica. If the instance is not a Read Replica, this
--- will be blank.
-dbiStatusInfos :: Lens' DBInstance [DBInstanceStatusInfo]
-dbiStatusInfos = lens _dbiStatusInfos (\s a -> s { _dbiStatusInfos = a }) . _List
-
--- | Specifies whether the DB instance is encrypted.
-dbiStorageEncrypted :: Lens' DBInstance (Maybe Bool)
-dbiStorageEncrypted =
-    lens _dbiStorageEncrypted (\s a -> s { _dbiStorageEncrypted = a })
-
--- | Specifies the storage type associated with DB instance.
-dbiStorageType :: Lens' DBInstance (Maybe Text)
-dbiStorageType = lens _dbiStorageType (\s a -> s { _dbiStorageType = a })
-
--- | The ARN from the Key Store with which the instance is associated for TDE
--- encryption.
-dbiTdeCredentialArn :: Lens' DBInstance (Maybe Text)
-dbiTdeCredentialArn =
-    lens _dbiTdeCredentialArn (\s a -> s { _dbiTdeCredentialArn = a })
-
--- | Provides List of VPC security group elements that the DB instance belongs
--- to.
-dbiVpcSecurityGroups :: Lens' DBInstance [VpcSecurityGroupMembership]
-dbiVpcSecurityGroups =
-    lens _dbiVpcSecurityGroups (\s a -> s { _dbiVpcSecurityGroups = a })
-        . _List
-
-instance FromXML DBInstance where
-    parseXML x = DBInstance
-        <$> x .@? "AllocatedStorage"
-        <*> x .@? "AutoMinorVersionUpgrade"
-        <*> x .@? "AvailabilityZone"
-        <*> x .@? "BackupRetentionPeriod"
-        <*> x .@? "CACertificateIdentifier"
-        <*> x .@? "CharacterSetName"
-        <*> x .@? "DBInstanceClass"
-        <*> x .@? "DBInstanceIdentifier"
-        <*> x .@? "DBInstanceStatus"
-        <*> x .@? "DBName"
-        <*> x .@? "DBParameterGroups" .!@ mempty
-        <*> x .@? "DBSecurityGroups" .!@ mempty
-        <*> x .@? "DBSubnetGroup"
-        <*> x .@? "DbiResourceId"
-        <*> x .@? "Endpoint"
-        <*> x .@? "Engine"
-        <*> x .@? "EngineVersion"
-        <*> x .@? "InstanceCreateTime"
-        <*> x .@? "Iops"
-        <*> x .@? "KmsKeyId"
-        <*> x .@? "LatestRestorableTime"
-        <*> x .@? "LicenseModel"
-        <*> x .@? "MasterUsername"
-        <*> x .@? "MultiAZ"
-        <*> x .@? "OptionGroupMemberships" .!@ mempty
-        <*> x .@? "PendingModifiedValues"
-        <*> x .@? "PreferredBackupWindow"
-        <*> x .@? "PreferredMaintenanceWindow"
-        <*> x .@? "PubliclyAccessible"
-        <*> x .@? "ReadReplicaDBInstanceIdentifiers" .!@ mempty
-        <*> x .@? "ReadReplicaSourceDBInstanceIdentifier"
-        <*> x .@? "SecondaryAvailabilityZone"
-        <*> x .@? "StatusInfos" .!@ mempty
-        <*> x .@? "StorageEncrypted"
-        <*> x .@? "StorageType"
-        <*> x .@? "TdeCredentialArn"
-        <*> x .@? "VpcSecurityGroups" .!@ mempty
-
-instance ToQuery DBInstance where
-    toQuery DBInstance{..} = mconcat
-        [ "AllocatedStorage"                      =? _dbiAllocatedStorage
-        , "AutoMinorVersionUpgrade"               =? _dbiAutoMinorVersionUpgrade
-        , "AvailabilityZone"                      =? _dbiAvailabilityZone
-        , "BackupRetentionPeriod"                 =? _dbiBackupRetentionPeriod
-        , "CACertificateIdentifier"               =? _dbiCACertificateIdentifier
-        , "CharacterSetName"                      =? _dbiCharacterSetName
-        , "DBInstanceClass"                       =? _dbiDBInstanceClass
-        , "DBInstanceIdentifier"                  =? _dbiDBInstanceIdentifier
-        , "DBInstanceStatus"                      =? _dbiDBInstanceStatus
-        , "DBName"                                =? _dbiDBName
-        , "DBParameterGroups"                     =? _dbiDBParameterGroups
-        , "DBSecurityGroups"                      =? _dbiDBSecurityGroups
-        , "DBSubnetGroup"                         =? _dbiDBSubnetGroup
-        , "DbiResourceId"                         =? _dbiDbiResourceId
-        , "Endpoint"                              =? _dbiEndpoint
-        , "Engine"                                =? _dbiEngine
-        , "EngineVersion"                         =? _dbiEngineVersion
-        , "InstanceCreateTime"                    =? _dbiInstanceCreateTime
-        , "Iops"                                  =? _dbiIops
-        , "KmsKeyId"                              =? _dbiKmsKeyId
-        , "LatestRestorableTime"                  =? _dbiLatestRestorableTime
-        , "LicenseModel"                          =? _dbiLicenseModel
-        , "MasterUsername"                        =? _dbiMasterUsername
-        , "MultiAZ"                               =? _dbiMultiAZ
-        , "OptionGroupMemberships"                =? _dbiOptionGroupMemberships
-        , "PendingModifiedValues"                 =? _dbiPendingModifiedValues
-        , "PreferredBackupWindow"                 =? _dbiPreferredBackupWindow
-        , "PreferredMaintenanceWindow"            =? _dbiPreferredMaintenanceWindow
-        , "PubliclyAccessible"                    =? _dbiPubliclyAccessible
-        , "ReadReplicaDBInstanceIdentifiers"      =? _dbiReadReplicaDBInstanceIdentifiers
-        , "ReadReplicaSourceDBInstanceIdentifier" =? _dbiReadReplicaSourceDBInstanceIdentifier
-        , "SecondaryAvailabilityZone"             =? _dbiSecondaryAvailabilityZone
-        , "StatusInfos"                           =? _dbiStatusInfos
-        , "StorageEncrypted"                      =? _dbiStorageEncrypted
-        , "StorageType"                           =? _dbiStorageType
-        , "TdeCredentialArn"                      =? _dbiTdeCredentialArn
-        , "VpcSecurityGroups"                     =? _dbiVpcSecurityGroups
-        ]
-
-data AccountQuota = AccountQuota
-    { _aqAccountQuotaName :: Maybe Text
-    , _aqMax              :: Maybe Integer
-    , _aqUsed             :: Maybe Integer
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'AccountQuota' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'aqAccountQuotaName' @::@ 'Maybe' 'Text'
---
--- * 'aqMax' @::@ 'Maybe' 'Integer'
---
--- * 'aqUsed' @::@ 'Maybe' 'Integer'
---
-accountQuota :: AccountQuota
-accountQuota = AccountQuota
-    { _aqAccountQuotaName = Nothing
-    , _aqUsed             = Nothing
-    , _aqMax              = Nothing
-    }
-
--- | The name of the Amazon RDS quota for this AWS account.
-aqAccountQuotaName :: Lens' AccountQuota (Maybe Text)
-aqAccountQuotaName =
-    lens _aqAccountQuotaName (\s a -> s { _aqAccountQuotaName = a })
-
--- | The maximum allowed value for the quota.
-aqMax :: Lens' AccountQuota (Maybe Integer)
-aqMax = lens _aqMax (\s a -> s { _aqMax = a })
-
--- | The amount currently used toward the quota maximum.
-aqUsed :: Lens' AccountQuota (Maybe Integer)
-aqUsed = lens _aqUsed (\s a -> s { _aqUsed = a })
-
-instance FromXML AccountQuota where
-    parseXML x = AccountQuota
-        <$> x .@? "AccountQuotaName"
-        <*> x .@? "Max"
-        <*> x .@? "Used"
-
-instance ToQuery AccountQuota where
-    toQuery AccountQuota{..} = mconcat
-        [ "AccountQuotaName" =? _aqAccountQuotaName
-        , "Max"              =? _aqMax
-        , "Used"             =? _aqUsed
-        ]
-
-newtype AvailabilityZone = AvailabilityZone
-    { _azName :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'AvailabilityZone' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'azName' @::@ 'Maybe' 'Text'
---
-availabilityZone :: AvailabilityZone
-availabilityZone = AvailabilityZone
-    { _azName = Nothing
-    }
-
--- | The name of the availability zone.
-azName :: Lens' AvailabilityZone (Maybe Text)
-azName = lens _azName (\s a -> s { _azName = a })
-
-instance FromXML AvailabilityZone where
-    parseXML x = AvailabilityZone
-        <$> x .@? "Name"
-
-instance ToQuery AvailabilityZone where
-    toQuery AvailabilityZone{..} = mconcat
-        [ "Name" =? _azName
-        ]
-
-data EventSubscription = EventSubscription
-    { _esCustSubscriptionId       :: Maybe Text
-    , _esCustomerAwsId            :: Maybe Text
-    , _esEnabled                  :: Maybe Bool
-    , _esEventCategoriesList      :: List "member" Text
-    , _esSnsTopicArn              :: Maybe Text
-    , _esSourceIdsList            :: List "member" Text
-    , _esSourceType               :: Maybe Text
-    , _esStatus                   :: Maybe Text
-    , _esSubscriptionCreationTime :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'EventSubscription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'esCustSubscriptionId' @::@ 'Maybe' 'Text'
---
--- * 'esCustomerAwsId' @::@ 'Maybe' 'Text'
---
--- * 'esEnabled' @::@ 'Maybe' 'Bool'
---
--- * 'esEventCategoriesList' @::@ ['Text']
---
--- * 'esSnsTopicArn' @::@ 'Maybe' 'Text'
---
--- * 'esSourceIdsList' @::@ ['Text']
---
--- * 'esSourceType' @::@ 'Maybe' 'Text'
---
--- * 'esStatus' @::@ 'Maybe' 'Text'
---
--- * 'esSubscriptionCreationTime' @::@ 'Maybe' 'Text'
---
-eventSubscription :: EventSubscription
-eventSubscription = EventSubscription
-    { _esCustomerAwsId            = Nothing
-    , _esCustSubscriptionId       = Nothing
-    , _esSnsTopicArn              = Nothing
-    , _esStatus                   = Nothing
-    , _esSubscriptionCreationTime = Nothing
-    , _esSourceType               = Nothing
-    , _esSourceIdsList            = mempty
-    , _esEventCategoriesList      = mempty
-    , _esEnabled                  = Nothing
-    }
-
--- | The RDS event notification subscription Id.
-esCustSubscriptionId :: Lens' EventSubscription (Maybe Text)
-esCustSubscriptionId =
-    lens _esCustSubscriptionId (\s a -> s { _esCustSubscriptionId = a })
-
--- | The AWS customer account associated with the RDS event notification
--- subscription.
-esCustomerAwsId :: Lens' EventSubscription (Maybe Text)
-esCustomerAwsId = lens _esCustomerAwsId (\s a -> s { _esCustomerAwsId = a })
-
--- | A Boolean value indicating if the subscription is enabled. True indicates the
--- subscription is enabled.
-esEnabled :: Lens' EventSubscription (Maybe Bool)
-esEnabled = lens _esEnabled (\s a -> s { _esEnabled = a })
-
--- | A list of event categories for the RDS event notification subscription.
-esEventCategoriesList :: Lens' EventSubscription [Text]
-esEventCategoriesList =
-    lens _esEventCategoriesList (\s a -> s { _esEventCategoriesList = a })
-        . _List
-
--- | The topic ARN of the RDS event notification subscription.
-esSnsTopicArn :: Lens' EventSubscription (Maybe Text)
-esSnsTopicArn = lens _esSnsTopicArn (\s a -> s { _esSnsTopicArn = a })
-
--- | A list of source IDs for the RDS event notification subscription.
-esSourceIdsList :: Lens' EventSubscription [Text]
-esSourceIdsList = lens _esSourceIdsList (\s a -> s { _esSourceIdsList = a }) . _List
-
--- | The source type for the RDS event notification subscription.
-esSourceType :: Lens' EventSubscription (Maybe Text)
-esSourceType = lens _esSourceType (\s a -> s { _esSourceType = a })
-
--- | The status of the RDS event notification subscription.
---
--- Constraints:
---
--- Can be one of the following: creating | modifying | deleting | active |
--- no-permission | topic-not-exist
---
--- The status "no-permission" indicates that RDS no longer has permission to
--- post to the SNS topic. The status "topic-not-exist" indicates that the topic
--- was deleted after the subscription was created.
-esStatus :: Lens' EventSubscription (Maybe Text)
-esStatus = lens _esStatus (\s a -> s { _esStatus = a })
-
--- | The time the RDS event notification subscription was created.
-esSubscriptionCreationTime :: Lens' EventSubscription (Maybe Text)
-esSubscriptionCreationTime =
-    lens _esSubscriptionCreationTime
-        (\s a -> s { _esSubscriptionCreationTime = a })
-
-instance FromXML EventSubscription where
-    parseXML x = EventSubscription
-        <$> x .@? "CustSubscriptionId"
-        <*> x .@? "CustomerAwsId"
-        <*> x .@? "Enabled"
-        <*> x .@? "EventCategoriesList" .!@ mempty
-        <*> x .@? "SnsTopicArn"
-        <*> x .@? "SourceIdsList" .!@ mempty
-        <*> x .@? "SourceType"
-        <*> x .@? "Status"
-        <*> x .@? "SubscriptionCreationTime"
-
-instance ToQuery EventSubscription where
-    toQuery EventSubscription{..} = mconcat
-        [ "CustSubscriptionId"       =? _esCustSubscriptionId
-        , "CustomerAwsId"            =? _esCustomerAwsId
-        , "Enabled"                  =? _esEnabled
-        , "EventCategoriesList"      =? _esEventCategoriesList
-        , "SnsTopicArn"              =? _esSnsTopicArn
-        , "SourceIdsList"            =? _esSourceIdsList
-        , "SourceType"               =? _esSourceType
-        , "Status"                   =? _esStatus
-        , "SubscriptionCreationTime" =? _esSubscriptionCreationTime
-        ]
-
-data DBSubnetGroup = DBSubnetGroup
-    { _dbsg1DBSubnetGroupDescription :: Maybe Text
-    , _dbsg1DBSubnetGroupName        :: Maybe Text
-    , _dbsg1SubnetGroupStatus        :: Maybe Text
-    , _dbsg1Subnets                  :: List "member" Subnet
-    , _dbsg1VpcId                    :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'DBSubnetGroup' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dbsg1DBSubnetGroupDescription' @::@ 'Maybe' 'Text'
---
--- * 'dbsg1DBSubnetGroupName' @::@ 'Maybe' 'Text'
---
--- * 'dbsg1SubnetGroupStatus' @::@ 'Maybe' 'Text'
---
--- * 'dbsg1Subnets' @::@ ['Subnet']
---
--- * 'dbsg1VpcId' @::@ 'Maybe' 'Text'
---
-dbsubnetGroup :: DBSubnetGroup
-dbsubnetGroup = DBSubnetGroup
-    { _dbsg1DBSubnetGroupName        = Nothing
-    , _dbsg1DBSubnetGroupDescription = Nothing
-    , _dbsg1VpcId                    = Nothing
-    , _dbsg1SubnetGroupStatus        = Nothing
-    , _dbsg1Subnets                  = mempty
-    }
-
--- | Provides the description of the DB subnet group.
-dbsg1DBSubnetGroupDescription :: Lens' DBSubnetGroup (Maybe Text)
-dbsg1DBSubnetGroupDescription =
-    lens _dbsg1DBSubnetGroupDescription
-        (\s a -> s { _dbsg1DBSubnetGroupDescription = a })
-
--- | Specifies the name of the DB subnet group.
-dbsg1DBSubnetGroupName :: Lens' DBSubnetGroup (Maybe Text)
-dbsg1DBSubnetGroupName =
-    lens _dbsg1DBSubnetGroupName (\s a -> s { _dbsg1DBSubnetGroupName = a })
-
--- | Provides the status of the DB subnet group.
-dbsg1SubnetGroupStatus :: Lens' DBSubnetGroup (Maybe Text)
-dbsg1SubnetGroupStatus =
-    lens _dbsg1SubnetGroupStatus (\s a -> s { _dbsg1SubnetGroupStatus = a })
-
--- | Contains a list of 'Subnet' elements.
-dbsg1Subnets :: Lens' DBSubnetGroup [Subnet]
-dbsg1Subnets = lens _dbsg1Subnets (\s a -> s { _dbsg1Subnets = a }) . _List
-
--- | Provides the VpcId of the DB subnet group.
-dbsg1VpcId :: Lens' DBSubnetGroup (Maybe Text)
-dbsg1VpcId = lens _dbsg1VpcId (\s a -> s { _dbsg1VpcId = a })
-
-instance FromXML DBSubnetGroup where
-    parseXML x = DBSubnetGroup
-        <$> x .@? "DBSubnetGroupDescription"
-        <*> x .@? "DBSubnetGroupName"
-        <*> x .@? "SubnetGroupStatus"
-        <*> x .@? "Subnets" .!@ mempty
-        <*> x .@? "VpcId"
-
-instance ToQuery DBSubnetGroup where
-    toQuery DBSubnetGroup{..} = mconcat
-        [ "DBSubnetGroupDescription" =? _dbsg1DBSubnetGroupDescription
-        , "DBSubnetGroupName"        =? _dbsg1DBSubnetGroupName
-        , "SubnetGroupStatus"        =? _dbsg1SubnetGroupStatus
-        , "Subnets"                  =? _dbsg1Subnets
-        , "VpcId"                    =? _dbsg1VpcId
-        ]
-
-data Certificate = Certificate
-    { _cCertificateIdentifier :: Maybe Text
-    , _cCertificateType       :: Maybe Text
-    , _cThumbprint            :: Maybe Text
-    , _cValidFrom             :: Maybe ISO8601
-    , _cValidTill             :: Maybe ISO8601
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Certificate' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cCertificateIdentifier' @::@ 'Maybe' 'Text'
---
--- * 'cCertificateType' @::@ 'Maybe' 'Text'
---
--- * 'cThumbprint' @::@ 'Maybe' 'Text'
---
--- * 'cValidFrom' @::@ 'Maybe' 'UTCTime'
---
--- * 'cValidTill' @::@ 'Maybe' 'UTCTime'
---
-certificate :: Certificate
-certificate = Certificate
-    { _cCertificateIdentifier = Nothing
-    , _cCertificateType       = Nothing
-    , _cThumbprint            = Nothing
-    , _cValidFrom             = Nothing
-    , _cValidTill             = Nothing
-    }
-
--- | The unique key that identifies a certificate.
-cCertificateIdentifier :: Lens' Certificate (Maybe Text)
-cCertificateIdentifier =
-    lens _cCertificateIdentifier (\s a -> s { _cCertificateIdentifier = a })
-
--- | The type of the certificate.
-cCertificateType :: Lens' Certificate (Maybe Text)
-cCertificateType = lens _cCertificateType (\s a -> s { _cCertificateType = a })
-
--- | The thumbprint of the certificate.
-cThumbprint :: Lens' Certificate (Maybe Text)
-cThumbprint = lens _cThumbprint (\s a -> s { _cThumbprint = a })
-
--- | The starting date from which the certificate is valid.
-cValidFrom :: Lens' Certificate (Maybe UTCTime)
-cValidFrom = lens _cValidFrom (\s a -> s { _cValidFrom = a }) . mapping _Time
-
--- | The final date that the certificate continues to be valid.
-cValidTill :: Lens' Certificate (Maybe UTCTime)
-cValidTill = lens _cValidTill (\s a -> s { _cValidTill = a }) . mapping _Time
-
-instance FromXML Certificate where
-    parseXML x = Certificate
-        <$> x .@? "CertificateIdentifier"
-        <*> x .@? "CertificateType"
-        <*> x .@? "Thumbprint"
-        <*> x .@? "ValidFrom"
-        <*> x .@? "ValidTill"
-
-instance ToQuery Certificate where
-    toQuery Certificate{..} = mconcat
-        [ "CertificateIdentifier" =? _cCertificateIdentifier
-        , "CertificateType"       =? _cCertificateType
-        , "Thumbprint"            =? _cThumbprint
-        , "ValidFrom"             =? _cValidFrom
-        , "ValidTill"             =? _cValidTill
-        ]
-
-data DBInstanceStatusInfo = DBInstanceStatusInfo
-    { _dbisiMessage    :: Maybe Text
-    , _dbisiNormal     :: Maybe Bool
-    , _dbisiStatus     :: Maybe Text
-    , _dbisiStatusType :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DBInstanceStatusInfo' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dbisiMessage' @::@ 'Maybe' 'Text'
---
--- * 'dbisiNormal' @::@ 'Maybe' 'Bool'
---
--- * 'dbisiStatus' @::@ 'Maybe' 'Text'
---
--- * 'dbisiStatusType' @::@ 'Maybe' 'Text'
---
-dbinstanceStatusInfo :: DBInstanceStatusInfo
-dbinstanceStatusInfo = DBInstanceStatusInfo
-    { _dbisiStatusType = Nothing
-    , _dbisiNormal     = Nothing
-    , _dbisiStatus     = Nothing
-    , _dbisiMessage    = Nothing
-    }
-
--- | Details of the error if there is an error for the instance. If the instance
--- is not in an error state, this value is blank.
-dbisiMessage :: Lens' DBInstanceStatusInfo (Maybe Text)
-dbisiMessage = lens _dbisiMessage (\s a -> s { _dbisiMessage = a })
-
--- | Boolean value that is true if the instance is operating normally, or false
--- if the instance is in an error state.
-dbisiNormal :: Lens' DBInstanceStatusInfo (Maybe Bool)
-dbisiNormal = lens _dbisiNormal (\s a -> s { _dbisiNormal = a })
-
--- | Status of the DB instance. For a StatusType of read replica, the values can
--- be replicating, error, stopped, or terminated.
-dbisiStatus :: Lens' DBInstanceStatusInfo (Maybe Text)
-dbisiStatus = lens _dbisiStatus (\s a -> s { _dbisiStatus = a })
-
--- | This value is currently "read replication."
-dbisiStatusType :: Lens' DBInstanceStatusInfo (Maybe Text)
-dbisiStatusType = lens _dbisiStatusType (\s a -> s { _dbisiStatusType = a })
-
-instance FromXML DBInstanceStatusInfo where
-    parseXML x = DBInstanceStatusInfo
-        <$> x .@? "Message"
-        <*> x .@? "Normal"
-        <*> x .@? "Status"
-        <*> x .@? "StatusType"
-
-instance ToQuery DBInstanceStatusInfo where
-    toQuery DBInstanceStatusInfo{..} = mconcat
-        [ "Message"    =? _dbisiMessage
-        , "Normal"     =? _dbisiNormal
-        , "Status"     =? _dbisiStatus
-        , "StatusType" =? _dbisiStatusType
-        ]
-
-data OptionSetting = OptionSetting
-    { _osAllowedValues :: Maybe Text
-    , _osApplyType     :: Maybe Text
-    , _osDataType      :: Maybe Text
-    , _osDefaultValue  :: Maybe Text
-    , _osDescription   :: Maybe Text
-    , _osIsCollection  :: Maybe Bool
-    , _osIsModifiable  :: Maybe Bool
-    , _osName          :: Maybe Text
-    , _osValue         :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'OptionSetting' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'osAllowedValues' @::@ 'Maybe' 'Text'
---
--- * 'osApplyType' @::@ 'Maybe' 'Text'
---
--- * 'osDataType' @::@ 'Maybe' 'Text'
---
--- * 'osDefaultValue' @::@ 'Maybe' 'Text'
---
--- * 'osDescription' @::@ 'Maybe' 'Text'
---
--- * 'osIsCollection' @::@ 'Maybe' 'Bool'
---
--- * 'osIsModifiable' @::@ 'Maybe' 'Bool'
---
--- * 'osName' @::@ 'Maybe' 'Text'
---
--- * 'osValue' @::@ 'Maybe' 'Text'
---
-optionSetting :: OptionSetting
-optionSetting = OptionSetting
-    { _osName          = Nothing
-    , _osValue         = Nothing
-    , _osDefaultValue  = Nothing
-    , _osDescription   = Nothing
-    , _osApplyType     = Nothing
-    , _osDataType      = Nothing
-    , _osAllowedValues = Nothing
-    , _osIsModifiable  = Nothing
-    , _osIsCollection  = Nothing
-    }
-
--- | The allowed values of the option setting.
-osAllowedValues :: Lens' OptionSetting (Maybe Text)
-osAllowedValues = lens _osAllowedValues (\s a -> s { _osAllowedValues = a })
-
--- | The DB engine specific parameter type.
-osApplyType :: Lens' OptionSetting (Maybe Text)
-osApplyType = lens _osApplyType (\s a -> s { _osApplyType = a })
-
--- | The data type of the option setting.
-osDataType :: Lens' OptionSetting (Maybe Text)
-osDataType = lens _osDataType (\s a -> s { _osDataType = a })
-
--- | The default value of the option setting.
-osDefaultValue :: Lens' OptionSetting (Maybe Text)
-osDefaultValue = lens _osDefaultValue (\s a -> s { _osDefaultValue = a })
-
--- | The description of the option setting.
-osDescription :: Lens' OptionSetting (Maybe Text)
-osDescription = lens _osDescription (\s a -> s { _osDescription = a })
-
--- | Indicates if the option setting is part of a collection.
-osIsCollection :: Lens' OptionSetting (Maybe Bool)
-osIsCollection = lens _osIsCollection (\s a -> s { _osIsCollection = a })
-
--- | A Boolean value that, when true, indicates the option setting can be
--- modified from the default.
-osIsModifiable :: Lens' OptionSetting (Maybe Bool)
-osIsModifiable = lens _osIsModifiable (\s a -> s { _osIsModifiable = a })
-
--- | The name of the option that has settings that you can set.
-osName :: Lens' OptionSetting (Maybe Text)
-osName = lens _osName (\s a -> s { _osName = a })
-
--- | The current value of the option setting.
-osValue :: Lens' OptionSetting (Maybe Text)
-osValue = lens _osValue (\s a -> s { _osValue = a })
-
-instance FromXML OptionSetting where
-    parseXML x = OptionSetting
-        <$> x .@? "AllowedValues"
-        <*> x .@? "ApplyType"
-        <*> x .@? "DataType"
-        <*> x .@? "DefaultValue"
-        <*> x .@? "Description"
-        <*> x .@? "IsCollection"
-        <*> x .@? "IsModifiable"
-        <*> x .@? "Name"
-        <*> x .@? "Value"
-
-instance ToQuery OptionSetting where
-    toQuery OptionSetting{..} = mconcat
-        [ "AllowedValues" =? _osAllowedValues
-        , "ApplyType"     =? _osApplyType
-        , "DataType"      =? _osDataType
-        , "DefaultValue"  =? _osDefaultValue
-        , "Description"   =? _osDescription
-        , "IsCollection"  =? _osIsCollection
-        , "IsModifiable"  =? _osIsModifiable
-        , "Name"          =? _osName
-        , "Value"         =? _osValue
-        ]
-
-data DescribeDBLogFilesDetails = DescribeDBLogFilesDetails
-    { _ddblfdLastWritten :: Maybe Integer
-    , _ddblfdLogFileName :: Maybe Text
-    , _ddblfdSize        :: Maybe Integer
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DescribeDBLogFilesDetails' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddblfdLastWritten' @::@ 'Maybe' 'Integer'
---
--- * 'ddblfdLogFileName' @::@ 'Maybe' 'Text'
---
--- * 'ddblfdSize' @::@ 'Maybe' 'Integer'
---
-describeDBLogFilesDetails :: DescribeDBLogFilesDetails
-describeDBLogFilesDetails = DescribeDBLogFilesDetails
-    { _ddblfdLogFileName = Nothing
-    , _ddblfdLastWritten = Nothing
-    , _ddblfdSize        = Nothing
-    }
-
--- | A POSIX timestamp when the last log entry was written.
-ddblfdLastWritten :: Lens' DescribeDBLogFilesDetails (Maybe Integer)
-ddblfdLastWritten =
-    lens _ddblfdLastWritten (\s a -> s { _ddblfdLastWritten = a })
-
--- | The name of the log file for the specified DB instance.
-ddblfdLogFileName :: Lens' DescribeDBLogFilesDetails (Maybe Text)
-ddblfdLogFileName =
-    lens _ddblfdLogFileName (\s a -> s { _ddblfdLogFileName = a })
-
--- | The size, in bytes, of the log file for the specified DB instance.
-ddblfdSize :: Lens' DescribeDBLogFilesDetails (Maybe Integer)
-ddblfdSize = lens _ddblfdSize (\s a -> s { _ddblfdSize = a })
-
-instance FromXML DescribeDBLogFilesDetails where
-    parseXML x = DescribeDBLogFilesDetails
-        <$> x .@? "LastWritten"
-        <*> x .@? "LogFileName"
-        <*> x .@? "Size"
-
-instance ToQuery DescribeDBLogFilesDetails where
-    toQuery DescribeDBLogFilesDetails{..} = mconcat
-        [ "LastWritten" =? _ddblfdLastWritten
-        , "LogFileName" =? _ddblfdLogFileName
-        , "Size"        =? _ddblfdSize
-        ]
-
-data OrderableDBInstanceOption = OrderableDBInstanceOption
-    { _odbioAvailabilityZones         :: List "member" AvailabilityZone
-    , _odbioDBInstanceClass           :: Maybe Text
-    , _odbioEngine                    :: Maybe Text
-    , _odbioEngineVersion             :: Maybe Text
-    , _odbioLicenseModel              :: Maybe Text
-    , _odbioMultiAZCapable            :: Maybe Bool
-    , _odbioReadReplicaCapable        :: Maybe Bool
-    , _odbioStorageType               :: Maybe Text
-    , _odbioSupportsIops              :: Maybe Bool
-    , _odbioSupportsStorageEncryption :: Maybe Bool
-    , _odbioVpc                       :: Maybe Bool
-    } deriving (Eq, Read, Show)
-
--- | 'OrderableDBInstanceOption' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'odbioAvailabilityZones' @::@ ['AvailabilityZone']
---
--- * 'odbioDBInstanceClass' @::@ 'Maybe' 'Text'
---
--- * 'odbioEngine' @::@ 'Maybe' 'Text'
---
--- * 'odbioEngineVersion' @::@ 'Maybe' 'Text'
---
--- * 'odbioLicenseModel' @::@ 'Maybe' 'Text'
---
--- * 'odbioMultiAZCapable' @::@ 'Maybe' 'Bool'
---
--- * 'odbioReadReplicaCapable' @::@ 'Maybe' 'Bool'
---
--- * 'odbioStorageType' @::@ 'Maybe' 'Text'
---
--- * 'odbioSupportsIops' @::@ 'Maybe' 'Bool'
---
--- * 'odbioSupportsStorageEncryption' @::@ 'Maybe' 'Bool'
---
--- * 'odbioVpc' @::@ 'Maybe' 'Bool'
---
-orderableDBInstanceOption :: OrderableDBInstanceOption
-orderableDBInstanceOption = OrderableDBInstanceOption
-    { _odbioEngine                    = Nothing
-    , _odbioEngineVersion             = Nothing
-    , _odbioDBInstanceClass           = Nothing
-    , _odbioLicenseModel              = Nothing
-    , _odbioAvailabilityZones         = mempty
-    , _odbioMultiAZCapable            = Nothing
-    , _odbioReadReplicaCapable        = Nothing
-    , _odbioVpc                       = Nothing
-    , _odbioSupportsStorageEncryption = Nothing
-    , _odbioStorageType               = Nothing
-    , _odbioSupportsIops              = Nothing
-    }
-
--- | A list of availability zones for the orderable DB instance.
-odbioAvailabilityZones :: Lens' OrderableDBInstanceOption [AvailabilityZone]
-odbioAvailabilityZones =
-    lens _odbioAvailabilityZones (\s a -> s { _odbioAvailabilityZones = a })
-        . _List
-
--- | The DB instance Class for the orderable DB instance
-odbioDBInstanceClass :: Lens' OrderableDBInstanceOption (Maybe Text)
-odbioDBInstanceClass =
-    lens _odbioDBInstanceClass (\s a -> s { _odbioDBInstanceClass = a })
-
--- | The engine type of the orderable DB instance.
-odbioEngine :: Lens' OrderableDBInstanceOption (Maybe Text)
-odbioEngine = lens _odbioEngine (\s a -> s { _odbioEngine = a })
-
--- | The engine version of the orderable DB instance.
-odbioEngineVersion :: Lens' OrderableDBInstanceOption (Maybe Text)
-odbioEngineVersion =
-    lens _odbioEngineVersion (\s a -> s { _odbioEngineVersion = a })
-
--- | The license model for the orderable DB instance.
-odbioLicenseModel :: Lens' OrderableDBInstanceOption (Maybe Text)
-odbioLicenseModel =
-    lens _odbioLicenseModel (\s a -> s { _odbioLicenseModel = a })
-
--- | Indicates whether this orderable DB instance is multi-AZ capable.
-odbioMultiAZCapable :: Lens' OrderableDBInstanceOption (Maybe Bool)
-odbioMultiAZCapable =
-    lens _odbioMultiAZCapable (\s a -> s { _odbioMultiAZCapable = a })
-
--- | Indicates whether this orderable DB instance can have a Read Replica.
-odbioReadReplicaCapable :: Lens' OrderableDBInstanceOption (Maybe Bool)
-odbioReadReplicaCapable =
-    lens _odbioReadReplicaCapable (\s a -> s { _odbioReadReplicaCapable = a })
-
--- | The storage type for this orderable DB instance.
-odbioStorageType :: Lens' OrderableDBInstanceOption (Maybe Text)
-odbioStorageType = lens _odbioStorageType (\s a -> s { _odbioStorageType = a })
-
--- | Indicates whether this orderable DB instance supports provisioned IOPS.
-odbioSupportsIops :: Lens' OrderableDBInstanceOption (Maybe Bool)
-odbioSupportsIops =
-    lens _odbioSupportsIops (\s a -> s { _odbioSupportsIops = a })
-
--- | Indicates whether this orderable DB instance supports encrypted storage.
-odbioSupportsStorageEncryption :: Lens' OrderableDBInstanceOption (Maybe Bool)
-odbioSupportsStorageEncryption =
-    lens _odbioSupportsStorageEncryption
-        (\s a -> s { _odbioSupportsStorageEncryption = a })
-
--- | Indicates whether this is a VPC orderable DB instance.
-odbioVpc :: Lens' OrderableDBInstanceOption (Maybe Bool)
-odbioVpc = lens _odbioVpc (\s a -> s { _odbioVpc = a })
-
-instance FromXML OrderableDBInstanceOption where
-    parseXML x = OrderableDBInstanceOption
-        <$> x .@? "AvailabilityZones" .!@ mempty
-        <*> x .@? "DBInstanceClass"
-        <*> x .@? "Engine"
-        <*> x .@? "EngineVersion"
-        <*> x .@? "LicenseModel"
-        <*> x .@? "MultiAZCapable"
-        <*> x .@? "ReadReplicaCapable"
-        <*> x .@? "StorageType"
-        <*> x .@? "SupportsIops"
-        <*> x .@? "SupportsStorageEncryption"
-        <*> x .@? "Vpc"
-
-instance ToQuery OrderableDBInstanceOption where
-    toQuery OrderableDBInstanceOption{..} = mconcat
-        [ "AvailabilityZones"         =? _odbioAvailabilityZones
-        , "DBInstanceClass"           =? _odbioDBInstanceClass
-        , "Engine"                    =? _odbioEngine
-        , "EngineVersion"             =? _odbioEngineVersion
-        , "LicenseModel"              =? _odbioLicenseModel
-        , "MultiAZCapable"            =? _odbioMultiAZCapable
-        , "ReadReplicaCapable"        =? _odbioReadReplicaCapable
-        , "StorageType"               =? _odbioStorageType
-        , "SupportsIops"              =? _odbioSupportsIops
-        , "SupportsStorageEncryption" =? _odbioSupportsStorageEncryption
-        , "Vpc"                       =? _odbioVpc
-        ]
-
-data Filter = Filter
-    { _fName   :: Text
-    , _fValues :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Filter' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'fName' @::@ 'Text'
---
--- * 'fValues' @::@ ['Text']
---
-filter' :: Text -- ^ 'fName'
-        -> Filter
-filter' p1 = Filter
-    { _fName   = p1
-    , _fValues = mempty
-    }
-
--- | This parameter is not currently supported.
-fName :: Lens' Filter Text
-fName = lens _fName (\s a -> s { _fName = a })
-
--- | This parameter is not currently supported.
-fValues :: Lens' Filter [Text]
-fValues = lens _fValues (\s a -> s { _fValues = a }) . _List
-
-instance FromXML Filter where
-    parseXML x = Filter
-        <$> x .@  "Name"
-        <*> x .@? "Values" .!@ mempty
-
-instance ToQuery Filter where
-    toQuery Filter{..} = mconcat
-        [ "Name"   =? _fName
-        , "Values" =? _fValues
-        ]
-
-data RecurringCharge = RecurringCharge
-    { _rcRecurringChargeAmount    :: Maybe Double
-    , _rcRecurringChargeFrequency :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'RecurringCharge' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rcRecurringChargeAmount' @::@ 'Maybe' 'Double'
---
--- * 'rcRecurringChargeFrequency' @::@ 'Maybe' 'Text'
---
-recurringCharge :: RecurringCharge
-recurringCharge = RecurringCharge
-    { _rcRecurringChargeAmount    = Nothing
-    , _rcRecurringChargeFrequency = Nothing
-    }
-
--- | The amount of the recurring charge.
-rcRecurringChargeAmount :: Lens' RecurringCharge (Maybe Double)
-rcRecurringChargeAmount =
-    lens _rcRecurringChargeAmount (\s a -> s { _rcRecurringChargeAmount = a })
-
--- | The frequency of the recurring charge.
-rcRecurringChargeFrequency :: Lens' RecurringCharge (Maybe Text)
-rcRecurringChargeFrequency =
-    lens _rcRecurringChargeFrequency
-        (\s a -> s { _rcRecurringChargeFrequency = a })
-
-instance FromXML RecurringCharge where
-    parseXML x = RecurringCharge
-        <$> x .@? "RecurringChargeAmount"
-        <*> x .@? "RecurringChargeFrequency"
-
-instance ToQuery RecurringCharge where
-    toQuery RecurringCharge{..} = mconcat
-        [ "RecurringChargeAmount"    =? _rcRecurringChargeAmount
-        , "RecurringChargeFrequency" =? _rcRecurringChargeFrequency
-        ]
-
-data Endpoint = Endpoint
-    { _eAddress :: Maybe Text
-    , _ePort    :: Maybe Int
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Endpoint' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'eAddress' @::@ 'Maybe' 'Text'
---
--- * 'ePort' @::@ 'Maybe' 'Int'
---
-endpoint :: Endpoint
-endpoint = Endpoint
-    { _eAddress = Nothing
-    , _ePort    = Nothing
-    }
-
--- | Specifies the DNS address of the DB instance.
-eAddress :: Lens' Endpoint (Maybe Text)
-eAddress = lens _eAddress (\s a -> s { _eAddress = a })
-
--- | Specifies the port that the database engine is listening on.
-ePort :: Lens' Endpoint (Maybe Int)
-ePort = lens _ePort (\s a -> s { _ePort = a })
-
-instance FromXML Endpoint where
-    parseXML x = Endpoint
-        <$> x .@? "Address"
-        <*> x .@? "Port"
-
-instance ToQuery Endpoint where
-    toQuery Endpoint{..} = mconcat
-        [ "Address" =? _eAddress
-        , "Port"    =? _ePort
-        ]
-
-data OptionConfiguration = OptionConfiguration
-    { _ocDBSecurityGroupMemberships  :: List "member" Text
-    , _ocOptionName                  :: Text
-    , _ocOptionSettings              :: List "member" OptionSetting
-    , _ocPort                        :: Maybe Int
-    , _ocVpcSecurityGroupMemberships :: List "member" Text
-    } deriving (Eq, Read, Show)
-
--- | 'OptionConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ocDBSecurityGroupMemberships' @::@ ['Text']
---
--- * 'ocOptionName' @::@ 'Text'
---
--- * 'ocOptionSettings' @::@ ['OptionSetting']
---
--- * 'ocPort' @::@ 'Maybe' 'Int'
---
--- * 'ocVpcSecurityGroupMemberships' @::@ ['Text']
---
-optionConfiguration :: Text -- ^ 'ocOptionName'
-                    -> OptionConfiguration
-optionConfiguration p1 = OptionConfiguration
-    { _ocOptionName                  = p1
-    , _ocPort                        = Nothing
-    , _ocDBSecurityGroupMemberships  = mempty
-    , _ocVpcSecurityGroupMemberships = mempty
-    , _ocOptionSettings              = mempty
-    }
-
--- | A list of DBSecurityGroupMemebrship name strings used for this option.
-ocDBSecurityGroupMemberships :: Lens' OptionConfiguration [Text]
-ocDBSecurityGroupMemberships =
-    lens _ocDBSecurityGroupMemberships
-        (\s a -> s { _ocDBSecurityGroupMemberships = a })
-            . _List
-
--- | The configuration of options to include in a group.
-ocOptionName :: Lens' OptionConfiguration Text
-ocOptionName = lens _ocOptionName (\s a -> s { _ocOptionName = a })
-
--- | The option settings to include in an option group.
-ocOptionSettings :: Lens' OptionConfiguration [OptionSetting]
-ocOptionSettings = lens _ocOptionSettings (\s a -> s { _ocOptionSettings = a }) . _List
-
--- | The optional port for the option.
-ocPort :: Lens' OptionConfiguration (Maybe Int)
-ocPort = lens _ocPort (\s a -> s { _ocPort = a })
-
--- | A list of VpcSecurityGroupMemebrship name strings used for this option.
-ocVpcSecurityGroupMemberships :: Lens' OptionConfiguration [Text]
-ocVpcSecurityGroupMemberships =
-    lens _ocVpcSecurityGroupMemberships
-        (\s a -> s { _ocVpcSecurityGroupMemberships = a })
-            . _List
-
-instance FromXML OptionConfiguration where
-    parseXML x = OptionConfiguration
-        <$> x .@? "DBSecurityGroupMemberships" .!@ mempty
-        <*> x .@  "OptionName"
-        <*> x .@? "OptionSettings" .!@ mempty
-        <*> x .@? "Port"
-        <*> x .@? "VpcSecurityGroupMemberships" .!@ mempty
-
-instance ToQuery OptionConfiguration where
-    toQuery OptionConfiguration{..} = mconcat
-        [ "DBSecurityGroupMemberships"  =? _ocDBSecurityGroupMemberships
-        , "OptionName"                  =? _ocOptionName
-        , "OptionSettings"              =? _ocOptionSettings
-        , "Port"                        =? _ocPort
-        , "VpcSecurityGroupMemberships" =? _ocVpcSecurityGroupMemberships
-        ]
-
-data Option = Option
-    { _oDBSecurityGroupMemberships  :: List "member" DBSecurityGroupMembership
-    , _oOptionDescription           :: Maybe Text
-    , _oOptionName                  :: Maybe Text
-    , _oOptionSettings              :: List "member" OptionSetting
-    , _oPermanent                   :: Maybe Bool
-    , _oPersistent                  :: Maybe Bool
-    , _oPort                        :: Maybe Int
-    , _oVpcSecurityGroupMemberships :: List "member" VpcSecurityGroupMembership
-    } deriving (Eq, Read, Show)
-
--- | 'Option' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'oDBSecurityGroupMemberships' @::@ ['DBSecurityGroupMembership']
---
--- * 'oOptionDescription' @::@ 'Maybe' 'Text'
---
--- * 'oOptionName' @::@ 'Maybe' 'Text'
---
--- * 'oOptionSettings' @::@ ['OptionSetting']
---
--- * 'oPermanent' @::@ 'Maybe' 'Bool'
---
--- * 'oPersistent' @::@ 'Maybe' 'Bool'
---
--- * 'oPort' @::@ 'Maybe' 'Int'
---
--- * 'oVpcSecurityGroupMemberships' @::@ ['VpcSecurityGroupMembership']
---
-option :: Option
-option = Option
-    { _oOptionName                  = Nothing
-    , _oOptionDescription           = Nothing
-    , _oPersistent                  = Nothing
-    , _oPermanent                   = Nothing
-    , _oPort                        = Nothing
-    , _oOptionSettings              = mempty
-    , _oDBSecurityGroupMemberships  = mempty
-    , _oVpcSecurityGroupMemberships = mempty
-    }
-
--- | If the option requires access to a port, then this DB security group allows
--- access to the port.
-oDBSecurityGroupMemberships :: Lens' Option [DBSecurityGroupMembership]
-oDBSecurityGroupMemberships =
-    lens _oDBSecurityGroupMemberships
-        (\s a -> s { _oDBSecurityGroupMemberships = a })
-            . _List
-
--- | The description of the option.
-oOptionDescription :: Lens' Option (Maybe Text)
-oOptionDescription =
-    lens _oOptionDescription (\s a -> s { _oOptionDescription = a })
-
--- | The name of the option.
-oOptionName :: Lens' Option (Maybe Text)
-oOptionName = lens _oOptionName (\s a -> s { _oOptionName = a })
-
--- | The option settings for this option.
-oOptionSettings :: Lens' Option [OptionSetting]
-oOptionSettings = lens _oOptionSettings (\s a -> s { _oOptionSettings = a }) . _List
-
--- | Indicate if this option is permanent.
-oPermanent :: Lens' Option (Maybe Bool)
-oPermanent = lens _oPermanent (\s a -> s { _oPermanent = a })
-
--- | Indicate if this option is persistent.
-oPersistent :: Lens' Option (Maybe Bool)
-oPersistent = lens _oPersistent (\s a -> s { _oPersistent = a })
-
--- | If required, the port configured for this option to use.
-oPort :: Lens' Option (Maybe Int)
-oPort = lens _oPort (\s a -> s { _oPort = a })
-
--- | If the option requires access to a port, then this VPC security group allows
--- access to the port.
-oVpcSecurityGroupMemberships :: Lens' Option [VpcSecurityGroupMembership]
-oVpcSecurityGroupMemberships =
-    lens _oVpcSecurityGroupMemberships
-        (\s a -> s { _oVpcSecurityGroupMemberships = a })
-            . _List
-
-instance FromXML Option where
-    parseXML x = Option
-        <$> x .@? "DBSecurityGroupMemberships" .!@ mempty
-        <*> x .@? "OptionDescription"
-        <*> x .@? "OptionName"
-        <*> x .@? "OptionSettings" .!@ mempty
-        <*> x .@? "Permanent"
-        <*> x .@? "Persistent"
-        <*> x .@? "Port"
-        <*> x .@? "VpcSecurityGroupMemberships" .!@ mempty
-
-instance ToQuery Option where
-    toQuery Option{..} = mconcat
-        [ "DBSecurityGroupMemberships"  =? _oDBSecurityGroupMemberships
-        , "OptionDescription"           =? _oOptionDescription
-        , "OptionName"                  =? _oOptionName
-        , "OptionSettings"              =? _oOptionSettings
-        , "Permanent"                   =? _oPermanent
-        , "Persistent"                  =? _oPersistent
-        , "Port"                        =? _oPort
-        , "VpcSecurityGroupMemberships" =? _oVpcSecurityGroupMemberships
-        ]
-
-data IPRange = IPRange
-    { _iprCIDRIP :: Maybe Text
-    , _iprStatus :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'IPRange' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'iprCIDRIP' @::@ 'Maybe' 'Text'
---
--- * 'iprStatus' @::@ 'Maybe' 'Text'
---
-iprange :: IPRange
-iprange = IPRange
-    { _iprStatus = Nothing
-    , _iprCIDRIP = Nothing
-    }
-
--- | Specifies the IP range.
-iprCIDRIP :: Lens' IPRange (Maybe Text)
-iprCIDRIP = lens _iprCIDRIP (\s a -> s { _iprCIDRIP = a })
-
--- | Specifies the status of the IP range. Status can be "authorizing",
--- "authorized", "revoking", and "revoked".
-iprStatus :: Lens' IPRange (Maybe Text)
-iprStatus = lens _iprStatus (\s a -> s { _iprStatus = a })
-
-instance FromXML IPRange where
-    parseXML x = IPRange
-        <$> x .@? "CIDRIP"
-        <*> x .@? "Status"
-
-instance ToQuery IPRange where
-    toQuery IPRange{..} = mconcat
-        [ "CIDRIP" =? _iprCIDRIP
-        , "Status" =? _iprStatus
-        ]
-
-data OptionGroupMembership = OptionGroupMembership
-    { _ogmOptionGroupName :: Maybe Text
-    , _ogmStatus          :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'OptionGroupMembership' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ogmOptionGroupName' @::@ 'Maybe' 'Text'
---
--- * 'ogmStatus' @::@ 'Maybe' 'Text'
---
-optionGroupMembership :: OptionGroupMembership
-optionGroupMembership = OptionGroupMembership
-    { _ogmOptionGroupName = Nothing
-    , _ogmStatus          = Nothing
-    }
-
--- | The name of the option group that the instance belongs to.
-ogmOptionGroupName :: Lens' OptionGroupMembership (Maybe Text)
-ogmOptionGroupName =
-    lens _ogmOptionGroupName (\s a -> s { _ogmOptionGroupName = a })
-
--- | The status of the DB instance's option group membership (e.g. in-sync,
--- pending, pending-maintenance, applying).
-ogmStatus :: Lens' OptionGroupMembership (Maybe Text)
-ogmStatus = lens _ogmStatus (\s a -> s { _ogmStatus = a })
-
-instance FromXML OptionGroupMembership where
-    parseXML x = OptionGroupMembership
-        <$> x .@? "OptionGroupName"
-        <*> x .@? "Status"
-
-instance ToQuery OptionGroupMembership where
-    toQuery OptionGroupMembership{..} = mconcat
-        [ "OptionGroupName" =? _ogmOptionGroupName
-        , "Status"          =? _ogmStatus
-        ]
-
-data EventCategoriesMap = EventCategoriesMap
-    { _ecmEventCategories :: List "member" Text
-    , _ecmSourceType      :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'EventCategoriesMap' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ecmEventCategories' @::@ ['Text']
---
--- * 'ecmSourceType' @::@ 'Maybe' 'Text'
---
-eventCategoriesMap :: EventCategoriesMap
-eventCategoriesMap = EventCategoriesMap
-    { _ecmSourceType      = Nothing
-    , _ecmEventCategories = mempty
-    }
-
--- | The event categories for the specified source type
-ecmEventCategories :: Lens' EventCategoriesMap [Text]
-ecmEventCategories =
-    lens _ecmEventCategories (\s a -> s { _ecmEventCategories = a })
-        . _List
-
--- | The source type that the returned categories belong to
-ecmSourceType :: Lens' EventCategoriesMap (Maybe Text)
-ecmSourceType = lens _ecmSourceType (\s a -> s { _ecmSourceType = a })
-
-instance FromXML EventCategoriesMap where
-    parseXML x = EventCategoriesMap
-        <$> x .@? "EventCategories" .!@ mempty
-        <*> x .@? "SourceType"
-
-instance ToQuery EventCategoriesMap where
-    toQuery EventCategoriesMap{..} = mconcat
-        [ "EventCategories" =? _ecmEventCategories
-        , "SourceType"      =? _ecmSourceType
-        ]
-
-data PendingModifiedValues = PendingModifiedValues
-    { _pmvAllocatedStorage        :: Maybe Int
-    , _pmvBackupRetentionPeriod   :: Maybe Int
-    , _pmvCACertificateIdentifier :: Maybe Text
-    , _pmvDBInstanceClass         :: Maybe Text
-    , _pmvDBInstanceIdentifier    :: Maybe Text
-    , _pmvEngineVersion           :: Maybe Text
-    , _pmvIops                    :: Maybe Int
-    , _pmvMasterUserPassword      :: Maybe Text
-    , _pmvMultiAZ                 :: Maybe Bool
-    , _pmvPort                    :: Maybe Int
-    , _pmvStorageType             :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'PendingModifiedValues' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'pmvAllocatedStorage' @::@ 'Maybe' 'Int'
---
--- * 'pmvBackupRetentionPeriod' @::@ 'Maybe' 'Int'
---
--- * 'pmvCACertificateIdentifier' @::@ 'Maybe' 'Text'
---
--- * 'pmvDBInstanceClass' @::@ 'Maybe' 'Text'
---
--- * 'pmvDBInstanceIdentifier' @::@ 'Maybe' 'Text'
---
--- * 'pmvEngineVersion' @::@ 'Maybe' 'Text'
---
--- * 'pmvIops' @::@ 'Maybe' 'Int'
---
--- * 'pmvMasterUserPassword' @::@ 'Maybe' 'Text'
---
--- * 'pmvMultiAZ' @::@ 'Maybe' 'Bool'
---
--- * 'pmvPort' @::@ 'Maybe' 'Int'
---
--- * 'pmvStorageType' @::@ 'Maybe' 'Text'
---
-pendingModifiedValues :: PendingModifiedValues
-pendingModifiedValues = PendingModifiedValues
-    { _pmvDBInstanceClass         = Nothing
-    , _pmvAllocatedStorage        = Nothing
-    , _pmvMasterUserPassword      = Nothing
-    , _pmvPort                    = Nothing
-    , _pmvBackupRetentionPeriod   = Nothing
-    , _pmvMultiAZ                 = Nothing
-    , _pmvEngineVersion           = Nothing
-    , _pmvIops                    = Nothing
-    , _pmvDBInstanceIdentifier    = Nothing
-    , _pmvStorageType             = Nothing
-    , _pmvCACertificateIdentifier = Nothing
-    }
-
--- | Contains the new 'AllocatedStorage' size for the DB instance that will be
--- applied or is in progress.
-pmvAllocatedStorage :: Lens' PendingModifiedValues (Maybe Int)
-pmvAllocatedStorage =
-    lens _pmvAllocatedStorage (\s a -> s { _pmvAllocatedStorage = a })
-
--- | Specifies the pending number of days for which automated backups are
--- retained.
-pmvBackupRetentionPeriod :: Lens' PendingModifiedValues (Maybe Int)
-pmvBackupRetentionPeriod =
-    lens _pmvBackupRetentionPeriod
-        (\s a -> s { _pmvBackupRetentionPeriod = a })
-
--- | Specifies the identifier of the CA certificate for the DB instance.
-pmvCACertificateIdentifier :: Lens' PendingModifiedValues (Maybe Text)
-pmvCACertificateIdentifier =
-    lens _pmvCACertificateIdentifier
-        (\s a -> s { _pmvCACertificateIdentifier = a })
-
--- | Contains the new 'DBInstanceClass' for the DB instance that will be applied or
--- is in progress.
-pmvDBInstanceClass :: Lens' PendingModifiedValues (Maybe Text)
-pmvDBInstanceClass =
-    lens _pmvDBInstanceClass (\s a -> s { _pmvDBInstanceClass = a })
-
--- | Contains the new 'DBInstanceIdentifier' for the DB instance that will be
--- applied or is in progress.
-pmvDBInstanceIdentifier :: Lens' PendingModifiedValues (Maybe Text)
-pmvDBInstanceIdentifier =
-    lens _pmvDBInstanceIdentifier (\s a -> s { _pmvDBInstanceIdentifier = a })
-
--- | Indicates the database engine version.
-pmvEngineVersion :: Lens' PendingModifiedValues (Maybe Text)
-pmvEngineVersion = lens _pmvEngineVersion (\s a -> s { _pmvEngineVersion = a })
-
--- | Specifies the new Provisioned IOPS value for the DB instance that will be
--- applied or is being applied.
-pmvIops :: Lens' PendingModifiedValues (Maybe Int)
-pmvIops = lens _pmvIops (\s a -> s { _pmvIops = a })
-
--- | Contains the pending or in-progress change of the master credentials for the
--- DB instance.
-pmvMasterUserPassword :: Lens' PendingModifiedValues (Maybe Text)
-pmvMasterUserPassword =
-    lens _pmvMasterUserPassword (\s a -> s { _pmvMasterUserPassword = a })
-
--- | Indicates that the Single-AZ DB instance is to change to a Multi-AZ
--- deployment.
-pmvMultiAZ :: Lens' PendingModifiedValues (Maybe Bool)
-pmvMultiAZ = lens _pmvMultiAZ (\s a -> s { _pmvMultiAZ = a })
-
--- | Specifies the pending port for the DB instance.
-pmvPort :: Lens' PendingModifiedValues (Maybe Int)
-pmvPort = lens _pmvPort (\s a -> s { _pmvPort = a })
-
--- | Specifies the storage type to be associated with the DB instance.
-pmvStorageType :: Lens' PendingModifiedValues (Maybe Text)
-pmvStorageType = lens _pmvStorageType (\s a -> s { _pmvStorageType = a })
-
-instance FromXML PendingModifiedValues where
-    parseXML x = PendingModifiedValues
-        <$> x .@? "AllocatedStorage"
-        <*> x .@? "BackupRetentionPeriod"
-        <*> x .@? "CACertificateIdentifier"
-        <*> x .@? "DBInstanceClass"
-        <*> x .@? "DBInstanceIdentifier"
-        <*> x .@? "EngineVersion"
-        <*> x .@? "Iops"
-        <*> x .@? "MasterUserPassword"
-        <*> x .@? "MultiAZ"
-        <*> x .@? "Port"
-        <*> x .@? "StorageType"
-
-instance ToQuery PendingModifiedValues where
-    toQuery PendingModifiedValues{..} = mconcat
-        [ "AllocatedStorage"        =? _pmvAllocatedStorage
-        , "BackupRetentionPeriod"   =? _pmvBackupRetentionPeriod
-        , "CACertificateIdentifier" =? _pmvCACertificateIdentifier
-        , "DBInstanceClass"         =? _pmvDBInstanceClass
-        , "DBInstanceIdentifier"    =? _pmvDBInstanceIdentifier
-        , "EngineVersion"           =? _pmvEngineVersion
-        , "Iops"                    =? _pmvIops
-        , "MasterUserPassword"      =? _pmvMasterUserPassword
-        , "MultiAZ"                 =? _pmvMultiAZ
-        , "Port"                    =? _pmvPort
-        , "StorageType"             =? _pmvStorageType
-        ]
-
-data VpcSecurityGroupMembership = VpcSecurityGroupMembership
-    { _vsgmStatus             :: Maybe Text
-    , _vsgmVpcSecurityGroupId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'VpcSecurityGroupMembership' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'vsgmStatus' @::@ 'Maybe' 'Text'
---
--- * 'vsgmVpcSecurityGroupId' @::@ 'Maybe' 'Text'
---
-vpcSecurityGroupMembership :: VpcSecurityGroupMembership
-vpcSecurityGroupMembership = VpcSecurityGroupMembership
-    { _vsgmVpcSecurityGroupId = Nothing
-    , _vsgmStatus             = Nothing
-    }
-
--- | The status of the VPC security group.
-vsgmStatus :: Lens' VpcSecurityGroupMembership (Maybe Text)
-vsgmStatus = lens _vsgmStatus (\s a -> s { _vsgmStatus = a })
-
--- | The name of the VPC security group.
-vsgmVpcSecurityGroupId :: Lens' VpcSecurityGroupMembership (Maybe Text)
-vsgmVpcSecurityGroupId =
-    lens _vsgmVpcSecurityGroupId (\s a -> s { _vsgmVpcSecurityGroupId = a })
-
-instance FromXML VpcSecurityGroupMembership where
-    parseXML x = VpcSecurityGroupMembership
-        <$> x .@? "Status"
-        <*> x .@? "VpcSecurityGroupId"
-
-instance ToQuery VpcSecurityGroupMembership where
-    toQuery VpcSecurityGroupMembership{..} = mconcat
-        [ "Status"             =? _vsgmStatus
-        , "VpcSecurityGroupId" =? _vsgmVpcSecurityGroupId
-        ]
-
-data Parameter = Parameter
-    { _pAllowedValues        :: Maybe Text
-    , _pApplyMethod          :: Maybe ApplyMethod
-    , _pApplyType            :: Maybe Text
-    , _pDataType             :: Maybe Text
-    , _pDescription          :: Maybe Text
-    , _pIsModifiable         :: Maybe Bool
-    , _pMinimumEngineVersion :: Maybe Text
-    , _pParameterName        :: Maybe Text
-    , _pParameterValue       :: Maybe Text
-    , _pSource               :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'Parameter' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'pAllowedValues' @::@ 'Maybe' 'Text'
---
--- * 'pApplyMethod' @::@ 'Maybe' 'ApplyMethod'
---
--- * 'pApplyType' @::@ 'Maybe' 'Text'
---
--- * 'pDataType' @::@ 'Maybe' 'Text'
---
--- * 'pDescription' @::@ 'Maybe' 'Text'
---
--- * 'pIsModifiable' @::@ 'Maybe' 'Bool'
---
--- * 'pMinimumEngineVersion' @::@ 'Maybe' 'Text'
---
--- * 'pParameterName' @::@ 'Maybe' 'Text'
---
--- * 'pParameterValue' @::@ 'Maybe' 'Text'
---
--- * 'pSource' @::@ 'Maybe' 'Text'
---
-parameter :: Parameter
-parameter = Parameter
-    { _pParameterName        = Nothing
-    , _pParameterValue       = Nothing
-    , _pDescription          = Nothing
-    , _pSource               = Nothing
-    , _pApplyType            = Nothing
-    , _pDataType             = Nothing
-    , _pAllowedValues        = Nothing
-    , _pIsModifiable         = Nothing
-    , _pMinimumEngineVersion = Nothing
-    , _pApplyMethod          = Nothing
-    }
-
--- | Specifies the valid range of values for the parameter.
-pAllowedValues :: Lens' Parameter (Maybe Text)
-pAllowedValues = lens _pAllowedValues (\s a -> s { _pAllowedValues = a })
-
--- | Indicates when to apply parameter updates.
-pApplyMethod :: Lens' Parameter (Maybe ApplyMethod)
-pApplyMethod = lens _pApplyMethod (\s a -> s { _pApplyMethod = a })
-
--- | Specifies the engine specific parameters type.
-pApplyType :: Lens' Parameter (Maybe Text)
-pApplyType = lens _pApplyType (\s a -> s { _pApplyType = a })
-
--- | Specifies the valid data type for the parameter.
-pDataType :: Lens' Parameter (Maybe Text)
-pDataType = lens _pDataType (\s a -> s { _pDataType = a })
-
--- | Provides a description of the parameter.
-pDescription :: Lens' Parameter (Maybe Text)
-pDescription = lens _pDescription (\s a -> s { _pDescription = 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.
-pIsModifiable :: Lens' Parameter (Maybe Bool)
-pIsModifiable = lens _pIsModifiable (\s a -> s { _pIsModifiable = a })
-
--- | The earliest engine version to which the parameter can apply.
-pMinimumEngineVersion :: Lens' Parameter (Maybe Text)
-pMinimumEngineVersion =
-    lens _pMinimumEngineVersion (\s a -> s { _pMinimumEngineVersion = a })
-
--- | Specifies the name of the parameter.
-pParameterName :: Lens' Parameter (Maybe Text)
-pParameterName = lens _pParameterName (\s a -> s { _pParameterName = a })
-
--- | Specifies the value of the parameter.
-pParameterValue :: Lens' Parameter (Maybe Text)
-pParameterValue = lens _pParameterValue (\s a -> s { _pParameterValue = a })
-
--- | Indicates the source of the parameter value.
-pSource :: Lens' Parameter (Maybe Text)
-pSource = lens _pSource (\s a -> s { _pSource = a })
-
-instance FromXML Parameter where
-    parseXML x = Parameter
-        <$> x .@? "AllowedValues"
-        <*> x .@? "ApplyMethod"
-        <*> x .@? "ApplyType"
-        <*> x .@? "DataType"
-        <*> x .@? "Description"
-        <*> x .@? "IsModifiable"
-        <*> x .@? "MinimumEngineVersion"
-        <*> x .@? "ParameterName"
-        <*> x .@? "ParameterValue"
-        <*> x .@? "Source"
-
-instance ToQuery Parameter where
-    toQuery Parameter{..} = mconcat
-        [ "AllowedValues"        =? _pAllowedValues
-        , "ApplyMethod"          =? _pApplyMethod
-        , "ApplyType"            =? _pApplyType
-        , "DataType"             =? _pDataType
-        , "Description"          =? _pDescription
-        , "IsModifiable"         =? _pIsModifiable
-        , "MinimumEngineVersion" =? _pMinimumEngineVersion
-        , "ParameterName"        =? _pParameterName
-        , "ParameterValue"       =? _pParameterValue
-        , "Source"               =? _pSource
-        ]
-
-data OptionGroupOptionSetting = OptionGroupOptionSetting
-    { _ogosAllowedValues      :: Maybe Text
-    , _ogosApplyType          :: Maybe Text
-    , _ogosDefaultValue       :: Maybe Text
-    , _ogosIsModifiable       :: Maybe Bool
-    , _ogosSettingDescription :: Maybe Text
-    , _ogosSettingName        :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'OptionGroupOptionSetting' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ogosAllowedValues' @::@ 'Maybe' 'Text'
---
--- * 'ogosApplyType' @::@ 'Maybe' 'Text'
---
--- * 'ogosDefaultValue' @::@ 'Maybe' 'Text'
---
--- * 'ogosIsModifiable' @::@ 'Maybe' 'Bool'
---
--- * 'ogosSettingDescription' @::@ 'Maybe' 'Text'
---
--- * 'ogosSettingName' @::@ 'Maybe' 'Text'
---
-optionGroupOptionSetting :: OptionGroupOptionSetting
-optionGroupOptionSetting = OptionGroupOptionSetting
-    { _ogosSettingName        = Nothing
-    , _ogosSettingDescription = Nothing
-    , _ogosDefaultValue       = Nothing
-    , _ogosApplyType          = Nothing
-    , _ogosAllowedValues      = Nothing
-    , _ogosIsModifiable       = Nothing
-    }
-
--- | Indicates the acceptable values for the option group option.
-ogosAllowedValues :: Lens' OptionGroupOptionSetting (Maybe Text)
-ogosAllowedValues =
-    lens _ogosAllowedValues (\s a -> s { _ogosAllowedValues = a })
-
--- | The DB engine specific parameter type for the option group option.
-ogosApplyType :: Lens' OptionGroupOptionSetting (Maybe Text)
-ogosApplyType = lens _ogosApplyType (\s a -> s { _ogosApplyType = a })
-
--- | The default value for the option group option.
-ogosDefaultValue :: Lens' OptionGroupOptionSetting (Maybe Text)
-ogosDefaultValue = lens _ogosDefaultValue (\s a -> s { _ogosDefaultValue = a })
-
--- | Boolean value where true indicates that this option group option can be
--- changed from the default value.
-ogosIsModifiable :: Lens' OptionGroupOptionSetting (Maybe Bool)
-ogosIsModifiable = lens _ogosIsModifiable (\s a -> s { _ogosIsModifiable = a })
-
--- | The description of the option group option.
-ogosSettingDescription :: Lens' OptionGroupOptionSetting (Maybe Text)
-ogosSettingDescription =
-    lens _ogosSettingDescription (\s a -> s { _ogosSettingDescription = a })
-
--- | The name of the option group option.
-ogosSettingName :: Lens' OptionGroupOptionSetting (Maybe Text)
-ogosSettingName = lens _ogosSettingName (\s a -> s { _ogosSettingName = a })
-
-instance FromXML OptionGroupOptionSetting where
-    parseXML x = OptionGroupOptionSetting
-        <$> x .@? "AllowedValues"
-        <*> x .@? "ApplyType"
-        <*> x .@? "DefaultValue"
-        <*> x .@? "IsModifiable"
-        <*> x .@? "SettingDescription"
-        <*> x .@? "SettingName"
-
-instance ToQuery OptionGroupOptionSetting where
-    toQuery OptionGroupOptionSetting{..} = mconcat
-        [ "AllowedValues"      =? _ogosAllowedValues
-        , "ApplyType"          =? _ogosApplyType
-        , "DefaultValue"       =? _ogosDefaultValue
-        , "IsModifiable"       =? _ogosIsModifiable
-        , "SettingDescription" =? _ogosSettingDescription
-        , "SettingName"        =? _ogosSettingName
-        ]
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.Types
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.RDS.Types
+    (
+    -- * Service
+      RDS
+
+    -- * Errors
+    , _CertificateNotFoundFault
+    , _ReservedDBInstanceQuotaExceededFault
+    , _DBClusterSnapshotAlreadyExistsFault
+    , _AuthorizationQuotaExceededFault
+    , _SourceNotFoundFault
+    , _InvalidDBParameterGroupStateFault
+    , _DBParameterGroupAlreadyExistsFault
+    , _PointInTimeRestoreNotEnabledFault
+    , _DBParameterGroupQuotaExceededFault
+    , _ProvisionedIOPSNotAvailableInAZFault
+    , _AuthorizationAlreadyExistsFault
+    , _InsufficientDBClusterCapacityFault
+    , _ReservedDBInstanceAlreadyExistsFault
+    , _SubscriptionCategoryNotFoundFault
+    , _DBSubnetQuotaExceededFault
+    , _SubscriptionNotFoundFault
+    , _InvalidSubnet
+    , _DBClusterNotFoundFault
+    , _OptionGroupNotFoundFault
+    , _DBLogFileNotFoundFault
+    , _OptionGroupAlreadyExistsFault
+    , _DBClusterAlreadyExistsFault
+    , _StorageTypeNotSupportedFault
+    , _DBSecurityGroupQuotaExceededFault
+    , _DBSnapshotNotFoundFault
+    , _InvalidEventSubscriptionStateFault
+    , _KMSKeyNotAccessibleFault
+    , _OptionGroupQuotaExceededFault
+    , _DBSecurityGroupAlreadyExistsFault
+    , _SnapshotQuotaExceededFault
+    , _SNSTopicARNNotFoundFault
+    , _DBClusterQuotaExceededFault
+    , _DBClusterParameterGroupNotFoundFault
+    , _DBSubnetGroupAlreadyExistsFault
+    , _InstanceQuotaExceededFault
+    , _SNSNoAuthorizationFault
+    , _DBSecurityGroupNotFoundFault
+    , _DBSecurityGroupNotSupportedFault
+    , _DomainNotFoundFault
+    , _DBClusterSnapshotNotFoundFault
+    , _ReservedDBInstancesOfferingNotFoundFault
+    , _InvalidDBSubnetGroupFault
+    , _InvalidDBSubnetStateFault
+    , _DBParameterGroupNotFoundFault
+    , _SNSInvalidTopicFault
+    , _SubscriptionAlreadyExistFault
+    , _InvalidDBClusterSnapshotStateFault
+    , _InsufficientDBInstanceCapacityFault
+    , _InvalidVPCNetworkStateFault
+    , _AuthorizationNotFoundFault
+    , _ReservedDBInstanceNotFoundFault
+    , _DBSubnetGroupQuotaExceededFault
+    , _DBSubnetGroupNotAllowedFault
+    , _EventSubscriptionQuotaExceededFault
+    , _InvalidOptionGroupStateFault
+    , _InvalidDBClusterStateFault
+    , _InsufficientStorageClusterCapacityFault
+    , _DBInstanceAlreadyExistsFault
+    , _ResourceNotFoundFault
+    , _DBUpgradeDependencyFailureFault
+    , _InvalidDBSecurityGroupStateFault
+    , _InsufficientDomainCapacityFault
+    , _DBSubnetGroupNotFoundFault
+    , _InvalidRestoreFault
+    , _InvalidDBInstanceStateFault
+    , _InvalidDBSnapshotStateFault
+    , _InvalidDBSubnetGroupStateFault
+    , _StorageQuotaExceededFault
+    , _DBSnapshotAlreadyExistsFault
+    , _DBInstanceNotFoundFault
+    , _SubnetAlreadyInUse
+    , _DBSubnetGroupDoesNotCoverEnoughAZs
+
+    -- * ApplyMethod
+    , ApplyMethod (..)
+
+    -- * SourceType
+    , SourceType (..)
+
+    -- * AccountQuota
+    , AccountQuota
+    , accountQuota
+    , aqMax
+    , aqUsed
+    , aqAccountQuotaName
+
+    -- * AvailabilityZone
+    , AvailabilityZone
+    , availabilityZone
+    , azName
+
+    -- * Certificate
+    , Certificate
+    , certificate
+    , cCertificateType
+    , cValidTill
+    , cCertificateIdentifier
+    , cThumbprint
+    , cValidFrom
+
+    -- * CharacterSet
+    , CharacterSet
+    , characterSet
+    , csCharacterSetName
+    , csCharacterSetDescription
+
+    -- * DBCluster
+    , DBCluster
+    , dbCluster
+    , dcEngineVersion
+    , dcStatus
+    , dcDBClusterIdentifier
+    , dcDBClusterMembers
+    , dcDBClusterParameterGroup
+    , dcMasterUsername
+    , dcEarliestRestorableTime
+    , dcEngine
+    , dcLatestRestorableTime
+    , dcPreferredMaintenanceWindow
+    , dcCharacterSetName
+    , dcAvailabilityZones
+    , dcPreferredBackupWindow
+    , dcVPCSecurityGroups
+    , dcBackupRetentionPeriod
+    , dcDatabaseName
+    , dcDBSubnetGroup
+    , dcAllocatedStorage
+    , dcEndpoint
+    , dcPercentProgress
+    , dcPort
+    , dcDBClusterOptionGroupMemberships
+
+    -- * DBClusterMember
+    , DBClusterMember
+    , dbClusterMember
+    , dcmDBInstanceIdentifier
+    , dcmIsClusterWriter
+    , dcmDBClusterParameterGroupStatus
+
+    -- * DBClusterOptionGroupStatus
+    , DBClusterOptionGroupStatus
+    , dbClusterOptionGroupStatus
+    , dcogsStatus
+    , dcogsDBClusterOptionGroupName
+
+    -- * DBClusterParameterGroup
+    , DBClusterParameterGroup
+    , dbClusterParameterGroup
+    , dcpgDBParameterGroupFamily
+    , dcpgDBClusterParameterGroupName
+    , dcpgDescription
+
+    -- * DBClusterParameterGroupNameMessage
+    , DBClusterParameterGroupNameMessage
+    , dbClusterParameterGroupNameMessage
+    , dcpgnmDBClusterParameterGroupName
+
+    -- * DBClusterSnapshot
+    , DBClusterSnapshot
+    , dbClusterSnapshot
+    , dcsEngineVersion
+    , dcsStatus
+    , dcsDBClusterIdentifier
+    , dcsMasterUsername
+    , dcsVPCId
+    , dcsDBClusterSnapshotIdentifier
+    , dcsEngine
+    , dcsLicenseModel
+    , dcsSnapshotType
+    , dcsAvailabilityZones
+    , dcsSnapshotCreateTime
+    , dcsAllocatedStorage
+    , dcsClusterCreateTime
+    , dcsPercentProgress
+    , dcsPort
+
+    -- * DBEngineVersion
+    , DBEngineVersion
+    , dbEngineVersion
+    , devDBEngineVersionDescription
+    , devEngineVersion
+    , devDefaultCharacterSet
+    , devSupportedCharacterSets
+    , devEngine
+    , devDBParameterGroupFamily
+    , devDBEngineDescription
+
+    -- * DBInstance
+    , DBInstance
+    , dbInstance
+    , diDBSecurityGroups
+    , diEngineVersion
+    , diStorageEncrypted
+    , diDBClusterIdentifier
+    , diAutoMinorVersionUpgrade
+    , diMasterUsername
+    , diPubliclyAccessible
+    , diReadReplicaDBInstanceIdentifiers
+    , diIOPS
+    , diInstanceCreateTime
+    , diReadReplicaSourceDBInstanceIdentifier
+    , diEngine
+    , diLatestRestorableTime
+    , diDBInstanceClass
+    , diLicenseModel
+    , diPreferredMaintenanceWindow
+    , diCharacterSetName
+    , diDBInstanceIdentifier
+    , diCACertificateIdentifier
+    , diPreferredBackupWindow
+    , diAvailabilityZone
+    , diVPCSecurityGroups
+    , diBackupRetentionPeriod
+    , diKMSKeyId
+    , diDBSubnetGroup
+    , diMultiAZ
+    , diSecondaryAvailabilityZone
+    , diOptionGroupMemberships
+    , diDBiResourceId
+    , diAllocatedStorage
+    , diEndpoint
+    , diDBParameterGroups
+    , diTDECredentialARN
+    , diCopyTagsToSnapshot
+    , diDBInstanceStatus
+    , diDBInstancePort
+    , diPendingModifiedValues
+    , diStatusInfos
+    , diDBName
+    , diDomainMemberships
+    , diStorageType
+
+    -- * DBInstanceStatusInfo
+    , DBInstanceStatusInfo
+    , dbInstanceStatusInfo
+    , disiStatus
+    , disiNormal
+    , disiStatusType
+    , disiMessage
+
+    -- * DBParameterGroup
+    , DBParameterGroup
+    , dbParameterGroup
+    , dpgDBParameterGroupFamily
+    , dpgDBParameterGroupName
+    , dpgDescription
+
+    -- * DBParameterGroupNameMessage
+    , DBParameterGroupNameMessage
+    , dbParameterGroupNameMessage
+    , dpgnmDBParameterGroupName
+
+    -- * DBParameterGroupStatus
+    , DBParameterGroupStatus
+    , dbParameterGroupStatus
+    , dpgsDBParameterGroupName
+    , dpgsParameterApplyStatus
+
+    -- * DBSecurityGroup
+    , DBSecurityGroup
+    , dbSecurityGroup
+    , dsgVPCId
+    , dsgOwnerId
+    , dsgIPRanges
+    , dsgDBSecurityGroupName
+    , dsgEC2SecurityGroups
+    , dsgDBSecurityGroupDescription
+
+    -- * DBSecurityGroupMembership
+    , DBSecurityGroupMembership
+    , dbSecurityGroupMembership
+    , dsgmStatus
+    , dsgmDBSecurityGroupName
+
+    -- * DBSnapshot
+    , DBSnapshot
+    , dbSnapshot
+    , dsEngineVersion
+    , dsStatus
+    , dsMasterUsername
+    , dsSourceRegion
+    , dsIOPS
+    , dsInstanceCreateTime
+    , dsVPCId
+    , dsEngine
+    , dsEncrypted
+    , dsDBSnapshotIdentifier
+    , dsLicenseModel
+    , dsSnapshotType
+    , dsDBInstanceIdentifier
+    , dsSourceDBSnapshotIdentifier
+    , dsAvailabilityZone
+    , dsKMSKeyId
+    , dsSnapshotCreateTime
+    , dsAllocatedStorage
+    , dsTDECredentialARN
+    , dsOptionGroupName
+    , dsPercentProgress
+    , dsPort
+    , dsStorageType
+
+    -- * DBSubnetGroup
+    , DBSubnetGroup
+    , dbSubnetGroup
+    , dbsgDBSubnetGroupName
+    , dbsgVPCId
+    , dbsgSubnets
+    , dbsgDBSubnetGroupDescription
+    , dbsgSubnetGroupStatus
+
+    -- * DescribeDBLogFilesDetails
+    , DescribeDBLogFilesDetails
+    , describeDBLogFilesDetails
+    , ddlfdLastWritten
+    , ddlfdSize
+    , ddlfdLogFileName
+
+    -- * DomainMembership
+    , DomainMembership
+    , domainMembership
+    , dmStatus
+    , dmDomain
+    , dmConnectivity
+
+    -- * EC2SecurityGroup
+    , EC2SecurityGroup
+    , ec2SecurityGroup
+    , esgStatus
+    , esgEC2SecurityGroupOwnerId
+    , esgEC2SecurityGroupName
+    , esgEC2SecurityGroupId
+
+    -- * Endpoint
+    , Endpoint
+    , endpoint
+    , eAddress
+    , ePort
+
+    -- * EngineDefaults
+    , EngineDefaults
+    , engineDefaults
+    , edDBParameterGroupFamily
+    , edParameters
+    , edMarker
+
+    -- * Event
+    , Event
+    , event
+    , eSourceType
+    , eSourceIdentifier
+    , eDate
+    , eEventCategories
+    , eMessage
+
+    -- * EventCategoriesMap
+    , EventCategoriesMap
+    , eventCategoriesMap
+    , ecmSourceType
+    , ecmEventCategories
+
+    -- * EventSubscription
+    , EventSubscription
+    , eventSubscription
+    , esCustomerAWSId
+    , esStatus
+    , esCustSubscriptionId
+    , esSNSTopicARN
+    , esEnabled
+    , esSourceType
+    , esSubscriptionCreationTime
+    , esEventCategoriesList
+    , esSourceIdsList
+
+    -- * Filter
+    , Filter
+    , filter'
+    , fName
+    , fValues
+
+    -- * IPRange
+    , IPRange
+    , ipRange
+    , irStatus
+    , irCIdRIP
+
+    -- * Option
+    , Option
+    , option
+    , oOptionName
+    , oPermanent
+    , oPersistent
+    , oOptionDescription
+    , oOptionSettings
+    , oVPCSecurityGroupMemberships
+    , oDBSecurityGroupMemberships
+    , oPort
+
+    -- * OptionConfiguration
+    , OptionConfiguration
+    , optionConfiguration
+    , ocOptionSettings
+    , ocVPCSecurityGroupMemberships
+    , ocDBSecurityGroupMemberships
+    , ocPort
+    , ocOptionName
+
+    -- * OptionGroup
+    , OptionGroup
+    , optionGroup
+    , ogOptionGroupDescription
+    , ogVPCId
+    , ogAllowsVPCAndNonVPCInstanceMemberships
+    , ogEngineName
+    , ogMajorEngineVersion
+    , ogOptions
+    , ogOptionGroupName
+
+    -- * OptionGroupMembership
+    , OptionGroupMembership
+    , optionGroupMembership
+    , ogmStatus
+    , ogmOptionGroupName
+
+    -- * OptionGroupOption
+    , OptionGroupOption
+    , optionGroupOption
+    , ogoMinimumRequiredMinorEngineVersion
+    , ogoPermanent
+    , ogoPersistent
+    , ogoEngineName
+    , ogoName
+    , ogoMajorEngineVersion
+    , ogoDefaultPort
+    , ogoOptionGroupOptionSettings
+    , ogoPortRequired
+    , ogoOptionsDependedOn
+    , ogoDescription
+
+    -- * OptionGroupOptionSetting
+    , OptionGroupOptionSetting
+    , optionGroupOptionSetting
+    , ogosApplyType
+    , ogosSettingName
+    , ogosDefaultValue
+    , ogosIsModifiable
+    , ogosAllowedValues
+    , ogosSettingDescription
+
+    -- * OptionSetting
+    , OptionSetting
+    , optionSetting
+    , osIsCollection
+    , osApplyType
+    , osValue
+    , osName
+    , osDefaultValue
+    , osIsModifiable
+    , osAllowedValues
+    , osDataType
+    , osDescription
+
+    -- * OrderableDBInstanceOption
+    , OrderableDBInstanceOption
+    , orderableDBInstanceOption
+    , odioEngineVersion
+    , odioMultiAZCapable
+    , odioEngine
+    , odioSupportsIOPS
+    , odioDBInstanceClass
+    , odioLicenseModel
+    , odioAvailabilityZones
+    , odioReadReplicaCapable
+    , odioSupportsStorageEncryption
+    , odioVPC
+    , odioStorageType
+
+    -- * Parameter
+    , Parameter
+    , parameter
+    , pApplyType
+    , pParameterValue
+    , pApplyMethod
+    , pMinimumEngineVersion
+    , pSource
+    , pIsModifiable
+    , pAllowedValues
+    , pDataType
+    , pParameterName
+    , pDescription
+
+    -- * PendingMaintenanceAction
+    , PendingMaintenanceAction
+    , pendingMaintenanceAction
+    , pmaAutoAppliedAfterDate
+    , pmaAction
+    , pmaOptInStatus
+    , pmaDescription
+    , pmaCurrentApplyDate
+    , pmaForcedApplyDate
+
+    -- * PendingModifiedValues
+    , PendingModifiedValues
+    , pendingModifiedValues
+    , pmvEngineVersion
+    , pmvMasterUserPassword
+    , pmvIOPS
+    , pmvDBInstanceClass
+    , pmvDBInstanceIdentifier
+    , pmvCACertificateIdentifier
+    , pmvBackupRetentionPeriod
+    , pmvMultiAZ
+    , pmvAllocatedStorage
+    , pmvPort
+    , pmvStorageType
+
+    -- * RecurringCharge
+    , RecurringCharge
+    , recurringCharge
+    , rcRecurringChargeFrequency
+    , rcRecurringChargeAmount
+
+    -- * ReservedDBInstance
+    , ReservedDBInstance
+    , reservedDBInstance
+    , rdiDBInstanceCount
+    , rdiState
+    , rdiCurrencyCode
+    , rdiProductDescription
+    , rdiStartTime
+    , rdiReservedDBInstanceId
+    , rdiDBInstanceClass
+    , rdiMultiAZ
+    , rdiReservedDBInstancesOfferingId
+    , rdiOfferingType
+    , rdiUsagePrice
+    , rdiRecurringCharges
+    , rdiFixedPrice
+    , rdiDuration
+
+    -- * ReservedDBInstancesOffering
+    , ReservedDBInstancesOffering
+    , reservedDBInstancesOffering
+    , rdioCurrencyCode
+    , rdioProductDescription
+    , rdioDBInstanceClass
+    , rdioMultiAZ
+    , rdioReservedDBInstancesOfferingId
+    , rdioOfferingType
+    , rdioUsagePrice
+    , rdioRecurringCharges
+    , rdioFixedPrice
+    , rdioDuration
+
+    -- * ResourcePendingMaintenanceActions
+    , ResourcePendingMaintenanceActions
+    , resourcePendingMaintenanceActions
+    , rpmaPendingMaintenanceActionDetails
+    , rpmaResourceIdentifier
+
+    -- * Subnet
+    , Subnet
+    , subnet
+    , sSubnetStatus
+    , sSubnetIdentifier
+    , sSubnetAvailabilityZone
+
+    -- * Tag
+    , Tag
+    , tag
+    , tagValue
+    , tagKey
+
+    -- * VPCSecurityGroupMembership
+    , VPCSecurityGroupMembership
+    , vpcSecurityGroupMembership
+    , vsgmStatus
+    , vsgmVPCSecurityGroupId
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types.Product
+import           Network.AWS.RDS.Types.Sum
+import           Network.AWS.Sign.V4
+
+-- | Version @2014-10-31@ of the Amazon Relational Database Service SDK.
+data RDS
+
+instance AWSService RDS where
+    type Sg RDS = V4
+    service = const svc
+      where
+        svc =
+            Service
+            { _svcAbbrev = "RDS"
+            , _svcPrefix = "rds"
+            , _svcVersion = "2014-10-31"
+            , _svcEndpoint = defaultEndpoint svc
+            , _svcTimeout = Just 70
+            , _svcStatus = statusSuccess
+            , _svcError = parseXMLError
+            , _svcRetry = retry
+            }
+        retry =
+            Exponential
+            { _retryBase = 5.0e-2
+            , _retryGrowth = 2
+            , _retryAttempts = 5
+            , _retryCheck = check
+            }
+        check e
+          | has (hasCode "ThrottlingException" . hasStatus 400) e =
+              Just "throttling_exception"
+          | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+          | has (hasStatus 503) e = Just "service_unavailable"
+          | has (hasStatus 500) e = Just "general_server_error"
+          | has (hasStatus 509) e = Just "limit_exceeded"
+          | otherwise = Nothing
+
+-- | /CertificateIdentifier/ does not refer to an existing certificate.
+_CertificateNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_CertificateNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "CertificateNotFound"
+
+-- | Request would exceed the user\'s DB Instance quota.
+_ReservedDBInstanceQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_ReservedDBInstanceQuotaExceededFault =
+    _ServiceError . hasStatus 400 . hasCode "ReservedDBInstanceQuotaExceeded"
+
+-- | User already has a DB cluster snapshot with the given identifier.
+_DBClusterSnapshotAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBClusterSnapshotAlreadyExistsFault =
+    _ServiceError .
+    hasStatus 400 . hasCode "DBClusterSnapshotAlreadyExistsFault"
+
+-- | DB security group authorization quota has been reached.
+_AuthorizationQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_AuthorizationQuotaExceededFault =
+    _ServiceError . hasStatus 400 . hasCode "AuthorizationQuotaExceeded"
+
+-- | The requested source could not be found.
+_SourceNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_SourceNotFoundFault = _ServiceError . hasStatus 404 . hasCode "SourceNotFound"
+
+-- | The DB parameter group cannot be deleted because it is in use.
+_InvalidDBParameterGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidDBParameterGroupStateFault =
+    _ServiceError . hasStatus 400 . hasCode "InvalidDBParameterGroupState"
+
+-- | A DB parameter group with the same name exists.
+_DBParameterGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBParameterGroupAlreadyExistsFault =
+    _ServiceError . hasStatus 400 . hasCode "DBParameterGroupAlreadyExists"
+
+-- | /SourceDBInstanceIdentifier/ refers to a DB instance with
+-- /BackupRetentionPeriod/ equal to 0.
+_PointInTimeRestoreNotEnabledFault :: AsError a => Getting (First ServiceError) a ServiceError
+_PointInTimeRestoreNotEnabledFault =
+    _ServiceError . hasStatus 400 . hasCode "PointInTimeRestoreNotEnabled"
+
+-- | Request would result in user exceeding the allowed number of DB
+-- parameter groups.
+_DBParameterGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBParameterGroupQuotaExceededFault =
+    _ServiceError . hasStatus 400 . hasCode "DBParameterGroupQuotaExceeded"
+
+-- | Provisioned IOPS not available in the specified Availability Zone.
+_ProvisionedIOPSNotAvailableInAZFault :: AsError a => Getting (First ServiceError) a ServiceError
+_ProvisionedIOPSNotAvailableInAZFault =
+    _ServiceError .
+    hasStatus 400 . hasCode "ProvisionedIopsNotAvailableInAZFault"
+
+-- | The specified CIDRIP or EC2 security group is already authorized for the
+-- specified DB security group.
+_AuthorizationAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
+_AuthorizationAlreadyExistsFault =
+    _ServiceError . hasStatus 400 . hasCode "AuthorizationAlreadyExists"
+
+-- | The DB cluster does not have enough capacity for the current operation.
+_InsufficientDBClusterCapacityFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InsufficientDBClusterCapacityFault =
+    _ServiceError .
+    hasStatus 403 . hasCode "InsufficientDBClusterCapacityFault"
+
+-- | User already has a reservation with the given identifier.
+_ReservedDBInstanceAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
+_ReservedDBInstanceAlreadyExistsFault =
+    _ServiceError . hasStatus 404 . hasCode "ReservedDBInstanceAlreadyExists"
+
+-- | The supplied category does not exist.
+_SubscriptionCategoryNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_SubscriptionCategoryNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "SubscriptionCategoryNotFound"
+
+-- | Request would result in user exceeding the allowed number of subnets in
+-- a DB subnet groups.
+_DBSubnetQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBSubnetQuotaExceededFault =
+    _ServiceError . hasStatus 400 . hasCode "DBSubnetQuotaExceededFault"
+
+-- | The subscription name does not exist.
+_SubscriptionNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_SubscriptionNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "SubscriptionNotFound"
+
+-- | The requested subnet is invalid, or multiple subnets were requested that
+-- are not all in a common VPC.
+_InvalidSubnet :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidSubnet = _ServiceError . hasStatus 400 . hasCode "InvalidSubnet"
+
+-- | /DBClusterIdentifier/ does not refer to an existing DB cluster.
+_DBClusterNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBClusterNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "DBClusterNotFoundFault"
+
+-- | The specified option group could not be found.
+_OptionGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_OptionGroupNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "OptionGroupNotFoundFault"
+
+-- | /LogFileName/ does not refer to an existing DB log file.
+_DBLogFileNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBLogFileNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "DBLogFileNotFoundFault"
+
+-- | The option group you are trying to create already exists.
+_OptionGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
+_OptionGroupAlreadyExistsFault =
+    _ServiceError . hasStatus 400 . hasCode "OptionGroupAlreadyExistsFault"
+
+-- | User already has a DB cluster with the given identifier.
+_DBClusterAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBClusterAlreadyExistsFault =
+    _ServiceError . hasStatus 400 . hasCode "DBClusterAlreadyExistsFault"
+
+-- | /StorageType/ specified cannot be associated with the DB Instance.
+_StorageTypeNotSupportedFault :: AsError a => Getting (First ServiceError) a ServiceError
+_StorageTypeNotSupportedFault =
+    _ServiceError . hasStatus 400 . hasCode "StorageTypeNotSupported"
+
+-- | Request would result in user exceeding the allowed number of DB security
+-- groups.
+_DBSecurityGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBSecurityGroupQuotaExceededFault =
+    _ServiceError . hasStatus 400 . hasCode "QuotaExceeded.DBSecurityGroup"
+
+-- | /DBSnapshotIdentifier/ does not refer to an existing DB snapshot.
+_DBSnapshotNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBSnapshotNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "DBSnapshotNotFound"
+
+-- | This error can occur if someone else is modifying a subscription. You
+-- should retry the action.
+_InvalidEventSubscriptionStateFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidEventSubscriptionStateFault =
+    _ServiceError . hasStatus 400 . hasCode "InvalidEventSubscriptionState"
+
+-- | Error accessing KMS key.
+_KMSKeyNotAccessibleFault :: AsError a => Getting (First ServiceError) a ServiceError
+_KMSKeyNotAccessibleFault =
+    _ServiceError . hasStatus 400 . hasCode "KMSKeyNotAccessibleFault"
+
+-- | The quota of 20 option groups was exceeded for this AWS account.
+_OptionGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_OptionGroupQuotaExceededFault =
+    _ServiceError . hasStatus 400 . hasCode "OptionGroupQuotaExceededFault"
+
+-- | A DB security group with the name specified in /DBSecurityGroupName/
+-- already exists.
+_DBSecurityGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBSecurityGroupAlreadyExistsFault =
+    _ServiceError . hasStatus 400 . hasCode "DBSecurityGroupAlreadyExists"
+
+-- | Request would result in user exceeding the allowed number of DB
+-- snapshots.
+_SnapshotQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_SnapshotQuotaExceededFault =
+    _ServiceError . hasStatus 400 . hasCode "SnapshotQuotaExceeded"
+
+-- | The SNS topic ARN does not exist.
+_SNSTopicARNNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_SNSTopicARNNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "SNSTopicArnNotFound"
+
+-- | User attempted to create a new DB cluster and the user has already
+-- reached the maximum allowed DB cluster quota.
+_DBClusterQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBClusterQuotaExceededFault =
+    _ServiceError . hasStatus 403 . hasCode "DBClusterQuotaExceededFault"
+
+-- | /DBClusterParameterGroupName/ does not refer to an existing DB Cluster
+-- parameter group.
+_DBClusterParameterGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBClusterParameterGroupNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "DBClusterParameterGroupNotFound"
+
+-- | /DBSubnetGroupName/ is already used by an existing DB subnet group.
+_DBSubnetGroupAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBSubnetGroupAlreadyExistsFault =
+    _ServiceError . hasStatus 400 . hasCode "DBSubnetGroupAlreadyExists"
+
+-- | Request would result in user exceeding the allowed number of DB
+-- instances.
+_InstanceQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InstanceQuotaExceededFault =
+    _ServiceError . hasStatus 400 . hasCode "InstanceQuotaExceeded"
+
+-- | You do not have permission to publish to the SNS topic ARN.
+_SNSNoAuthorizationFault :: AsError a => Getting (First ServiceError) a ServiceError
+_SNSNoAuthorizationFault =
+    _ServiceError . hasStatus 400 . hasCode "SNSNoAuthorization"
+
+-- | /DBSecurityGroupName/ does not refer to an existing DB security group.
+_DBSecurityGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBSecurityGroupNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "DBSecurityGroupNotFound"
+
+-- | A DB security group is not allowed for this action.
+_DBSecurityGroupNotSupportedFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBSecurityGroupNotSupportedFault =
+    _ServiceError . hasStatus 400 . hasCode "DBSecurityGroupNotSupported"
+
+-- | /Domain/ does not refer to an existing Active Directory Domain.
+_DomainNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DomainNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "DomainNotFoundFault"
+
+-- | /DBClusterSnapshotIdentifier/ does not refer to an existing DB cluster
+-- snapshot.
+_DBClusterSnapshotNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBClusterSnapshotNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "DBClusterSnapshotNotFoundFault"
+
+-- | Specified offering does not exist.
+_ReservedDBInstancesOfferingNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_ReservedDBInstancesOfferingNotFoundFault =
+    _ServiceError .
+    hasStatus 404 . hasCode "ReservedDBInstancesOfferingNotFound"
+
+-- | Indicates the DBSubnetGroup does not belong to the same VPC as that of
+-- an existing cross region read replica of the same source instance.
+_InvalidDBSubnetGroupFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidDBSubnetGroupFault =
+    _ServiceError . hasStatus 400 . hasCode "InvalidDBSubnetGroupFault"
+
+-- | The DB subnet is not in the /available/ state.
+_InvalidDBSubnetStateFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidDBSubnetStateFault =
+    _ServiceError . hasStatus 400 . hasCode "InvalidDBSubnetStateFault"
+
+-- | /DBParameterGroupName/ does not refer to an existing DB parameter group.
+_DBParameterGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBParameterGroupNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "DBParameterGroupNotFound"
+
+-- | SNS has responded that there is a problem with the SND topic specified.
+_SNSInvalidTopicFault :: AsError a => Getting (First ServiceError) a ServiceError
+_SNSInvalidTopicFault =
+    _ServiceError . hasStatus 400 . hasCode "SNSInvalidTopic"
+
+-- | The supplied subscription name already exists.
+_SubscriptionAlreadyExistFault :: AsError a => Getting (First ServiceError) a ServiceError
+_SubscriptionAlreadyExistFault =
+    _ServiceError . hasStatus 400 . hasCode "SubscriptionAlreadyExist"
+
+-- | The supplied value is not a valid DB cluster snapshot state.
+_InvalidDBClusterSnapshotStateFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidDBClusterSnapshotStateFault =
+    _ServiceError .
+    hasStatus 400 . hasCode "InvalidDBClusterSnapshotStateFault"
+
+-- | Specified DB instance class is not available in the specified
+-- Availability Zone.
+_InsufficientDBInstanceCapacityFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InsufficientDBInstanceCapacityFault =
+    _ServiceError . hasStatus 400 . hasCode "InsufficientDBInstanceCapacity"
+
+-- | DB subnet group does not cover all Availability Zones after it is
+-- created because users\' change.
+_InvalidVPCNetworkStateFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidVPCNetworkStateFault =
+    _ServiceError . hasStatus 400 . hasCode "InvalidVPCNetworkStateFault"
+
+-- | Specified CIDRIP or EC2 security group is not authorized for the
+-- specified DB security group.
+--
+-- RDS may not also be authorized via IAM to perform necessary actions on
+-- your behalf.
+_AuthorizationNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_AuthorizationNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "AuthorizationNotFound"
+
+-- | The specified reserved DB Instance not found.
+_ReservedDBInstanceNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_ReservedDBInstanceNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "ReservedDBInstanceNotFound"
+
+-- | Request would result in user exceeding the allowed number of DB subnet
+-- groups.
+_DBSubnetGroupQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBSubnetGroupQuotaExceededFault =
+    _ServiceError . hasStatus 400 . hasCode "DBSubnetGroupQuotaExceeded"
+
+-- | Indicates that the DBSubnetGroup should not be specified while creating
+-- read replicas that lie in the same region as the source instance.
+_DBSubnetGroupNotAllowedFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBSubnetGroupNotAllowedFault =
+    _ServiceError . hasStatus 400 . hasCode "DBSubnetGroupNotAllowedFault"
+
+-- | You have reached the maximum number of event subscriptions.
+_EventSubscriptionQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_EventSubscriptionQuotaExceededFault =
+    _ServiceError . hasStatus 400 . hasCode "EventSubscriptionQuotaExceeded"
+
+-- | The option group is not in the /available/ state.
+_InvalidOptionGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidOptionGroupStateFault =
+    _ServiceError . hasStatus 400 . hasCode "InvalidOptionGroupStateFault"
+
+-- | The supplied value is not a valid DB cluster state.
+_InvalidDBClusterStateFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidDBClusterStateFault =
+    _ServiceError . hasStatus 400 . hasCode "InvalidDBClusterStateFault"
+
+-- | There is insufficient storage available for the current action. You may
+-- be able to resolve this error by updating your subnet group to use
+-- different Availability Zones that have more storage available.
+_InsufficientStorageClusterCapacityFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InsufficientStorageClusterCapacityFault =
+    _ServiceError .
+    hasStatus 400 . hasCode "InsufficientStorageClusterCapacity"
+
+-- | User already has a DB instance with the given identifier.
+_DBInstanceAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBInstanceAlreadyExistsFault =
+    _ServiceError . hasStatus 400 . hasCode "DBInstanceAlreadyExists"
+
+-- | The specified resource ID was not found.
+_ResourceNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "ResourceNotFoundFault"
+
+-- | The DB upgrade failed because a resource the DB depends on could not be
+-- modified.
+_DBUpgradeDependencyFailureFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBUpgradeDependencyFailureFault =
+    _ServiceError . hasStatus 400 . hasCode "DBUpgradeDependencyFailure"
+
+-- | The state of the DB security group does not allow deletion.
+_InvalidDBSecurityGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidDBSecurityGroupStateFault =
+    _ServiceError . hasStatus 400 . hasCode "InvalidDBSecurityGroupState"
+
+-- | Requested Active Directory Domain has reached maximum number of
+-- instances.
+_InsufficientDomainCapacityFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InsufficientDomainCapacityFault =
+    _ServiceError . hasStatus 400 . hasCode "InsufficientDomainCapacityFault"
+
+-- | /DBSubnetGroupName/ does not refer to an existing DB subnet group.
+_DBSubnetGroupNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBSubnetGroupNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "DBSubnetGroupNotFoundFault"
+
+-- | Cannot restore from vpc backup to non-vpc DB instance.
+_InvalidRestoreFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidRestoreFault =
+    _ServiceError . hasStatus 400 . hasCode "InvalidRestoreFault"
+
+-- | The specified DB instance is not in the /available/ state.
+_InvalidDBInstanceStateFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidDBInstanceStateFault =
+    _ServiceError . hasStatus 400 . hasCode "InvalidDBInstanceState"
+
+-- | The state of the DB snapshot does not allow deletion.
+_InvalidDBSnapshotStateFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidDBSnapshotStateFault =
+    _ServiceError . hasStatus 400 . hasCode "InvalidDBSnapshotState"
+
+-- | The DB subnet group cannot be deleted because it is in use.
+_InvalidDBSubnetGroupStateFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidDBSubnetGroupStateFault =
+    _ServiceError . hasStatus 400 . hasCode "InvalidDBSubnetGroupStateFault"
+
+-- | Request would result in user exceeding the allowed amount of storage
+-- available across all DB instances.
+_StorageQuotaExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_StorageQuotaExceededFault =
+    _ServiceError . hasStatus 400 . hasCode "StorageQuotaExceeded"
+
+-- | /DBSnapshotIdentifier/ is already used by an existing snapshot.
+_DBSnapshotAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBSnapshotAlreadyExistsFault =
+    _ServiceError . hasStatus 400 . hasCode "DBSnapshotAlreadyExists"
+
+-- | /DBInstanceIdentifier/ does not refer to an existing DB instance.
+_DBInstanceNotFoundFault :: AsError a => Getting (First ServiceError) a ServiceError
+_DBInstanceNotFoundFault =
+    _ServiceError . hasStatus 404 . hasCode "DBInstanceNotFound"
+
+-- | The DB subnet is already in use in the Availability Zone.
+_SubnetAlreadyInUse :: AsError a => Getting (First ServiceError) a ServiceError
+_SubnetAlreadyInUse =
+    _ServiceError . hasStatus 400 . hasCode "SubnetAlreadyInUse"
+
+-- | Subnets in the DB subnet group should cover at least two Availability
+-- Zones unless there is only one Availability Zone.
+_DBSubnetGroupDoesNotCoverEnoughAZs :: AsError a => Getting (First ServiceError) a ServiceError
+_DBSubnetGroupDoesNotCoverEnoughAZs =
+    _ServiceError .
+    hasStatus 400 . hasCode "DBSubnetGroupDoesNotCoverEnoughAZs"
diff --git a/gen/Network/AWS/RDS/Types/Product.hs b/gen/Network/AWS/RDS/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/Types/Product.hs
@@ -0,0 +1,4054 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.Types.Product
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.RDS.Types.Product where
+
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.Types.Sum
+
+-- | Describes a quota for an AWS account, for example, the number of DB
+-- instances allowed.
+--
+-- /See:/ 'accountQuota' smart constructor.
+data AccountQuota = AccountQuota'
+    { _aqMax              :: !(Maybe Integer)
+    , _aqUsed             :: !(Maybe Integer)
+    , _aqAccountQuotaName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountQuota' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aqMax'
+--
+-- * 'aqUsed'
+--
+-- * 'aqAccountQuotaName'
+accountQuota
+    :: AccountQuota
+accountQuota =
+    AccountQuota'
+    { _aqMax = Nothing
+    , _aqUsed = Nothing
+    , _aqAccountQuotaName = Nothing
+    }
+
+-- | The maximum allowed value for the quota.
+aqMax :: Lens' AccountQuota (Maybe Integer)
+aqMax = lens _aqMax (\ s a -> s{_aqMax = a});
+
+-- | The amount currently used toward the quota maximum.
+aqUsed :: Lens' AccountQuota (Maybe Integer)
+aqUsed = lens _aqUsed (\ s a -> s{_aqUsed = a});
+
+-- | The name of the Amazon RDS quota for this AWS account.
+aqAccountQuotaName :: Lens' AccountQuota (Maybe Text)
+aqAccountQuotaName = lens _aqAccountQuotaName (\ s a -> s{_aqAccountQuotaName = a});
+
+instance FromXML AccountQuota where
+        parseXML x
+          = AccountQuota' <$>
+              (x .@? "Max") <*> (x .@? "Used") <*>
+                (x .@? "AccountQuotaName")
+
+-- | Contains Availability Zone information.
+--
+-- This data type is used as an element in the following data type:
+--
+-- -   OrderableDBInstanceOption
+--
+-- /See:/ 'availabilityZone' smart constructor.
+newtype AvailabilityZone = AvailabilityZone'
+    { _azName :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AvailabilityZone' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'azName'
+availabilityZone
+    :: AvailabilityZone
+availabilityZone =
+    AvailabilityZone'
+    { _azName = Nothing
+    }
+
+-- | The name of the availability zone.
+azName :: Lens' AvailabilityZone (Maybe Text)
+azName = lens _azName (\ s a -> s{_azName = a});
+
+instance FromXML AvailabilityZone where
+        parseXML x = AvailabilityZone' <$> (x .@? "Name")
+
+-- | A CA certificate for an AWS account.
+--
+-- /See:/ 'certificate' smart constructor.
+data Certificate = Certificate'
+    { _cCertificateType       :: !(Maybe Text)
+    , _cValidTill             :: !(Maybe ISO8601)
+    , _cCertificateIdentifier :: !(Maybe Text)
+    , _cThumbprint            :: !(Maybe Text)
+    , _cValidFrom             :: !(Maybe ISO8601)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Certificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cCertificateType'
+--
+-- * 'cValidTill'
+--
+-- * 'cCertificateIdentifier'
+--
+-- * 'cThumbprint'
+--
+-- * 'cValidFrom'
+certificate
+    :: Certificate
+certificate =
+    Certificate'
+    { _cCertificateType = Nothing
+    , _cValidTill = Nothing
+    , _cCertificateIdentifier = Nothing
+    , _cThumbprint = Nothing
+    , _cValidFrom = Nothing
+    }
+
+-- | The type of the certificate.
+cCertificateType :: Lens' Certificate (Maybe Text)
+cCertificateType = lens _cCertificateType (\ s a -> s{_cCertificateType = a});
+
+-- | The final date that the certificate continues to be valid.
+cValidTill :: Lens' Certificate (Maybe UTCTime)
+cValidTill = lens _cValidTill (\ s a -> s{_cValidTill = a}) . mapping _Time;
+
+-- | The unique key that identifies a certificate.
+cCertificateIdentifier :: Lens' Certificate (Maybe Text)
+cCertificateIdentifier = lens _cCertificateIdentifier (\ s a -> s{_cCertificateIdentifier = a});
+
+-- | The thumbprint of the certificate.
+cThumbprint :: Lens' Certificate (Maybe Text)
+cThumbprint = lens _cThumbprint (\ s a -> s{_cThumbprint = a});
+
+-- | The starting date from which the certificate is valid.
+cValidFrom :: Lens' Certificate (Maybe UTCTime)
+cValidFrom = lens _cValidFrom (\ s a -> s{_cValidFrom = a}) . mapping _Time;
+
+instance FromXML Certificate where
+        parseXML x
+          = Certificate' <$>
+              (x .@? "CertificateType") <*> (x .@? "ValidTill") <*>
+                (x .@? "CertificateIdentifier")
+                <*> (x .@? "Thumbprint")
+                <*> (x .@? "ValidFrom")
+
+-- | This data type is used as a response element in the action
+-- DescribeDBEngineVersions.
+--
+-- /See:/ 'characterSet' smart constructor.
+data CharacterSet = CharacterSet'
+    { _csCharacterSetName        :: !(Maybe Text)
+    , _csCharacterSetDescription :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CharacterSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csCharacterSetName'
+--
+-- * 'csCharacterSetDescription'
+characterSet
+    :: CharacterSet
+characterSet =
+    CharacterSet'
+    { _csCharacterSetName = Nothing
+    , _csCharacterSetDescription = Nothing
+    }
+
+-- | The name of the character set.
+csCharacterSetName :: Lens' CharacterSet (Maybe Text)
+csCharacterSetName = lens _csCharacterSetName (\ s a -> s{_csCharacterSetName = a});
+
+-- | The description of the character set.
+csCharacterSetDescription :: Lens' CharacterSet (Maybe Text)
+csCharacterSetDescription = lens _csCharacterSetDescription (\ s a -> s{_csCharacterSetDescription = a});
+
+instance FromXML CharacterSet where
+        parseXML x
+          = CharacterSet' <$>
+              (x .@? "CharacterSetName") <*>
+                (x .@? "CharacterSetDescription")
+
+-- | Contains the result of a successful invocation of the following actions:
+--
+-- -   CreateDBCluster
+-- -   DeleteDBCluster
+-- -   FailoverDBCluster
+-- -   ModifyDBCluster
+-- -   RestoreDBClusterFromSnapshot
+--
+-- This data type is used as a response element in the DescribeDBClusters
+-- action.
+--
+-- /See:/ 'dbCluster' smart constructor.
+data DBCluster = DBCluster'
+    { _dcEngineVersion                   :: !(Maybe Text)
+    , _dcStatus                          :: !(Maybe Text)
+    , _dcDBClusterIdentifier             :: !(Maybe Text)
+    , _dcDBClusterMembers                :: !(Maybe [DBClusterMember])
+    , _dcDBClusterParameterGroup         :: !(Maybe Text)
+    , _dcMasterUsername                  :: !(Maybe Text)
+    , _dcEarliestRestorableTime          :: !(Maybe ISO8601)
+    , _dcEngine                          :: !(Maybe Text)
+    , _dcLatestRestorableTime            :: !(Maybe ISO8601)
+    , _dcPreferredMaintenanceWindow      :: !(Maybe Text)
+    , _dcCharacterSetName                :: !(Maybe Text)
+    , _dcAvailabilityZones               :: !(Maybe [Text])
+    , _dcPreferredBackupWindow           :: !(Maybe Text)
+    , _dcVPCSecurityGroups               :: !(Maybe [VPCSecurityGroupMembership])
+    , _dcBackupRetentionPeriod           :: !(Maybe Int)
+    , _dcDatabaseName                    :: !(Maybe Text)
+    , _dcDBSubnetGroup                   :: !(Maybe Text)
+    , _dcAllocatedStorage                :: !(Maybe Int)
+    , _dcEndpoint                        :: !(Maybe Text)
+    , _dcPercentProgress                 :: !(Maybe Text)
+    , _dcPort                            :: !(Maybe Int)
+    , _dcDBClusterOptionGroupMemberships :: !(Maybe [DBClusterOptionGroupStatus])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBCluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcEngineVersion'
+--
+-- * 'dcStatus'
+--
+-- * 'dcDBClusterIdentifier'
+--
+-- * 'dcDBClusterMembers'
+--
+-- * 'dcDBClusterParameterGroup'
+--
+-- * 'dcMasterUsername'
+--
+-- * 'dcEarliestRestorableTime'
+--
+-- * 'dcEngine'
+--
+-- * 'dcLatestRestorableTime'
+--
+-- * 'dcPreferredMaintenanceWindow'
+--
+-- * 'dcCharacterSetName'
+--
+-- * 'dcAvailabilityZones'
+--
+-- * 'dcPreferredBackupWindow'
+--
+-- * 'dcVPCSecurityGroups'
+--
+-- * 'dcBackupRetentionPeriod'
+--
+-- * 'dcDatabaseName'
+--
+-- * 'dcDBSubnetGroup'
+--
+-- * 'dcAllocatedStorage'
+--
+-- * 'dcEndpoint'
+--
+-- * 'dcPercentProgress'
+--
+-- * 'dcPort'
+--
+-- * 'dcDBClusterOptionGroupMemberships'
+dbCluster
+    :: DBCluster
+dbCluster =
+    DBCluster'
+    { _dcEngineVersion = Nothing
+    , _dcStatus = Nothing
+    , _dcDBClusterIdentifier = Nothing
+    , _dcDBClusterMembers = Nothing
+    , _dcDBClusterParameterGroup = Nothing
+    , _dcMasterUsername = Nothing
+    , _dcEarliestRestorableTime = Nothing
+    , _dcEngine = Nothing
+    , _dcLatestRestorableTime = Nothing
+    , _dcPreferredMaintenanceWindow = Nothing
+    , _dcCharacterSetName = Nothing
+    , _dcAvailabilityZones = Nothing
+    , _dcPreferredBackupWindow = Nothing
+    , _dcVPCSecurityGroups = Nothing
+    , _dcBackupRetentionPeriod = Nothing
+    , _dcDatabaseName = Nothing
+    , _dcDBSubnetGroup = Nothing
+    , _dcAllocatedStorage = Nothing
+    , _dcEndpoint = Nothing
+    , _dcPercentProgress = Nothing
+    , _dcPort = Nothing
+    , _dcDBClusterOptionGroupMemberships = Nothing
+    }
+
+-- | Indicates the database engine version.
+dcEngineVersion :: Lens' DBCluster (Maybe Text)
+dcEngineVersion = lens _dcEngineVersion (\ s a -> s{_dcEngineVersion = a});
+
+-- | Specifies the current state of this DB cluster.
+dcStatus :: Lens' DBCluster (Maybe Text)
+dcStatus = lens _dcStatus (\ s a -> s{_dcStatus = a});
+
+-- | Contains a user-supplied DB cluster identifier. This identifier is the
+-- unique key that identifies a DB cluster.
+dcDBClusterIdentifier :: Lens' DBCluster (Maybe Text)
+dcDBClusterIdentifier = lens _dcDBClusterIdentifier (\ s a -> s{_dcDBClusterIdentifier = a});
+
+-- | Provides the list of instances that make up the DB cluster.
+dcDBClusterMembers :: Lens' DBCluster [DBClusterMember]
+dcDBClusterMembers = lens _dcDBClusterMembers (\ s a -> s{_dcDBClusterMembers = a}) . _Default . _Coerce;
+
+-- | Specifies the name of the DB cluster parameter group for the DB cluster.
+dcDBClusterParameterGroup :: Lens' DBCluster (Maybe Text)
+dcDBClusterParameterGroup = lens _dcDBClusterParameterGroup (\ s a -> s{_dcDBClusterParameterGroup = a});
+
+-- | Contains the master username for the DB cluster.
+dcMasterUsername :: Lens' DBCluster (Maybe Text)
+dcMasterUsername = lens _dcMasterUsername (\ s a -> s{_dcMasterUsername = a});
+
+-- | Specifies the earliest time to which a database can be restored with
+-- point-in-time restore.
+dcEarliestRestorableTime :: Lens' DBCluster (Maybe UTCTime)
+dcEarliestRestorableTime = lens _dcEarliestRestorableTime (\ s a -> s{_dcEarliestRestorableTime = a}) . mapping _Time;
+
+-- | Provides the name of the database engine to be used for this DB cluster.
+dcEngine :: Lens' DBCluster (Maybe Text)
+dcEngine = lens _dcEngine (\ s a -> s{_dcEngine = a});
+
+-- | Specifies the latest time to which a database can be restored with
+-- point-in-time restore.
+dcLatestRestorableTime :: Lens' DBCluster (Maybe UTCTime)
+dcLatestRestorableTime = lens _dcLatestRestorableTime (\ s a -> s{_dcLatestRestorableTime = a}) . mapping _Time;
+
+-- | Specifies the weekly time range during which system maintenance can
+-- occur, in Universal Coordinated Time (UTC).
+dcPreferredMaintenanceWindow :: Lens' DBCluster (Maybe Text)
+dcPreferredMaintenanceWindow = lens _dcPreferredMaintenanceWindow (\ s a -> s{_dcPreferredMaintenanceWindow = a});
+
+-- | If present, specifies the name of the character set that this cluster is
+-- associated with.
+dcCharacterSetName :: Lens' DBCluster (Maybe Text)
+dcCharacterSetName = lens _dcCharacterSetName (\ s a -> s{_dcCharacterSetName = a});
+
+-- | Provides the list of EC2 Availability Zones that instances in the DB
+-- cluster can be created in.
+dcAvailabilityZones :: Lens' DBCluster [Text]
+dcAvailabilityZones = lens _dcAvailabilityZones (\ s a -> s{_dcAvailabilityZones = a}) . _Default . _Coerce;
+
+-- | Specifies the daily time range during which automated backups are
+-- created if automated backups are enabled, as determined by the
+-- 'BackupRetentionPeriod'.
+dcPreferredBackupWindow :: Lens' DBCluster (Maybe Text)
+dcPreferredBackupWindow = lens _dcPreferredBackupWindow (\ s a -> s{_dcPreferredBackupWindow = a});
+
+-- | Provides a list of VPC security groups that the DB cluster belongs to.
+dcVPCSecurityGroups :: Lens' DBCluster [VPCSecurityGroupMembership]
+dcVPCSecurityGroups = lens _dcVPCSecurityGroups (\ s a -> s{_dcVPCSecurityGroups = a}) . _Default . _Coerce;
+
+-- | Specifies the number of days for which automatic DB snapshots are
+-- retained.
+dcBackupRetentionPeriod :: Lens' DBCluster (Maybe Int)
+dcBackupRetentionPeriod = lens _dcBackupRetentionPeriod (\ s a -> s{_dcBackupRetentionPeriod = a});
+
+-- | Contains the name of the initial database of this DB cluster that was
+-- provided at create time, if one was specified when the DB cluster was
+-- created. This same name is returned for the life of the DB cluster.
+dcDatabaseName :: Lens' DBCluster (Maybe Text)
+dcDatabaseName = lens _dcDatabaseName (\ s a -> s{_dcDatabaseName = a});
+
+-- | Specifies information on the subnet group associated with the DB
+-- cluster, including the name, description, and subnets in the subnet
+-- group.
+dcDBSubnetGroup :: Lens' DBCluster (Maybe Text)
+dcDBSubnetGroup = lens _dcDBSubnetGroup (\ s a -> s{_dcDBSubnetGroup = a});
+
+-- | Specifies the allocated storage size in gigabytes (GB).
+dcAllocatedStorage :: Lens' DBCluster (Maybe Int)
+dcAllocatedStorage = lens _dcAllocatedStorage (\ s a -> s{_dcAllocatedStorage = a});
+
+-- | Specifies the connection endpoint for the primary instance of the DB
+-- cluster.
+dcEndpoint :: Lens' DBCluster (Maybe Text)
+dcEndpoint = lens _dcEndpoint (\ s a -> s{_dcEndpoint = a});
+
+-- | Specifies the progress of the operation as a percentage.
+dcPercentProgress :: Lens' DBCluster (Maybe Text)
+dcPercentProgress = lens _dcPercentProgress (\ s a -> s{_dcPercentProgress = a});
+
+-- | Specifies the port that the database engine is listening on.
+dcPort :: Lens' DBCluster (Maybe Int)
+dcPort = lens _dcPort (\ s a -> s{_dcPort = a});
+
+-- | Provides the list of option group memberships for this DB cluster.
+dcDBClusterOptionGroupMemberships :: Lens' DBCluster [DBClusterOptionGroupStatus]
+dcDBClusterOptionGroupMemberships = lens _dcDBClusterOptionGroupMemberships (\ s a -> s{_dcDBClusterOptionGroupMemberships = a}) . _Default . _Coerce;
+
+instance FromXML DBCluster where
+        parseXML x
+          = DBCluster' <$>
+              (x .@? "EngineVersion") <*> (x .@? "Status") <*>
+                (x .@? "DBClusterIdentifier")
+                <*>
+                (x .@? "DBClusterMembers" .!@ mempty >>=
+                   may (parseXMLList "DBClusterMember"))
+                <*> (x .@? "DBClusterParameterGroup")
+                <*> (x .@? "MasterUsername")
+                <*> (x .@? "EarliestRestorableTime")
+                <*> (x .@? "Engine")
+                <*> (x .@? "LatestRestorableTime")
+                <*> (x .@? "PreferredMaintenanceWindow")
+                <*> (x .@? "CharacterSetName")
+                <*>
+                (x .@? "AvailabilityZones" .!@ mempty >>=
+                   may (parseXMLList "AvailabilityZone"))
+                <*> (x .@? "PreferredBackupWindow")
+                <*>
+                (x .@? "VpcSecurityGroups" .!@ mempty >>=
+                   may (parseXMLList "VpcSecurityGroupMembership"))
+                <*> (x .@? "BackupRetentionPeriod")
+                <*> (x .@? "DatabaseName")
+                <*> (x .@? "DBSubnetGroup")
+                <*> (x .@? "AllocatedStorage")
+                <*> (x .@? "Endpoint")
+                <*> (x .@? "PercentProgress")
+                <*> (x .@? "Port")
+                <*>
+                (x .@? "DBClusterOptionGroupMemberships" .!@ mempty
+                   >>= may (parseXMLList "DBClusterOptionGroup"))
+
+-- | Contains information about an instance that is part of a DB cluster.
+--
+-- /See:/ 'dbClusterMember' smart constructor.
+data DBClusterMember = DBClusterMember'
+    { _dcmDBInstanceIdentifier          :: !(Maybe Text)
+    , _dcmIsClusterWriter               :: !(Maybe Bool)
+    , _dcmDBClusterParameterGroupStatus :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBClusterMember' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcmDBInstanceIdentifier'
+--
+-- * 'dcmIsClusterWriter'
+--
+-- * 'dcmDBClusterParameterGroupStatus'
+dbClusterMember
+    :: DBClusterMember
+dbClusterMember =
+    DBClusterMember'
+    { _dcmDBInstanceIdentifier = Nothing
+    , _dcmIsClusterWriter = Nothing
+    , _dcmDBClusterParameterGroupStatus = Nothing
+    }
+
+-- | Specifies the instance identifier for this member of the DB cluster.
+dcmDBInstanceIdentifier :: Lens' DBClusterMember (Maybe Text)
+dcmDBInstanceIdentifier = lens _dcmDBInstanceIdentifier (\ s a -> s{_dcmDBInstanceIdentifier = a});
+
+-- | Value that is 'true' if the cluster member is the primary instance for
+-- the DB cluster and 'false' otherwise.
+dcmIsClusterWriter :: Lens' DBClusterMember (Maybe Bool)
+dcmIsClusterWriter = lens _dcmIsClusterWriter (\ s a -> s{_dcmIsClusterWriter = a});
+
+-- | Specifies the status of the DB cluster parameter group for this member
+-- of the DB cluster.
+dcmDBClusterParameterGroupStatus :: Lens' DBClusterMember (Maybe Text)
+dcmDBClusterParameterGroupStatus = lens _dcmDBClusterParameterGroupStatus (\ s a -> s{_dcmDBClusterParameterGroupStatus = a});
+
+instance FromXML DBClusterMember where
+        parseXML x
+          = DBClusterMember' <$>
+              (x .@? "DBInstanceIdentifier") <*>
+                (x .@? "IsClusterWriter")
+                <*> (x .@? "DBClusterParameterGroupStatus")
+
+-- | Contains status information for a DB cluster option group.
+--
+-- /See:/ 'dbClusterOptionGroupStatus' smart constructor.
+data DBClusterOptionGroupStatus = DBClusterOptionGroupStatus'
+    { _dcogsStatus                   :: !(Maybe Text)
+    , _dcogsDBClusterOptionGroupName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBClusterOptionGroupStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcogsStatus'
+--
+-- * 'dcogsDBClusterOptionGroupName'
+dbClusterOptionGroupStatus
+    :: DBClusterOptionGroupStatus
+dbClusterOptionGroupStatus =
+    DBClusterOptionGroupStatus'
+    { _dcogsStatus = Nothing
+    , _dcogsDBClusterOptionGroupName = Nothing
+    }
+
+-- | Specifies the status of the DB cluster option group.
+dcogsStatus :: Lens' DBClusterOptionGroupStatus (Maybe Text)
+dcogsStatus = lens _dcogsStatus (\ s a -> s{_dcogsStatus = a});
+
+-- | Specifies the name of the DB cluster option group.
+dcogsDBClusterOptionGroupName :: Lens' DBClusterOptionGroupStatus (Maybe Text)
+dcogsDBClusterOptionGroupName = lens _dcogsDBClusterOptionGroupName (\ s a -> s{_dcogsDBClusterOptionGroupName = a});
+
+instance FromXML DBClusterOptionGroupStatus where
+        parseXML x
+          = DBClusterOptionGroupStatus' <$>
+              (x .@? "Status") <*>
+                (x .@? "DBClusterOptionGroupName")
+
+-- | Contains the result of a successful invocation of the
+-- CreateDBClusterParameterGroup action.
+--
+-- This data type is used as a request parameter in the
+-- DeleteDBClusterParameterGroup action, and as a response element in the
+-- DescribeDBClusterParameterGroups action.
+--
+-- /See:/ 'dbClusterParameterGroup' smart constructor.
+data DBClusterParameterGroup = DBClusterParameterGroup'
+    { _dcpgDBParameterGroupFamily      :: !(Maybe Text)
+    , _dcpgDBClusterParameterGroupName :: !(Maybe Text)
+    , _dcpgDescription                 :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBClusterParameterGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcpgDBParameterGroupFamily'
+--
+-- * 'dcpgDBClusterParameterGroupName'
+--
+-- * 'dcpgDescription'
+dbClusterParameterGroup
+    :: DBClusterParameterGroup
+dbClusterParameterGroup =
+    DBClusterParameterGroup'
+    { _dcpgDBParameterGroupFamily = Nothing
+    , _dcpgDBClusterParameterGroupName = Nothing
+    , _dcpgDescription = Nothing
+    }
+
+-- | Provides the name of the DB parameter group family that this DB cluster
+-- parameter group is compatible with.
+dcpgDBParameterGroupFamily :: Lens' DBClusterParameterGroup (Maybe Text)
+dcpgDBParameterGroupFamily = lens _dcpgDBParameterGroupFamily (\ s a -> s{_dcpgDBParameterGroupFamily = a});
+
+-- | Provides the name of the DB cluster parameter group.
+dcpgDBClusterParameterGroupName :: Lens' DBClusterParameterGroup (Maybe Text)
+dcpgDBClusterParameterGroupName = lens _dcpgDBClusterParameterGroupName (\ s a -> s{_dcpgDBClusterParameterGroupName = a});
+
+-- | Provides the customer-specified description for this DB cluster
+-- parameter group.
+dcpgDescription :: Lens' DBClusterParameterGroup (Maybe Text)
+dcpgDescription = lens _dcpgDescription (\ s a -> s{_dcpgDescription = a});
+
+instance FromXML DBClusterParameterGroup where
+        parseXML x
+          = DBClusterParameterGroup' <$>
+              (x .@? "DBParameterGroupFamily") <*>
+                (x .@? "DBClusterParameterGroupName")
+                <*> (x .@? "Description")
+
+-- |
+--
+-- /See:/ 'dbClusterParameterGroupNameMessage' smart constructor.
+newtype DBClusterParameterGroupNameMessage = DBClusterParameterGroupNameMessage'
+    { _dcpgnmDBClusterParameterGroupName :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBClusterParameterGroupNameMessage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcpgnmDBClusterParameterGroupName'
+dbClusterParameterGroupNameMessage
+    :: DBClusterParameterGroupNameMessage
+dbClusterParameterGroupNameMessage =
+    DBClusterParameterGroupNameMessage'
+    { _dcpgnmDBClusterParameterGroupName = Nothing
+    }
+
+-- | The name of the DB cluster parameter group.
+--
+-- Constraints:
+--
+-- -   Must be 1 to 255 alphanumeric characters
+-- -   First character must be a letter
+-- -   Cannot end with a hyphen or contain two consecutive hyphens
+--
+-- This value is stored as a lowercase string.
+dcpgnmDBClusterParameterGroupName :: Lens' DBClusterParameterGroupNameMessage (Maybe Text)
+dcpgnmDBClusterParameterGroupName = lens _dcpgnmDBClusterParameterGroupName (\ s a -> s{_dcpgnmDBClusterParameterGroupName = a});
+
+instance FromXML DBClusterParameterGroupNameMessage
+         where
+        parseXML x
+          = DBClusterParameterGroupNameMessage' <$>
+              (x .@? "DBClusterParameterGroupName")
+
+-- | Contains the result of a successful invocation of the following actions:
+--
+-- -   CreateDBClusterSnapshot
+-- -   DeleteDBClusterSnapshot
+--
+-- This data type is used as a response element in the
+-- DescribeDBClusterSnapshots action.
+--
+-- /See:/ 'dbClusterSnapshot' smart constructor.
+data DBClusterSnapshot = DBClusterSnapshot'
+    { _dcsEngineVersion               :: !(Maybe Text)
+    , _dcsStatus                      :: !(Maybe Text)
+    , _dcsDBClusterIdentifier         :: !(Maybe Text)
+    , _dcsMasterUsername              :: !(Maybe Text)
+    , _dcsVPCId                       :: !(Maybe Text)
+    , _dcsDBClusterSnapshotIdentifier :: !(Maybe Text)
+    , _dcsEngine                      :: !(Maybe Text)
+    , _dcsLicenseModel                :: !(Maybe Text)
+    , _dcsSnapshotType                :: !(Maybe Text)
+    , _dcsAvailabilityZones           :: !(Maybe [Text])
+    , _dcsSnapshotCreateTime          :: !(Maybe ISO8601)
+    , _dcsAllocatedStorage            :: !(Maybe Int)
+    , _dcsClusterCreateTime           :: !(Maybe ISO8601)
+    , _dcsPercentProgress             :: !(Maybe Int)
+    , _dcsPort                        :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBClusterSnapshot' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcsEngineVersion'
+--
+-- * 'dcsStatus'
+--
+-- * 'dcsDBClusterIdentifier'
+--
+-- * 'dcsMasterUsername'
+--
+-- * 'dcsVPCId'
+--
+-- * 'dcsDBClusterSnapshotIdentifier'
+--
+-- * 'dcsEngine'
+--
+-- * 'dcsLicenseModel'
+--
+-- * 'dcsSnapshotType'
+--
+-- * 'dcsAvailabilityZones'
+--
+-- * 'dcsSnapshotCreateTime'
+--
+-- * 'dcsAllocatedStorage'
+--
+-- * 'dcsClusterCreateTime'
+--
+-- * 'dcsPercentProgress'
+--
+-- * 'dcsPort'
+dbClusterSnapshot
+    :: DBClusterSnapshot
+dbClusterSnapshot =
+    DBClusterSnapshot'
+    { _dcsEngineVersion = Nothing
+    , _dcsStatus = Nothing
+    , _dcsDBClusterIdentifier = Nothing
+    , _dcsMasterUsername = Nothing
+    , _dcsVPCId = Nothing
+    , _dcsDBClusterSnapshotIdentifier = Nothing
+    , _dcsEngine = Nothing
+    , _dcsLicenseModel = Nothing
+    , _dcsSnapshotType = Nothing
+    , _dcsAvailabilityZones = Nothing
+    , _dcsSnapshotCreateTime = Nothing
+    , _dcsAllocatedStorage = Nothing
+    , _dcsClusterCreateTime = Nothing
+    , _dcsPercentProgress = Nothing
+    , _dcsPort = Nothing
+    }
+
+-- | Provides the version of the database engine for this DB cluster
+-- snapshot.
+dcsEngineVersion :: Lens' DBClusterSnapshot (Maybe Text)
+dcsEngineVersion = lens _dcsEngineVersion (\ s a -> s{_dcsEngineVersion = a});
+
+-- | Specifies the status of this DB cluster snapshot.
+dcsStatus :: Lens' DBClusterSnapshot (Maybe Text)
+dcsStatus = lens _dcsStatus (\ s a -> s{_dcsStatus = a});
+
+-- | Specifies the DB cluster identifier of the DB cluster that this DB
+-- cluster snapshot was created from.
+dcsDBClusterIdentifier :: Lens' DBClusterSnapshot (Maybe Text)
+dcsDBClusterIdentifier = lens _dcsDBClusterIdentifier (\ s a -> s{_dcsDBClusterIdentifier = a});
+
+-- | Provides the master username for the DB cluster snapshot.
+dcsMasterUsername :: Lens' DBClusterSnapshot (Maybe Text)
+dcsMasterUsername = lens _dcsMasterUsername (\ s a -> s{_dcsMasterUsername = a});
+
+-- | Provides the VPC ID associated with the DB cluster snapshot.
+dcsVPCId :: Lens' DBClusterSnapshot (Maybe Text)
+dcsVPCId = lens _dcsVPCId (\ s a -> s{_dcsVPCId = a});
+
+-- | Specifies the identifier for the DB cluster snapshot.
+dcsDBClusterSnapshotIdentifier :: Lens' DBClusterSnapshot (Maybe Text)
+dcsDBClusterSnapshotIdentifier = lens _dcsDBClusterSnapshotIdentifier (\ s a -> s{_dcsDBClusterSnapshotIdentifier = a});
+
+-- | Specifies the name of the database engine.
+dcsEngine :: Lens' DBClusterSnapshot (Maybe Text)
+dcsEngine = lens _dcsEngine (\ s a -> s{_dcsEngine = a});
+
+-- | Provides the license model information for this DB cluster snapshot.
+dcsLicenseModel :: Lens' DBClusterSnapshot (Maybe Text)
+dcsLicenseModel = lens _dcsLicenseModel (\ s a -> s{_dcsLicenseModel = a});
+
+-- | Provides the type of the DB cluster snapshot.
+dcsSnapshotType :: Lens' DBClusterSnapshot (Maybe Text)
+dcsSnapshotType = lens _dcsSnapshotType (\ s a -> s{_dcsSnapshotType = a});
+
+-- | Provides the list of EC2 Availability Zones that instances in the DB
+-- cluster snapshot can be restored in.
+dcsAvailabilityZones :: Lens' DBClusterSnapshot [Text]
+dcsAvailabilityZones = lens _dcsAvailabilityZones (\ s a -> s{_dcsAvailabilityZones = a}) . _Default . _Coerce;
+
+-- | Provides the time when the snapshot was taken, in Universal Coordinated
+-- Time (UTC).
+dcsSnapshotCreateTime :: Lens' DBClusterSnapshot (Maybe UTCTime)
+dcsSnapshotCreateTime = lens _dcsSnapshotCreateTime (\ s a -> s{_dcsSnapshotCreateTime = a}) . mapping _Time;
+
+-- | Specifies the allocated storage size in gigabytes (GB).
+dcsAllocatedStorage :: Lens' DBClusterSnapshot (Maybe Int)
+dcsAllocatedStorage = lens _dcsAllocatedStorage (\ s a -> s{_dcsAllocatedStorage = a});
+
+-- | Specifies the time when the DB cluster was created, in Universal
+-- Coordinated Time (UTC).
+dcsClusterCreateTime :: Lens' DBClusterSnapshot (Maybe UTCTime)
+dcsClusterCreateTime = lens _dcsClusterCreateTime (\ s a -> s{_dcsClusterCreateTime = a}) . mapping _Time;
+
+-- | Specifies the percentage of the estimated data that has been
+-- transferred.
+dcsPercentProgress :: Lens' DBClusterSnapshot (Maybe Int)
+dcsPercentProgress = lens _dcsPercentProgress (\ s a -> s{_dcsPercentProgress = a});
+
+-- | Specifies the port that the DB cluster was listening on at the time of
+-- the snapshot.
+dcsPort :: Lens' DBClusterSnapshot (Maybe Int)
+dcsPort = lens _dcsPort (\ s a -> s{_dcsPort = a});
+
+instance FromXML DBClusterSnapshot where
+        parseXML x
+          = DBClusterSnapshot' <$>
+              (x .@? "EngineVersion") <*> (x .@? "Status") <*>
+                (x .@? "DBClusterIdentifier")
+                <*> (x .@? "MasterUsername")
+                <*> (x .@? "VpcId")
+                <*> (x .@? "DBClusterSnapshotIdentifier")
+                <*> (x .@? "Engine")
+                <*> (x .@? "LicenseModel")
+                <*> (x .@? "SnapshotType")
+                <*>
+                (x .@? "AvailabilityZones" .!@ mempty >>=
+                   may (parseXMLList "AvailabilityZone"))
+                <*> (x .@? "SnapshotCreateTime")
+                <*> (x .@? "AllocatedStorage")
+                <*> (x .@? "ClusterCreateTime")
+                <*> (x .@? "PercentProgress")
+                <*> (x .@? "Port")
+
+-- | This data type is used as a response element in the action
+-- DescribeDBEngineVersions.
+--
+-- /See:/ 'dbEngineVersion' smart constructor.
+data DBEngineVersion = DBEngineVersion'
+    { _devDBEngineVersionDescription :: !(Maybe Text)
+    , _devEngineVersion              :: !(Maybe Text)
+    , _devDefaultCharacterSet        :: !(Maybe CharacterSet)
+    , _devSupportedCharacterSets     :: !(Maybe [CharacterSet])
+    , _devEngine                     :: !(Maybe Text)
+    , _devDBParameterGroupFamily     :: !(Maybe Text)
+    , _devDBEngineDescription        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBEngineVersion' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'devDBEngineVersionDescription'
+--
+-- * 'devEngineVersion'
+--
+-- * 'devDefaultCharacterSet'
+--
+-- * 'devSupportedCharacterSets'
+--
+-- * 'devEngine'
+--
+-- * 'devDBParameterGroupFamily'
+--
+-- * 'devDBEngineDescription'
+dbEngineVersion
+    :: DBEngineVersion
+dbEngineVersion =
+    DBEngineVersion'
+    { _devDBEngineVersionDescription = Nothing
+    , _devEngineVersion = Nothing
+    , _devDefaultCharacterSet = Nothing
+    , _devSupportedCharacterSets = Nothing
+    , _devEngine = Nothing
+    , _devDBParameterGroupFamily = Nothing
+    , _devDBEngineDescription = Nothing
+    }
+
+-- | The description of the database engine version.
+devDBEngineVersionDescription :: Lens' DBEngineVersion (Maybe Text)
+devDBEngineVersionDescription = lens _devDBEngineVersionDescription (\ s a -> s{_devDBEngineVersionDescription = a});
+
+-- | The version number of the database engine.
+devEngineVersion :: Lens' DBEngineVersion (Maybe Text)
+devEngineVersion = lens _devEngineVersion (\ s a -> s{_devEngineVersion = a});
+
+-- | The default character set for new instances of this engine version, if
+-- the 'CharacterSetName' parameter of the CreateDBInstance API is not
+-- specified.
+devDefaultCharacterSet :: Lens' DBEngineVersion (Maybe CharacterSet)
+devDefaultCharacterSet = lens _devDefaultCharacterSet (\ s a -> s{_devDefaultCharacterSet = a});
+
+-- | A list of the character sets supported by this engine for the
+-- 'CharacterSetName' parameter of the CreateDBInstance API.
+devSupportedCharacterSets :: Lens' DBEngineVersion [CharacterSet]
+devSupportedCharacterSets = lens _devSupportedCharacterSets (\ s a -> s{_devSupportedCharacterSets = a}) . _Default . _Coerce;
+
+-- | The name of the database engine.
+devEngine :: Lens' DBEngineVersion (Maybe Text)
+devEngine = lens _devEngine (\ s a -> s{_devEngine = a});
+
+-- | The name of the DB parameter group family for the database engine.
+devDBParameterGroupFamily :: Lens' DBEngineVersion (Maybe Text)
+devDBParameterGroupFamily = lens _devDBParameterGroupFamily (\ s a -> s{_devDBParameterGroupFamily = a});
+
+-- | The description of the database engine.
+devDBEngineDescription :: Lens' DBEngineVersion (Maybe Text)
+devDBEngineDescription = lens _devDBEngineDescription (\ s a -> s{_devDBEngineDescription = a});
+
+instance FromXML DBEngineVersion where
+        parseXML x
+          = DBEngineVersion' <$>
+              (x .@? "DBEngineVersionDescription") <*>
+                (x .@? "EngineVersion")
+                <*> (x .@? "DefaultCharacterSet")
+                <*>
+                (x .@? "SupportedCharacterSets" .!@ mempty >>=
+                   may (parseXMLList "CharacterSet"))
+                <*> (x .@? "Engine")
+                <*> (x .@? "DBParameterGroupFamily")
+                <*> (x .@? "DBEngineDescription")
+
+-- | Contains the result of a successful invocation of the following actions:
+--
+-- -   CreateDBInstance
+-- -   DeleteDBInstance
+-- -   ModifyDBInstance
+--
+-- This data type is used as a response element in the DescribeDBInstances
+-- action.
+--
+-- /See:/ 'dbInstance' smart constructor.
+data DBInstance = DBInstance'
+    { _diDBSecurityGroups                      :: !(Maybe [DBSecurityGroupMembership])
+    , _diEngineVersion                         :: !(Maybe Text)
+    , _diStorageEncrypted                      :: !(Maybe Bool)
+    , _diDBClusterIdentifier                   :: !(Maybe Text)
+    , _diAutoMinorVersionUpgrade               :: !(Maybe Bool)
+    , _diMasterUsername                        :: !(Maybe Text)
+    , _diPubliclyAccessible                    :: !(Maybe Bool)
+    , _diReadReplicaDBInstanceIdentifiers      :: !(Maybe [Text])
+    , _diIOPS                                  :: !(Maybe Int)
+    , _diInstanceCreateTime                    :: !(Maybe ISO8601)
+    , _diReadReplicaSourceDBInstanceIdentifier :: !(Maybe Text)
+    , _diEngine                                :: !(Maybe Text)
+    , _diLatestRestorableTime                  :: !(Maybe ISO8601)
+    , _diDBInstanceClass                       :: !(Maybe Text)
+    , _diLicenseModel                          :: !(Maybe Text)
+    , _diPreferredMaintenanceWindow            :: !(Maybe Text)
+    , _diCharacterSetName                      :: !(Maybe Text)
+    , _diDBInstanceIdentifier                  :: !(Maybe Text)
+    , _diCACertificateIdentifier               :: !(Maybe Text)
+    , _diPreferredBackupWindow                 :: !(Maybe Text)
+    , _diAvailabilityZone                      :: !(Maybe Text)
+    , _diVPCSecurityGroups                     :: !(Maybe [VPCSecurityGroupMembership])
+    , _diBackupRetentionPeriod                 :: !(Maybe Int)
+    , _diKMSKeyId                              :: !(Maybe Text)
+    , _diDBSubnetGroup                         :: !(Maybe DBSubnetGroup)
+    , _diMultiAZ                               :: !(Maybe Bool)
+    , _diSecondaryAvailabilityZone             :: !(Maybe Text)
+    , _diOptionGroupMemberships                :: !(Maybe [OptionGroupMembership])
+    , _diDBiResourceId                         :: !(Maybe Text)
+    , _diAllocatedStorage                      :: !(Maybe Int)
+    , _diEndpoint                              :: !(Maybe Endpoint)
+    , _diDBParameterGroups                     :: !(Maybe [DBParameterGroupStatus])
+    , _diTDECredentialARN                      :: !(Maybe Text)
+    , _diCopyTagsToSnapshot                    :: !(Maybe Bool)
+    , _diDBInstanceStatus                      :: !(Maybe Text)
+    , _diDBInstancePort                        :: !(Maybe Int)
+    , _diPendingModifiedValues                 :: !(Maybe PendingModifiedValues)
+    , _diStatusInfos                           :: !(Maybe [DBInstanceStatusInfo])
+    , _diDBName                                :: !(Maybe Text)
+    , _diDomainMemberships                     :: !(Maybe [DomainMembership])
+    , _diStorageType                           :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'diDBSecurityGroups'
+--
+-- * 'diEngineVersion'
+--
+-- * 'diStorageEncrypted'
+--
+-- * 'diDBClusterIdentifier'
+--
+-- * 'diAutoMinorVersionUpgrade'
+--
+-- * 'diMasterUsername'
+--
+-- * 'diPubliclyAccessible'
+--
+-- * 'diReadReplicaDBInstanceIdentifiers'
+--
+-- * 'diIOPS'
+--
+-- * 'diInstanceCreateTime'
+--
+-- * 'diReadReplicaSourceDBInstanceIdentifier'
+--
+-- * 'diEngine'
+--
+-- * 'diLatestRestorableTime'
+--
+-- * 'diDBInstanceClass'
+--
+-- * 'diLicenseModel'
+--
+-- * 'diPreferredMaintenanceWindow'
+--
+-- * 'diCharacterSetName'
+--
+-- * 'diDBInstanceIdentifier'
+--
+-- * 'diCACertificateIdentifier'
+--
+-- * 'diPreferredBackupWindow'
+--
+-- * 'diAvailabilityZone'
+--
+-- * 'diVPCSecurityGroups'
+--
+-- * 'diBackupRetentionPeriod'
+--
+-- * 'diKMSKeyId'
+--
+-- * 'diDBSubnetGroup'
+--
+-- * 'diMultiAZ'
+--
+-- * 'diSecondaryAvailabilityZone'
+--
+-- * 'diOptionGroupMemberships'
+--
+-- * 'diDBiResourceId'
+--
+-- * 'diAllocatedStorage'
+--
+-- * 'diEndpoint'
+--
+-- * 'diDBParameterGroups'
+--
+-- * 'diTDECredentialARN'
+--
+-- * 'diCopyTagsToSnapshot'
+--
+-- * 'diDBInstanceStatus'
+--
+-- * 'diDBInstancePort'
+--
+-- * 'diPendingModifiedValues'
+--
+-- * 'diStatusInfos'
+--
+-- * 'diDBName'
+--
+-- * 'diDomainMemberships'
+--
+-- * 'diStorageType'
+dbInstance
+    :: DBInstance
+dbInstance =
+    DBInstance'
+    { _diDBSecurityGroups = Nothing
+    , _diEngineVersion = Nothing
+    , _diStorageEncrypted = Nothing
+    , _diDBClusterIdentifier = Nothing
+    , _diAutoMinorVersionUpgrade = Nothing
+    , _diMasterUsername = Nothing
+    , _diPubliclyAccessible = Nothing
+    , _diReadReplicaDBInstanceIdentifiers = Nothing
+    , _diIOPS = Nothing
+    , _diInstanceCreateTime = Nothing
+    , _diReadReplicaSourceDBInstanceIdentifier = Nothing
+    , _diEngine = Nothing
+    , _diLatestRestorableTime = Nothing
+    , _diDBInstanceClass = Nothing
+    , _diLicenseModel = Nothing
+    , _diPreferredMaintenanceWindow = Nothing
+    , _diCharacterSetName = Nothing
+    , _diDBInstanceIdentifier = Nothing
+    , _diCACertificateIdentifier = Nothing
+    , _diPreferredBackupWindow = Nothing
+    , _diAvailabilityZone = Nothing
+    , _diVPCSecurityGroups = Nothing
+    , _diBackupRetentionPeriod = Nothing
+    , _diKMSKeyId = Nothing
+    , _diDBSubnetGroup = Nothing
+    , _diMultiAZ = Nothing
+    , _diSecondaryAvailabilityZone = Nothing
+    , _diOptionGroupMemberships = Nothing
+    , _diDBiResourceId = Nothing
+    , _diAllocatedStorage = Nothing
+    , _diEndpoint = Nothing
+    , _diDBParameterGroups = Nothing
+    , _diTDECredentialARN = Nothing
+    , _diCopyTagsToSnapshot = Nothing
+    , _diDBInstanceStatus = Nothing
+    , _diDBInstancePort = Nothing
+    , _diPendingModifiedValues = Nothing
+    , _diStatusInfos = Nothing
+    , _diDBName = Nothing
+    , _diDomainMemberships = Nothing
+    , _diStorageType = Nothing
+    }
+
+-- | Provides List of DB security group elements containing only
+-- 'DBSecurityGroup.Name' and 'DBSecurityGroup.Status' subelements.
+diDBSecurityGroups :: Lens' DBInstance [DBSecurityGroupMembership]
+diDBSecurityGroups = lens _diDBSecurityGroups (\ s a -> s{_diDBSecurityGroups = a}) . _Default . _Coerce;
+
+-- | Indicates the database engine version.
+diEngineVersion :: Lens' DBInstance (Maybe Text)
+diEngineVersion = lens _diEngineVersion (\ s a -> s{_diEngineVersion = a});
+
+-- | Specifies whether the DB instance is encrypted.
+diStorageEncrypted :: Lens' DBInstance (Maybe Bool)
+diStorageEncrypted = lens _diStorageEncrypted (\ s a -> s{_diStorageEncrypted = a});
+
+-- | If the DB instance is a member of a DB cluster, contains the name of the
+-- DB cluster that the DB instance is a member of.
+diDBClusterIdentifier :: Lens' DBInstance (Maybe Text)
+diDBClusterIdentifier = lens _diDBClusterIdentifier (\ s a -> s{_diDBClusterIdentifier = a});
+
+-- | Indicates that minor version patches are applied automatically.
+diAutoMinorVersionUpgrade :: Lens' DBInstance (Maybe Bool)
+diAutoMinorVersionUpgrade = lens _diAutoMinorVersionUpgrade (\ s a -> s{_diAutoMinorVersionUpgrade = a});
+
+-- | Contains the master username for the DB instance.
+diMasterUsername :: Lens' DBInstance (Maybe Text)
+diMasterUsername = lens _diMasterUsername (\ s a -> s{_diMasterUsername = a});
+
+-- | Specifies the accessibility options for the DB instance. A value of true
+-- specifies an Internet-facing instance with a publicly resolvable DNS
+-- name, which resolves to a public IP address. A value of false specifies
+-- an internal instance with a DNS name that resolves to a private IP
+-- address.
+--
+-- Default: The default behavior varies depending on whether a VPC has been
+-- requested or not. The following list shows the default behavior in each
+-- case.
+--
+-- -   __Default VPC:__true
+-- -   __VPC:__false
+--
+-- If no DB subnet group has been specified as part of the request and the
+-- PubliclyAccessible value has not been set, the DB instance will be
+-- publicly accessible. If a specific DB subnet group has been specified as
+-- part of the request and the PubliclyAccessible value has not been set,
+-- the DB instance will be private.
+diPubliclyAccessible :: Lens' DBInstance (Maybe Bool)
+diPubliclyAccessible = lens _diPubliclyAccessible (\ s a -> s{_diPubliclyAccessible = a});
+
+-- | Contains one or more identifiers of the Read Replicas associated with
+-- this DB instance.
+diReadReplicaDBInstanceIdentifiers :: Lens' DBInstance [Text]
+diReadReplicaDBInstanceIdentifiers = lens _diReadReplicaDBInstanceIdentifiers (\ s a -> s{_diReadReplicaDBInstanceIdentifiers = a}) . _Default . _Coerce;
+
+-- | Specifies the Provisioned IOPS (I\/O operations per second) value.
+diIOPS :: Lens' DBInstance (Maybe Int)
+diIOPS = lens _diIOPS (\ s a -> s{_diIOPS = a});
+
+-- | Provides the date and time the DB instance was created.
+diInstanceCreateTime :: Lens' DBInstance (Maybe UTCTime)
+diInstanceCreateTime = lens _diInstanceCreateTime (\ s a -> s{_diInstanceCreateTime = a}) . mapping _Time;
+
+-- | Contains the identifier of the source DB instance if this DB instance is
+-- a Read Replica.
+diReadReplicaSourceDBInstanceIdentifier :: Lens' DBInstance (Maybe Text)
+diReadReplicaSourceDBInstanceIdentifier = lens _diReadReplicaSourceDBInstanceIdentifier (\ s a -> s{_diReadReplicaSourceDBInstanceIdentifier = a});
+
+-- | Provides the name of the database engine to be used for this DB
+-- instance.
+diEngine :: Lens' DBInstance (Maybe Text)
+diEngine = lens _diEngine (\ s a -> s{_diEngine = a});
+
+-- | Specifies the latest time to which a database can be restored with
+-- point-in-time restore.
+diLatestRestorableTime :: Lens' DBInstance (Maybe UTCTime)
+diLatestRestorableTime = lens _diLatestRestorableTime (\ s a -> s{_diLatestRestorableTime = a}) . mapping _Time;
+
+-- | Contains the name of the compute and memory capacity class of the DB
+-- instance.
+diDBInstanceClass :: Lens' DBInstance (Maybe Text)
+diDBInstanceClass = lens _diDBInstanceClass (\ s a -> s{_diDBInstanceClass = a});
+
+-- | License model information for this DB instance.
+diLicenseModel :: Lens' DBInstance (Maybe Text)
+diLicenseModel = lens _diLicenseModel (\ s a -> s{_diLicenseModel = a});
+
+-- | Specifies the weekly time range during which system maintenance can
+-- occur, in Universal Coordinated Time (UTC).
+diPreferredMaintenanceWindow :: Lens' DBInstance (Maybe Text)
+diPreferredMaintenanceWindow = lens _diPreferredMaintenanceWindow (\ s a -> s{_diPreferredMaintenanceWindow = a});
+
+-- | If present, specifies the name of the character set that this instance
+-- is associated with.
+diCharacterSetName :: Lens' DBInstance (Maybe Text)
+diCharacterSetName = lens _diCharacterSetName (\ s a -> s{_diCharacterSetName = a});
+
+-- | Contains a user-supplied database identifier. This identifier is the
+-- unique key that identifies a DB instance.
+diDBInstanceIdentifier :: Lens' DBInstance (Maybe Text)
+diDBInstanceIdentifier = lens _diDBInstanceIdentifier (\ s a -> s{_diDBInstanceIdentifier = a});
+
+-- | The identifier of the CA certificate for this DB instance.
+diCACertificateIdentifier :: Lens' DBInstance (Maybe Text)
+diCACertificateIdentifier = lens _diCACertificateIdentifier (\ s a -> s{_diCACertificateIdentifier = a});
+
+-- | Specifies the daily time range during which automated backups are
+-- created if automated backups are enabled, as determined by the
+-- 'BackupRetentionPeriod'.
+diPreferredBackupWindow :: Lens' DBInstance (Maybe Text)
+diPreferredBackupWindow = lens _diPreferredBackupWindow (\ s a -> s{_diPreferredBackupWindow = a});
+
+-- | Specifies the name of the Availability Zone the DB instance is located
+-- in.
+diAvailabilityZone :: Lens' DBInstance (Maybe Text)
+diAvailabilityZone = lens _diAvailabilityZone (\ s a -> s{_diAvailabilityZone = a});
+
+-- | Provides List of VPC security group elements that the DB instance
+-- belongs to.
+diVPCSecurityGroups :: Lens' DBInstance [VPCSecurityGroupMembership]
+diVPCSecurityGroups = lens _diVPCSecurityGroups (\ s a -> s{_diVPCSecurityGroups = a}) . _Default . _Coerce;
+
+-- | Specifies the number of days for which automatic DB snapshots are
+-- retained.
+diBackupRetentionPeriod :: Lens' DBInstance (Maybe Int)
+diBackupRetentionPeriod = lens _diBackupRetentionPeriod (\ s a -> s{_diBackupRetentionPeriod = a});
+
+-- | If 'StorageEncrypted' is true, the KMS key identifier for the encrypted
+-- DB instance.
+diKMSKeyId :: Lens' DBInstance (Maybe Text)
+diKMSKeyId = lens _diKMSKeyId (\ s a -> s{_diKMSKeyId = a});
+
+-- | Specifies information on the subnet group associated with the DB
+-- instance, including the name, description, and subnets in the subnet
+-- group.
+diDBSubnetGroup :: Lens' DBInstance (Maybe DBSubnetGroup)
+diDBSubnetGroup = lens _diDBSubnetGroup (\ s a -> s{_diDBSubnetGroup = a});
+
+-- | Specifies if the DB instance is a Multi-AZ deployment.
+diMultiAZ :: Lens' DBInstance (Maybe Bool)
+diMultiAZ = lens _diMultiAZ (\ s a -> s{_diMultiAZ = a});
+
+-- | If present, specifies the name of the secondary Availability Zone for a
+-- DB instance with multi-AZ support.
+diSecondaryAvailabilityZone :: Lens' DBInstance (Maybe Text)
+diSecondaryAvailabilityZone = lens _diSecondaryAvailabilityZone (\ s a -> s{_diSecondaryAvailabilityZone = a});
+
+-- | Provides the list of option group memberships for this DB instance.
+diOptionGroupMemberships :: Lens' DBInstance [OptionGroupMembership]
+diOptionGroupMemberships = lens _diOptionGroupMemberships (\ s a -> s{_diOptionGroupMemberships = a}) . _Default . _Coerce;
+
+-- | If 'StorageEncrypted' is true, the region-unique, immutable identifier
+-- for the encrypted DB instance. This identifier is found in AWS
+-- CloudTrail log entries whenever the KMS key for the DB instance is
+-- accessed.
+diDBiResourceId :: Lens' DBInstance (Maybe Text)
+diDBiResourceId = lens _diDBiResourceId (\ s a -> s{_diDBiResourceId = a});
+
+-- | Specifies the allocated storage size specified in gigabytes.
+diAllocatedStorage :: Lens' DBInstance (Maybe Int)
+diAllocatedStorage = lens _diAllocatedStorage (\ s a -> s{_diAllocatedStorage = a});
+
+-- | Specifies the connection endpoint.
+diEndpoint :: Lens' DBInstance (Maybe Endpoint)
+diEndpoint = lens _diEndpoint (\ s a -> s{_diEndpoint = a});
+
+-- | Provides the list of DB parameter groups applied to this DB instance.
+diDBParameterGroups :: Lens' DBInstance [DBParameterGroupStatus]
+diDBParameterGroups = lens _diDBParameterGroups (\ s a -> s{_diDBParameterGroups = a}) . _Default . _Coerce;
+
+-- | The ARN from the Key Store with which the instance is associated for TDE
+-- encryption.
+diTDECredentialARN :: Lens' DBInstance (Maybe Text)
+diTDECredentialARN = lens _diTDECredentialARN (\ s a -> s{_diTDECredentialARN = a});
+
+-- | This property is not currently implemented.
+diCopyTagsToSnapshot :: Lens' DBInstance (Maybe Bool)
+diCopyTagsToSnapshot = lens _diCopyTagsToSnapshot (\ s a -> s{_diCopyTagsToSnapshot = a});
+
+-- | Specifies the current state of this database.
+diDBInstanceStatus :: Lens' DBInstance (Maybe Text)
+diDBInstanceStatus = lens _diDBInstanceStatus (\ s a -> s{_diDBInstanceStatus = a});
+
+-- | Specifies the port that the DB instance listens on. If the DB instance
+-- is part of a DB cluster, this can be a different port than the DB
+-- cluster port.
+diDBInstancePort :: Lens' DBInstance (Maybe Int)
+diDBInstancePort = lens _diDBInstancePort (\ s a -> s{_diDBInstancePort = a});
+
+-- | Specifies that changes to the DB instance are pending. This element is
+-- only included when changes are pending. Specific changes are identified
+-- by subelements.
+diPendingModifiedValues :: Lens' DBInstance (Maybe PendingModifiedValues)
+diPendingModifiedValues = lens _diPendingModifiedValues (\ s a -> s{_diPendingModifiedValues = a});
+
+-- | The status of a Read Replica. If the instance is not a Read Replica,
+-- this will be blank.
+diStatusInfos :: Lens' DBInstance [DBInstanceStatusInfo]
+diStatusInfos = lens _diStatusInfos (\ s a -> s{_diStatusInfos = a}) . _Default . _Coerce;
+
+-- | The meaning of this parameter differs according to the database engine
+-- you use. For example, this value returns either MySQL or PostgreSQL
+-- information when returning values from CreateDBInstanceReadReplica since
+-- Read Replicas are only supported for MySQL and PostgreSQL.
+--
+-- __MySQL, SQL Server, PostgreSQL__
+--
+-- Contains the name of the initial database of this instance that was
+-- provided at create time, if one was specified when the DB instance was
+-- created. This same name is returned for the life of the DB instance.
+--
+-- Type: String
+--
+-- __Oracle__
+--
+-- Contains the Oracle System ID (SID) of the created DB instance. Not
+-- shown when the returned parameters do not apply to an Oracle DB
+-- instance.
+diDBName :: Lens' DBInstance (Maybe Text)
+diDBName = lens _diDBName (\ s a -> s{_diDBName = a});
+
+-- | The Active Directory Domain membership records associated with the DB
+-- instance.
+diDomainMemberships :: Lens' DBInstance [DomainMembership]
+diDomainMemberships = lens _diDomainMemberships (\ s a -> s{_diDomainMemberships = a}) . _Default . _Coerce;
+
+-- | Specifies the storage type associated with DB instance.
+diStorageType :: Lens' DBInstance (Maybe Text)
+diStorageType = lens _diStorageType (\ s a -> s{_diStorageType = a});
+
+instance FromXML DBInstance where
+        parseXML x
+          = DBInstance' <$>
+              (x .@? "DBSecurityGroups" .!@ mempty >>=
+                 may (parseXMLList "DBSecurityGroup"))
+                <*> (x .@? "EngineVersion")
+                <*> (x .@? "StorageEncrypted")
+                <*> (x .@? "DBClusterIdentifier")
+                <*> (x .@? "AutoMinorVersionUpgrade")
+                <*> (x .@? "MasterUsername")
+                <*> (x .@? "PubliclyAccessible")
+                <*>
+                (x .@? "ReadReplicaDBInstanceIdentifiers" .!@ mempty
+                   >>=
+                   may (parseXMLList "ReadReplicaDBInstanceIdentifier"))
+                <*> (x .@? "Iops")
+                <*> (x .@? "InstanceCreateTime")
+                <*> (x .@? "ReadReplicaSourceDBInstanceIdentifier")
+                <*> (x .@? "Engine")
+                <*> (x .@? "LatestRestorableTime")
+                <*> (x .@? "DBInstanceClass")
+                <*> (x .@? "LicenseModel")
+                <*> (x .@? "PreferredMaintenanceWindow")
+                <*> (x .@? "CharacterSetName")
+                <*> (x .@? "DBInstanceIdentifier")
+                <*> (x .@? "CACertificateIdentifier")
+                <*> (x .@? "PreferredBackupWindow")
+                <*> (x .@? "AvailabilityZone")
+                <*>
+                (x .@? "VpcSecurityGroups" .!@ mempty >>=
+                   may (parseXMLList "VpcSecurityGroupMembership"))
+                <*> (x .@? "BackupRetentionPeriod")
+                <*> (x .@? "KmsKeyId")
+                <*> (x .@? "DBSubnetGroup")
+                <*> (x .@? "MultiAZ")
+                <*> (x .@? "SecondaryAvailabilityZone")
+                <*>
+                (x .@? "OptionGroupMemberships" .!@ mempty >>=
+                   may (parseXMLList "OptionGroupMembership"))
+                <*> (x .@? "DbiResourceId")
+                <*> (x .@? "AllocatedStorage")
+                <*> (x .@? "Endpoint")
+                <*>
+                (x .@? "DBParameterGroups" .!@ mempty >>=
+                   may (parseXMLList "DBParameterGroup"))
+                <*> (x .@? "TdeCredentialArn")
+                <*> (x .@? "CopyTagsToSnapshot")
+                <*> (x .@? "DBInstanceStatus")
+                <*> (x .@? "DbInstancePort")
+                <*> (x .@? "PendingModifiedValues")
+                <*>
+                (x .@? "StatusInfos" .!@ mempty >>=
+                   may (parseXMLList "DBInstanceStatusInfo"))
+                <*> (x .@? "DBName")
+                <*>
+                (x .@? "DomainMemberships" .!@ mempty >>=
+                   may (parseXMLList "DomainMembership"))
+                <*> (x .@? "StorageType")
+
+-- | Provides a list of status information for a DB instance.
+--
+-- /See:/ 'dbInstanceStatusInfo' smart constructor.
+data DBInstanceStatusInfo = DBInstanceStatusInfo'
+    { _disiStatus     :: !(Maybe Text)
+    , _disiNormal     :: !(Maybe Bool)
+    , _disiStatusType :: !(Maybe Text)
+    , _disiMessage    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBInstanceStatusInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'disiStatus'
+--
+-- * 'disiNormal'
+--
+-- * 'disiStatusType'
+--
+-- * 'disiMessage'
+dbInstanceStatusInfo
+    :: DBInstanceStatusInfo
+dbInstanceStatusInfo =
+    DBInstanceStatusInfo'
+    { _disiStatus = Nothing
+    , _disiNormal = Nothing
+    , _disiStatusType = Nothing
+    , _disiMessage = Nothing
+    }
+
+-- | Status of the DB instance. For a StatusType of read replica, the values
+-- can be replicating, error, stopped, or terminated.
+disiStatus :: Lens' DBInstanceStatusInfo (Maybe Text)
+disiStatus = lens _disiStatus (\ s a -> s{_disiStatus = a});
+
+-- | Boolean value that is true if the instance is operating normally, or
+-- false if the instance is in an error state.
+disiNormal :: Lens' DBInstanceStatusInfo (Maybe Bool)
+disiNormal = lens _disiNormal (\ s a -> s{_disiNormal = a});
+
+-- | This value is currently \"read replication.\"
+disiStatusType :: Lens' DBInstanceStatusInfo (Maybe Text)
+disiStatusType = lens _disiStatusType (\ s a -> s{_disiStatusType = a});
+
+-- | Details of the error if there is an error for the instance. If the
+-- instance is not in an error state, this value is blank.
+disiMessage :: Lens' DBInstanceStatusInfo (Maybe Text)
+disiMessage = lens _disiMessage (\ s a -> s{_disiMessage = a});
+
+instance FromXML DBInstanceStatusInfo where
+        parseXML x
+          = DBInstanceStatusInfo' <$>
+              (x .@? "Status") <*> (x .@? "Normal") <*>
+                (x .@? "StatusType")
+                <*> (x .@? "Message")
+
+-- | Contains the result of a successful invocation of the
+-- CreateDBParameterGroup action.
+--
+-- This data type is used as a request parameter in the
+-- DeleteDBParameterGroup action, and as a response element in the
+-- DescribeDBParameterGroups action.
+--
+-- /See:/ 'dbParameterGroup' smart constructor.
+data DBParameterGroup = DBParameterGroup'
+    { _dpgDBParameterGroupFamily :: !(Maybe Text)
+    , _dpgDBParameterGroupName   :: !(Maybe Text)
+    , _dpgDescription            :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBParameterGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpgDBParameterGroupFamily'
+--
+-- * 'dpgDBParameterGroupName'
+--
+-- * 'dpgDescription'
+dbParameterGroup
+    :: DBParameterGroup
+dbParameterGroup =
+    DBParameterGroup'
+    { _dpgDBParameterGroupFamily = Nothing
+    , _dpgDBParameterGroupName = Nothing
+    , _dpgDescription = Nothing
+    }
+
+-- | Provides the name of the DB parameter group family that this DB
+-- parameter group is compatible with.
+dpgDBParameterGroupFamily :: Lens' DBParameterGroup (Maybe Text)
+dpgDBParameterGroupFamily = lens _dpgDBParameterGroupFamily (\ s a -> s{_dpgDBParameterGroupFamily = a});
+
+-- | Provides the name of the DB parameter group.
+dpgDBParameterGroupName :: Lens' DBParameterGroup (Maybe Text)
+dpgDBParameterGroupName = lens _dpgDBParameterGroupName (\ s a -> s{_dpgDBParameterGroupName = a});
+
+-- | Provides the customer-specified description for this DB parameter group.
+dpgDescription :: Lens' DBParameterGroup (Maybe Text)
+dpgDescription = lens _dpgDescription (\ s a -> s{_dpgDescription = a});
+
+instance FromXML DBParameterGroup where
+        parseXML x
+          = DBParameterGroup' <$>
+              (x .@? "DBParameterGroupFamily") <*>
+                (x .@? "DBParameterGroupName")
+                <*> (x .@? "Description")
+
+-- | Contains the result of a successful invocation of the
+-- ModifyDBParameterGroup or ResetDBParameterGroup action.
+--
+-- /See:/ 'dbParameterGroupNameMessage' smart constructor.
+newtype DBParameterGroupNameMessage = DBParameterGroupNameMessage'
+    { _dpgnmDBParameterGroupName :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBParameterGroupNameMessage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpgnmDBParameterGroupName'
+dbParameterGroupNameMessage
+    :: DBParameterGroupNameMessage
+dbParameterGroupNameMessage =
+    DBParameterGroupNameMessage'
+    { _dpgnmDBParameterGroupName = Nothing
+    }
+
+-- | Provides the name of the DB parameter group.
+dpgnmDBParameterGroupName :: Lens' DBParameterGroupNameMessage (Maybe Text)
+dpgnmDBParameterGroupName = lens _dpgnmDBParameterGroupName (\ s a -> s{_dpgnmDBParameterGroupName = a});
+
+instance FromXML DBParameterGroupNameMessage where
+        parseXML x
+          = DBParameterGroupNameMessage' <$>
+              (x .@? "DBParameterGroupName")
+
+-- | The status of the DB parameter group.
+--
+-- This data type is used as a response element in the following actions:
+--
+-- -   CreateDBInstance
+-- -   CreateDBInstanceReadReplica
+-- -   DeleteDBInstance
+-- -   ModifyDBInstance
+-- -   RebootDBInstance
+-- -   RestoreDBInstanceFromDBSnapshot
+--
+-- /See:/ 'dbParameterGroupStatus' smart constructor.
+data DBParameterGroupStatus = DBParameterGroupStatus'
+    { _dpgsDBParameterGroupName :: !(Maybe Text)
+    , _dpgsParameterApplyStatus :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBParameterGroupStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpgsDBParameterGroupName'
+--
+-- * 'dpgsParameterApplyStatus'
+dbParameterGroupStatus
+    :: DBParameterGroupStatus
+dbParameterGroupStatus =
+    DBParameterGroupStatus'
+    { _dpgsDBParameterGroupName = Nothing
+    , _dpgsParameterApplyStatus = Nothing
+    }
+
+-- | The name of the DP parameter group.
+dpgsDBParameterGroupName :: Lens' DBParameterGroupStatus (Maybe Text)
+dpgsDBParameterGroupName = lens _dpgsDBParameterGroupName (\ s a -> s{_dpgsDBParameterGroupName = a});
+
+-- | The status of parameter updates.
+dpgsParameterApplyStatus :: Lens' DBParameterGroupStatus (Maybe Text)
+dpgsParameterApplyStatus = lens _dpgsParameterApplyStatus (\ s a -> s{_dpgsParameterApplyStatus = a});
+
+instance FromXML DBParameterGroupStatus where
+        parseXML x
+          = DBParameterGroupStatus' <$>
+              (x .@? "DBParameterGroupName") <*>
+                (x .@? "ParameterApplyStatus")
+
+-- | Contains the result of a successful invocation of the following actions:
+--
+-- -   DescribeDBSecurityGroups
+-- -   AuthorizeDBSecurityGroupIngress
+-- -   CreateDBSecurityGroup
+-- -   RevokeDBSecurityGroupIngress
+--
+-- This data type is used as a response element in the
+-- DescribeDBSecurityGroups action.
+--
+-- /See:/ 'dbSecurityGroup' smart constructor.
+data DBSecurityGroup = DBSecurityGroup'
+    { _dsgVPCId                      :: !(Maybe Text)
+    , _dsgOwnerId                    :: !(Maybe Text)
+    , _dsgIPRanges                   :: !(Maybe [IPRange])
+    , _dsgDBSecurityGroupName        :: !(Maybe Text)
+    , _dsgEC2SecurityGroups          :: !(Maybe [EC2SecurityGroup])
+    , _dsgDBSecurityGroupDescription :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBSecurityGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsgVPCId'
+--
+-- * 'dsgOwnerId'
+--
+-- * 'dsgIPRanges'
+--
+-- * 'dsgDBSecurityGroupName'
+--
+-- * 'dsgEC2SecurityGroups'
+--
+-- * 'dsgDBSecurityGroupDescription'
+dbSecurityGroup
+    :: DBSecurityGroup
+dbSecurityGroup =
+    DBSecurityGroup'
+    { _dsgVPCId = Nothing
+    , _dsgOwnerId = Nothing
+    , _dsgIPRanges = Nothing
+    , _dsgDBSecurityGroupName = Nothing
+    , _dsgEC2SecurityGroups = Nothing
+    , _dsgDBSecurityGroupDescription = Nothing
+    }
+
+-- | Provides the VpcId of the DB security group.
+dsgVPCId :: Lens' DBSecurityGroup (Maybe Text)
+dsgVPCId = lens _dsgVPCId (\ s a -> s{_dsgVPCId = a});
+
+-- | Provides the AWS ID of the owner of a specific DB security group.
+dsgOwnerId :: Lens' DBSecurityGroup (Maybe Text)
+dsgOwnerId = lens _dsgOwnerId (\ s a -> s{_dsgOwnerId = a});
+
+-- | Contains a list of IPRange elements.
+dsgIPRanges :: Lens' DBSecurityGroup [IPRange]
+dsgIPRanges = lens _dsgIPRanges (\ s a -> s{_dsgIPRanges = a}) . _Default . _Coerce;
+
+-- | Specifies the name of the DB security group.
+dsgDBSecurityGroupName :: Lens' DBSecurityGroup (Maybe Text)
+dsgDBSecurityGroupName = lens _dsgDBSecurityGroupName (\ s a -> s{_dsgDBSecurityGroupName = a});
+
+-- | Contains a list of EC2SecurityGroup elements.
+dsgEC2SecurityGroups :: Lens' DBSecurityGroup [EC2SecurityGroup]
+dsgEC2SecurityGroups = lens _dsgEC2SecurityGroups (\ s a -> s{_dsgEC2SecurityGroups = a}) . _Default . _Coerce;
+
+-- | Provides the description of the DB security group.
+dsgDBSecurityGroupDescription :: Lens' DBSecurityGroup (Maybe Text)
+dsgDBSecurityGroupDescription = lens _dsgDBSecurityGroupDescription (\ s a -> s{_dsgDBSecurityGroupDescription = a});
+
+instance FromXML DBSecurityGroup where
+        parseXML x
+          = DBSecurityGroup' <$>
+              (x .@? "VpcId") <*> (x .@? "OwnerId") <*>
+                (x .@? "IPRanges" .!@ mempty >>=
+                   may (parseXMLList "IPRange"))
+                <*> (x .@? "DBSecurityGroupName")
+                <*>
+                (x .@? "EC2SecurityGroups" .!@ mempty >>=
+                   may (parseXMLList "EC2SecurityGroup"))
+                <*> (x .@? "DBSecurityGroupDescription")
+
+-- | This data type is used as a response element in the following actions:
+--
+-- -   ModifyDBInstance
+-- -   RebootDBInstance
+-- -   RestoreDBInstanceFromDBSnapshot
+-- -   RestoreDBInstanceToPointInTime
+--
+-- /See:/ 'dbSecurityGroupMembership' smart constructor.
+data DBSecurityGroupMembership = DBSecurityGroupMembership'
+    { _dsgmStatus              :: !(Maybe Text)
+    , _dsgmDBSecurityGroupName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBSecurityGroupMembership' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsgmStatus'
+--
+-- * 'dsgmDBSecurityGroupName'
+dbSecurityGroupMembership
+    :: DBSecurityGroupMembership
+dbSecurityGroupMembership =
+    DBSecurityGroupMembership'
+    { _dsgmStatus = Nothing
+    , _dsgmDBSecurityGroupName = Nothing
+    }
+
+-- | The status of the DB security group.
+dsgmStatus :: Lens' DBSecurityGroupMembership (Maybe Text)
+dsgmStatus = lens _dsgmStatus (\ s a -> s{_dsgmStatus = a});
+
+-- | The name of the DB security group.
+dsgmDBSecurityGroupName :: Lens' DBSecurityGroupMembership (Maybe Text)
+dsgmDBSecurityGroupName = lens _dsgmDBSecurityGroupName (\ s a -> s{_dsgmDBSecurityGroupName = a});
+
+instance FromXML DBSecurityGroupMembership where
+        parseXML x
+          = DBSecurityGroupMembership' <$>
+              (x .@? "Status") <*> (x .@? "DBSecurityGroupName")
+
+-- | Contains the result of a successful invocation of the following actions:
+--
+-- -   CreateDBSnapshot
+-- -   DeleteDBSnapshot
+--
+-- This data type is used as a response element in the DescribeDBSnapshots
+-- action.
+--
+-- /See:/ 'dbSnapshot' smart constructor.
+data DBSnapshot = DBSnapshot'
+    { _dsEngineVersion              :: !(Maybe Text)
+    , _dsStatus                     :: !(Maybe Text)
+    , _dsMasterUsername             :: !(Maybe Text)
+    , _dsSourceRegion               :: !(Maybe Text)
+    , _dsIOPS                       :: !(Maybe Int)
+    , _dsInstanceCreateTime         :: !(Maybe ISO8601)
+    , _dsVPCId                      :: !(Maybe Text)
+    , _dsEngine                     :: !(Maybe Text)
+    , _dsEncrypted                  :: !(Maybe Bool)
+    , _dsDBSnapshotIdentifier       :: !(Maybe Text)
+    , _dsLicenseModel               :: !(Maybe Text)
+    , _dsSnapshotType               :: !(Maybe Text)
+    , _dsDBInstanceIdentifier       :: !(Maybe Text)
+    , _dsSourceDBSnapshotIdentifier :: !(Maybe Text)
+    , _dsAvailabilityZone           :: !(Maybe Text)
+    , _dsKMSKeyId                   :: !(Maybe Text)
+    , _dsSnapshotCreateTime         :: !(Maybe ISO8601)
+    , _dsAllocatedStorage           :: !(Maybe Int)
+    , _dsTDECredentialARN           :: !(Maybe Text)
+    , _dsOptionGroupName            :: !(Maybe Text)
+    , _dsPercentProgress            :: !(Maybe Int)
+    , _dsPort                       :: !(Maybe Int)
+    , _dsStorageType                :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBSnapshot' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsEngineVersion'
+--
+-- * 'dsStatus'
+--
+-- * 'dsMasterUsername'
+--
+-- * 'dsSourceRegion'
+--
+-- * 'dsIOPS'
+--
+-- * 'dsInstanceCreateTime'
+--
+-- * 'dsVPCId'
+--
+-- * 'dsEngine'
+--
+-- * 'dsEncrypted'
+--
+-- * 'dsDBSnapshotIdentifier'
+--
+-- * 'dsLicenseModel'
+--
+-- * 'dsSnapshotType'
+--
+-- * 'dsDBInstanceIdentifier'
+--
+-- * 'dsSourceDBSnapshotIdentifier'
+--
+-- * 'dsAvailabilityZone'
+--
+-- * 'dsKMSKeyId'
+--
+-- * 'dsSnapshotCreateTime'
+--
+-- * 'dsAllocatedStorage'
+--
+-- * 'dsTDECredentialARN'
+--
+-- * 'dsOptionGroupName'
+--
+-- * 'dsPercentProgress'
+--
+-- * 'dsPort'
+--
+-- * 'dsStorageType'
+dbSnapshot
+    :: DBSnapshot
+dbSnapshot =
+    DBSnapshot'
+    { _dsEngineVersion = Nothing
+    , _dsStatus = Nothing
+    , _dsMasterUsername = Nothing
+    , _dsSourceRegion = Nothing
+    , _dsIOPS = Nothing
+    , _dsInstanceCreateTime = Nothing
+    , _dsVPCId = Nothing
+    , _dsEngine = Nothing
+    , _dsEncrypted = Nothing
+    , _dsDBSnapshotIdentifier = Nothing
+    , _dsLicenseModel = Nothing
+    , _dsSnapshotType = Nothing
+    , _dsDBInstanceIdentifier = Nothing
+    , _dsSourceDBSnapshotIdentifier = Nothing
+    , _dsAvailabilityZone = Nothing
+    , _dsKMSKeyId = Nothing
+    , _dsSnapshotCreateTime = Nothing
+    , _dsAllocatedStorage = Nothing
+    , _dsTDECredentialARN = Nothing
+    , _dsOptionGroupName = Nothing
+    , _dsPercentProgress = Nothing
+    , _dsPort = Nothing
+    , _dsStorageType = Nothing
+    }
+
+-- | Specifies the version of the database engine.
+dsEngineVersion :: Lens' DBSnapshot (Maybe Text)
+dsEngineVersion = lens _dsEngineVersion (\ s a -> s{_dsEngineVersion = a});
+
+-- | Specifies the status of this DB snapshot.
+dsStatus :: Lens' DBSnapshot (Maybe Text)
+dsStatus = lens _dsStatus (\ s a -> s{_dsStatus = a});
+
+-- | Provides the master username for the DB snapshot.
+dsMasterUsername :: Lens' DBSnapshot (Maybe Text)
+dsMasterUsername = lens _dsMasterUsername (\ s a -> s{_dsMasterUsername = a});
+
+-- | The region that the DB snapshot was created in or copied from.
+dsSourceRegion :: Lens' DBSnapshot (Maybe Text)
+dsSourceRegion = lens _dsSourceRegion (\ s a -> s{_dsSourceRegion = a});
+
+-- | Specifies the Provisioned IOPS (I\/O operations per second) value of the
+-- DB instance at the time of the snapshot.
+dsIOPS :: Lens' DBSnapshot (Maybe Int)
+dsIOPS = lens _dsIOPS (\ s a -> s{_dsIOPS = a});
+
+-- | Specifies the time when the snapshot was taken, in Universal Coordinated
+-- Time (UTC).
+dsInstanceCreateTime :: Lens' DBSnapshot (Maybe UTCTime)
+dsInstanceCreateTime = lens _dsInstanceCreateTime (\ s a -> s{_dsInstanceCreateTime = a}) . mapping _Time;
+
+-- | Provides the VPC ID associated with the DB snapshot.
+dsVPCId :: Lens' DBSnapshot (Maybe Text)
+dsVPCId = lens _dsVPCId (\ s a -> s{_dsVPCId = a});
+
+-- | Specifies the name of the database engine.
+dsEngine :: Lens' DBSnapshot (Maybe Text)
+dsEngine = lens _dsEngine (\ s a -> s{_dsEngine = a});
+
+-- | Specifies whether the DB snapshot is encrypted.
+dsEncrypted :: Lens' DBSnapshot (Maybe Bool)
+dsEncrypted = lens _dsEncrypted (\ s a -> s{_dsEncrypted = a});
+
+-- | Specifies the identifier for the DB snapshot.
+dsDBSnapshotIdentifier :: Lens' DBSnapshot (Maybe Text)
+dsDBSnapshotIdentifier = lens _dsDBSnapshotIdentifier (\ s a -> s{_dsDBSnapshotIdentifier = a});
+
+-- | License model information for the restored DB instance.
+dsLicenseModel :: Lens' DBSnapshot (Maybe Text)
+dsLicenseModel = lens _dsLicenseModel (\ s a -> s{_dsLicenseModel = a});
+
+-- | Provides the type of the DB snapshot.
+dsSnapshotType :: Lens' DBSnapshot (Maybe Text)
+dsSnapshotType = lens _dsSnapshotType (\ s a -> s{_dsSnapshotType = a});
+
+-- | Specifies the DB instance identifier of the DB instance this DB snapshot
+-- was created from.
+dsDBInstanceIdentifier :: Lens' DBSnapshot (Maybe Text)
+dsDBInstanceIdentifier = lens _dsDBInstanceIdentifier (\ s a -> s{_dsDBInstanceIdentifier = a});
+
+-- | The DB snapshot Arn that the DB snapshot was copied from. It only has
+-- value in case of cross customer or cross region copy.
+dsSourceDBSnapshotIdentifier :: Lens' DBSnapshot (Maybe Text)
+dsSourceDBSnapshotIdentifier = lens _dsSourceDBSnapshotIdentifier (\ s a -> s{_dsSourceDBSnapshotIdentifier = a});
+
+-- | Specifies the name of the Availability Zone the DB instance was located
+-- in at the time of the DB snapshot.
+dsAvailabilityZone :: Lens' DBSnapshot (Maybe Text)
+dsAvailabilityZone = lens _dsAvailabilityZone (\ s a -> s{_dsAvailabilityZone = a});
+
+-- | If 'Encrypted' is true, the KMS key identifier for the encrypted DB
+-- snapshot.
+dsKMSKeyId :: Lens' DBSnapshot (Maybe Text)
+dsKMSKeyId = lens _dsKMSKeyId (\ s a -> s{_dsKMSKeyId = a});
+
+-- | Provides the time when the snapshot was taken, in Universal Coordinated
+-- Time (UTC).
+dsSnapshotCreateTime :: Lens' DBSnapshot (Maybe UTCTime)
+dsSnapshotCreateTime = lens _dsSnapshotCreateTime (\ s a -> s{_dsSnapshotCreateTime = a}) . mapping _Time;
+
+-- | Specifies the allocated storage size in gigabytes (GB).
+dsAllocatedStorage :: Lens' DBSnapshot (Maybe Int)
+dsAllocatedStorage = lens _dsAllocatedStorage (\ s a -> s{_dsAllocatedStorage = a});
+
+-- | The ARN from the Key Store with which to associate the instance for TDE
+-- encryption.
+dsTDECredentialARN :: Lens' DBSnapshot (Maybe Text)
+dsTDECredentialARN = lens _dsTDECredentialARN (\ s a -> s{_dsTDECredentialARN = a});
+
+-- | Provides the option group name for the DB snapshot.
+dsOptionGroupName :: Lens' DBSnapshot (Maybe Text)
+dsOptionGroupName = lens _dsOptionGroupName (\ s a -> s{_dsOptionGroupName = a});
+
+-- | The percentage of the estimated data that has been transferred.
+dsPercentProgress :: Lens' DBSnapshot (Maybe Int)
+dsPercentProgress = lens _dsPercentProgress (\ s a -> s{_dsPercentProgress = a});
+
+-- | Specifies the port that the database engine was listening on at the time
+-- of the snapshot.
+dsPort :: Lens' DBSnapshot (Maybe Int)
+dsPort = lens _dsPort (\ s a -> s{_dsPort = a});
+
+-- | Specifies the storage type associated with DB Snapshot.
+dsStorageType :: Lens' DBSnapshot (Maybe Text)
+dsStorageType = lens _dsStorageType (\ s a -> s{_dsStorageType = a});
+
+instance FromXML DBSnapshot where
+        parseXML x
+          = DBSnapshot' <$>
+              (x .@? "EngineVersion") <*> (x .@? "Status") <*>
+                (x .@? "MasterUsername")
+                <*> (x .@? "SourceRegion")
+                <*> (x .@? "Iops")
+                <*> (x .@? "InstanceCreateTime")
+                <*> (x .@? "VpcId")
+                <*> (x .@? "Engine")
+                <*> (x .@? "Encrypted")
+                <*> (x .@? "DBSnapshotIdentifier")
+                <*> (x .@? "LicenseModel")
+                <*> (x .@? "SnapshotType")
+                <*> (x .@? "DBInstanceIdentifier")
+                <*> (x .@? "SourceDBSnapshotIdentifier")
+                <*> (x .@? "AvailabilityZone")
+                <*> (x .@? "KmsKeyId")
+                <*> (x .@? "SnapshotCreateTime")
+                <*> (x .@? "AllocatedStorage")
+                <*> (x .@? "TdeCredentialArn")
+                <*> (x .@? "OptionGroupName")
+                <*> (x .@? "PercentProgress")
+                <*> (x .@? "Port")
+                <*> (x .@? "StorageType")
+
+-- | Contains the result of a successful invocation of the following actions:
+--
+-- -   CreateDBSubnetGroup
+-- -   ModifyDBSubnetGroup
+-- -   DescribeDBSubnetGroups
+-- -   DeleteDBSubnetGroup
+--
+-- This data type is used as a response element in the
+-- DescribeDBSubnetGroups action.
+--
+-- /See:/ 'dbSubnetGroup' smart constructor.
+data DBSubnetGroup = DBSubnetGroup'
+    { _dbsgDBSubnetGroupName        :: !(Maybe Text)
+    , _dbsgVPCId                    :: !(Maybe Text)
+    , _dbsgSubnets                  :: !(Maybe [Subnet])
+    , _dbsgDBSubnetGroupDescription :: !(Maybe Text)
+    , _dbsgSubnetGroupStatus        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DBSubnetGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dbsgDBSubnetGroupName'
+--
+-- * 'dbsgVPCId'
+--
+-- * 'dbsgSubnets'
+--
+-- * 'dbsgDBSubnetGroupDescription'
+--
+-- * 'dbsgSubnetGroupStatus'
+dbSubnetGroup
+    :: DBSubnetGroup
+dbSubnetGroup =
+    DBSubnetGroup'
+    { _dbsgDBSubnetGroupName = Nothing
+    , _dbsgVPCId = Nothing
+    , _dbsgSubnets = Nothing
+    , _dbsgDBSubnetGroupDescription = Nothing
+    , _dbsgSubnetGroupStatus = Nothing
+    }
+
+-- | Specifies the name of the DB subnet group.
+dbsgDBSubnetGroupName :: Lens' DBSubnetGroup (Maybe Text)
+dbsgDBSubnetGroupName = lens _dbsgDBSubnetGroupName (\ s a -> s{_dbsgDBSubnetGroupName = a});
+
+-- | Provides the VpcId of the DB subnet group.
+dbsgVPCId :: Lens' DBSubnetGroup (Maybe Text)
+dbsgVPCId = lens _dbsgVPCId (\ s a -> s{_dbsgVPCId = a});
+
+-- | Contains a list of Subnet elements.
+dbsgSubnets :: Lens' DBSubnetGroup [Subnet]
+dbsgSubnets = lens _dbsgSubnets (\ s a -> s{_dbsgSubnets = a}) . _Default . _Coerce;
+
+-- | Provides the description of the DB subnet group.
+dbsgDBSubnetGroupDescription :: Lens' DBSubnetGroup (Maybe Text)
+dbsgDBSubnetGroupDescription = lens _dbsgDBSubnetGroupDescription (\ s a -> s{_dbsgDBSubnetGroupDescription = a});
+
+-- | Provides the status of the DB subnet group.
+dbsgSubnetGroupStatus :: Lens' DBSubnetGroup (Maybe Text)
+dbsgSubnetGroupStatus = lens _dbsgSubnetGroupStatus (\ s a -> s{_dbsgSubnetGroupStatus = a});
+
+instance FromXML DBSubnetGroup where
+        parseXML x
+          = DBSubnetGroup' <$>
+              (x .@? "DBSubnetGroupName") <*> (x .@? "VpcId") <*>
+                (x .@? "Subnets" .!@ mempty >>=
+                   may (parseXMLList "Subnet"))
+                <*> (x .@? "DBSubnetGroupDescription")
+                <*> (x .@? "SubnetGroupStatus")
+
+-- | This data type is used as a response element to DescribeDBLogFiles.
+--
+-- /See:/ 'describeDBLogFilesDetails' smart constructor.
+data DescribeDBLogFilesDetails = DescribeDBLogFilesDetails'
+    { _ddlfdLastWritten :: !(Maybe Integer)
+    , _ddlfdSize        :: !(Maybe Integer)
+    , _ddlfdLogFileName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDBLogFilesDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddlfdLastWritten'
+--
+-- * 'ddlfdSize'
+--
+-- * 'ddlfdLogFileName'
+describeDBLogFilesDetails
+    :: DescribeDBLogFilesDetails
+describeDBLogFilesDetails =
+    DescribeDBLogFilesDetails'
+    { _ddlfdLastWritten = Nothing
+    , _ddlfdSize = Nothing
+    , _ddlfdLogFileName = Nothing
+    }
+
+-- | A POSIX timestamp when the last log entry was written.
+ddlfdLastWritten :: Lens' DescribeDBLogFilesDetails (Maybe Integer)
+ddlfdLastWritten = lens _ddlfdLastWritten (\ s a -> s{_ddlfdLastWritten = a});
+
+-- | The size, in bytes, of the log file for the specified DB instance.
+ddlfdSize :: Lens' DescribeDBLogFilesDetails (Maybe Integer)
+ddlfdSize = lens _ddlfdSize (\ s a -> s{_ddlfdSize = a});
+
+-- | The name of the log file for the specified DB instance.
+ddlfdLogFileName :: Lens' DescribeDBLogFilesDetails (Maybe Text)
+ddlfdLogFileName = lens _ddlfdLogFileName (\ s a -> s{_ddlfdLogFileName = a});
+
+instance FromXML DescribeDBLogFilesDetails where
+        parseXML x
+          = DescribeDBLogFilesDetails' <$>
+              (x .@? "LastWritten") <*> (x .@? "Size") <*>
+                (x .@? "LogFileName")
+
+-- | An Active Directory Domain membership record associated with the DB
+-- instance.
+--
+-- /See:/ 'domainMembership' smart constructor.
+data DomainMembership = DomainMembership'
+    { _dmStatus       :: !(Maybe Text)
+    , _dmDomain       :: !(Maybe Text)
+    , _dmConnectivity :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DomainMembership' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmStatus'
+--
+-- * 'dmDomain'
+--
+-- * 'dmConnectivity'
+domainMembership
+    :: DomainMembership
+domainMembership =
+    DomainMembership'
+    { _dmStatus = Nothing
+    , _dmDomain = Nothing
+    , _dmConnectivity = Nothing
+    }
+
+-- | The status of the DB instance\'s Active Directory Domain membership
+-- (e.g. joined, pending-join, failed etc).
+dmStatus :: Lens' DomainMembership (Maybe Text)
+dmStatus = lens _dmStatus (\ s a -> s{_dmStatus = a});
+
+-- | The identifier of the Active Directory Domain.
+dmDomain :: Lens' DomainMembership (Maybe Text)
+dmDomain = lens _dmDomain (\ s a -> s{_dmDomain = a});
+
+-- | The observed connectivity of the Active Directory Domain.
+dmConnectivity :: Lens' DomainMembership (Maybe Text)
+dmConnectivity = lens _dmConnectivity (\ s a -> s{_dmConnectivity = a});
+
+instance FromXML DomainMembership where
+        parseXML x
+          = DomainMembership' <$>
+              (x .@? "Status") <*> (x .@? "Domain") <*>
+                (x .@? "Connectivity")
+
+-- | This data type is used as a response element in the following actions:
+--
+-- -   AuthorizeDBSecurityGroupIngress
+-- -   DescribeDBSecurityGroups
+-- -   RevokeDBSecurityGroupIngress
+--
+-- /See:/ 'ec2SecurityGroup' smart constructor.
+data EC2SecurityGroup = EC2SecurityGroup'
+    { _esgStatus                  :: !(Maybe Text)
+    , _esgEC2SecurityGroupOwnerId :: !(Maybe Text)
+    , _esgEC2SecurityGroupName    :: !(Maybe Text)
+    , _esgEC2SecurityGroupId      :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EC2SecurityGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'esgStatus'
+--
+-- * 'esgEC2SecurityGroupOwnerId'
+--
+-- * 'esgEC2SecurityGroupName'
+--
+-- * 'esgEC2SecurityGroupId'
+ec2SecurityGroup
+    :: EC2SecurityGroup
+ec2SecurityGroup =
+    EC2SecurityGroup'
+    { _esgStatus = Nothing
+    , _esgEC2SecurityGroupOwnerId = Nothing
+    , _esgEC2SecurityGroupName = Nothing
+    , _esgEC2SecurityGroupId = Nothing
+    }
+
+-- | Provides the status of the EC2 security group. Status can be
+-- \"authorizing\", \"authorized\", \"revoking\", and \"revoked\".
+esgStatus :: Lens' EC2SecurityGroup (Maybe Text)
+esgStatus = lens _esgStatus (\ s a -> s{_esgStatus = a});
+
+-- | Specifies the AWS ID of the owner of the EC2 security group specified in
+-- the 'EC2SecurityGroupName' field.
+esgEC2SecurityGroupOwnerId :: Lens' EC2SecurityGroup (Maybe Text)
+esgEC2SecurityGroupOwnerId = lens _esgEC2SecurityGroupOwnerId (\ s a -> s{_esgEC2SecurityGroupOwnerId = a});
+
+-- | Specifies the name of the EC2 security group.
+esgEC2SecurityGroupName :: Lens' EC2SecurityGroup (Maybe Text)
+esgEC2SecurityGroupName = lens _esgEC2SecurityGroupName (\ s a -> s{_esgEC2SecurityGroupName = a});
+
+-- | Specifies the id of the EC2 security group.
+esgEC2SecurityGroupId :: Lens' EC2SecurityGroup (Maybe Text)
+esgEC2SecurityGroupId = lens _esgEC2SecurityGroupId (\ s a -> s{_esgEC2SecurityGroupId = a});
+
+instance FromXML EC2SecurityGroup where
+        parseXML x
+          = EC2SecurityGroup' <$>
+              (x .@? "Status") <*>
+                (x .@? "EC2SecurityGroupOwnerId")
+                <*> (x .@? "EC2SecurityGroupName")
+                <*> (x .@? "EC2SecurityGroupId")
+
+-- | This data type is used as a response element in the following actions:
+--
+-- -   CreateDBInstance
+-- -   DescribeDBInstances
+-- -   DeleteDBInstance
+--
+-- /See:/ 'endpoint' smart constructor.
+data Endpoint = Endpoint'
+    { _eAddress :: !(Maybe Text)
+    , _ePort    :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Endpoint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eAddress'
+--
+-- * 'ePort'
+endpoint
+    :: Endpoint
+endpoint =
+    Endpoint'
+    { _eAddress = Nothing
+    , _ePort = Nothing
+    }
+
+-- | Specifies the DNS address of the DB instance.
+eAddress :: Lens' Endpoint (Maybe Text)
+eAddress = lens _eAddress (\ s a -> s{_eAddress = a});
+
+-- | Specifies the port that the database engine is listening on.
+ePort :: Lens' Endpoint (Maybe Int)
+ePort = lens _ePort (\ s a -> s{_ePort = a});
+
+instance FromXML Endpoint where
+        parseXML x
+          = Endpoint' <$> (x .@? "Address") <*> (x .@? "Port")
+
+-- | Contains the result of a successful invocation of the
+-- DescribeEngineDefaultParameters action.
+--
+-- /See:/ 'engineDefaults' smart constructor.
+data EngineDefaults = EngineDefaults'
+    { _edDBParameterGroupFamily :: !(Maybe Text)
+    , _edParameters             :: !(Maybe [Parameter])
+    , _edMarker                 :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EngineDefaults' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'edDBParameterGroupFamily'
+--
+-- * 'edParameters'
+--
+-- * 'edMarker'
+engineDefaults
+    :: EngineDefaults
+engineDefaults =
+    EngineDefaults'
+    { _edDBParameterGroupFamily = Nothing
+    , _edParameters = Nothing
+    , _edMarker = Nothing
+    }
+
+-- | Specifies the name of the DB parameter group family that the engine
+-- default parameters apply to.
+edDBParameterGroupFamily :: Lens' EngineDefaults (Maybe Text)
+edDBParameterGroupFamily = lens _edDBParameterGroupFamily (\ s a -> s{_edDBParameterGroupFamily = a});
+
+-- | Contains a list of engine default parameters.
+edParameters :: Lens' EngineDefaults [Parameter]
+edParameters = lens _edParameters (\ s a -> s{_edParameters = a}) . _Default . _Coerce;
+
+-- | An optional pagination token provided by a previous EngineDefaults
+-- request. If this parameter is specified, the response includes only
+-- records beyond the marker, up to the value specified by 'MaxRecords' .
+edMarker :: Lens' EngineDefaults (Maybe Text)
+edMarker = lens _edMarker (\ s a -> s{_edMarker = a});
+
+instance FromXML EngineDefaults where
+        parseXML x
+          = EngineDefaults' <$>
+              (x .@? "DBParameterGroupFamily") <*>
+                (x .@? "Parameters" .!@ mempty >>=
+                   may (parseXMLList "Parameter"))
+                <*> (x .@? "Marker")
+
+-- | This data type is used as a response element in the DescribeEvents
+-- action.
+--
+-- /See:/ 'event' smart constructor.
+data Event = Event'
+    { _eSourceType       :: !(Maybe SourceType)
+    , _eSourceIdentifier :: !(Maybe Text)
+    , _eDate             :: !(Maybe ISO8601)
+    , _eEventCategories  :: !(Maybe [Text])
+    , _eMessage          :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Event' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eSourceType'
+--
+-- * 'eSourceIdentifier'
+--
+-- * 'eDate'
+--
+-- * 'eEventCategories'
+--
+-- * 'eMessage'
+event
+    :: Event
+event =
+    Event'
+    { _eSourceType = Nothing
+    , _eSourceIdentifier = Nothing
+    , _eDate = Nothing
+    , _eEventCategories = Nothing
+    , _eMessage = Nothing
+    }
+
+-- | Specifies the source type for this event.
+eSourceType :: Lens' Event (Maybe SourceType)
+eSourceType = lens _eSourceType (\ s a -> s{_eSourceType = a});
+
+-- | Provides the identifier for the source of the event.
+eSourceIdentifier :: Lens' Event (Maybe Text)
+eSourceIdentifier = lens _eSourceIdentifier (\ s a -> s{_eSourceIdentifier = a});
+
+-- | Specifies the date and time of the event.
+eDate :: Lens' Event (Maybe UTCTime)
+eDate = lens _eDate (\ s a -> s{_eDate = a}) . mapping _Time;
+
+-- | Specifies the category for the event.
+eEventCategories :: Lens' Event [Text]
+eEventCategories = lens _eEventCategories (\ s a -> s{_eEventCategories = a}) . _Default . _Coerce;
+
+-- | Provides the text of this event.
+eMessage :: Lens' Event (Maybe Text)
+eMessage = lens _eMessage (\ s a -> s{_eMessage = a});
+
+instance FromXML Event where
+        parseXML x
+          = Event' <$>
+              (x .@? "SourceType") <*> (x .@? "SourceIdentifier")
+                <*> (x .@? "Date")
+                <*>
+                (x .@? "EventCategories" .!@ mempty >>=
+                   may (parseXMLList "EventCategory"))
+                <*> (x .@? "Message")
+
+-- | Contains the results of a successful invocation of the
+-- DescribeEventCategories action.
+--
+-- /See:/ 'eventCategoriesMap' smart constructor.
+data EventCategoriesMap = EventCategoriesMap'
+    { _ecmSourceType      :: !(Maybe Text)
+    , _ecmEventCategories :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EventCategoriesMap' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ecmSourceType'
+--
+-- * 'ecmEventCategories'
+eventCategoriesMap
+    :: EventCategoriesMap
+eventCategoriesMap =
+    EventCategoriesMap'
+    { _ecmSourceType = Nothing
+    , _ecmEventCategories = Nothing
+    }
+
+-- | The source type that the returned categories belong to
+ecmSourceType :: Lens' EventCategoriesMap (Maybe Text)
+ecmSourceType = lens _ecmSourceType (\ s a -> s{_ecmSourceType = a});
+
+-- | The event categories for the specified source type
+ecmEventCategories :: Lens' EventCategoriesMap [Text]
+ecmEventCategories = lens _ecmEventCategories (\ s a -> s{_ecmEventCategories = a}) . _Default . _Coerce;
+
+instance FromXML EventCategoriesMap where
+        parseXML x
+          = EventCategoriesMap' <$>
+              (x .@? "SourceType") <*>
+                (x .@? "EventCategories" .!@ mempty >>=
+                   may (parseXMLList "EventCategory"))
+
+-- | Contains the results of a successful invocation of the
+-- DescribeEventSubscriptions action.
+--
+-- /See:/ 'eventSubscription' smart constructor.
+data EventSubscription = EventSubscription'
+    { _esCustomerAWSId            :: !(Maybe Text)
+    , _esStatus                   :: !(Maybe Text)
+    , _esCustSubscriptionId       :: !(Maybe Text)
+    , _esSNSTopicARN              :: !(Maybe Text)
+    , _esEnabled                  :: !(Maybe Bool)
+    , _esSourceType               :: !(Maybe Text)
+    , _esSubscriptionCreationTime :: !(Maybe Text)
+    , _esEventCategoriesList      :: !(Maybe [Text])
+    , _esSourceIdsList            :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EventSubscription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'esCustomerAWSId'
+--
+-- * 'esStatus'
+--
+-- * 'esCustSubscriptionId'
+--
+-- * 'esSNSTopicARN'
+--
+-- * 'esEnabled'
+--
+-- * 'esSourceType'
+--
+-- * 'esSubscriptionCreationTime'
+--
+-- * 'esEventCategoriesList'
+--
+-- * 'esSourceIdsList'
+eventSubscription
+    :: EventSubscription
+eventSubscription =
+    EventSubscription'
+    { _esCustomerAWSId = Nothing
+    , _esStatus = Nothing
+    , _esCustSubscriptionId = Nothing
+    , _esSNSTopicARN = Nothing
+    , _esEnabled = Nothing
+    , _esSourceType = Nothing
+    , _esSubscriptionCreationTime = Nothing
+    , _esEventCategoriesList = Nothing
+    , _esSourceIdsList = Nothing
+    }
+
+-- | The AWS customer account associated with the RDS event notification
+-- subscription.
+esCustomerAWSId :: Lens' EventSubscription (Maybe Text)
+esCustomerAWSId = lens _esCustomerAWSId (\ s a -> s{_esCustomerAWSId = a});
+
+-- | The status of the RDS event notification subscription.
+--
+-- Constraints:
+--
+-- Can be one of the following: creating | modifying | deleting | active |
+-- no-permission | topic-not-exist
+--
+-- The status \"no-permission\" indicates that RDS no longer has permission
+-- to post to the SNS topic. The status \"topic-not-exist\" indicates that
+-- the topic was deleted after the subscription was created.
+esStatus :: Lens' EventSubscription (Maybe Text)
+esStatus = lens _esStatus (\ s a -> s{_esStatus = a});
+
+-- | The RDS event notification subscription Id.
+esCustSubscriptionId :: Lens' EventSubscription (Maybe Text)
+esCustSubscriptionId = lens _esCustSubscriptionId (\ s a -> s{_esCustSubscriptionId = a});
+
+-- | The topic ARN of the RDS event notification subscription.
+esSNSTopicARN :: Lens' EventSubscription (Maybe Text)
+esSNSTopicARN = lens _esSNSTopicARN (\ s a -> s{_esSNSTopicARN = a});
+
+-- | A Boolean value indicating if the subscription is enabled. True
+-- indicates the subscription is enabled.
+esEnabled :: Lens' EventSubscription (Maybe Bool)
+esEnabled = lens _esEnabled (\ s a -> s{_esEnabled = a});
+
+-- | The source type for the RDS event notification subscription.
+esSourceType :: Lens' EventSubscription (Maybe Text)
+esSourceType = lens _esSourceType (\ s a -> s{_esSourceType = a});
+
+-- | The time the RDS event notification subscription was created.
+esSubscriptionCreationTime :: Lens' EventSubscription (Maybe Text)
+esSubscriptionCreationTime = lens _esSubscriptionCreationTime (\ s a -> s{_esSubscriptionCreationTime = a});
+
+-- | A list of event categories for the RDS event notification subscription.
+esEventCategoriesList :: Lens' EventSubscription [Text]
+esEventCategoriesList = lens _esEventCategoriesList (\ s a -> s{_esEventCategoriesList = a}) . _Default . _Coerce;
+
+-- | A list of source IDs for the RDS event notification subscription.
+esSourceIdsList :: Lens' EventSubscription [Text]
+esSourceIdsList = lens _esSourceIdsList (\ s a -> s{_esSourceIdsList = a}) . _Default . _Coerce;
+
+instance FromXML EventSubscription where
+        parseXML x
+          = EventSubscription' <$>
+              (x .@? "CustomerAwsId") <*> (x .@? "Status") <*>
+                (x .@? "CustSubscriptionId")
+                <*> (x .@? "SnsTopicArn")
+                <*> (x .@? "Enabled")
+                <*> (x .@? "SourceType")
+                <*> (x .@? "SubscriptionCreationTime")
+                <*>
+                (x .@? "EventCategoriesList" .!@ mempty >>=
+                   may (parseXMLList "EventCategory"))
+                <*>
+                (x .@? "SourceIdsList" .!@ mempty >>=
+                   may (parseXMLList "SourceId"))
+
+-- | /See:/ 'filter'' smart constructor.
+data Filter = Filter'
+    { _fName   :: !Text
+    , _fValues :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Filter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fName'
+--
+-- * 'fValues'
+filter'
+    :: Text -- ^ 'fName'
+    -> Filter
+filter' pName_ =
+    Filter'
+    { _fName = pName_
+    , _fValues = mempty
+    }
+
+-- | This parameter is not currently supported.
+fName :: Lens' Filter Text
+fName = lens _fName (\ s a -> s{_fName = a});
+
+-- | This parameter is not currently supported.
+fValues :: Lens' Filter [Text]
+fValues = lens _fValues (\ s a -> s{_fValues = a}) . _Coerce;
+
+instance ToQuery Filter where
+        toQuery Filter'{..}
+          = mconcat
+              ["Name" =: _fName,
+               "Values" =: toQueryList "Value" _fValues]
+
+-- | This data type is used as a response element in the
+-- DescribeDBSecurityGroups action.
+--
+-- /See:/ 'ipRange' smart constructor.
+data IPRange = IPRange'
+    { _irStatus :: !(Maybe Text)
+    , _irCIdRIP :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IPRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'irStatus'
+--
+-- * 'irCIdRIP'
+ipRange
+    :: IPRange
+ipRange =
+    IPRange'
+    { _irStatus = Nothing
+    , _irCIdRIP = Nothing
+    }
+
+-- | Specifies the status of the IP range. Status can be \"authorizing\",
+-- \"authorized\", \"revoking\", and \"revoked\".
+irStatus :: Lens' IPRange (Maybe Text)
+irStatus = lens _irStatus (\ s a -> s{_irStatus = a});
+
+-- | Specifies the IP range.
+irCIdRIP :: Lens' IPRange (Maybe Text)
+irCIdRIP = lens _irCIdRIP (\ s a -> s{_irCIdRIP = a});
+
+instance FromXML IPRange where
+        parseXML x
+          = IPRange' <$> (x .@? "Status") <*> (x .@? "CIDRIP")
+
+-- | Option details.
+--
+-- /See:/ 'option' smart constructor.
+data Option = Option'
+    { _oOptionName                  :: !(Maybe Text)
+    , _oPermanent                   :: !(Maybe Bool)
+    , _oPersistent                  :: !(Maybe Bool)
+    , _oOptionDescription           :: !(Maybe Text)
+    , _oOptionSettings              :: !(Maybe [OptionSetting])
+    , _oVPCSecurityGroupMemberships :: !(Maybe [VPCSecurityGroupMembership])
+    , _oDBSecurityGroupMemberships  :: !(Maybe [DBSecurityGroupMembership])
+    , _oPort                        :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Option' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oOptionName'
+--
+-- * 'oPermanent'
+--
+-- * 'oPersistent'
+--
+-- * 'oOptionDescription'
+--
+-- * 'oOptionSettings'
+--
+-- * 'oVPCSecurityGroupMemberships'
+--
+-- * 'oDBSecurityGroupMemberships'
+--
+-- * 'oPort'
+option
+    :: Option
+option =
+    Option'
+    { _oOptionName = Nothing
+    , _oPermanent = Nothing
+    , _oPersistent = Nothing
+    , _oOptionDescription = Nothing
+    , _oOptionSettings = Nothing
+    , _oVPCSecurityGroupMemberships = Nothing
+    , _oDBSecurityGroupMemberships = Nothing
+    , _oPort = Nothing
+    }
+
+-- | The name of the option.
+oOptionName :: Lens' Option (Maybe Text)
+oOptionName = lens _oOptionName (\ s a -> s{_oOptionName = a});
+
+-- | Indicate if this option is permanent.
+oPermanent :: Lens' Option (Maybe Bool)
+oPermanent = lens _oPermanent (\ s a -> s{_oPermanent = a});
+
+-- | Indicate if this option is persistent.
+oPersistent :: Lens' Option (Maybe Bool)
+oPersistent = lens _oPersistent (\ s a -> s{_oPersistent = a});
+
+-- | The description of the option.
+oOptionDescription :: Lens' Option (Maybe Text)
+oOptionDescription = lens _oOptionDescription (\ s a -> s{_oOptionDescription = a});
+
+-- | The option settings for this option.
+oOptionSettings :: Lens' Option [OptionSetting]
+oOptionSettings = lens _oOptionSettings (\ s a -> s{_oOptionSettings = a}) . _Default . _Coerce;
+
+-- | If the option requires access to a port, then this VPC security group
+-- allows access to the port.
+oVPCSecurityGroupMemberships :: Lens' Option [VPCSecurityGroupMembership]
+oVPCSecurityGroupMemberships = lens _oVPCSecurityGroupMemberships (\ s a -> s{_oVPCSecurityGroupMemberships = a}) . _Default . _Coerce;
+
+-- | If the option requires access to a port, then this DB security group
+-- allows access to the port.
+oDBSecurityGroupMemberships :: Lens' Option [DBSecurityGroupMembership]
+oDBSecurityGroupMemberships = lens _oDBSecurityGroupMemberships (\ s a -> s{_oDBSecurityGroupMemberships = a}) . _Default . _Coerce;
+
+-- | If required, the port configured for this option to use.
+oPort :: Lens' Option (Maybe Int)
+oPort = lens _oPort (\ s a -> s{_oPort = a});
+
+instance FromXML Option where
+        parseXML x
+          = Option' <$>
+              (x .@? "OptionName") <*> (x .@? "Permanent") <*>
+                (x .@? "Persistent")
+                <*> (x .@? "OptionDescription")
+                <*>
+                (x .@? "OptionSettings" .!@ mempty >>=
+                   may (parseXMLList "OptionSetting"))
+                <*>
+                (x .@? "VpcSecurityGroupMemberships" .!@ mempty >>=
+                   may (parseXMLList "VpcSecurityGroupMembership"))
+                <*>
+                (x .@? "DBSecurityGroupMemberships" .!@ mempty >>=
+                   may (parseXMLList "DBSecurityGroup"))
+                <*> (x .@? "Port")
+
+-- | A list of all available options
+--
+-- /See:/ 'optionConfiguration' smart constructor.
+data OptionConfiguration = OptionConfiguration'
+    { _ocOptionSettings              :: !(Maybe [OptionSetting])
+    , _ocVPCSecurityGroupMemberships :: !(Maybe [Text])
+    , _ocDBSecurityGroupMemberships  :: !(Maybe [Text])
+    , _ocPort                        :: !(Maybe Int)
+    , _ocOptionName                  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OptionConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ocOptionSettings'
+--
+-- * 'ocVPCSecurityGroupMemberships'
+--
+-- * 'ocDBSecurityGroupMemberships'
+--
+-- * 'ocPort'
+--
+-- * 'ocOptionName'
+optionConfiguration
+    :: Text -- ^ 'ocOptionName'
+    -> OptionConfiguration
+optionConfiguration pOptionName_ =
+    OptionConfiguration'
+    { _ocOptionSettings = Nothing
+    , _ocVPCSecurityGroupMemberships = Nothing
+    , _ocDBSecurityGroupMemberships = Nothing
+    , _ocPort = Nothing
+    , _ocOptionName = pOptionName_
+    }
+
+-- | The option settings to include in an option group.
+ocOptionSettings :: Lens' OptionConfiguration [OptionSetting]
+ocOptionSettings = lens _ocOptionSettings (\ s a -> s{_ocOptionSettings = a}) . _Default . _Coerce;
+
+-- | A list of VpcSecurityGroupMemebrship name strings used for this option.
+ocVPCSecurityGroupMemberships :: Lens' OptionConfiguration [Text]
+ocVPCSecurityGroupMemberships = lens _ocVPCSecurityGroupMemberships (\ s a -> s{_ocVPCSecurityGroupMemberships = a}) . _Default . _Coerce;
+
+-- | A list of DBSecurityGroupMemebrship name strings used for this option.
+ocDBSecurityGroupMemberships :: Lens' OptionConfiguration [Text]
+ocDBSecurityGroupMemberships = lens _ocDBSecurityGroupMemberships (\ s a -> s{_ocDBSecurityGroupMemberships = a}) . _Default . _Coerce;
+
+-- | The optional port for the option.
+ocPort :: Lens' OptionConfiguration (Maybe Int)
+ocPort = lens _ocPort (\ s a -> s{_ocPort = a});
+
+-- | The configuration of options to include in a group.
+ocOptionName :: Lens' OptionConfiguration Text
+ocOptionName = lens _ocOptionName (\ s a -> s{_ocOptionName = a});
+
+instance ToQuery OptionConfiguration where
+        toQuery OptionConfiguration'{..}
+          = mconcat
+              ["OptionSettings" =:
+                 toQuery
+                   (toQueryList "OptionSetting" <$> _ocOptionSettings),
+               "VpcSecurityGroupMemberships" =:
+                 toQuery
+                   (toQueryList "VpcSecurityGroupId" <$>
+                      _ocVPCSecurityGroupMemberships),
+               "DBSecurityGroupMemberships" =:
+                 toQuery
+                   (toQueryList "DBSecurityGroupName" <$>
+                      _ocDBSecurityGroupMemberships),
+               "Port" =: _ocPort, "OptionName" =: _ocOptionName]
+
+-- |
+--
+-- /See:/ 'optionGroup' smart constructor.
+data OptionGroup = OptionGroup'
+    { _ogOptionGroupDescription                :: !(Maybe Text)
+    , _ogVPCId                                 :: !(Maybe Text)
+    , _ogAllowsVPCAndNonVPCInstanceMemberships :: !(Maybe Bool)
+    , _ogEngineName                            :: !(Maybe Text)
+    , _ogMajorEngineVersion                    :: !(Maybe Text)
+    , _ogOptions                               :: !(Maybe [Option])
+    , _ogOptionGroupName                       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OptionGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ogOptionGroupDescription'
+--
+-- * 'ogVPCId'
+--
+-- * 'ogAllowsVPCAndNonVPCInstanceMemberships'
+--
+-- * 'ogEngineName'
+--
+-- * 'ogMajorEngineVersion'
+--
+-- * 'ogOptions'
+--
+-- * 'ogOptionGroupName'
+optionGroup
+    :: OptionGroup
+optionGroup =
+    OptionGroup'
+    { _ogOptionGroupDescription = Nothing
+    , _ogVPCId = Nothing
+    , _ogAllowsVPCAndNonVPCInstanceMemberships = Nothing
+    , _ogEngineName = Nothing
+    , _ogMajorEngineVersion = Nothing
+    , _ogOptions = Nothing
+    , _ogOptionGroupName = Nothing
+    }
+
+-- | Provides a description of the option group.
+ogOptionGroupDescription :: Lens' OptionGroup (Maybe Text)
+ogOptionGroupDescription = lens _ogOptionGroupDescription (\ s a -> s{_ogOptionGroupDescription = a});
+
+-- | If __AllowsVpcAndNonVpcInstanceMemberships__ is 'false', this field is
+-- blank. If __AllowsVpcAndNonVpcInstanceMemberships__ is 'true' and this
+-- field is blank, then this option group can be applied to both VPC and
+-- non-VPC instances. If this field contains a value, then this option
+-- group can only be applied to instances that are in the VPC indicated by
+-- this field.
+ogVPCId :: Lens' OptionGroup (Maybe Text)
+ogVPCId = lens _ogVPCId (\ s a -> s{_ogVPCId = a});
+
+-- | Indicates whether this option group can be applied to both VPC and
+-- non-VPC instances. The value 'true' indicates the option group can be
+-- applied to both VPC and non-VPC instances.
+ogAllowsVPCAndNonVPCInstanceMemberships :: Lens' OptionGroup (Maybe Bool)
+ogAllowsVPCAndNonVPCInstanceMemberships = lens _ogAllowsVPCAndNonVPCInstanceMemberships (\ s a -> s{_ogAllowsVPCAndNonVPCInstanceMemberships = a});
+
+-- | Indicates the name of the engine that this option group can be applied
+-- to.
+ogEngineName :: Lens' OptionGroup (Maybe Text)
+ogEngineName = lens _ogEngineName (\ s a -> s{_ogEngineName = a});
+
+-- | Indicates the major engine version associated with this option group.
+ogMajorEngineVersion :: Lens' OptionGroup (Maybe Text)
+ogMajorEngineVersion = lens _ogMajorEngineVersion (\ s a -> s{_ogMajorEngineVersion = a});
+
+-- | Indicates what options are available in the option group.
+ogOptions :: Lens' OptionGroup [Option]
+ogOptions = lens _ogOptions (\ s a -> s{_ogOptions = a}) . _Default . _Coerce;
+
+-- | Specifies the name of the option group.
+ogOptionGroupName :: Lens' OptionGroup (Maybe Text)
+ogOptionGroupName = lens _ogOptionGroupName (\ s a -> s{_ogOptionGroupName = a});
+
+instance FromXML OptionGroup where
+        parseXML x
+          = OptionGroup' <$>
+              (x .@? "OptionGroupDescription") <*> (x .@? "VpcId")
+                <*> (x .@? "AllowsVpcAndNonVpcInstanceMemberships")
+                <*> (x .@? "EngineName")
+                <*> (x .@? "MajorEngineVersion")
+                <*>
+                (x .@? "Options" .!@ mempty >>=
+                   may (parseXMLList "Option"))
+                <*> (x .@? "OptionGroupName")
+
+-- | Provides information on the option groups the DB instance is a member
+-- of.
+--
+-- /See:/ 'optionGroupMembership' smart constructor.
+data OptionGroupMembership = OptionGroupMembership'
+    { _ogmStatus          :: !(Maybe Text)
+    , _ogmOptionGroupName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OptionGroupMembership' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ogmStatus'
+--
+-- * 'ogmOptionGroupName'
+optionGroupMembership
+    :: OptionGroupMembership
+optionGroupMembership =
+    OptionGroupMembership'
+    { _ogmStatus = Nothing
+    , _ogmOptionGroupName = Nothing
+    }
+
+-- | The status of the DB instance\'s option group membership (e.g. in-sync,
+-- pending, pending-maintenance, applying).
+ogmStatus :: Lens' OptionGroupMembership (Maybe Text)
+ogmStatus = lens _ogmStatus (\ s a -> s{_ogmStatus = a});
+
+-- | The name of the option group that the instance belongs to.
+ogmOptionGroupName :: Lens' OptionGroupMembership (Maybe Text)
+ogmOptionGroupName = lens _ogmOptionGroupName (\ s a -> s{_ogmOptionGroupName = a});
+
+instance FromXML OptionGroupMembership where
+        parseXML x
+          = OptionGroupMembership' <$>
+              (x .@? "Status") <*> (x .@? "OptionGroupName")
+
+-- | Available option.
+--
+-- /See:/ 'optionGroupOption' smart constructor.
+data OptionGroupOption = OptionGroupOption'
+    { _ogoMinimumRequiredMinorEngineVersion :: !(Maybe Text)
+    , _ogoPermanent                         :: !(Maybe Bool)
+    , _ogoPersistent                        :: !(Maybe Bool)
+    , _ogoEngineName                        :: !(Maybe Text)
+    , _ogoName                              :: !(Maybe Text)
+    , _ogoMajorEngineVersion                :: !(Maybe Text)
+    , _ogoDefaultPort                       :: !(Maybe Int)
+    , _ogoOptionGroupOptionSettings         :: !(Maybe [OptionGroupOptionSetting])
+    , _ogoPortRequired                      :: !(Maybe Bool)
+    , _ogoOptionsDependedOn                 :: !(Maybe [Text])
+    , _ogoDescription                       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OptionGroupOption' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ogoMinimumRequiredMinorEngineVersion'
+--
+-- * 'ogoPermanent'
+--
+-- * 'ogoPersistent'
+--
+-- * 'ogoEngineName'
+--
+-- * 'ogoName'
+--
+-- * 'ogoMajorEngineVersion'
+--
+-- * 'ogoDefaultPort'
+--
+-- * 'ogoOptionGroupOptionSettings'
+--
+-- * 'ogoPortRequired'
+--
+-- * 'ogoOptionsDependedOn'
+--
+-- * 'ogoDescription'
+optionGroupOption
+    :: OptionGroupOption
+optionGroupOption =
+    OptionGroupOption'
+    { _ogoMinimumRequiredMinorEngineVersion = Nothing
+    , _ogoPermanent = Nothing
+    , _ogoPersistent = Nothing
+    , _ogoEngineName = Nothing
+    , _ogoName = Nothing
+    , _ogoMajorEngineVersion = Nothing
+    , _ogoDefaultPort = Nothing
+    , _ogoOptionGroupOptionSettings = Nothing
+    , _ogoPortRequired = Nothing
+    , _ogoOptionsDependedOn = Nothing
+    , _ogoDescription = Nothing
+    }
+
+-- | The minimum required engine version for the option to be applied.
+ogoMinimumRequiredMinorEngineVersion :: Lens' OptionGroupOption (Maybe Text)
+ogoMinimumRequiredMinorEngineVersion = lens _ogoMinimumRequiredMinorEngineVersion (\ s a -> s{_ogoMinimumRequiredMinorEngineVersion = a});
+
+-- | A permanent option cannot be removed from the option group once the
+-- option group is used, and it cannot be removed from the db instance
+-- after assigning an option group with this permanent option.
+ogoPermanent :: Lens' OptionGroupOption (Maybe Bool)
+ogoPermanent = lens _ogoPermanent (\ s a -> s{_ogoPermanent = a});
+
+-- | A persistent option cannot be removed from the option group once the
+-- option group is used, but this option can be removed from the db
+-- instance while modifying the related data and assigning another option
+-- group without this option.
+ogoPersistent :: Lens' OptionGroupOption (Maybe Bool)
+ogoPersistent = lens _ogoPersistent (\ s a -> s{_ogoPersistent = a});
+
+-- | The name of the engine that this option can be applied to.
+ogoEngineName :: Lens' OptionGroupOption (Maybe Text)
+ogoEngineName = lens _ogoEngineName (\ s a -> s{_ogoEngineName = a});
+
+-- | The name of the option.
+ogoName :: Lens' OptionGroupOption (Maybe Text)
+ogoName = lens _ogoName (\ s a -> s{_ogoName = a});
+
+-- | Indicates the major engine version that the option is available for.
+ogoMajorEngineVersion :: Lens' OptionGroupOption (Maybe Text)
+ogoMajorEngineVersion = lens _ogoMajorEngineVersion (\ s a -> s{_ogoMajorEngineVersion = a});
+
+-- | If the option requires a port, specifies the default port for the
+-- option.
+ogoDefaultPort :: Lens' OptionGroupOption (Maybe Int)
+ogoDefaultPort = lens _ogoDefaultPort (\ s a -> s{_ogoDefaultPort = a});
+
+-- | Specifies the option settings that are available (and the default value)
+-- for each option in an option group.
+ogoOptionGroupOptionSettings :: Lens' OptionGroupOption [OptionGroupOptionSetting]
+ogoOptionGroupOptionSettings = lens _ogoOptionGroupOptionSettings (\ s a -> s{_ogoOptionGroupOptionSettings = a}) . _Default . _Coerce;
+
+-- | Specifies whether the option requires a port.
+ogoPortRequired :: Lens' OptionGroupOption (Maybe Bool)
+ogoPortRequired = lens _ogoPortRequired (\ s a -> s{_ogoPortRequired = a});
+
+-- | List of all options that are prerequisites for this option.
+ogoOptionsDependedOn :: Lens' OptionGroupOption [Text]
+ogoOptionsDependedOn = lens _ogoOptionsDependedOn (\ s a -> s{_ogoOptionsDependedOn = a}) . _Default . _Coerce;
+
+-- | The description of the option.
+ogoDescription :: Lens' OptionGroupOption (Maybe Text)
+ogoDescription = lens _ogoDescription (\ s a -> s{_ogoDescription = a});
+
+instance FromXML OptionGroupOption where
+        parseXML x
+          = OptionGroupOption' <$>
+              (x .@? "MinimumRequiredMinorEngineVersion") <*>
+                (x .@? "Permanent")
+                <*> (x .@? "Persistent")
+                <*> (x .@? "EngineName")
+                <*> (x .@? "Name")
+                <*> (x .@? "MajorEngineVersion")
+                <*> (x .@? "DefaultPort")
+                <*>
+                (x .@? "OptionGroupOptionSettings" .!@ mempty >>=
+                   may (parseXMLList "OptionGroupOptionSetting"))
+                <*> (x .@? "PortRequired")
+                <*>
+                (x .@? "OptionsDependedOn" .!@ mempty >>=
+                   may (parseXMLList "OptionName"))
+                <*> (x .@? "Description")
+
+-- | Option group option settings are used to display settings available for
+-- each option with their default values and other information. These
+-- values are used with the DescribeOptionGroupOptions action.
+--
+-- /See:/ 'optionGroupOptionSetting' smart constructor.
+data OptionGroupOptionSetting = OptionGroupOptionSetting'
+    { _ogosApplyType          :: !(Maybe Text)
+    , _ogosSettingName        :: !(Maybe Text)
+    , _ogosDefaultValue       :: !(Maybe Text)
+    , _ogosIsModifiable       :: !(Maybe Bool)
+    , _ogosAllowedValues      :: !(Maybe Text)
+    , _ogosSettingDescription :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OptionGroupOptionSetting' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ogosApplyType'
+--
+-- * 'ogosSettingName'
+--
+-- * 'ogosDefaultValue'
+--
+-- * 'ogosIsModifiable'
+--
+-- * 'ogosAllowedValues'
+--
+-- * 'ogosSettingDescription'
+optionGroupOptionSetting
+    :: OptionGroupOptionSetting
+optionGroupOptionSetting =
+    OptionGroupOptionSetting'
+    { _ogosApplyType = Nothing
+    , _ogosSettingName = Nothing
+    , _ogosDefaultValue = Nothing
+    , _ogosIsModifiable = Nothing
+    , _ogosAllowedValues = Nothing
+    , _ogosSettingDescription = Nothing
+    }
+
+-- | The DB engine specific parameter type for the option group option.
+ogosApplyType :: Lens' OptionGroupOptionSetting (Maybe Text)
+ogosApplyType = lens _ogosApplyType (\ s a -> s{_ogosApplyType = a});
+
+-- | The name of the option group option.
+ogosSettingName :: Lens' OptionGroupOptionSetting (Maybe Text)
+ogosSettingName = lens _ogosSettingName (\ s a -> s{_ogosSettingName = a});
+
+-- | The default value for the option group option.
+ogosDefaultValue :: Lens' OptionGroupOptionSetting (Maybe Text)
+ogosDefaultValue = lens _ogosDefaultValue (\ s a -> s{_ogosDefaultValue = a});
+
+-- | Boolean value where true indicates that this option group option can be
+-- changed from the default value.
+ogosIsModifiable :: Lens' OptionGroupOptionSetting (Maybe Bool)
+ogosIsModifiable = lens _ogosIsModifiable (\ s a -> s{_ogosIsModifiable = a});
+
+-- | Indicates the acceptable values for the option group option.
+ogosAllowedValues :: Lens' OptionGroupOptionSetting (Maybe Text)
+ogosAllowedValues = lens _ogosAllowedValues (\ s a -> s{_ogosAllowedValues = a});
+
+-- | The description of the option group option.
+ogosSettingDescription :: Lens' OptionGroupOptionSetting (Maybe Text)
+ogosSettingDescription = lens _ogosSettingDescription (\ s a -> s{_ogosSettingDescription = a});
+
+instance FromXML OptionGroupOptionSetting where
+        parseXML x
+          = OptionGroupOptionSetting' <$>
+              (x .@? "ApplyType") <*> (x .@? "SettingName") <*>
+                (x .@? "DefaultValue")
+                <*> (x .@? "IsModifiable")
+                <*> (x .@? "AllowedValues")
+                <*> (x .@? "SettingDescription")
+
+-- | Option settings are the actual settings being applied or configured for
+-- that option. It is used when you modify an option group or describe
+-- option groups. For example, the NATIVE_NETWORK_ENCRYPTION option has a
+-- setting called SQLNET.ENCRYPTION_SERVER that can have several different
+-- values.
+--
+-- /See:/ 'optionSetting' smart constructor.
+data OptionSetting = OptionSetting'
+    { _osIsCollection  :: !(Maybe Bool)
+    , _osApplyType     :: !(Maybe Text)
+    , _osValue         :: !(Maybe Text)
+    , _osName          :: !(Maybe Text)
+    , _osDefaultValue  :: !(Maybe Text)
+    , _osIsModifiable  :: !(Maybe Bool)
+    , _osAllowedValues :: !(Maybe Text)
+    , _osDataType      :: !(Maybe Text)
+    , _osDescription   :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OptionSetting' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'osIsCollection'
+--
+-- * 'osApplyType'
+--
+-- * 'osValue'
+--
+-- * 'osName'
+--
+-- * 'osDefaultValue'
+--
+-- * 'osIsModifiable'
+--
+-- * 'osAllowedValues'
+--
+-- * 'osDataType'
+--
+-- * 'osDescription'
+optionSetting
+    :: OptionSetting
+optionSetting =
+    OptionSetting'
+    { _osIsCollection = Nothing
+    , _osApplyType = Nothing
+    , _osValue = Nothing
+    , _osName = Nothing
+    , _osDefaultValue = Nothing
+    , _osIsModifiable = Nothing
+    , _osAllowedValues = Nothing
+    , _osDataType = Nothing
+    , _osDescription = Nothing
+    }
+
+-- | Indicates if the option setting is part of a collection.
+osIsCollection :: Lens' OptionSetting (Maybe Bool)
+osIsCollection = lens _osIsCollection (\ s a -> s{_osIsCollection = a});
+
+-- | The DB engine specific parameter type.
+osApplyType :: Lens' OptionSetting (Maybe Text)
+osApplyType = lens _osApplyType (\ s a -> s{_osApplyType = a});
+
+-- | The current value of the option setting.
+osValue :: Lens' OptionSetting (Maybe Text)
+osValue = lens _osValue (\ s a -> s{_osValue = a});
+
+-- | The name of the option that has settings that you can set.
+osName :: Lens' OptionSetting (Maybe Text)
+osName = lens _osName (\ s a -> s{_osName = a});
+
+-- | The default value of the option setting.
+osDefaultValue :: Lens' OptionSetting (Maybe Text)
+osDefaultValue = lens _osDefaultValue (\ s a -> s{_osDefaultValue = a});
+
+-- | A Boolean value that, when true, indicates the option setting can be
+-- modified from the default.
+osIsModifiable :: Lens' OptionSetting (Maybe Bool)
+osIsModifiable = lens _osIsModifiable (\ s a -> s{_osIsModifiable = a});
+
+-- | The allowed values of the option setting.
+osAllowedValues :: Lens' OptionSetting (Maybe Text)
+osAllowedValues = lens _osAllowedValues (\ s a -> s{_osAllowedValues = a});
+
+-- | The data type of the option setting.
+osDataType :: Lens' OptionSetting (Maybe Text)
+osDataType = lens _osDataType (\ s a -> s{_osDataType = a});
+
+-- | The description of the option setting.
+osDescription :: Lens' OptionSetting (Maybe Text)
+osDescription = lens _osDescription (\ s a -> s{_osDescription = a});
+
+instance FromXML OptionSetting where
+        parseXML x
+          = OptionSetting' <$>
+              (x .@? "IsCollection") <*> (x .@? "ApplyType") <*>
+                (x .@? "Value")
+                <*> (x .@? "Name")
+                <*> (x .@? "DefaultValue")
+                <*> (x .@? "IsModifiable")
+                <*> (x .@? "AllowedValues")
+                <*> (x .@? "DataType")
+                <*> (x .@? "Description")
+
+instance ToQuery OptionSetting where
+        toQuery OptionSetting'{..}
+          = mconcat
+              ["IsCollection" =: _osIsCollection,
+               "ApplyType" =: _osApplyType, "Value" =: _osValue,
+               "Name" =: _osName, "DefaultValue" =: _osDefaultValue,
+               "IsModifiable" =: _osIsModifiable,
+               "AllowedValues" =: _osAllowedValues,
+               "DataType" =: _osDataType,
+               "Description" =: _osDescription]
+
+-- | Contains a list of available options for a DB instance
+--
+-- This data type is used as a response element in the
+-- DescribeOrderableDBInstanceOptions action.
+--
+-- /See:/ 'orderableDBInstanceOption' smart constructor.
+data OrderableDBInstanceOption = OrderableDBInstanceOption'
+    { _odioEngineVersion             :: !(Maybe Text)
+    , _odioMultiAZCapable            :: !(Maybe Bool)
+    , _odioEngine                    :: !(Maybe Text)
+    , _odioSupportsIOPS              :: !(Maybe Bool)
+    , _odioDBInstanceClass           :: !(Maybe Text)
+    , _odioLicenseModel              :: !(Maybe Text)
+    , _odioAvailabilityZones         :: !(Maybe [AvailabilityZone])
+    , _odioReadReplicaCapable        :: !(Maybe Bool)
+    , _odioSupportsStorageEncryption :: !(Maybe Bool)
+    , _odioVPC                       :: !(Maybe Bool)
+    , _odioStorageType               :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OrderableDBInstanceOption' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'odioEngineVersion'
+--
+-- * 'odioMultiAZCapable'
+--
+-- * 'odioEngine'
+--
+-- * 'odioSupportsIOPS'
+--
+-- * 'odioDBInstanceClass'
+--
+-- * 'odioLicenseModel'
+--
+-- * 'odioAvailabilityZones'
+--
+-- * 'odioReadReplicaCapable'
+--
+-- * 'odioSupportsStorageEncryption'
+--
+-- * 'odioVPC'
+--
+-- * 'odioStorageType'
+orderableDBInstanceOption
+    :: OrderableDBInstanceOption
+orderableDBInstanceOption =
+    OrderableDBInstanceOption'
+    { _odioEngineVersion = Nothing
+    , _odioMultiAZCapable = Nothing
+    , _odioEngine = Nothing
+    , _odioSupportsIOPS = Nothing
+    , _odioDBInstanceClass = Nothing
+    , _odioLicenseModel = Nothing
+    , _odioAvailabilityZones = Nothing
+    , _odioReadReplicaCapable = Nothing
+    , _odioSupportsStorageEncryption = Nothing
+    , _odioVPC = Nothing
+    , _odioStorageType = Nothing
+    }
+
+-- | The engine version of the orderable DB instance.
+odioEngineVersion :: Lens' OrderableDBInstanceOption (Maybe Text)
+odioEngineVersion = lens _odioEngineVersion (\ s a -> s{_odioEngineVersion = a});
+
+-- | Indicates whether this orderable DB instance is multi-AZ capable.
+odioMultiAZCapable :: Lens' OrderableDBInstanceOption (Maybe Bool)
+odioMultiAZCapable = lens _odioMultiAZCapable (\ s a -> s{_odioMultiAZCapable = a});
+
+-- | The engine type of the orderable DB instance.
+odioEngine :: Lens' OrderableDBInstanceOption (Maybe Text)
+odioEngine = lens _odioEngine (\ s a -> s{_odioEngine = a});
+
+-- | Indicates whether this orderable DB instance supports provisioned IOPS.
+odioSupportsIOPS :: Lens' OrderableDBInstanceOption (Maybe Bool)
+odioSupportsIOPS = lens _odioSupportsIOPS (\ s a -> s{_odioSupportsIOPS = a});
+
+-- | The DB instance class for the orderable DB instance.
+odioDBInstanceClass :: Lens' OrderableDBInstanceOption (Maybe Text)
+odioDBInstanceClass = lens _odioDBInstanceClass (\ s a -> s{_odioDBInstanceClass = a});
+
+-- | The license model for the orderable DB instance.
+odioLicenseModel :: Lens' OrderableDBInstanceOption (Maybe Text)
+odioLicenseModel = lens _odioLicenseModel (\ s a -> s{_odioLicenseModel = a});
+
+-- | A list of Availability Zones for the orderable DB instance.
+odioAvailabilityZones :: Lens' OrderableDBInstanceOption [AvailabilityZone]
+odioAvailabilityZones = lens _odioAvailabilityZones (\ s a -> s{_odioAvailabilityZones = a}) . _Default . _Coerce;
+
+-- | Indicates whether this orderable DB instance can have a Read Replica.
+odioReadReplicaCapable :: Lens' OrderableDBInstanceOption (Maybe Bool)
+odioReadReplicaCapable = lens _odioReadReplicaCapable (\ s a -> s{_odioReadReplicaCapable = a});
+
+-- | Indicates whether this orderable DB instance supports encrypted storage.
+odioSupportsStorageEncryption :: Lens' OrderableDBInstanceOption (Maybe Bool)
+odioSupportsStorageEncryption = lens _odioSupportsStorageEncryption (\ s a -> s{_odioSupportsStorageEncryption = a});
+
+-- | Indicates whether this is a VPC orderable DB instance.
+odioVPC :: Lens' OrderableDBInstanceOption (Maybe Bool)
+odioVPC = lens _odioVPC (\ s a -> s{_odioVPC = a});
+
+-- | Indicates the storage type for this orderable DB instance.
+odioStorageType :: Lens' OrderableDBInstanceOption (Maybe Text)
+odioStorageType = lens _odioStorageType (\ s a -> s{_odioStorageType = a});
+
+instance FromXML OrderableDBInstanceOption where
+        parseXML x
+          = OrderableDBInstanceOption' <$>
+              (x .@? "EngineVersion") <*> (x .@? "MultiAZCapable")
+                <*> (x .@? "Engine")
+                <*> (x .@? "SupportsIops")
+                <*> (x .@? "DBInstanceClass")
+                <*> (x .@? "LicenseModel")
+                <*>
+                (x .@? "AvailabilityZones" .!@ mempty >>=
+                   may (parseXMLList "AvailabilityZone"))
+                <*> (x .@? "ReadReplicaCapable")
+                <*> (x .@? "SupportsStorageEncryption")
+                <*> (x .@? "Vpc")
+                <*> (x .@? "StorageType")
+
+-- | This data type is used as a request parameter in the
+-- ModifyDBParameterGroup and ResetDBParameterGroup actions.
+--
+-- This data type is used as a response element in the
+-- DescribeEngineDefaultParameters and DescribeDBParameters actions.
+--
+-- /See:/ 'parameter' smart constructor.
+data Parameter = Parameter'
+    { _pApplyType            :: !(Maybe Text)
+    , _pParameterValue       :: !(Maybe Text)
+    , _pApplyMethod          :: !(Maybe ApplyMethod)
+    , _pMinimumEngineVersion :: !(Maybe Text)
+    , _pSource               :: !(Maybe Text)
+    , _pIsModifiable         :: !(Maybe Bool)
+    , _pAllowedValues        :: !(Maybe Text)
+    , _pDataType             :: !(Maybe Text)
+    , _pParameterName        :: !(Maybe Text)
+    , _pDescription          :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Parameter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pApplyType'
+--
+-- * 'pParameterValue'
+--
+-- * 'pApplyMethod'
+--
+-- * 'pMinimumEngineVersion'
+--
+-- * 'pSource'
+--
+-- * 'pIsModifiable'
+--
+-- * 'pAllowedValues'
+--
+-- * 'pDataType'
+--
+-- * 'pParameterName'
+--
+-- * 'pDescription'
+parameter
+    :: Parameter
+parameter =
+    Parameter'
+    { _pApplyType = Nothing
+    , _pParameterValue = Nothing
+    , _pApplyMethod = Nothing
+    , _pMinimumEngineVersion = Nothing
+    , _pSource = Nothing
+    , _pIsModifiable = Nothing
+    , _pAllowedValues = Nothing
+    , _pDataType = Nothing
+    , _pParameterName = Nothing
+    , _pDescription = Nothing
+    }
+
+-- | Specifies the engine specific parameters type.
+pApplyType :: Lens' Parameter (Maybe Text)
+pApplyType = lens _pApplyType (\ s a -> s{_pApplyType = a});
+
+-- | Specifies the value of the parameter.
+pParameterValue :: Lens' Parameter (Maybe Text)
+pParameterValue = lens _pParameterValue (\ s a -> s{_pParameterValue = a});
+
+-- | Indicates when to apply parameter updates.
+pApplyMethod :: Lens' Parameter (Maybe ApplyMethod)
+pApplyMethod = lens _pApplyMethod (\ s a -> s{_pApplyMethod = a});
+
+-- | The earliest engine version to which the parameter can apply.
+pMinimumEngineVersion :: Lens' Parameter (Maybe Text)
+pMinimumEngineVersion = lens _pMinimumEngineVersion (\ s a -> s{_pMinimumEngineVersion = a});
+
+-- | Indicates the source of the parameter value.
+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.
+pIsModifiable :: Lens' Parameter (Maybe Bool)
+pIsModifiable = lens _pIsModifiable (\ s a -> s{_pIsModifiable = a});
+
+-- | Specifies the valid range of values for the parameter.
+pAllowedValues :: Lens' Parameter (Maybe Text)
+pAllowedValues = lens _pAllowedValues (\ s a -> s{_pAllowedValues = a});
+
+-- | Specifies the valid data type for the parameter.
+pDataType :: Lens' Parameter (Maybe Text)
+pDataType = lens _pDataType (\ s a -> s{_pDataType = a});
+
+-- | Specifies the name of the parameter.
+pParameterName :: Lens' Parameter (Maybe Text)
+pParameterName = lens _pParameterName (\ s a -> s{_pParameterName = a});
+
+-- | Provides a description of the parameter.
+pDescription :: Lens' Parameter (Maybe Text)
+pDescription = lens _pDescription (\ s a -> s{_pDescription = a});
+
+instance FromXML Parameter where
+        parseXML x
+          = Parameter' <$>
+              (x .@? "ApplyType") <*> (x .@? "ParameterValue") <*>
+                (x .@? "ApplyMethod")
+                <*> (x .@? "MinimumEngineVersion")
+                <*> (x .@? "Source")
+                <*> (x .@? "IsModifiable")
+                <*> (x .@? "AllowedValues")
+                <*> (x .@? "DataType")
+                <*> (x .@? "ParameterName")
+                <*> (x .@? "Description")
+
+instance ToQuery Parameter where
+        toQuery Parameter'{..}
+          = mconcat
+              ["ApplyType" =: _pApplyType,
+               "ParameterValue" =: _pParameterValue,
+               "ApplyMethod" =: _pApplyMethod,
+               "MinimumEngineVersion" =: _pMinimumEngineVersion,
+               "Source" =: _pSource,
+               "IsModifiable" =: _pIsModifiable,
+               "AllowedValues" =: _pAllowedValues,
+               "DataType" =: _pDataType,
+               "ParameterName" =: _pParameterName,
+               "Description" =: _pDescription]
+
+-- | Provides information about a pending maintenance action for a resource.
+--
+-- /See:/ 'pendingMaintenanceAction' smart constructor.
+data PendingMaintenanceAction = PendingMaintenanceAction'
+    { _pmaAutoAppliedAfterDate :: !(Maybe ISO8601)
+    , _pmaAction               :: !(Maybe Text)
+    , _pmaOptInStatus          :: !(Maybe Text)
+    , _pmaDescription          :: !(Maybe Text)
+    , _pmaCurrentApplyDate     :: !(Maybe ISO8601)
+    , _pmaForcedApplyDate      :: !(Maybe ISO8601)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PendingMaintenanceAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pmaAutoAppliedAfterDate'
+--
+-- * 'pmaAction'
+--
+-- * 'pmaOptInStatus'
+--
+-- * 'pmaDescription'
+--
+-- * 'pmaCurrentApplyDate'
+--
+-- * 'pmaForcedApplyDate'
+pendingMaintenanceAction
+    :: PendingMaintenanceAction
+pendingMaintenanceAction =
+    PendingMaintenanceAction'
+    { _pmaAutoAppliedAfterDate = Nothing
+    , _pmaAction = Nothing
+    , _pmaOptInStatus = Nothing
+    , _pmaDescription = Nothing
+    , _pmaCurrentApplyDate = Nothing
+    , _pmaForcedApplyDate = Nothing
+    }
+
+-- | The date of the maintenance window when the action will be applied. The
+-- maintenance action will be applied to the resource during its first
+-- maintenance window after this date. If this date is specified, any
+-- 'next-maintenance' opt-in requests are ignored.
+pmaAutoAppliedAfterDate :: Lens' PendingMaintenanceAction (Maybe UTCTime)
+pmaAutoAppliedAfterDate = lens _pmaAutoAppliedAfterDate (\ s a -> s{_pmaAutoAppliedAfterDate = a}) . mapping _Time;
+
+-- | The type of pending maintenance action that is available for the
+-- resource.
+pmaAction :: Lens' PendingMaintenanceAction (Maybe Text)
+pmaAction = lens _pmaAction (\ s a -> s{_pmaAction = a});
+
+-- | Indicates the type of opt-in request that has been received for the
+-- resource.
+pmaOptInStatus :: Lens' PendingMaintenanceAction (Maybe Text)
+pmaOptInStatus = lens _pmaOptInStatus (\ s a -> s{_pmaOptInStatus = a});
+
+-- | A description providing more detail about the maintenance action.
+pmaDescription :: Lens' PendingMaintenanceAction (Maybe Text)
+pmaDescription = lens _pmaDescription (\ s a -> s{_pmaDescription = a});
+
+-- | The effective date when the pending maintenance action will be applied
+-- to the resource. This date takes into account opt-in requests received
+-- from the ApplyPendingMaintenanceAction API, the 'AutoAppliedAfterDate',
+-- and the 'ForcedApplyDate'. This value is blank if an opt-in request has
+-- not been received and nothing has been specified as
+-- 'AutoAppliedAfterDate' or 'ForcedApplyDate'.
+pmaCurrentApplyDate :: Lens' PendingMaintenanceAction (Maybe UTCTime)
+pmaCurrentApplyDate = lens _pmaCurrentApplyDate (\ s a -> s{_pmaCurrentApplyDate = a}) . mapping _Time;
+
+-- | The date when the maintenance action will be automatically applied. The
+-- maintenance action will be applied to the resource on this date
+-- regardless of the maintenance window for the resource. If this date is
+-- specified, any 'immediate' opt-in requests are ignored.
+pmaForcedApplyDate :: Lens' PendingMaintenanceAction (Maybe UTCTime)
+pmaForcedApplyDate = lens _pmaForcedApplyDate (\ s a -> s{_pmaForcedApplyDate = a}) . mapping _Time;
+
+instance FromXML PendingMaintenanceAction where
+        parseXML x
+          = PendingMaintenanceAction' <$>
+              (x .@? "AutoAppliedAfterDate") <*> (x .@? "Action")
+                <*> (x .@? "OptInStatus")
+                <*> (x .@? "Description")
+                <*> (x .@? "CurrentApplyDate")
+                <*> (x .@? "ForcedApplyDate")
+
+-- | This data type is used as a response element in the ModifyDBInstance
+-- action.
+--
+-- /See:/ 'pendingModifiedValues' smart constructor.
+data PendingModifiedValues = PendingModifiedValues'
+    { _pmvEngineVersion           :: !(Maybe Text)
+    , _pmvMasterUserPassword      :: !(Maybe Text)
+    , _pmvIOPS                    :: !(Maybe Int)
+    , _pmvDBInstanceClass         :: !(Maybe Text)
+    , _pmvDBInstanceIdentifier    :: !(Maybe Text)
+    , _pmvCACertificateIdentifier :: !(Maybe Text)
+    , _pmvBackupRetentionPeriod   :: !(Maybe Int)
+    , _pmvMultiAZ                 :: !(Maybe Bool)
+    , _pmvAllocatedStorage        :: !(Maybe Int)
+    , _pmvPort                    :: !(Maybe Int)
+    , _pmvStorageType             :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PendingModifiedValues' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pmvEngineVersion'
+--
+-- * 'pmvMasterUserPassword'
+--
+-- * 'pmvIOPS'
+--
+-- * 'pmvDBInstanceClass'
+--
+-- * 'pmvDBInstanceIdentifier'
+--
+-- * 'pmvCACertificateIdentifier'
+--
+-- * 'pmvBackupRetentionPeriod'
+--
+-- * 'pmvMultiAZ'
+--
+-- * 'pmvAllocatedStorage'
+--
+-- * 'pmvPort'
+--
+-- * 'pmvStorageType'
+pendingModifiedValues
+    :: PendingModifiedValues
+pendingModifiedValues =
+    PendingModifiedValues'
+    { _pmvEngineVersion = Nothing
+    , _pmvMasterUserPassword = Nothing
+    , _pmvIOPS = Nothing
+    , _pmvDBInstanceClass = Nothing
+    , _pmvDBInstanceIdentifier = Nothing
+    , _pmvCACertificateIdentifier = Nothing
+    , _pmvBackupRetentionPeriod = Nothing
+    , _pmvMultiAZ = Nothing
+    , _pmvAllocatedStorage = Nothing
+    , _pmvPort = Nothing
+    , _pmvStorageType = Nothing
+    }
+
+-- | Indicates the database engine version.
+pmvEngineVersion :: Lens' PendingModifiedValues (Maybe Text)
+pmvEngineVersion = lens _pmvEngineVersion (\ s a -> s{_pmvEngineVersion = a});
+
+-- | Contains the pending or in-progress change of the master credentials for
+-- the DB instance.
+pmvMasterUserPassword :: Lens' PendingModifiedValues (Maybe Text)
+pmvMasterUserPassword = lens _pmvMasterUserPassword (\ s a -> s{_pmvMasterUserPassword = a});
+
+-- | Specifies the new Provisioned IOPS value for the DB instance that will
+-- be applied or is being applied.
+pmvIOPS :: Lens' PendingModifiedValues (Maybe Int)
+pmvIOPS = lens _pmvIOPS (\ s a -> s{_pmvIOPS = a});
+
+-- | Contains the new 'DBInstanceClass' for the DB instance that will be
+-- applied or is in progress.
+pmvDBInstanceClass :: Lens' PendingModifiedValues (Maybe Text)
+pmvDBInstanceClass = lens _pmvDBInstanceClass (\ s a -> s{_pmvDBInstanceClass = a});
+
+-- | Contains the new 'DBInstanceIdentifier' for the DB instance that will be
+-- applied or is in progress.
+pmvDBInstanceIdentifier :: Lens' PendingModifiedValues (Maybe Text)
+pmvDBInstanceIdentifier = lens _pmvDBInstanceIdentifier (\ s a -> s{_pmvDBInstanceIdentifier = a});
+
+-- | Specifies the identifier of the CA certificate for the DB instance.
+pmvCACertificateIdentifier :: Lens' PendingModifiedValues (Maybe Text)
+pmvCACertificateIdentifier = lens _pmvCACertificateIdentifier (\ s a -> s{_pmvCACertificateIdentifier = a});
+
+-- | Specifies the pending number of days for which automated backups are
+-- retained.
+pmvBackupRetentionPeriod :: Lens' PendingModifiedValues (Maybe Int)
+pmvBackupRetentionPeriod = lens _pmvBackupRetentionPeriod (\ s a -> s{_pmvBackupRetentionPeriod = a});
+
+-- | Indicates that the Single-AZ DB instance is to change to a Multi-AZ
+-- deployment.
+pmvMultiAZ :: Lens' PendingModifiedValues (Maybe Bool)
+pmvMultiAZ = lens _pmvMultiAZ (\ s a -> s{_pmvMultiAZ = a});
+
+-- | Contains the new 'AllocatedStorage' size for the DB instance that will
+-- be applied or is in progress.
+pmvAllocatedStorage :: Lens' PendingModifiedValues (Maybe Int)
+pmvAllocatedStorage = lens _pmvAllocatedStorage (\ s a -> s{_pmvAllocatedStorage = a});
+
+-- | Specifies the pending port for the DB instance.
+pmvPort :: Lens' PendingModifiedValues (Maybe Int)
+pmvPort = lens _pmvPort (\ s a -> s{_pmvPort = a});
+
+-- | Specifies the storage type to be associated with the DB instance.
+pmvStorageType :: Lens' PendingModifiedValues (Maybe Text)
+pmvStorageType = lens _pmvStorageType (\ s a -> s{_pmvStorageType = a});
+
+instance FromXML PendingModifiedValues where
+        parseXML x
+          = PendingModifiedValues' <$>
+              (x .@? "EngineVersion") <*>
+                (x .@? "MasterUserPassword")
+                <*> (x .@? "Iops")
+                <*> (x .@? "DBInstanceClass")
+                <*> (x .@? "DBInstanceIdentifier")
+                <*> (x .@? "CACertificateIdentifier")
+                <*> (x .@? "BackupRetentionPeriod")
+                <*> (x .@? "MultiAZ")
+                <*> (x .@? "AllocatedStorage")
+                <*> (x .@? "Port")
+                <*> (x .@? "StorageType")
+
+-- | This data type is used as a response element in the
+-- DescribeReservedDBInstances and DescribeReservedDBInstancesOfferings
+-- actions.
+--
+-- /See:/ 'recurringCharge' smart constructor.
+data RecurringCharge = RecurringCharge'
+    { _rcRecurringChargeFrequency :: !(Maybe Text)
+    , _rcRecurringChargeAmount    :: !(Maybe Double)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RecurringCharge' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcRecurringChargeFrequency'
+--
+-- * 'rcRecurringChargeAmount'
+recurringCharge
+    :: RecurringCharge
+recurringCharge =
+    RecurringCharge'
+    { _rcRecurringChargeFrequency = Nothing
+    , _rcRecurringChargeAmount = Nothing
+    }
+
+-- | The frequency of the recurring charge.
+rcRecurringChargeFrequency :: Lens' RecurringCharge (Maybe Text)
+rcRecurringChargeFrequency = lens _rcRecurringChargeFrequency (\ s a -> s{_rcRecurringChargeFrequency = a});
+
+-- | The amount of the recurring charge.
+rcRecurringChargeAmount :: Lens' RecurringCharge (Maybe Double)
+rcRecurringChargeAmount = lens _rcRecurringChargeAmount (\ s a -> s{_rcRecurringChargeAmount = a});
+
+instance FromXML RecurringCharge where
+        parseXML x
+          = RecurringCharge' <$>
+              (x .@? "RecurringChargeFrequency") <*>
+                (x .@? "RecurringChargeAmount")
+
+-- | This data type is used as a response element in the
+-- DescribeReservedDBInstances and PurchaseReservedDBInstancesOffering
+-- actions.
+--
+-- /See:/ 'reservedDBInstance' smart constructor.
+data ReservedDBInstance = ReservedDBInstance'
+    { _rdiDBInstanceCount               :: !(Maybe Int)
+    , _rdiState                         :: !(Maybe Text)
+    , _rdiCurrencyCode                  :: !(Maybe Text)
+    , _rdiProductDescription            :: !(Maybe Text)
+    , _rdiStartTime                     :: !(Maybe ISO8601)
+    , _rdiReservedDBInstanceId          :: !(Maybe Text)
+    , _rdiDBInstanceClass               :: !(Maybe Text)
+    , _rdiMultiAZ                       :: !(Maybe Bool)
+    , _rdiReservedDBInstancesOfferingId :: !(Maybe Text)
+    , _rdiOfferingType                  :: !(Maybe Text)
+    , _rdiUsagePrice                    :: !(Maybe Double)
+    , _rdiRecurringCharges              :: !(Maybe [RecurringCharge])
+    , _rdiFixedPrice                    :: !(Maybe Double)
+    , _rdiDuration                      :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReservedDBInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdiDBInstanceCount'
+--
+-- * 'rdiState'
+--
+-- * 'rdiCurrencyCode'
+--
+-- * 'rdiProductDescription'
+--
+-- * 'rdiStartTime'
+--
+-- * 'rdiReservedDBInstanceId'
+--
+-- * 'rdiDBInstanceClass'
+--
+-- * 'rdiMultiAZ'
+--
+-- * 'rdiReservedDBInstancesOfferingId'
+--
+-- * 'rdiOfferingType'
+--
+-- * 'rdiUsagePrice'
+--
+-- * 'rdiRecurringCharges'
+--
+-- * 'rdiFixedPrice'
+--
+-- * 'rdiDuration'
+reservedDBInstance
+    :: ReservedDBInstance
+reservedDBInstance =
+    ReservedDBInstance'
+    { _rdiDBInstanceCount = Nothing
+    , _rdiState = Nothing
+    , _rdiCurrencyCode = Nothing
+    , _rdiProductDescription = Nothing
+    , _rdiStartTime = Nothing
+    , _rdiReservedDBInstanceId = Nothing
+    , _rdiDBInstanceClass = Nothing
+    , _rdiMultiAZ = Nothing
+    , _rdiReservedDBInstancesOfferingId = Nothing
+    , _rdiOfferingType = Nothing
+    , _rdiUsagePrice = Nothing
+    , _rdiRecurringCharges = Nothing
+    , _rdiFixedPrice = Nothing
+    , _rdiDuration = Nothing
+    }
+
+-- | The number of reserved DB instances.
+rdiDBInstanceCount :: Lens' ReservedDBInstance (Maybe Int)
+rdiDBInstanceCount = lens _rdiDBInstanceCount (\ s a -> s{_rdiDBInstanceCount = a});
+
+-- | The state of the reserved DB instance.
+rdiState :: Lens' ReservedDBInstance (Maybe Text)
+rdiState = lens _rdiState (\ s a -> s{_rdiState = a});
+
+-- | The currency code for the reserved DB instance.
+rdiCurrencyCode :: Lens' ReservedDBInstance (Maybe Text)
+rdiCurrencyCode = lens _rdiCurrencyCode (\ s a -> s{_rdiCurrencyCode = a});
+
+-- | The description of the reserved DB instance.
+rdiProductDescription :: Lens' ReservedDBInstance (Maybe Text)
+rdiProductDescription = lens _rdiProductDescription (\ s a -> s{_rdiProductDescription = a});
+
+-- | The time the reservation started.
+rdiStartTime :: Lens' ReservedDBInstance (Maybe UTCTime)
+rdiStartTime = lens _rdiStartTime (\ s a -> s{_rdiStartTime = a}) . mapping _Time;
+
+-- | The unique identifier for the reservation.
+rdiReservedDBInstanceId :: Lens' ReservedDBInstance (Maybe Text)
+rdiReservedDBInstanceId = lens _rdiReservedDBInstanceId (\ s a -> s{_rdiReservedDBInstanceId = a});
+
+-- | The DB instance class for the reserved DB instance.
+rdiDBInstanceClass :: Lens' ReservedDBInstance (Maybe Text)
+rdiDBInstanceClass = lens _rdiDBInstanceClass (\ s a -> s{_rdiDBInstanceClass = a});
+
+-- | Indicates if the reservation applies to Multi-AZ deployments.
+rdiMultiAZ :: Lens' ReservedDBInstance (Maybe Bool)
+rdiMultiAZ = lens _rdiMultiAZ (\ s a -> s{_rdiMultiAZ = a});
+
+-- | The offering identifier.
+rdiReservedDBInstancesOfferingId :: Lens' ReservedDBInstance (Maybe Text)
+rdiReservedDBInstancesOfferingId = lens _rdiReservedDBInstancesOfferingId (\ s a -> s{_rdiReservedDBInstancesOfferingId = a});
+
+-- | The offering type of this reserved DB instance.
+rdiOfferingType :: Lens' ReservedDBInstance (Maybe Text)
+rdiOfferingType = lens _rdiOfferingType (\ s a -> s{_rdiOfferingType = a});
+
+-- | The hourly price charged for this reserved DB instance.
+rdiUsagePrice :: Lens' ReservedDBInstance (Maybe Double)
+rdiUsagePrice = lens _rdiUsagePrice (\ s a -> s{_rdiUsagePrice = a});
+
+-- | The recurring price charged to run this reserved DB instance.
+rdiRecurringCharges :: Lens' ReservedDBInstance [RecurringCharge]
+rdiRecurringCharges = lens _rdiRecurringCharges (\ s a -> s{_rdiRecurringCharges = a}) . _Default . _Coerce;
+
+-- | The fixed price charged for this reserved DB instance.
+rdiFixedPrice :: Lens' ReservedDBInstance (Maybe Double)
+rdiFixedPrice = lens _rdiFixedPrice (\ s a -> s{_rdiFixedPrice = a});
+
+-- | The duration of the reservation in seconds.
+rdiDuration :: Lens' ReservedDBInstance (Maybe Int)
+rdiDuration = lens _rdiDuration (\ s a -> s{_rdiDuration = a});
+
+instance FromXML ReservedDBInstance where
+        parseXML x
+          = ReservedDBInstance' <$>
+              (x .@? "DBInstanceCount") <*> (x .@? "State") <*>
+                (x .@? "CurrencyCode")
+                <*> (x .@? "ProductDescription")
+                <*> (x .@? "StartTime")
+                <*> (x .@? "ReservedDBInstanceId")
+                <*> (x .@? "DBInstanceClass")
+                <*> (x .@? "MultiAZ")
+                <*> (x .@? "ReservedDBInstancesOfferingId")
+                <*> (x .@? "OfferingType")
+                <*> (x .@? "UsagePrice")
+                <*>
+                (x .@? "RecurringCharges" .!@ mempty >>=
+                   may (parseXMLList "RecurringCharge"))
+                <*> (x .@? "FixedPrice")
+                <*> (x .@? "Duration")
+
+-- | This data type is used as a response element in the
+-- DescribeReservedDBInstancesOfferings action.
+--
+-- /See:/ 'reservedDBInstancesOffering' smart constructor.
+data ReservedDBInstancesOffering = ReservedDBInstancesOffering'
+    { _rdioCurrencyCode                  :: !(Maybe Text)
+    , _rdioProductDescription            :: !(Maybe Text)
+    , _rdioDBInstanceClass               :: !(Maybe Text)
+    , _rdioMultiAZ                       :: !(Maybe Bool)
+    , _rdioReservedDBInstancesOfferingId :: !(Maybe Text)
+    , _rdioOfferingType                  :: !(Maybe Text)
+    , _rdioUsagePrice                    :: !(Maybe Double)
+    , _rdioRecurringCharges              :: !(Maybe [RecurringCharge])
+    , _rdioFixedPrice                    :: !(Maybe Double)
+    , _rdioDuration                      :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReservedDBInstancesOffering' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdioCurrencyCode'
+--
+-- * 'rdioProductDescription'
+--
+-- * 'rdioDBInstanceClass'
+--
+-- * 'rdioMultiAZ'
+--
+-- * 'rdioReservedDBInstancesOfferingId'
+--
+-- * 'rdioOfferingType'
+--
+-- * 'rdioUsagePrice'
+--
+-- * 'rdioRecurringCharges'
+--
+-- * 'rdioFixedPrice'
+--
+-- * 'rdioDuration'
+reservedDBInstancesOffering
+    :: ReservedDBInstancesOffering
+reservedDBInstancesOffering =
+    ReservedDBInstancesOffering'
+    { _rdioCurrencyCode = Nothing
+    , _rdioProductDescription = Nothing
+    , _rdioDBInstanceClass = Nothing
+    , _rdioMultiAZ = Nothing
+    , _rdioReservedDBInstancesOfferingId = Nothing
+    , _rdioOfferingType = Nothing
+    , _rdioUsagePrice = Nothing
+    , _rdioRecurringCharges = Nothing
+    , _rdioFixedPrice = Nothing
+    , _rdioDuration = Nothing
+    }
+
+-- | The currency code for the reserved DB instance offering.
+rdioCurrencyCode :: Lens' ReservedDBInstancesOffering (Maybe Text)
+rdioCurrencyCode = lens _rdioCurrencyCode (\ s a -> s{_rdioCurrencyCode = a});
+
+-- | The database engine used by the offering.
+rdioProductDescription :: Lens' ReservedDBInstancesOffering (Maybe Text)
+rdioProductDescription = lens _rdioProductDescription (\ s a -> s{_rdioProductDescription = a});
+
+-- | The DB instance class for the reserved DB instance.
+rdioDBInstanceClass :: Lens' ReservedDBInstancesOffering (Maybe Text)
+rdioDBInstanceClass = lens _rdioDBInstanceClass (\ s a -> s{_rdioDBInstanceClass = a});
+
+-- | Indicates if the offering applies to Multi-AZ deployments.
+rdioMultiAZ :: Lens' ReservedDBInstancesOffering (Maybe Bool)
+rdioMultiAZ = lens _rdioMultiAZ (\ s a -> s{_rdioMultiAZ = a});
+
+-- | The offering identifier.
+rdioReservedDBInstancesOfferingId :: Lens' ReservedDBInstancesOffering (Maybe Text)
+rdioReservedDBInstancesOfferingId = lens _rdioReservedDBInstancesOfferingId (\ s a -> s{_rdioReservedDBInstancesOfferingId = a});
+
+-- | The offering type.
+rdioOfferingType :: Lens' ReservedDBInstancesOffering (Maybe Text)
+rdioOfferingType = lens _rdioOfferingType (\ s a -> s{_rdioOfferingType = a});
+
+-- | The hourly price charged for this offering.
+rdioUsagePrice :: Lens' ReservedDBInstancesOffering (Maybe Double)
+rdioUsagePrice = lens _rdioUsagePrice (\ s a -> s{_rdioUsagePrice = a});
+
+-- | The recurring price charged to run this reserved DB instance.
+rdioRecurringCharges :: Lens' ReservedDBInstancesOffering [RecurringCharge]
+rdioRecurringCharges = lens _rdioRecurringCharges (\ s a -> s{_rdioRecurringCharges = a}) . _Default . _Coerce;
+
+-- | The fixed price charged for this offering.
+rdioFixedPrice :: Lens' ReservedDBInstancesOffering (Maybe Double)
+rdioFixedPrice = lens _rdioFixedPrice (\ s a -> s{_rdioFixedPrice = a});
+
+-- | The duration of the offering in seconds.
+rdioDuration :: Lens' ReservedDBInstancesOffering (Maybe Int)
+rdioDuration = lens _rdioDuration (\ s a -> s{_rdioDuration = a});
+
+instance FromXML ReservedDBInstancesOffering where
+        parseXML x
+          = ReservedDBInstancesOffering' <$>
+              (x .@? "CurrencyCode") <*>
+                (x .@? "ProductDescription")
+                <*> (x .@? "DBInstanceClass")
+                <*> (x .@? "MultiAZ")
+                <*> (x .@? "ReservedDBInstancesOfferingId")
+                <*> (x .@? "OfferingType")
+                <*> (x .@? "UsagePrice")
+                <*>
+                (x .@? "RecurringCharges" .!@ mempty >>=
+                   may (parseXMLList "RecurringCharge"))
+                <*> (x .@? "FixedPrice")
+                <*> (x .@? "Duration")
+
+-- | Describes the pending maintenance actions for a resource.
+--
+-- /See:/ 'resourcePendingMaintenanceActions' smart constructor.
+data ResourcePendingMaintenanceActions = ResourcePendingMaintenanceActions'
+    { _rpmaPendingMaintenanceActionDetails :: !(Maybe [PendingMaintenanceAction])
+    , _rpmaResourceIdentifier              :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResourcePendingMaintenanceActions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rpmaPendingMaintenanceActionDetails'
+--
+-- * 'rpmaResourceIdentifier'
+resourcePendingMaintenanceActions
+    :: ResourcePendingMaintenanceActions
+resourcePendingMaintenanceActions =
+    ResourcePendingMaintenanceActions'
+    { _rpmaPendingMaintenanceActionDetails = Nothing
+    , _rpmaResourceIdentifier = Nothing
+    }
+
+-- | A list that provides details about the pending maintenance actions for
+-- the resource.
+rpmaPendingMaintenanceActionDetails :: Lens' ResourcePendingMaintenanceActions [PendingMaintenanceAction]
+rpmaPendingMaintenanceActionDetails = lens _rpmaPendingMaintenanceActionDetails (\ s a -> s{_rpmaPendingMaintenanceActionDetails = a}) . _Default . _Coerce;
+
+-- | The ARN of the resource that has pending maintenance actions.
+rpmaResourceIdentifier :: Lens' ResourcePendingMaintenanceActions (Maybe Text)
+rpmaResourceIdentifier = lens _rpmaResourceIdentifier (\ s a -> s{_rpmaResourceIdentifier = a});
+
+instance FromXML ResourcePendingMaintenanceActions
+         where
+        parseXML x
+          = ResourcePendingMaintenanceActions' <$>
+              (x .@? "PendingMaintenanceActionDetails" .!@ mempty
+                 >>= may (parseXMLList "PendingMaintenanceAction"))
+                <*> (x .@? "ResourceIdentifier")
+
+-- | This data type is used as a response element in the
+-- DescribeDBSubnetGroups action.
+--
+-- /See:/ 'subnet' smart constructor.
+data Subnet = Subnet'
+    { _sSubnetStatus           :: !(Maybe Text)
+    , _sSubnetIdentifier       :: !(Maybe Text)
+    , _sSubnetAvailabilityZone :: !(Maybe AvailabilityZone)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Subnet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sSubnetStatus'
+--
+-- * 'sSubnetIdentifier'
+--
+-- * 'sSubnetAvailabilityZone'
+subnet
+    :: Subnet
+subnet =
+    Subnet'
+    { _sSubnetStatus = Nothing
+    , _sSubnetIdentifier = Nothing
+    , _sSubnetAvailabilityZone = Nothing
+    }
+
+-- | Specifies the status of the subnet.
+sSubnetStatus :: Lens' Subnet (Maybe Text)
+sSubnetStatus = lens _sSubnetStatus (\ s a -> s{_sSubnetStatus = a});
+
+-- | Specifies the identifier of the subnet.
+sSubnetIdentifier :: Lens' Subnet (Maybe Text)
+sSubnetIdentifier = lens _sSubnetIdentifier (\ s a -> s{_sSubnetIdentifier = a});
+
+-- | Undocumented member.
+sSubnetAvailabilityZone :: Lens' Subnet (Maybe AvailabilityZone)
+sSubnetAvailabilityZone = lens _sSubnetAvailabilityZone (\ s a -> s{_sSubnetAvailabilityZone = a});
+
+instance FromXML Subnet where
+        parseXML x
+          = Subnet' <$>
+              (x .@? "SubnetStatus") <*> (x .@? "SubnetIdentifier")
+                <*> (x .@? "SubnetAvailabilityZone")
+
+-- | Metadata assigned to an Amazon RDS resource consisting of a key-value
+-- pair.
+--
+-- /See:/ 'tag' smart constructor.
+data Tag = Tag'
+    { _tagValue :: !(Maybe Text)
+    , _tagKey   :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tag' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tagValue'
+--
+-- * 'tagKey'
+tag
+    :: Tag
+tag =
+    Tag'
+    { _tagValue = Nothing
+    , _tagKey = Nothing
+    }
+
+-- | A value is the optional value of the tag. The string value can be from 1
+-- to 256 Unicode characters in length and cannot be prefixed with \"aws:\"
+-- or \"rds:\". The string can only contain only the set of Unicode
+-- letters, digits, white-space, \'_\', \'.\', \'\/\', \'=\', \'+\', \'-\'
+-- (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:\/=+\\\\-]*)$\").
+tagValue :: Lens' Tag (Maybe Text)
+tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
+
+-- | A key is the required name of the tag. The string value can be from 1 to
+-- 128 Unicode characters in length and cannot be prefixed with \"aws:\" or
+-- \"rds:\". The string can only contain only the set of Unicode letters,
+-- digits, white-space, \'_\', \'.\', \'\/\', \'=\', \'+\', \'-\' (Java
+-- regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:\/=+\\\\-]*)$\").
+tagKey :: Lens' Tag (Maybe Text)
+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
+
+instance FromXML Tag where
+        parseXML x
+          = Tag' <$> (x .@? "Value") <*> (x .@? "Key")
+
+instance ToQuery Tag where
+        toQuery Tag'{..}
+          = mconcat ["Value" =: _tagValue, "Key" =: _tagKey]
+
+-- | This data type is used as a response element for queries on VPC security
+-- group membership.
+--
+-- /See:/ 'vpcSecurityGroupMembership' smart constructor.
+data VPCSecurityGroupMembership = VPCSecurityGroupMembership'
+    { _vsgmStatus             :: !(Maybe Text)
+    , _vsgmVPCSecurityGroupId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPCSecurityGroupMembership' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vsgmStatus'
+--
+-- * 'vsgmVPCSecurityGroupId'
+vpcSecurityGroupMembership
+    :: VPCSecurityGroupMembership
+vpcSecurityGroupMembership =
+    VPCSecurityGroupMembership'
+    { _vsgmStatus = Nothing
+    , _vsgmVPCSecurityGroupId = Nothing
+    }
+
+-- | The status of the VPC security group.
+vsgmStatus :: Lens' VPCSecurityGroupMembership (Maybe Text)
+vsgmStatus = lens _vsgmStatus (\ s a -> s{_vsgmStatus = a});
+
+-- | The name of the VPC security group.
+vsgmVPCSecurityGroupId :: Lens' VPCSecurityGroupMembership (Maybe Text)
+vsgmVPCSecurityGroupId = lens _vsgmVPCSecurityGroupId (\ s a -> s{_vsgmVPCSecurityGroupId = a});
+
+instance FromXML VPCSecurityGroupMembership where
+        parseXML x
+          = VPCSecurityGroupMembership' <$>
+              (x .@? "Status") <*> (x .@? "VpcSecurityGroupId")
diff --git a/gen/Network/AWS/RDS/Types/Sum.hs b/gen/Network/AWS/RDS/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/RDS/Types/Sum.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.RDS.Types.Sum
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.RDS.Types.Sum where
+
+import           Network.AWS.Prelude
+
+data ApplyMethod
+    = Immediate
+    | PendingReboot
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText ApplyMethod where
+    parser = takeLowerText >>= \case
+        "immediate" -> pure Immediate
+        "pending-reboot" -> pure PendingReboot
+        e -> fromTextError $ "Failure parsing ApplyMethod from value: '" <> e
+           <> "'. Accepted values: immediate, pending-reboot"
+
+instance ToText ApplyMethod where
+    toText = \case
+        Immediate -> "immediate"
+        PendingReboot -> "pending-reboot"
+
+instance Hashable     ApplyMethod
+instance ToByteString ApplyMethod
+instance ToQuery      ApplyMethod
+instance ToHeader     ApplyMethod
+
+instance FromXML ApplyMethod where
+    parseXML = parseXMLText "ApplyMethod"
+
+data SourceType
+    = DBInstance
+    | DBParameterGroup
+    | DBSecurityGroup
+    | DBSnapshot
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText SourceType where
+    parser = takeLowerText >>= \case
+        "db-instance" -> pure DBInstance
+        "db-parameter-group" -> pure DBParameterGroup
+        "db-security-group" -> pure DBSecurityGroup
+        "db-snapshot" -> pure DBSnapshot
+        e -> fromTextError $ "Failure parsing SourceType from value: '" <> e
+           <> "'. Accepted values: db-instance, db-parameter-group, db-security-group, db-snapshot"
+
+instance ToText SourceType where
+    toText = \case
+        DBInstance -> "db-instance"
+        DBParameterGroup -> "db-parameter-group"
+        DBSecurityGroup -> "db-security-group"
+        DBSnapshot -> "db-snapshot"
+
+instance Hashable     SourceType
+instance ToByteString SourceType
+instance ToQuery      SourceType
+instance ToHeader     SourceType
+
+instance FromXML SourceType where
+    parseXML = parseXMLText "SourceType"
diff --git a/gen/Network/AWS/RDS/Waiters.hs b/gen/Network/AWS/RDS/Waiters.hs
--- a/gen/Network/AWS/RDS/Waiters.hs
+++ b/gen/Network/AWS/RDS/Waiters.hs
@@ -1,78 +1,125 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TypeFamilies      #-}
 
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.RDS.Waiters
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
 module Network.AWS.RDS.Waiters where
 
-import Network.AWS.RDS.DescribeDBInstances
-import Network.AWS.RDS.DescribeDBSnapshots
-import Network.AWS.RDS.Types
-import Network.AWS.Waiters
+import           Network.AWS.Prelude
+import           Network.AWS.RDS.DescribeDBInstances
+import           Network.AWS.RDS.DescribeDBInstances
+import           Network.AWS.RDS.DescribeDBSnapshots
+import           Network.AWS.RDS.Types
+import           Network.AWS.Waiter
 
+-- | Polls 'Network.AWS.RDS.DescribeDBInstances' every 30 seconds until a
+-- successful state is reached. An error is returned after 60 failed checks.
 dbInstanceAvailable :: Wait DescribeDBInstances
-dbInstanceAvailable = Wait
-    { _waitName      = "DBInstanceAvailable"
-    , _waitAttempts  = 60
-    , _waitDelay     = 30
-    , _waitAcceptors =
-        [ matchAll "available" AcceptSuccess
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        , matchAny "deleted" AcceptFailure
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        , matchAny "deleting" AcceptFailure
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        , matchAny "failed" AcceptFailure
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        , matchAny "incompatible-restore" AcceptFailure
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        , matchAny "incompatible-parameters" AcceptFailure
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        , matchAny "incompatible-parameters" AcceptFailure
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        , matchAny "incompatible-restore" AcceptFailure
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        ]
+dbInstanceAvailable =
+    Wait
+    { _waitName = "DBInstanceAvailable"
+    , _waitAttempts = 60
+    , _waitDelay = 30
+    , _waitAcceptors = [ matchAll
+                             "available"
+                             AcceptSuccess
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)
+                       , matchAny
+                             "deleted"
+                             AcceptFailure
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)
+                       , matchAny
+                             "deleting"
+                             AcceptFailure
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)
+                       , matchAny
+                             "failed"
+                             AcceptFailure
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)
+                       , matchAny
+                             "incompatible-restore"
+                             AcceptFailure
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)
+                       , matchAny
+                             "incompatible-parameters"
+                             AcceptFailure
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)
+                       , matchAny
+                             "incompatible-parameters"
+                             AcceptFailure
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)
+                       , matchAny
+                             "incompatible-restore"
+                             AcceptFailure
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)]
     }
 
-dbInstanceDeleted :: Wait DescribeDBInstances
-dbInstanceDeleted = Wait
-    { _waitName      = "DBInstanceDeleted"
-    , _waitAttempts  = 60
-    , _waitDelay     = 30
-    , _waitAcceptors =
-        [ matchError "DBInstanceNotFound" AcceptSuccess
-        , matchAll "deleted" AcceptSuccess
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        , matchAny "creating" AcceptFailure
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        , matchAny "modifying" AcceptFailure
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        , matchAny "rebooting" AcceptFailure
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        , matchAny "resetting-master-credentials" AcceptFailure
-            (folding (concatOf ddbirDBInstances) . dbiDBInstanceStatus . _Just)
-        ]
+-- | Polls 'Network.AWS.RDS.DescribeDBSnapshots' every 15 seconds until a
+-- successful state is reached. An error is returned after 40 failed checks.
+dbSnapshotCompleted :: Wait DescribeDBSnapshots
+dbSnapshotCompleted =
+    Wait
+    { _waitName = "DBSnapshotCompleted"
+    , _waitAttempts = 40
+    , _waitDelay = 15
+    , _waitAcceptors = [ matchError "DBSnapshotNotFound" AcceptSuccess
+                       , matchAll
+                             "available"
+                             AcceptSuccess
+                             (folding (concatOf ddsrsDBSnapshots) .
+                              dsStatus . _Just . to toTextCI)]
     }
 
-dbSnapshotCompleted :: Wait DescribeDBSnapshots
-dbSnapshotCompleted = Wait
-    { _waitName      = "DBSnapshotCompleted"
-    , _waitAttempts  = 40
-    , _waitDelay     = 15
-    , _waitAcceptors =
-        [ matchError "DBSnapshotNotFound" AcceptSuccess
-        , matchAll "available" AcceptSuccess
-            (folding (concatOf ddbsrDBSnapshots) . dbsStatus . _Just)
-        ]
+-- | Polls 'Network.AWS.RDS.DescribeDBInstances' every 30 seconds until a
+-- successful state is reached. An error is returned after 60 failed checks.
+dbInstanceDeleted :: Wait DescribeDBInstances
+dbInstanceDeleted =
+    Wait
+    { _waitName = "DBInstanceDeleted"
+    , _waitAttempts = 60
+    , _waitDelay = 30
+    , _waitAcceptors = [ matchError "DBInstanceNotFound" AcceptSuccess
+                       , matchAll
+                             "deleted"
+                             AcceptSuccess
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)
+                       , matchAny
+                             "creating"
+                             AcceptFailure
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)
+                       , matchAny
+                             "modifying"
+                             AcceptFailure
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)
+                       , matchAny
+                             "rebooting"
+                             AcceptFailure
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)
+                       , matchAny
+                             "resetting-master-credentials"
+                             AcceptFailure
+                             (folding (concatOf ddbirsDBInstances) .
+                              diDBInstanceStatus . _Just . to toTextCI)]
     }
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,21 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Main (main) where
+
+import Test.Tasty
+import Test.AWS.RDS
+import Test.AWS.RDS.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "RDS"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/Gen/RDS.hs b/test/Test/AWS/Gen/RDS.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/RDS.hs
@@ -0,0 +1,1331 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans        #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.AWS.Gen.RDS
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Test.AWS.Gen.RDS where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.RDS
+import Test.AWS.RDS.Internal
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ testDescribeDBEngineVersions $
+--             describeDBEngineVersions
+--
+--         , testDescribeDBClusterParameterGroups $
+--             describeDBClusterParameterGroups
+--
+--         , testPromoteReadReplica $
+--             promoteReadReplica
+--
+--         , testModifyEventSubscription $
+--             modifyEventSubscription
+--
+--         , testCopyDBSnapshot $
+--             copyDBSnapshot
+--
+--         , testAddSourceIdentifierToSubscription $
+--             addSourceIdentifierToSubscription
+--
+--         , testModifyDBInstance $
+--             modifyDBInstance
+--
+--         , testResetDBClusterParameterGroup $
+--             resetDBClusterParameterGroup
+--
+--         , testDescribeEvents $
+--             describeEvents
+--
+--         , testDescribeEngineDefaultParameters $
+--             describeEngineDefaultParameters
+--
+--         , testDescribeDBClusters $
+--             describeDBClusters
+--
+--         , testModifyDBSubnetGroup $
+--             modifyDBSubnetGroup
+--
+--         , testDescribeDBLogFiles $
+--             describeDBLogFiles
+--
+--         , testListTagsForResource $
+--             listTagsForResource
+--
+--         , testDescribeOptionGroups $
+--             describeOptionGroups
+--
+--         , testDeleteDBCluster $
+--             deleteDBCluster
+--
+--         , testRemoveSourceIdentifierFromSubscription $
+--             removeSourceIdentifierFromSubscription
+--
+--         , testCopyDBParameterGroup $
+--             copyDBParameterGroup
+--
+--         , testDescribeReservedDBInstances $
+--             describeReservedDBInstances
+--
+--         , testDeleteOptionGroup $
+--             deleteOptionGroup
+--
+--         , testDescribeEngineDefaultClusterParameters $
+--             describeEngineDefaultClusterParameters
+--
+--         , testCreateEventSubscription $
+--             createEventSubscription
+--
+--         , testRemoveTagsFromResource $
+--             removeTagsFromResource
+--
+--         , testCreateDBInstance $
+--             createDBInstance
+--
+--         , testRestoreDBInstanceFromDBSnapshot $
+--             restoreDBInstanceFromDBSnapshot
+--
+--         , testAuthorizeDBSecurityGroupIngress $
+--             authorizeDBSecurityGroupIngress
+--
+--         , testDeleteDBClusterParameterGroup $
+--             deleteDBClusterParameterGroup
+--
+--         , testPurchaseReservedDBInstancesOffering $
+--             purchaseReservedDBInstancesOffering
+--
+--         , testDescribeCertificates $
+--             describeCertificates
+--
+--         , testRestoreDBClusterFromSnapshot $
+--             restoreDBClusterFromSnapshot
+--
+--         , testCreateDBSnapshot $
+--             createDBSnapshot
+--
+--         , testDeleteEventSubscription $
+--             deleteEventSubscription
+--
+--         , testDescribeDBParameterGroups $
+--             describeDBParameterGroups
+--
+--         , testDescribeOrderableDBInstanceOptions $
+--             describeOrderableDBInstanceOptions
+--
+--         , testCreateDBClusterParameterGroup $
+--             createDBClusterParameterGroup
+--
+--         , testDescribeEventSubscriptions $
+--             describeEventSubscriptions
+--
+--         , testAddTagsToResource $
+--             addTagsToResource
+--
+--         , testDescribeOptionGroupOptions $
+--             describeOptionGroupOptions
+--
+--         , testDescribeDBParameters $
+--             describeDBParameters
+--
+--         , testDeleteDBClusterSnapshot $
+--             deleteDBClusterSnapshot
+--
+--         , testDescribeDBSnapshots $
+--             describeDBSnapshots
+--
+--         , testDescribeDBSubnetGroups $
+--             describeDBSubnetGroups
+--
+--         , testCreateDBParameterGroup $
+--             createDBParameterGroup
+--
+--         , testCreateDBClusterSnapshot $
+--             createDBClusterSnapshot
+--
+--         , testModifyOptionGroup $
+--             modifyOptionGroup
+--
+--         , testModifyDBCluster $
+--             modifyDBCluster
+--
+--         , testDescribeEventCategories $
+--             describeEventCategories
+--
+--         , testModifyDBClusterParameterGroup $
+--             modifyDBClusterParameterGroup
+--
+--         , testDescribePendingMaintenanceActions $
+--             describePendingMaintenanceActions
+--
+--         , testRestoreDBInstanceToPointInTime $
+--             restoreDBInstanceToPointInTime
+--
+--         , testResetDBParameterGroup $
+--             resetDBParameterGroup
+--
+--         , testCopyDBClusterSnapshot $
+--             copyDBClusterSnapshot
+--
+--         , testModifyDBParameterGroup $
+--             modifyDBParameterGroup
+--
+--         , testFailoverDBCluster $
+--             failoverDBCluster
+--
+--         , testCreateDBCluster $
+--             createDBCluster
+--
+--         , testCreateOptionGroup $
+--             createOptionGroup
+--
+--         , testApplyPendingMaintenanceAction $
+--             applyPendingMaintenanceAction
+--
+--         , testRevokeDBSecurityGroupIngress $
+--             revokeDBSecurityGroupIngress
+--
+--         , testDeleteDBSnapshot $
+--             deleteDBSnapshot
+--
+--         , testDescribeDBClusterParameters $
+--             describeDBClusterParameters
+--
+--         , testCreateDBSecurityGroup $
+--             createDBSecurityGroup
+--
+--         , testDeleteDBSubnetGroup $
+--             deleteDBSubnetGroup
+--
+--         , testDescribeAccountAttributes $
+--             describeAccountAttributes
+--
+--         , testDeleteDBSecurityGroup $
+--             deleteDBSecurityGroup
+--
+--         , testRebootDBInstance $
+--             rebootDBInstance
+--
+--         , testDescribeDBClusterSnapshots $
+--             describeDBClusterSnapshots
+--
+--         , testCreateDBSubnetGroup $
+--             createDBSubnetGroup
+--
+--         , testDescribeReservedDBInstancesOfferings $
+--             describeReservedDBInstancesOfferings
+--
+--         , testDeleteDBInstance $
+--             deleteDBInstance
+--
+--         , testDescribeDBInstances $
+--             describeDBInstances
+--
+--         , testCopyOptionGroup $
+--             copyOptionGroup
+--
+--         , testDownloadDBLogFilePortion $
+--             downloadDBLogFilePortion
+--
+--         , testCreateDBInstanceReadReplica $
+--             createDBInstanceReadReplica
+--
+--         , testRestoreDBClusterToPointInTime $
+--             restoreDBClusterToPointInTime
+--
+--         , testDeleteDBParameterGroup $
+--             deleteDBParameterGroup
+--
+--         , testDescribeDBSecurityGroups $
+--             describeDBSecurityGroups
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testDescribeDBEngineVersionsResponse $
+--             describeDBEngineVersionsResponse
+--
+--         , testDescribeDBClusterParameterGroupsResponse $
+--             describeDBClusterParameterGroupsResponse
+--
+--         , testPromoteReadReplicaResponse $
+--             promoteReadReplicaResponse
+--
+--         , testModifyEventSubscriptionResponse $
+--             modifyEventSubscriptionResponse
+--
+--         , testCopyDBSnapshotResponse $
+--             copyDBSnapshotResponse
+--
+--         , testAddSourceIdentifierToSubscriptionResponse $
+--             addSourceIdentifierToSubscriptionResponse
+--
+--         , testModifyDBInstanceResponse $
+--             modifyDBInstanceResponse
+--
+--         , testResetDBClusterParameterGroupResponse $
+--             dbClusterParameterGroupNameMessage
+--
+--         , testDescribeEventsResponse $
+--             describeEventsResponse
+--
+--         , testDescribeEngineDefaultParametersResponse $
+--             describeEngineDefaultParametersResponse
+--
+--         , testDescribeDBClustersResponse $
+--             describeDBClustersResponse
+--
+--         , testModifyDBSubnetGroupResponse $
+--             modifyDBSubnetGroupResponse
+--
+--         , testDescribeDBLogFilesResponse $
+--             describeDBLogFilesResponse
+--
+--         , testListTagsForResourceResponse $
+--             listTagsForResourceResponse
+--
+--         , testDescribeOptionGroupsResponse $
+--             describeOptionGroupsResponse
+--
+--         , testDeleteDBClusterResponse $
+--             deleteDBClusterResponse
+--
+--         , testRemoveSourceIdentifierFromSubscriptionResponse $
+--             removeSourceIdentifierFromSubscriptionResponse
+--
+--         , testCopyDBParameterGroupResponse $
+--             copyDBParameterGroupResponse
+--
+--         , testDescribeReservedDBInstancesResponse $
+--             describeReservedDBInstancesResponse
+--
+--         , testDeleteOptionGroupResponse $
+--             deleteOptionGroupResponse
+--
+--         , testDescribeEngineDefaultClusterParametersResponse $
+--             describeEngineDefaultClusterParametersResponse
+--
+--         , testCreateEventSubscriptionResponse $
+--             createEventSubscriptionResponse
+--
+--         , testRemoveTagsFromResourceResponse $
+--             removeTagsFromResourceResponse
+--
+--         , testCreateDBInstanceResponse $
+--             createDBInstanceResponse
+--
+--         , testRestoreDBInstanceFromDBSnapshotResponse $
+--             restoreDBInstanceFromDBSnapshotResponse
+--
+--         , testAuthorizeDBSecurityGroupIngressResponse $
+--             authorizeDBSecurityGroupIngressResponse
+--
+--         , testDeleteDBClusterParameterGroupResponse $
+--             deleteDBClusterParameterGroupResponse
+--
+--         , testPurchaseReservedDBInstancesOfferingResponse $
+--             purchaseReservedDBInstancesOfferingResponse
+--
+--         , testDescribeCertificatesResponse $
+--             describeCertificatesResponse
+--
+--         , testRestoreDBClusterFromSnapshotResponse $
+--             restoreDBClusterFromSnapshotResponse
+--
+--         , testCreateDBSnapshotResponse $
+--             createDBSnapshotResponse
+--
+--         , testDeleteEventSubscriptionResponse $
+--             deleteEventSubscriptionResponse
+--
+--         , testDescribeDBParameterGroupsResponse $
+--             describeDBParameterGroupsResponse
+--
+--         , testDescribeOrderableDBInstanceOptionsResponse $
+--             describeOrderableDBInstanceOptionsResponse
+--
+--         , testCreateDBClusterParameterGroupResponse $
+--             createDBClusterParameterGroupResponse
+--
+--         , testDescribeEventSubscriptionsResponse $
+--             describeEventSubscriptionsResponse
+--
+--         , testAddTagsToResourceResponse $
+--             addTagsToResourceResponse
+--
+--         , testDescribeOptionGroupOptionsResponse $
+--             describeOptionGroupOptionsResponse
+--
+--         , testDescribeDBParametersResponse $
+--             describeDBParametersResponse
+--
+--         , testDeleteDBClusterSnapshotResponse $
+--             deleteDBClusterSnapshotResponse
+--
+--         , testDescribeDBSnapshotsResponse $
+--             describeDBSnapshotsResponse
+--
+--         , testDescribeDBSubnetGroupsResponse $
+--             describeDBSubnetGroupsResponse
+--
+--         , testCreateDBParameterGroupResponse $
+--             createDBParameterGroupResponse
+--
+--         , testCreateDBClusterSnapshotResponse $
+--             createDBClusterSnapshotResponse
+--
+--         , testModifyOptionGroupResponse $
+--             modifyOptionGroupResponse
+--
+--         , testModifyDBClusterResponse $
+--             modifyDBClusterResponse
+--
+--         , testDescribeEventCategoriesResponse $
+--             describeEventCategoriesResponse
+--
+--         , testModifyDBClusterParameterGroupResponse $
+--             dbClusterParameterGroupNameMessage
+--
+--         , testDescribePendingMaintenanceActionsResponse $
+--             describePendingMaintenanceActionsResponse
+--
+--         , testRestoreDBInstanceToPointInTimeResponse $
+--             restoreDBInstanceToPointInTimeResponse
+--
+--         , testResetDBParameterGroupResponse $
+--             dbParameterGroupNameMessage
+--
+--         , testCopyDBClusterSnapshotResponse $
+--             copyDBClusterSnapshotResponse
+--
+--         , testModifyDBParameterGroupResponse $
+--             dbParameterGroupNameMessage
+--
+--         , testFailoverDBClusterResponse $
+--             failoverDBClusterResponse
+--
+--         , testCreateDBClusterResponse $
+--             createDBClusterResponse
+--
+--         , testCreateOptionGroupResponse $
+--             createOptionGroupResponse
+--
+--         , testApplyPendingMaintenanceActionResponse $
+--             applyPendingMaintenanceActionResponse
+--
+--         , testRevokeDBSecurityGroupIngressResponse $
+--             revokeDBSecurityGroupIngressResponse
+--
+--         , testDeleteDBSnapshotResponse $
+--             deleteDBSnapshotResponse
+--
+--         , testDescribeDBClusterParametersResponse $
+--             describeDBClusterParametersResponse
+--
+--         , testCreateDBSecurityGroupResponse $
+--             createDBSecurityGroupResponse
+--
+--         , testDeleteDBSubnetGroupResponse $
+--             deleteDBSubnetGroupResponse
+--
+--         , testDescribeAccountAttributesResponse $
+--             describeAccountAttributesResponse
+--
+--         , testDeleteDBSecurityGroupResponse $
+--             deleteDBSecurityGroupResponse
+--
+--         , testRebootDBInstanceResponse $
+--             rebootDBInstanceResponse
+--
+--         , testDescribeDBClusterSnapshotsResponse $
+--             describeDBClusterSnapshotsResponse
+--
+--         , testCreateDBSubnetGroupResponse $
+--             createDBSubnetGroupResponse
+--
+--         , testDescribeReservedDBInstancesOfferingsResponse $
+--             describeReservedDBInstancesOfferingsResponse
+--
+--         , testDeleteDBInstanceResponse $
+--             deleteDBInstanceResponse
+--
+--         , testDescribeDBInstancesResponse $
+--             describeDBInstancesResponse
+--
+--         , testCopyOptionGroupResponse $
+--             copyOptionGroupResponse
+--
+--         , testDownloadDBLogFilePortionResponse $
+--             downloadDBLogFilePortionResponse
+--
+--         , testCreateDBInstanceReadReplicaResponse $
+--             createDBInstanceReadReplicaResponse
+--
+--         , testRestoreDBClusterToPointInTimeResponse $
+--             restoreDBClusterToPointInTimeResponse
+--
+--         , testDeleteDBParameterGroupResponse $
+--             deleteDBParameterGroupResponse
+--
+--         , testDescribeDBSecurityGroupsResponse $
+--             describeDBSecurityGroupsResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testDescribeDBEngineVersions :: DescribeDBEngineVersions -> TestTree
+testDescribeDBEngineVersions = req
+    "DescribeDBEngineVersions"
+    "fixture/DescribeDBEngineVersions"
+
+testDescribeDBClusterParameterGroups :: DescribeDBClusterParameterGroups -> TestTree
+testDescribeDBClusterParameterGroups = req
+    "DescribeDBClusterParameterGroups"
+    "fixture/DescribeDBClusterParameterGroups"
+
+testPromoteReadReplica :: PromoteReadReplica -> TestTree
+testPromoteReadReplica = req
+    "PromoteReadReplica"
+    "fixture/PromoteReadReplica"
+
+testModifyEventSubscription :: ModifyEventSubscription -> TestTree
+testModifyEventSubscription = req
+    "ModifyEventSubscription"
+    "fixture/ModifyEventSubscription"
+
+testCopyDBSnapshot :: CopyDBSnapshot -> TestTree
+testCopyDBSnapshot = req
+    "CopyDBSnapshot"
+    "fixture/CopyDBSnapshot"
+
+testAddSourceIdentifierToSubscription :: AddSourceIdentifierToSubscription -> TestTree
+testAddSourceIdentifierToSubscription = req
+    "AddSourceIdentifierToSubscription"
+    "fixture/AddSourceIdentifierToSubscription"
+
+testModifyDBInstance :: ModifyDBInstance -> TestTree
+testModifyDBInstance = req
+    "ModifyDBInstance"
+    "fixture/ModifyDBInstance"
+
+testResetDBClusterParameterGroup :: ResetDBClusterParameterGroup -> TestTree
+testResetDBClusterParameterGroup = req
+    "ResetDBClusterParameterGroup"
+    "fixture/ResetDBClusterParameterGroup"
+
+testDescribeEvents :: DescribeEvents -> TestTree
+testDescribeEvents = req
+    "DescribeEvents"
+    "fixture/DescribeEvents"
+
+testDescribeEngineDefaultParameters :: DescribeEngineDefaultParameters -> TestTree
+testDescribeEngineDefaultParameters = req
+    "DescribeEngineDefaultParameters"
+    "fixture/DescribeEngineDefaultParameters"
+
+testDescribeDBClusters :: DescribeDBClusters -> TestTree
+testDescribeDBClusters = req
+    "DescribeDBClusters"
+    "fixture/DescribeDBClusters"
+
+testModifyDBSubnetGroup :: ModifyDBSubnetGroup -> TestTree
+testModifyDBSubnetGroup = req
+    "ModifyDBSubnetGroup"
+    "fixture/ModifyDBSubnetGroup"
+
+testDescribeDBLogFiles :: DescribeDBLogFiles -> TestTree
+testDescribeDBLogFiles = req
+    "DescribeDBLogFiles"
+    "fixture/DescribeDBLogFiles"
+
+testListTagsForResource :: ListTagsForResource -> TestTree
+testListTagsForResource = req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource"
+
+testDescribeOptionGroups :: DescribeOptionGroups -> TestTree
+testDescribeOptionGroups = req
+    "DescribeOptionGroups"
+    "fixture/DescribeOptionGroups"
+
+testDeleteDBCluster :: DeleteDBCluster -> TestTree
+testDeleteDBCluster = req
+    "DeleteDBCluster"
+    "fixture/DeleteDBCluster"
+
+testRemoveSourceIdentifierFromSubscription :: RemoveSourceIdentifierFromSubscription -> TestTree
+testRemoveSourceIdentifierFromSubscription = req
+    "RemoveSourceIdentifierFromSubscription"
+    "fixture/RemoveSourceIdentifierFromSubscription"
+
+testCopyDBParameterGroup :: CopyDBParameterGroup -> TestTree
+testCopyDBParameterGroup = req
+    "CopyDBParameterGroup"
+    "fixture/CopyDBParameterGroup"
+
+testDescribeReservedDBInstances :: DescribeReservedDBInstances -> TestTree
+testDescribeReservedDBInstances = req
+    "DescribeReservedDBInstances"
+    "fixture/DescribeReservedDBInstances"
+
+testDeleteOptionGroup :: DeleteOptionGroup -> TestTree
+testDeleteOptionGroup = req
+    "DeleteOptionGroup"
+    "fixture/DeleteOptionGroup"
+
+testDescribeEngineDefaultClusterParameters :: DescribeEngineDefaultClusterParameters -> TestTree
+testDescribeEngineDefaultClusterParameters = req
+    "DescribeEngineDefaultClusterParameters"
+    "fixture/DescribeEngineDefaultClusterParameters"
+
+testCreateEventSubscription :: CreateEventSubscription -> TestTree
+testCreateEventSubscription = req
+    "CreateEventSubscription"
+    "fixture/CreateEventSubscription"
+
+testRemoveTagsFromResource :: RemoveTagsFromResource -> TestTree
+testRemoveTagsFromResource = req
+    "RemoveTagsFromResource"
+    "fixture/RemoveTagsFromResource"
+
+testCreateDBInstance :: CreateDBInstance -> TestTree
+testCreateDBInstance = req
+    "CreateDBInstance"
+    "fixture/CreateDBInstance"
+
+testRestoreDBInstanceFromDBSnapshot :: RestoreDBInstanceFromDBSnapshot -> TestTree
+testRestoreDBInstanceFromDBSnapshot = req
+    "RestoreDBInstanceFromDBSnapshot"
+    "fixture/RestoreDBInstanceFromDBSnapshot"
+
+testAuthorizeDBSecurityGroupIngress :: AuthorizeDBSecurityGroupIngress -> TestTree
+testAuthorizeDBSecurityGroupIngress = req
+    "AuthorizeDBSecurityGroupIngress"
+    "fixture/AuthorizeDBSecurityGroupIngress"
+
+testDeleteDBClusterParameterGroup :: DeleteDBClusterParameterGroup -> TestTree
+testDeleteDBClusterParameterGroup = req
+    "DeleteDBClusterParameterGroup"
+    "fixture/DeleteDBClusterParameterGroup"
+
+testPurchaseReservedDBInstancesOffering :: PurchaseReservedDBInstancesOffering -> TestTree
+testPurchaseReservedDBInstancesOffering = req
+    "PurchaseReservedDBInstancesOffering"
+    "fixture/PurchaseReservedDBInstancesOffering"
+
+testDescribeCertificates :: DescribeCertificates -> TestTree
+testDescribeCertificates = req
+    "DescribeCertificates"
+    "fixture/DescribeCertificates"
+
+testRestoreDBClusterFromSnapshot :: RestoreDBClusterFromSnapshot -> TestTree
+testRestoreDBClusterFromSnapshot = req
+    "RestoreDBClusterFromSnapshot"
+    "fixture/RestoreDBClusterFromSnapshot"
+
+testCreateDBSnapshot :: CreateDBSnapshot -> TestTree
+testCreateDBSnapshot = req
+    "CreateDBSnapshot"
+    "fixture/CreateDBSnapshot"
+
+testDeleteEventSubscription :: DeleteEventSubscription -> TestTree
+testDeleteEventSubscription = req
+    "DeleteEventSubscription"
+    "fixture/DeleteEventSubscription"
+
+testDescribeDBParameterGroups :: DescribeDBParameterGroups -> TestTree
+testDescribeDBParameterGroups = req
+    "DescribeDBParameterGroups"
+    "fixture/DescribeDBParameterGroups"
+
+testDescribeOrderableDBInstanceOptions :: DescribeOrderableDBInstanceOptions -> TestTree
+testDescribeOrderableDBInstanceOptions = req
+    "DescribeOrderableDBInstanceOptions"
+    "fixture/DescribeOrderableDBInstanceOptions"
+
+testCreateDBClusterParameterGroup :: CreateDBClusterParameterGroup -> TestTree
+testCreateDBClusterParameterGroup = req
+    "CreateDBClusterParameterGroup"
+    "fixture/CreateDBClusterParameterGroup"
+
+testDescribeEventSubscriptions :: DescribeEventSubscriptions -> TestTree
+testDescribeEventSubscriptions = req
+    "DescribeEventSubscriptions"
+    "fixture/DescribeEventSubscriptions"
+
+testAddTagsToResource :: AddTagsToResource -> TestTree
+testAddTagsToResource = req
+    "AddTagsToResource"
+    "fixture/AddTagsToResource"
+
+testDescribeOptionGroupOptions :: DescribeOptionGroupOptions -> TestTree
+testDescribeOptionGroupOptions = req
+    "DescribeOptionGroupOptions"
+    "fixture/DescribeOptionGroupOptions"
+
+testDescribeDBParameters :: DescribeDBParameters -> TestTree
+testDescribeDBParameters = req
+    "DescribeDBParameters"
+    "fixture/DescribeDBParameters"
+
+testDeleteDBClusterSnapshot :: DeleteDBClusterSnapshot -> TestTree
+testDeleteDBClusterSnapshot = req
+    "DeleteDBClusterSnapshot"
+    "fixture/DeleteDBClusterSnapshot"
+
+testDescribeDBSnapshots :: DescribeDBSnapshots -> TestTree
+testDescribeDBSnapshots = req
+    "DescribeDBSnapshots"
+    "fixture/DescribeDBSnapshots"
+
+testDescribeDBSubnetGroups :: DescribeDBSubnetGroups -> TestTree
+testDescribeDBSubnetGroups = req
+    "DescribeDBSubnetGroups"
+    "fixture/DescribeDBSubnetGroups"
+
+testCreateDBParameterGroup :: CreateDBParameterGroup -> TestTree
+testCreateDBParameterGroup = req
+    "CreateDBParameterGroup"
+    "fixture/CreateDBParameterGroup"
+
+testCreateDBClusterSnapshot :: CreateDBClusterSnapshot -> TestTree
+testCreateDBClusterSnapshot = req
+    "CreateDBClusterSnapshot"
+    "fixture/CreateDBClusterSnapshot"
+
+testModifyOptionGroup :: ModifyOptionGroup -> TestTree
+testModifyOptionGroup = req
+    "ModifyOptionGroup"
+    "fixture/ModifyOptionGroup"
+
+testModifyDBCluster :: ModifyDBCluster -> TestTree
+testModifyDBCluster = req
+    "ModifyDBCluster"
+    "fixture/ModifyDBCluster"
+
+testDescribeEventCategories :: DescribeEventCategories -> TestTree
+testDescribeEventCategories = req
+    "DescribeEventCategories"
+    "fixture/DescribeEventCategories"
+
+testModifyDBClusterParameterGroup :: ModifyDBClusterParameterGroup -> TestTree
+testModifyDBClusterParameterGroup = req
+    "ModifyDBClusterParameterGroup"
+    "fixture/ModifyDBClusterParameterGroup"
+
+testDescribePendingMaintenanceActions :: DescribePendingMaintenanceActions -> TestTree
+testDescribePendingMaintenanceActions = req
+    "DescribePendingMaintenanceActions"
+    "fixture/DescribePendingMaintenanceActions"
+
+testRestoreDBInstanceToPointInTime :: RestoreDBInstanceToPointInTime -> TestTree
+testRestoreDBInstanceToPointInTime = req
+    "RestoreDBInstanceToPointInTime"
+    "fixture/RestoreDBInstanceToPointInTime"
+
+testResetDBParameterGroup :: ResetDBParameterGroup -> TestTree
+testResetDBParameterGroup = req
+    "ResetDBParameterGroup"
+    "fixture/ResetDBParameterGroup"
+
+testCopyDBClusterSnapshot :: CopyDBClusterSnapshot -> TestTree
+testCopyDBClusterSnapshot = req
+    "CopyDBClusterSnapshot"
+    "fixture/CopyDBClusterSnapshot"
+
+testModifyDBParameterGroup :: ModifyDBParameterGroup -> TestTree
+testModifyDBParameterGroup = req
+    "ModifyDBParameterGroup"
+    "fixture/ModifyDBParameterGroup"
+
+testFailoverDBCluster :: FailoverDBCluster -> TestTree
+testFailoverDBCluster = req
+    "FailoverDBCluster"
+    "fixture/FailoverDBCluster"
+
+testCreateDBCluster :: CreateDBCluster -> TestTree
+testCreateDBCluster = req
+    "CreateDBCluster"
+    "fixture/CreateDBCluster"
+
+testCreateOptionGroup :: CreateOptionGroup -> TestTree
+testCreateOptionGroup = req
+    "CreateOptionGroup"
+    "fixture/CreateOptionGroup"
+
+testApplyPendingMaintenanceAction :: ApplyPendingMaintenanceAction -> TestTree
+testApplyPendingMaintenanceAction = req
+    "ApplyPendingMaintenanceAction"
+    "fixture/ApplyPendingMaintenanceAction"
+
+testRevokeDBSecurityGroupIngress :: RevokeDBSecurityGroupIngress -> TestTree
+testRevokeDBSecurityGroupIngress = req
+    "RevokeDBSecurityGroupIngress"
+    "fixture/RevokeDBSecurityGroupIngress"
+
+testDeleteDBSnapshot :: DeleteDBSnapshot -> TestTree
+testDeleteDBSnapshot = req
+    "DeleteDBSnapshot"
+    "fixture/DeleteDBSnapshot"
+
+testDescribeDBClusterParameters :: DescribeDBClusterParameters -> TestTree
+testDescribeDBClusterParameters = req
+    "DescribeDBClusterParameters"
+    "fixture/DescribeDBClusterParameters"
+
+testCreateDBSecurityGroup :: CreateDBSecurityGroup -> TestTree
+testCreateDBSecurityGroup = req
+    "CreateDBSecurityGroup"
+    "fixture/CreateDBSecurityGroup"
+
+testDeleteDBSubnetGroup :: DeleteDBSubnetGroup -> TestTree
+testDeleteDBSubnetGroup = req
+    "DeleteDBSubnetGroup"
+    "fixture/DeleteDBSubnetGroup"
+
+testDescribeAccountAttributes :: DescribeAccountAttributes -> TestTree
+testDescribeAccountAttributes = req
+    "DescribeAccountAttributes"
+    "fixture/DescribeAccountAttributes"
+
+testDeleteDBSecurityGroup :: DeleteDBSecurityGroup -> TestTree
+testDeleteDBSecurityGroup = req
+    "DeleteDBSecurityGroup"
+    "fixture/DeleteDBSecurityGroup"
+
+testRebootDBInstance :: RebootDBInstance -> TestTree
+testRebootDBInstance = req
+    "RebootDBInstance"
+    "fixture/RebootDBInstance"
+
+testDescribeDBClusterSnapshots :: DescribeDBClusterSnapshots -> TestTree
+testDescribeDBClusterSnapshots = req
+    "DescribeDBClusterSnapshots"
+    "fixture/DescribeDBClusterSnapshots"
+
+testCreateDBSubnetGroup :: CreateDBSubnetGroup -> TestTree
+testCreateDBSubnetGroup = req
+    "CreateDBSubnetGroup"
+    "fixture/CreateDBSubnetGroup"
+
+testDescribeReservedDBInstancesOfferings :: DescribeReservedDBInstancesOfferings -> TestTree
+testDescribeReservedDBInstancesOfferings = req
+    "DescribeReservedDBInstancesOfferings"
+    "fixture/DescribeReservedDBInstancesOfferings"
+
+testDeleteDBInstance :: DeleteDBInstance -> TestTree
+testDeleteDBInstance = req
+    "DeleteDBInstance"
+    "fixture/DeleteDBInstance"
+
+testDescribeDBInstances :: DescribeDBInstances -> TestTree
+testDescribeDBInstances = req
+    "DescribeDBInstances"
+    "fixture/DescribeDBInstances"
+
+testCopyOptionGroup :: CopyOptionGroup -> TestTree
+testCopyOptionGroup = req
+    "CopyOptionGroup"
+    "fixture/CopyOptionGroup"
+
+testDownloadDBLogFilePortion :: DownloadDBLogFilePortion -> TestTree
+testDownloadDBLogFilePortion = req
+    "DownloadDBLogFilePortion"
+    "fixture/DownloadDBLogFilePortion"
+
+testCreateDBInstanceReadReplica :: CreateDBInstanceReadReplica -> TestTree
+testCreateDBInstanceReadReplica = req
+    "CreateDBInstanceReadReplica"
+    "fixture/CreateDBInstanceReadReplica"
+
+testRestoreDBClusterToPointInTime :: RestoreDBClusterToPointInTime -> TestTree
+testRestoreDBClusterToPointInTime = req
+    "RestoreDBClusterToPointInTime"
+    "fixture/RestoreDBClusterToPointInTime"
+
+testDeleteDBParameterGroup :: DeleteDBParameterGroup -> TestTree
+testDeleteDBParameterGroup = req
+    "DeleteDBParameterGroup"
+    "fixture/DeleteDBParameterGroup"
+
+testDescribeDBSecurityGroups :: DescribeDBSecurityGroups -> TestTree
+testDescribeDBSecurityGroups = req
+    "DescribeDBSecurityGroups"
+    "fixture/DescribeDBSecurityGroups"
+
+-- Responses
+
+testDescribeDBEngineVersionsResponse :: DescribeDBEngineVersionsResponse -> TestTree
+testDescribeDBEngineVersionsResponse = res
+    "DescribeDBEngineVersionsResponse"
+    "fixture/DescribeDBEngineVersionsResponse"
+    (Proxy :: Proxy DescribeDBEngineVersions)
+
+testDescribeDBClusterParameterGroupsResponse :: DescribeDBClusterParameterGroupsResponse -> TestTree
+testDescribeDBClusterParameterGroupsResponse = res
+    "DescribeDBClusterParameterGroupsResponse"
+    "fixture/DescribeDBClusterParameterGroupsResponse"
+    (Proxy :: Proxy DescribeDBClusterParameterGroups)
+
+testPromoteReadReplicaResponse :: PromoteReadReplicaResponse -> TestTree
+testPromoteReadReplicaResponse = res
+    "PromoteReadReplicaResponse"
+    "fixture/PromoteReadReplicaResponse"
+    (Proxy :: Proxy PromoteReadReplica)
+
+testModifyEventSubscriptionResponse :: ModifyEventSubscriptionResponse -> TestTree
+testModifyEventSubscriptionResponse = res
+    "ModifyEventSubscriptionResponse"
+    "fixture/ModifyEventSubscriptionResponse"
+    (Proxy :: Proxy ModifyEventSubscription)
+
+testCopyDBSnapshotResponse :: CopyDBSnapshotResponse -> TestTree
+testCopyDBSnapshotResponse = res
+    "CopyDBSnapshotResponse"
+    "fixture/CopyDBSnapshotResponse"
+    (Proxy :: Proxy CopyDBSnapshot)
+
+testAddSourceIdentifierToSubscriptionResponse :: AddSourceIdentifierToSubscriptionResponse -> TestTree
+testAddSourceIdentifierToSubscriptionResponse = res
+    "AddSourceIdentifierToSubscriptionResponse"
+    "fixture/AddSourceIdentifierToSubscriptionResponse"
+    (Proxy :: Proxy AddSourceIdentifierToSubscription)
+
+testModifyDBInstanceResponse :: ModifyDBInstanceResponse -> TestTree
+testModifyDBInstanceResponse = res
+    "ModifyDBInstanceResponse"
+    "fixture/ModifyDBInstanceResponse"
+    (Proxy :: Proxy ModifyDBInstance)
+
+testResetDBClusterParameterGroupResponse :: DBClusterParameterGroupNameMessage -> TestTree
+testResetDBClusterParameterGroupResponse = res
+    "ResetDBClusterParameterGroupResponse"
+    "fixture/ResetDBClusterParameterGroupResponse"
+    (Proxy :: Proxy ResetDBClusterParameterGroup)
+
+testDescribeEventsResponse :: DescribeEventsResponse -> TestTree
+testDescribeEventsResponse = res
+    "DescribeEventsResponse"
+    "fixture/DescribeEventsResponse"
+    (Proxy :: Proxy DescribeEvents)
+
+testDescribeEngineDefaultParametersResponse :: DescribeEngineDefaultParametersResponse -> TestTree
+testDescribeEngineDefaultParametersResponse = res
+    "DescribeEngineDefaultParametersResponse"
+    "fixture/DescribeEngineDefaultParametersResponse"
+    (Proxy :: Proxy DescribeEngineDefaultParameters)
+
+testDescribeDBClustersResponse :: DescribeDBClustersResponse -> TestTree
+testDescribeDBClustersResponse = res
+    "DescribeDBClustersResponse"
+    "fixture/DescribeDBClustersResponse"
+    (Proxy :: Proxy DescribeDBClusters)
+
+testModifyDBSubnetGroupResponse :: ModifyDBSubnetGroupResponse -> TestTree
+testModifyDBSubnetGroupResponse = res
+    "ModifyDBSubnetGroupResponse"
+    "fixture/ModifyDBSubnetGroupResponse"
+    (Proxy :: Proxy ModifyDBSubnetGroup)
+
+testDescribeDBLogFilesResponse :: DescribeDBLogFilesResponse -> TestTree
+testDescribeDBLogFilesResponse = res
+    "DescribeDBLogFilesResponse"
+    "fixture/DescribeDBLogFilesResponse"
+    (Proxy :: Proxy DescribeDBLogFiles)
+
+testListTagsForResourceResponse :: ListTagsForResourceResponse -> TestTree
+testListTagsForResourceResponse = res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse"
+    (Proxy :: Proxy ListTagsForResource)
+
+testDescribeOptionGroupsResponse :: DescribeOptionGroupsResponse -> TestTree
+testDescribeOptionGroupsResponse = res
+    "DescribeOptionGroupsResponse"
+    "fixture/DescribeOptionGroupsResponse"
+    (Proxy :: Proxy DescribeOptionGroups)
+
+testDeleteDBClusterResponse :: DeleteDBClusterResponse -> TestTree
+testDeleteDBClusterResponse = res
+    "DeleteDBClusterResponse"
+    "fixture/DeleteDBClusterResponse"
+    (Proxy :: Proxy DeleteDBCluster)
+
+testRemoveSourceIdentifierFromSubscriptionResponse :: RemoveSourceIdentifierFromSubscriptionResponse -> TestTree
+testRemoveSourceIdentifierFromSubscriptionResponse = res
+    "RemoveSourceIdentifierFromSubscriptionResponse"
+    "fixture/RemoveSourceIdentifierFromSubscriptionResponse"
+    (Proxy :: Proxy RemoveSourceIdentifierFromSubscription)
+
+testCopyDBParameterGroupResponse :: CopyDBParameterGroupResponse -> TestTree
+testCopyDBParameterGroupResponse = res
+    "CopyDBParameterGroupResponse"
+    "fixture/CopyDBParameterGroupResponse"
+    (Proxy :: Proxy CopyDBParameterGroup)
+
+testDescribeReservedDBInstancesResponse :: DescribeReservedDBInstancesResponse -> TestTree
+testDescribeReservedDBInstancesResponse = res
+    "DescribeReservedDBInstancesResponse"
+    "fixture/DescribeReservedDBInstancesResponse"
+    (Proxy :: Proxy DescribeReservedDBInstances)
+
+testDeleteOptionGroupResponse :: DeleteOptionGroupResponse -> TestTree
+testDeleteOptionGroupResponse = res
+    "DeleteOptionGroupResponse"
+    "fixture/DeleteOptionGroupResponse"
+    (Proxy :: Proxy DeleteOptionGroup)
+
+testDescribeEngineDefaultClusterParametersResponse :: DescribeEngineDefaultClusterParametersResponse -> TestTree
+testDescribeEngineDefaultClusterParametersResponse = res
+    "DescribeEngineDefaultClusterParametersResponse"
+    "fixture/DescribeEngineDefaultClusterParametersResponse"
+    (Proxy :: Proxy DescribeEngineDefaultClusterParameters)
+
+testCreateEventSubscriptionResponse :: CreateEventSubscriptionResponse -> TestTree
+testCreateEventSubscriptionResponse = res
+    "CreateEventSubscriptionResponse"
+    "fixture/CreateEventSubscriptionResponse"
+    (Proxy :: Proxy CreateEventSubscription)
+
+testRemoveTagsFromResourceResponse :: RemoveTagsFromResourceResponse -> TestTree
+testRemoveTagsFromResourceResponse = res
+    "RemoveTagsFromResourceResponse"
+    "fixture/RemoveTagsFromResourceResponse"
+    (Proxy :: Proxy RemoveTagsFromResource)
+
+testCreateDBInstanceResponse :: CreateDBInstanceResponse -> TestTree
+testCreateDBInstanceResponse = res
+    "CreateDBInstanceResponse"
+    "fixture/CreateDBInstanceResponse"
+    (Proxy :: Proxy CreateDBInstance)
+
+testRestoreDBInstanceFromDBSnapshotResponse :: RestoreDBInstanceFromDBSnapshotResponse -> TestTree
+testRestoreDBInstanceFromDBSnapshotResponse = res
+    "RestoreDBInstanceFromDBSnapshotResponse"
+    "fixture/RestoreDBInstanceFromDBSnapshotResponse"
+    (Proxy :: Proxy RestoreDBInstanceFromDBSnapshot)
+
+testAuthorizeDBSecurityGroupIngressResponse :: AuthorizeDBSecurityGroupIngressResponse -> TestTree
+testAuthorizeDBSecurityGroupIngressResponse = res
+    "AuthorizeDBSecurityGroupIngressResponse"
+    "fixture/AuthorizeDBSecurityGroupIngressResponse"
+    (Proxy :: Proxy AuthorizeDBSecurityGroupIngress)
+
+testDeleteDBClusterParameterGroupResponse :: DeleteDBClusterParameterGroupResponse -> TestTree
+testDeleteDBClusterParameterGroupResponse = res
+    "DeleteDBClusterParameterGroupResponse"
+    "fixture/DeleteDBClusterParameterGroupResponse"
+    (Proxy :: Proxy DeleteDBClusterParameterGroup)
+
+testPurchaseReservedDBInstancesOfferingResponse :: PurchaseReservedDBInstancesOfferingResponse -> TestTree
+testPurchaseReservedDBInstancesOfferingResponse = res
+    "PurchaseReservedDBInstancesOfferingResponse"
+    "fixture/PurchaseReservedDBInstancesOfferingResponse"
+    (Proxy :: Proxy PurchaseReservedDBInstancesOffering)
+
+testDescribeCertificatesResponse :: DescribeCertificatesResponse -> TestTree
+testDescribeCertificatesResponse = res
+    "DescribeCertificatesResponse"
+    "fixture/DescribeCertificatesResponse"
+    (Proxy :: Proxy DescribeCertificates)
+
+testRestoreDBClusterFromSnapshotResponse :: RestoreDBClusterFromSnapshotResponse -> TestTree
+testRestoreDBClusterFromSnapshotResponse = res
+    "RestoreDBClusterFromSnapshotResponse"
+    "fixture/RestoreDBClusterFromSnapshotResponse"
+    (Proxy :: Proxy RestoreDBClusterFromSnapshot)
+
+testCreateDBSnapshotResponse :: CreateDBSnapshotResponse -> TestTree
+testCreateDBSnapshotResponse = res
+    "CreateDBSnapshotResponse"
+    "fixture/CreateDBSnapshotResponse"
+    (Proxy :: Proxy CreateDBSnapshot)
+
+testDeleteEventSubscriptionResponse :: DeleteEventSubscriptionResponse -> TestTree
+testDeleteEventSubscriptionResponse = res
+    "DeleteEventSubscriptionResponse"
+    "fixture/DeleteEventSubscriptionResponse"
+    (Proxy :: Proxy DeleteEventSubscription)
+
+testDescribeDBParameterGroupsResponse :: DescribeDBParameterGroupsResponse -> TestTree
+testDescribeDBParameterGroupsResponse = res
+    "DescribeDBParameterGroupsResponse"
+    "fixture/DescribeDBParameterGroupsResponse"
+    (Proxy :: Proxy DescribeDBParameterGroups)
+
+testDescribeOrderableDBInstanceOptionsResponse :: DescribeOrderableDBInstanceOptionsResponse -> TestTree
+testDescribeOrderableDBInstanceOptionsResponse = res
+    "DescribeOrderableDBInstanceOptionsResponse"
+    "fixture/DescribeOrderableDBInstanceOptionsResponse"
+    (Proxy :: Proxy DescribeOrderableDBInstanceOptions)
+
+testCreateDBClusterParameterGroupResponse :: CreateDBClusterParameterGroupResponse -> TestTree
+testCreateDBClusterParameterGroupResponse = res
+    "CreateDBClusterParameterGroupResponse"
+    "fixture/CreateDBClusterParameterGroupResponse"
+    (Proxy :: Proxy CreateDBClusterParameterGroup)
+
+testDescribeEventSubscriptionsResponse :: DescribeEventSubscriptionsResponse -> TestTree
+testDescribeEventSubscriptionsResponse = res
+    "DescribeEventSubscriptionsResponse"
+    "fixture/DescribeEventSubscriptionsResponse"
+    (Proxy :: Proxy DescribeEventSubscriptions)
+
+testAddTagsToResourceResponse :: AddTagsToResourceResponse -> TestTree
+testAddTagsToResourceResponse = res
+    "AddTagsToResourceResponse"
+    "fixture/AddTagsToResourceResponse"
+    (Proxy :: Proxy AddTagsToResource)
+
+testDescribeOptionGroupOptionsResponse :: DescribeOptionGroupOptionsResponse -> TestTree
+testDescribeOptionGroupOptionsResponse = res
+    "DescribeOptionGroupOptionsResponse"
+    "fixture/DescribeOptionGroupOptionsResponse"
+    (Proxy :: Proxy DescribeOptionGroupOptions)
+
+testDescribeDBParametersResponse :: DescribeDBParametersResponse -> TestTree
+testDescribeDBParametersResponse = res
+    "DescribeDBParametersResponse"
+    "fixture/DescribeDBParametersResponse"
+    (Proxy :: Proxy DescribeDBParameters)
+
+testDeleteDBClusterSnapshotResponse :: DeleteDBClusterSnapshotResponse -> TestTree
+testDeleteDBClusterSnapshotResponse = res
+    "DeleteDBClusterSnapshotResponse"
+    "fixture/DeleteDBClusterSnapshotResponse"
+    (Proxy :: Proxy DeleteDBClusterSnapshot)
+
+testDescribeDBSnapshotsResponse :: DescribeDBSnapshotsResponse -> TestTree
+testDescribeDBSnapshotsResponse = res
+    "DescribeDBSnapshotsResponse"
+    "fixture/DescribeDBSnapshotsResponse"
+    (Proxy :: Proxy DescribeDBSnapshots)
+
+testDescribeDBSubnetGroupsResponse :: DescribeDBSubnetGroupsResponse -> TestTree
+testDescribeDBSubnetGroupsResponse = res
+    "DescribeDBSubnetGroupsResponse"
+    "fixture/DescribeDBSubnetGroupsResponse"
+    (Proxy :: Proxy DescribeDBSubnetGroups)
+
+testCreateDBParameterGroupResponse :: CreateDBParameterGroupResponse -> TestTree
+testCreateDBParameterGroupResponse = res
+    "CreateDBParameterGroupResponse"
+    "fixture/CreateDBParameterGroupResponse"
+    (Proxy :: Proxy CreateDBParameterGroup)
+
+testCreateDBClusterSnapshotResponse :: CreateDBClusterSnapshotResponse -> TestTree
+testCreateDBClusterSnapshotResponse = res
+    "CreateDBClusterSnapshotResponse"
+    "fixture/CreateDBClusterSnapshotResponse"
+    (Proxy :: Proxy CreateDBClusterSnapshot)
+
+testModifyOptionGroupResponse :: ModifyOptionGroupResponse -> TestTree
+testModifyOptionGroupResponse = res
+    "ModifyOptionGroupResponse"
+    "fixture/ModifyOptionGroupResponse"
+    (Proxy :: Proxy ModifyOptionGroup)
+
+testModifyDBClusterResponse :: ModifyDBClusterResponse -> TestTree
+testModifyDBClusterResponse = res
+    "ModifyDBClusterResponse"
+    "fixture/ModifyDBClusterResponse"
+    (Proxy :: Proxy ModifyDBCluster)
+
+testDescribeEventCategoriesResponse :: DescribeEventCategoriesResponse -> TestTree
+testDescribeEventCategoriesResponse = res
+    "DescribeEventCategoriesResponse"
+    "fixture/DescribeEventCategoriesResponse"
+    (Proxy :: Proxy DescribeEventCategories)
+
+testModifyDBClusterParameterGroupResponse :: DBClusterParameterGroupNameMessage -> TestTree
+testModifyDBClusterParameterGroupResponse = res
+    "ModifyDBClusterParameterGroupResponse"
+    "fixture/ModifyDBClusterParameterGroupResponse"
+    (Proxy :: Proxy ModifyDBClusterParameterGroup)
+
+testDescribePendingMaintenanceActionsResponse :: DescribePendingMaintenanceActionsResponse -> TestTree
+testDescribePendingMaintenanceActionsResponse = res
+    "DescribePendingMaintenanceActionsResponse"
+    "fixture/DescribePendingMaintenanceActionsResponse"
+    (Proxy :: Proxy DescribePendingMaintenanceActions)
+
+testRestoreDBInstanceToPointInTimeResponse :: RestoreDBInstanceToPointInTimeResponse -> TestTree
+testRestoreDBInstanceToPointInTimeResponse = res
+    "RestoreDBInstanceToPointInTimeResponse"
+    "fixture/RestoreDBInstanceToPointInTimeResponse"
+    (Proxy :: Proxy RestoreDBInstanceToPointInTime)
+
+testResetDBParameterGroupResponse :: DBParameterGroupNameMessage -> TestTree
+testResetDBParameterGroupResponse = res
+    "ResetDBParameterGroupResponse"
+    "fixture/ResetDBParameterGroupResponse"
+    (Proxy :: Proxy ResetDBParameterGroup)
+
+testCopyDBClusterSnapshotResponse :: CopyDBClusterSnapshotResponse -> TestTree
+testCopyDBClusterSnapshotResponse = res
+    "CopyDBClusterSnapshotResponse"
+    "fixture/CopyDBClusterSnapshotResponse"
+    (Proxy :: Proxy CopyDBClusterSnapshot)
+
+testModifyDBParameterGroupResponse :: DBParameterGroupNameMessage -> TestTree
+testModifyDBParameterGroupResponse = res
+    "ModifyDBParameterGroupResponse"
+    "fixture/ModifyDBParameterGroupResponse"
+    (Proxy :: Proxy ModifyDBParameterGroup)
+
+testFailoverDBClusterResponse :: FailoverDBClusterResponse -> TestTree
+testFailoverDBClusterResponse = res
+    "FailoverDBClusterResponse"
+    "fixture/FailoverDBClusterResponse"
+    (Proxy :: Proxy FailoverDBCluster)
+
+testCreateDBClusterResponse :: CreateDBClusterResponse -> TestTree
+testCreateDBClusterResponse = res
+    "CreateDBClusterResponse"
+    "fixture/CreateDBClusterResponse"
+    (Proxy :: Proxy CreateDBCluster)
+
+testCreateOptionGroupResponse :: CreateOptionGroupResponse -> TestTree
+testCreateOptionGroupResponse = res
+    "CreateOptionGroupResponse"
+    "fixture/CreateOptionGroupResponse"
+    (Proxy :: Proxy CreateOptionGroup)
+
+testApplyPendingMaintenanceActionResponse :: ApplyPendingMaintenanceActionResponse -> TestTree
+testApplyPendingMaintenanceActionResponse = res
+    "ApplyPendingMaintenanceActionResponse"
+    "fixture/ApplyPendingMaintenanceActionResponse"
+    (Proxy :: Proxy ApplyPendingMaintenanceAction)
+
+testRevokeDBSecurityGroupIngressResponse :: RevokeDBSecurityGroupIngressResponse -> TestTree
+testRevokeDBSecurityGroupIngressResponse = res
+    "RevokeDBSecurityGroupIngressResponse"
+    "fixture/RevokeDBSecurityGroupIngressResponse"
+    (Proxy :: Proxy RevokeDBSecurityGroupIngress)
+
+testDeleteDBSnapshotResponse :: DeleteDBSnapshotResponse -> TestTree
+testDeleteDBSnapshotResponse = res
+    "DeleteDBSnapshotResponse"
+    "fixture/DeleteDBSnapshotResponse"
+    (Proxy :: Proxy DeleteDBSnapshot)
+
+testDescribeDBClusterParametersResponse :: DescribeDBClusterParametersResponse -> TestTree
+testDescribeDBClusterParametersResponse = res
+    "DescribeDBClusterParametersResponse"
+    "fixture/DescribeDBClusterParametersResponse"
+    (Proxy :: Proxy DescribeDBClusterParameters)
+
+testCreateDBSecurityGroupResponse :: CreateDBSecurityGroupResponse -> TestTree
+testCreateDBSecurityGroupResponse = res
+    "CreateDBSecurityGroupResponse"
+    "fixture/CreateDBSecurityGroupResponse"
+    (Proxy :: Proxy CreateDBSecurityGroup)
+
+testDeleteDBSubnetGroupResponse :: DeleteDBSubnetGroupResponse -> TestTree
+testDeleteDBSubnetGroupResponse = res
+    "DeleteDBSubnetGroupResponse"
+    "fixture/DeleteDBSubnetGroupResponse"
+    (Proxy :: Proxy DeleteDBSubnetGroup)
+
+testDescribeAccountAttributesResponse :: DescribeAccountAttributesResponse -> TestTree
+testDescribeAccountAttributesResponse = res
+    "DescribeAccountAttributesResponse"
+    "fixture/DescribeAccountAttributesResponse"
+    (Proxy :: Proxy DescribeAccountAttributes)
+
+testDeleteDBSecurityGroupResponse :: DeleteDBSecurityGroupResponse -> TestTree
+testDeleteDBSecurityGroupResponse = res
+    "DeleteDBSecurityGroupResponse"
+    "fixture/DeleteDBSecurityGroupResponse"
+    (Proxy :: Proxy DeleteDBSecurityGroup)
+
+testRebootDBInstanceResponse :: RebootDBInstanceResponse -> TestTree
+testRebootDBInstanceResponse = res
+    "RebootDBInstanceResponse"
+    "fixture/RebootDBInstanceResponse"
+    (Proxy :: Proxy RebootDBInstance)
+
+testDescribeDBClusterSnapshotsResponse :: DescribeDBClusterSnapshotsResponse -> TestTree
+testDescribeDBClusterSnapshotsResponse = res
+    "DescribeDBClusterSnapshotsResponse"
+    "fixture/DescribeDBClusterSnapshotsResponse"
+    (Proxy :: Proxy DescribeDBClusterSnapshots)
+
+testCreateDBSubnetGroupResponse :: CreateDBSubnetGroupResponse -> TestTree
+testCreateDBSubnetGroupResponse = res
+    "CreateDBSubnetGroupResponse"
+    "fixture/CreateDBSubnetGroupResponse"
+    (Proxy :: Proxy CreateDBSubnetGroup)
+
+testDescribeReservedDBInstancesOfferingsResponse :: DescribeReservedDBInstancesOfferingsResponse -> TestTree
+testDescribeReservedDBInstancesOfferingsResponse = res
+    "DescribeReservedDBInstancesOfferingsResponse"
+    "fixture/DescribeReservedDBInstancesOfferingsResponse"
+    (Proxy :: Proxy DescribeReservedDBInstancesOfferings)
+
+testDeleteDBInstanceResponse :: DeleteDBInstanceResponse -> TestTree
+testDeleteDBInstanceResponse = res
+    "DeleteDBInstanceResponse"
+    "fixture/DeleteDBInstanceResponse"
+    (Proxy :: Proxy DeleteDBInstance)
+
+testDescribeDBInstancesResponse :: DescribeDBInstancesResponse -> TestTree
+testDescribeDBInstancesResponse = res
+    "DescribeDBInstancesResponse"
+    "fixture/DescribeDBInstancesResponse"
+    (Proxy :: Proxy DescribeDBInstances)
+
+testCopyOptionGroupResponse :: CopyOptionGroupResponse -> TestTree
+testCopyOptionGroupResponse = res
+    "CopyOptionGroupResponse"
+    "fixture/CopyOptionGroupResponse"
+    (Proxy :: Proxy CopyOptionGroup)
+
+testDownloadDBLogFilePortionResponse :: DownloadDBLogFilePortionResponse -> TestTree
+testDownloadDBLogFilePortionResponse = res
+    "DownloadDBLogFilePortionResponse"
+    "fixture/DownloadDBLogFilePortionResponse"
+    (Proxy :: Proxy DownloadDBLogFilePortion)
+
+testCreateDBInstanceReadReplicaResponse :: CreateDBInstanceReadReplicaResponse -> TestTree
+testCreateDBInstanceReadReplicaResponse = res
+    "CreateDBInstanceReadReplicaResponse"
+    "fixture/CreateDBInstanceReadReplicaResponse"
+    (Proxy :: Proxy CreateDBInstanceReadReplica)
+
+testRestoreDBClusterToPointInTimeResponse :: RestoreDBClusterToPointInTimeResponse -> TestTree
+testRestoreDBClusterToPointInTimeResponse = res
+    "RestoreDBClusterToPointInTimeResponse"
+    "fixture/RestoreDBClusterToPointInTimeResponse"
+    (Proxy :: Proxy RestoreDBClusterToPointInTime)
+
+testDeleteDBParameterGroupResponse :: DeleteDBParameterGroupResponse -> TestTree
+testDeleteDBParameterGroupResponse = res
+    "DeleteDBParameterGroupResponse"
+    "fixture/DeleteDBParameterGroupResponse"
+    (Proxy :: Proxy DeleteDBParameterGroup)
+
+testDescribeDBSecurityGroupsResponse :: DescribeDBSecurityGroupsResponse -> TestTree
+testDescribeDBSecurityGroupsResponse = res
+    "DescribeDBSecurityGroupsResponse"
+    "fixture/DescribeDBSecurityGroupsResponse"
+    (Proxy :: Proxy DescribeDBSecurityGroups)
diff --git a/test/Test/AWS/RDS.hs b/test/Test/AWS/RDS.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/RDS.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TemplateHaskell   #-}
+
+-- Module      : Test.AWS.RDS
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+
+module Test.AWS.RDS
+    ( tests
+    , fixtures
+    ) where
+
+import           Control.Lens
+import           Data.Time
+import           Network.AWS.Prelude
+import           Network.AWS.RDS
+import           Test.AWS.Gen.RDS
+import           Test.AWS.Prelude
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures =
+    [ testGroup "response"
+        [ testDescribeDBInstancesResponse $ describeDBInstancesResponse 200
+            & ddbirsDBInstances .~
+                [ dbInstance
+                    & diAllocatedStorage           ?~ 5
+                    & diAutoMinorVersionUpgrade    ?~ True
+                    & diAvailabilityZone           ?~ "us-west-2b"
+                    & diBackupRetentionPeriod      ?~ 7
+                    & diDBInstanceClass            ?~ "db.t1.micro"
+                    & diDBInstanceIdentifier       ?~ "mysqlexampledb"
+                    & diDBInstanceStatus           ?~ "available"
+                    & diDBName                     ?~ "mysampledb"
+                    & diEngine                     ?~ "mysql"
+                    & diEngineVersion              ?~ "5.6.13"
+                    & diInstanceCreateTime         ?~ $(mkTime "2014-01-29T22:58:24.231Z")
+                    & diLatestRestorableTime       ?~ $(mkTime "2014-04-21T17:15:00Z")
+                    & diLicenseModel               ?~ "general-public-license"
+                    & diMasterUsername             ?~ "myawsuser"
+                    & diMultiAZ                    ?~ False
+                    & diPreferredBackupWindow      ?~ "10:07-10:37"
+                    & diPreferredMaintenanceWindow ?~ "sun:06:13-sun:06:43"
+                    & diPubliclyAccessible         ?~ True
+                    & diEndpoint                   ?~
+                        (endpoint
+                            & eAddress ?~ "mysqlexampledb.c6c1rntzufv0.us-west-2.rds.amazonaws.com"
+                            & ePort    ?~ 3306)
+                    & diDBSecurityGroups .~
+                        [ dbSecurityGroupMembership
+                            & dsgmStatus              ?~ "active"
+                            & dsgmDBSecurityGroupName ?~ "my-db-secgroup"
+                        ]
+                    & diDBParameterGroups .~
+                        [ dbParameterGroupStatus
+                            & dpgsDBParameterGroupName ?~ "default.mysql5.6"
+                            & dpgsParameterApplyStatus ?~ "in-sync"
+                        ]
+                    & diOptionGroupMemberships .~
+                        [ optionGroupMembership
+                            & ogmStatus          ?~ "in-sync"
+                            & ogmOptionGroupName ?~ "default:mysql-5-6"
+                        ]
+                ]
+        ]
+    ]
diff --git a/test/Test/AWS/RDS/Internal.hs b/test/Test/AWS/RDS/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/RDS/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.RDS.Internal
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+
+module Test.AWS.RDS.Internal where
+
+import Test.AWS.Prelude
