diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,24 +1,59 @@
 # Amazon Config 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 Config is a fully managed service that provides you with an Amazon
-resource inventory, configuration history, and configuration change
-notifications to enable security and governance. With Amazon Config you can
-discover existing Amazon resources, export a complete inventory of your
-Amazon resources with all configuration details, and determine how a resource
-was configured at any point in time. These capabilities enable compliance
-auditing, security analysis, resource change tracking, and troubleshooting.
+AWS Config
 
+AWS Config provides a way to keep track of the configurations of all the
+AWS resources associated with your AWS account. You can use AWS Config
+to get the current and historical configurations of each AWS resource
+and also to get information about the relationship between the
+resources. An AWS resource can be an Amazon Compute Cloud (Amazon EC2)
+instance, an Elastic Block Store (EBS) volume, an Elastic network
+Interface (ENI), or a security group. For a complete list of resources
+currently supported by AWS Config, see
+<http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources Supported AWS Resources>.
+
+You can access and manage AWS Config through the AWS Management Console,
+the AWS Command Line Interface (AWS CLI), the AWS Config API, or the AWS
+SDKs for AWS Config
+
+This reference guide contains documentation for the AWS Config API and
+the AWS CLI commands that you can use to manage AWS Config.
+
+The AWS Config API uses the Signature Version 4 protocol for signing
+requests. For more information about how to sign a request with this
+protocol, see
+<http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html Signature Version 4 Signing Process>.
+
+For detailed information about AWS Config features and their associated
+actions or commands, as well as how to work with AWS Management Console,
+see
+<http://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html What Is AWS Config?>
+in the /AWS Config Developer Guide/.
+
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-config)
 and the [AWS API Reference](http://docs.aws.amazon.com/config/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-config.cabal b/amazonka-config.cabal
--- a/amazonka-config.cabal
+++ b/amazonka-config.cabal
@@ -1,31 +1,61 @@
 name:                  amazonka-config
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon Config 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 Config is a fully managed service that provides you with an Amazon
-    resource inventory, configuration history, and configuration change
-    notifications to enable security and governance. With Amazon Config you can
-    discover existing Amazon resources, export a complete inventory of your
-    Amazon resources with all configuration details, and determine how a resource
-    was configured at any point in time. These capabilities enable compliance
-    auditing, security analysis, resource change tracking, and troubleshooting.
+    AWS Config
 
+    AWS Config provides a way to keep track of the configurations of all the
+    AWS resources associated with your AWS account. You can use AWS Config
+    to get the current and historical configurations of each AWS resource
+    and also to get information about the relationship between the
+    resources. An AWS resource can be an Amazon Compute Cloud (Amazon EC2)
+    instance, an Elastic Block Store (EBS) volume, an Elastic network
+    Interface (ENI), or a security group. For a complete list of resources
+    currently supported by AWS Config, see
+    <http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources Supported AWS Resources>.
+
+    You can access and manage AWS Config through the AWS Management Console,
+    the AWS Command Line Interface (AWS CLI), the AWS Config API, or the AWS
+    SDKs for AWS Config
+
+    This reference guide contains documentation for the AWS Config API and
+    the AWS CLI commands that you can use to manage AWS Config.
+
+    The AWS Config API uses the Signature Version 4 protocol for signing
+    requests. For more information about how to sign a request with this
+    protocol, see
+    <http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html Signature Version 4 Signing Process>.
+
+    For detailed information about AWS Config features and their associated
+    actions or commands, as well as how to work with AWS Management Console,
+    see
+    <http://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html What Is AWS Config?>
+    in the /AWS Config Developer Guide/.
     .
-    /See:/ <http://docs.aws.amazon.com/config/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.Config" and the <http://docs.aws.amazon.com/config/latest/APIReference/Welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -51,9 +81,40 @@
         , Network.AWS.Config.StartConfigurationRecorder
         , Network.AWS.Config.StopConfigurationRecorder
         , Network.AWS.Config.Types
+        , Network.AWS.Config.Waiters
 
     other-modules:
+          Network.AWS.Config.Types.Product
+        , Network.AWS.Config.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-config-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.Config
+        , Test.AWS.Gen.Config
+        , Test.AWS.Config.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-config == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/gen/Network/AWS/Config.hs b/gen/Network/AWS/Config.hs
--- a/gen/Network/AWS/Config.hs
+++ b/gen/Network/AWS/Config.hs
@@ -1,46 +1,299 @@
+{-# 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.Config
--- 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.
-
--- | Amazon Config is a fully managed service that provides you with an Amazon
--- resource inventory, configuration history, and configuration change
--- notifications to enable security and governance. With Amazon Config you can
--- discover existing Amazon resources, export a complete inventory of your
--- Amazon resources with all configuration details, and determine how a resource
--- was configured at any point in time. These capabilities enable compliance
--- auditing, security analysis, resource change tracking, and troubleshooting.
+-- AWS Config
+--
+-- AWS Config provides a way to keep track of the configurations of all the
+-- AWS resources associated with your AWS account. You can use AWS Config
+-- to get the current and historical configurations of each AWS resource
+-- and also to get information about the relationship between the
+-- resources. An AWS resource can be an Amazon Compute Cloud (Amazon EC2)
+-- instance, an Elastic Block Store (EBS) volume, an Elastic network
+-- Interface (ENI), or a security group. For a complete list of resources
+-- currently supported by AWS Config, see
+-- <http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources Supported AWS Resources>.
+--
+-- You can access and manage AWS Config through the AWS Management Console,
+-- the AWS Command Line Interface (AWS CLI), the AWS Config API, or the AWS
+-- SDKs for AWS Config
+--
+-- This reference guide contains documentation for the AWS Config API and
+-- the AWS CLI commands that you can use to manage AWS Config.
+--
+-- The AWS Config API uses the Signature Version 4 protocol for signing
+-- requests. For more information about how to sign a request with this
+-- protocol, see
+-- <http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html Signature Version 4 Signing Process>.
+--
+-- For detailed information about AWS Config features and their associated
+-- actions or commands, as well as how to work with AWS Management Console,
+-- see
+-- <http://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html What Is AWS Config?>
+-- in the /AWS Config Developer Guide/.
+--
+-- /See:/ <http://docs.aws.amazon.com/config/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.Config
-    ( module Network.AWS.Config.DeleteDeliveryChannel
+    (
+    -- * Service
+      Config
+
+    -- * Errors
+    -- $errors
+
+    -- ** ValidationException
+    , _ValidationException
+
+    -- ** InvalidTimeRangeException
+    , _InvalidTimeRangeException
+
+    -- ** InvalidRecordingGroupException
+    , _InvalidRecordingGroupException
+
+    -- ** InvalidSNSTopicARNException
+    , _InvalidSNSTopicARNException
+
+    -- ** InvalidRoleException
+    , _InvalidRoleException
+
+    -- ** LastDeliveryChannelDeleteFailedException
+    , _LastDeliveryChannelDeleteFailedException
+
+    -- ** InvalidLimitException
+    , _InvalidLimitException
+
+    -- ** InvalidDeliveryChannelNameException
+    , _InvalidDeliveryChannelNameException
+
+    -- ** NoSuchDeliveryChannelException
+    , _NoSuchDeliveryChannelException
+
+    -- ** ResourceNotDiscoveredException
+    , _ResourceNotDiscoveredException
+
+    -- ** InvalidNextTokenException
+    , _InvalidNextTokenException
+
+    -- ** NoSuchBucketException
+    , _NoSuchBucketException
+
+    -- ** NoAvailableConfigurationRecorderException
+    , _NoAvailableConfigurationRecorderException
+
+    -- ** NoAvailableDeliveryChannelException
+    , _NoAvailableDeliveryChannelException
+
+    -- ** NoRunningConfigurationRecorderException
+    , _NoRunningConfigurationRecorderException
+
+    -- ** MaxNumberOfConfigurationRecordersExceededException
+    , _MaxNumberOfConfigurationRecordersExceededException
+
+    -- ** InvalidConfigurationRecorderNameException
+    , _InvalidConfigurationRecorderNameException
+
+    -- ** InsufficientDeliveryPolicyException
+    , _InsufficientDeliveryPolicyException
+
+    -- ** MaxNumberOfDeliveryChannelsExceededException
+    , _MaxNumberOfDeliveryChannelsExceededException
+
+    -- ** NoSuchConfigurationRecorderException
+    , _NoSuchConfigurationRecorderException
+
+    -- ** InvalidS3KeyPrefixException
+    , _InvalidS3KeyPrefixException
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** GetResourceConfigHistory
+    , module Network.AWS.Config.GetResourceConfigHistory
+
+    -- ** StopConfigurationRecorder
+    , module Network.AWS.Config.StopConfigurationRecorder
+
+    -- ** DeliverConfigSnapshot
     , module Network.AWS.Config.DeliverConfigSnapshot
-    , module Network.AWS.Config.DescribeConfigurationRecorderStatus
+
+    -- ** DescribeConfigurationRecorders
     , module Network.AWS.Config.DescribeConfigurationRecorders
-    , module Network.AWS.Config.DescribeDeliveryChannelStatus
-    , module Network.AWS.Config.DescribeDeliveryChannels
-    , module Network.AWS.Config.GetResourceConfigHistory
+
+    -- ** StartConfigurationRecorder
+    , module Network.AWS.Config.StartConfigurationRecorder
+
+    -- ** DescribeConfigurationRecorderStatus
+    , module Network.AWS.Config.DescribeConfigurationRecorderStatus
+
+    -- ** PutConfigurationRecorder
     , module Network.AWS.Config.PutConfigurationRecorder
+
+    -- ** DeleteDeliveryChannel
+    , module Network.AWS.Config.DeleteDeliveryChannel
+
+    -- ** PutDeliveryChannel
     , module Network.AWS.Config.PutDeliveryChannel
-    , module Network.AWS.Config.StartConfigurationRecorder
-    , module Network.AWS.Config.StopConfigurationRecorder
-    , module Network.AWS.Config.Types
+
+    -- ** DescribeDeliveryChannelStatus
+    , module Network.AWS.Config.DescribeDeliveryChannelStatus
+
+    -- ** DescribeDeliveryChannels
+    , module Network.AWS.Config.DescribeDeliveryChannels
+
+    -- * Types
+
+    -- ** ChronologicalOrder
+    , ChronologicalOrder (..)
+
+    -- ** ConfigurationItemStatus
+    , ConfigurationItemStatus (..)
+
+    -- ** DeliveryStatus
+    , DeliveryStatus (..)
+
+    -- ** RecorderStatus
+    , RecorderStatus (..)
+
+    -- ** ResourceType
+    , ResourceType (..)
+
+    -- ** ConfigExportDeliveryInfo
+    , ConfigExportDeliveryInfo
+    , configExportDeliveryInfo
+    , cediLastErrorCode
+    , cediLastAttemptTime
+    , cediLastSuccessfulTime
+    , cediLastStatus
+    , cediLastErrorMessage
+
+    -- ** ConfigStreamDeliveryInfo
+    , ConfigStreamDeliveryInfo
+    , configStreamDeliveryInfo
+    , csdiLastErrorCode
+    , csdiLastStatusChangeTime
+    , csdiLastStatus
+    , csdiLastErrorMessage
+
+    -- ** ConfigurationItem
+    , ConfigurationItem
+    , configurationItem
+    , ciResourceId
+    , ciConfigurationStateId
+    , ciResourceType
+    , ciArn
+    , ciResourceCreationTime
+    , ciConfigurationItemStatus
+    , ciAccountId
+    , ciConfigurationItemCaptureTime
+    , ciAvailabilityZone
+    , ciRelationships
+    , ciVersion
+    , ciRelatedEvents
+    , ciConfiguration
+    , ciConfigurationItemMD5Hash
+    , ciTags
+
+    -- ** ConfigurationRecorder
+    , ConfigurationRecorder
+    , configurationRecorder
+    , crName
+    , crRecordingGroup
+    , crRoleARN
+
+    -- ** ConfigurationRecorderStatus
+    , ConfigurationRecorderStatus
+    , configurationRecorderStatus
+    , crsLastErrorCode
+    , crsLastStopTime
+    , crsLastStatusChangeTime
+    , crsRecording
+    , crsLastStatus
+    , crsLastErrorMessage
+    , crsName
+    , crsLastStartTime
+
+    -- ** DeliveryChannel
+    , DeliveryChannel
+    , deliveryChannel
+    , dcS3KeyPrefix
+    , dcSnsTopicARN
+    , dcName
+    , dcS3BucketName
+
+    -- ** DeliveryChannelStatus
+    , DeliveryChannelStatus
+    , deliveryChannelStatus
+    , dcsConfigStreamDeliveryInfo
+    , dcsConfigSnapshotDeliveryInfo
+    , dcsConfigHistoryDeliveryInfo
+    , dcsName
+
+    -- ** RecordingGroup
+    , RecordingGroup
+    , recordingGroup
+    , rgAllSupported
+    , rgResourceTypes
+
+    -- ** Relationship
+    , Relationship
+    , relationship
+    , rResourceId
+    , rResourceType
+    , rRelationshipName
     ) where
 
-import Network.AWS.Config.DeleteDeliveryChannel
-import Network.AWS.Config.DeliverConfigSnapshot
-import Network.AWS.Config.DescribeConfigurationRecorderStatus
-import Network.AWS.Config.DescribeConfigurationRecorders
-import Network.AWS.Config.DescribeDeliveryChannelStatus
-import Network.AWS.Config.DescribeDeliveryChannels
-import Network.AWS.Config.GetResourceConfigHistory
-import Network.AWS.Config.PutConfigurationRecorder
-import Network.AWS.Config.PutDeliveryChannel
-import Network.AWS.Config.StartConfigurationRecorder
-import Network.AWS.Config.StopConfigurationRecorder
-import Network.AWS.Config.Types
+import           Network.AWS.Config.DeleteDeliveryChannel
+import           Network.AWS.Config.DeliverConfigSnapshot
+import           Network.AWS.Config.DescribeConfigurationRecorders
+import           Network.AWS.Config.DescribeConfigurationRecorderStatus
+import           Network.AWS.Config.DescribeDeliveryChannels
+import           Network.AWS.Config.DescribeDeliveryChannelStatus
+import           Network.AWS.Config.GetResourceConfigHistory
+import           Network.AWS.Config.PutConfigurationRecorder
+import           Network.AWS.Config.PutDeliveryChannel
+import           Network.AWS.Config.StartConfigurationRecorder
+import           Network.AWS.Config.StopConfigurationRecorder
+import           Network.AWS.Config.Types
+import           Network.AWS.Config.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 'Config'.
+-}
+
+{- $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/Config/DeleteDeliveryChannel.hs b/gen/Network/AWS/Config/DeleteDeliveryChannel.hs
--- a/gen/Network/AWS/Config/DeleteDeliveryChannel.hs
+++ b/gen/Network/AWS/Config/DeleteDeliveryChannel.hs
@@ -1,99 +1,110 @@
-{-# 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.Config.DeleteDeliveryChannel
--- 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 the specified delivery channel.
+-- Deletes the specified delivery channel.
 --
--- The delivery channel cannot be deleted if it is the only delivery channel
--- and the configuration recorder is still running. To delete the delivery
--- channel, stop the running configuration recorder using the 'StopConfigurationRecorder' action.
+-- The delivery channel cannot be deleted if it is the only delivery
+-- channel and the configuration recorder is still running. To delete the
+-- delivery channel, stop the running configuration recorder using the
+-- StopConfigurationRecorder action.
 --
--- <http://docs.aws.amazon.com/config/latest/APIReference/API_DeleteDeliveryChannel.html>
+-- /See:/ <http://docs.aws.amazon.com/config/latest/APIReference/API_DeleteDeliveryChannel.html AWS API Reference> for DeleteDeliveryChannel.
 module Network.AWS.Config.DeleteDeliveryChannel
     (
-    -- * Request
-      DeleteDeliveryChannel
-    -- ** Request constructor
-    , deleteDeliveryChannel
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteDeliveryChannel
+    , DeleteDeliveryChannel
+    -- * Request Lenses
     , ddcDeliveryChannelName
 
-    -- * Response
-    , DeleteDeliveryChannelResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteDeliveryChannelResponse
+    , DeleteDeliveryChannelResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Config.Types
-import qualified GHC.Exts
+import           Network.AWS.Config.Types
+import           Network.AWS.Config.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeleteDeliveryChannel = DeleteDeliveryChannel
+-- | The input for the DeleteDeliveryChannel action. The action accepts the
+-- following data in JSON format.
+--
+-- /See:/ 'deleteDeliveryChannel' smart constructor.
+newtype DeleteDeliveryChannel = DeleteDeliveryChannel'
     { _ddcDeliveryChannelName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteDeliveryChannel' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteDeliveryChannel' with the minimum fields required to make a request.
 --
--- * 'ddcDeliveryChannelName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteDeliveryChannel :: Text -- ^ 'ddcDeliveryChannelName'
-                      -> DeleteDeliveryChannel
-deleteDeliveryChannel p1 = DeleteDeliveryChannel
-    { _ddcDeliveryChannelName = p1
+-- * 'ddcDeliveryChannelName'
+deleteDeliveryChannel
+    :: Text -- ^ 'ddcDeliveryChannelName'
+    -> DeleteDeliveryChannel
+deleteDeliveryChannel pDeliveryChannelName_ =
+    DeleteDeliveryChannel'
+    { _ddcDeliveryChannelName = pDeliveryChannelName_
     }
 
 -- | The name of the delivery channel to delete.
 ddcDeliveryChannelName :: Lens' DeleteDeliveryChannel Text
-ddcDeliveryChannelName =
-    lens _ddcDeliveryChannelName (\s a -> s { _ddcDeliveryChannelName = a })
+ddcDeliveryChannelName = lens _ddcDeliveryChannelName (\ s a -> s{_ddcDeliveryChannelName = a});
 
-data DeleteDeliveryChannelResponse = DeleteDeliveryChannelResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteDeliveryChannel where
+        type Sv DeleteDeliveryChannel = Config
+        type Rs DeleteDeliveryChannel =
+             DeleteDeliveryChannelResponse
+        request = postJSON
+        response = receiveNull DeleteDeliveryChannelResponse'
 
--- | 'DeleteDeliveryChannelResponse' constructor.
-deleteDeliveryChannelResponse :: DeleteDeliveryChannelResponse
-deleteDeliveryChannelResponse = DeleteDeliveryChannelResponse
+instance ToHeaders DeleteDeliveryChannel where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StarlingDoveService.DeleteDeliveryChannel" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DeleteDeliveryChannel where
+        toJSON DeleteDeliveryChannel'{..}
+          = object
+              ["DeliveryChannelName" .= _ddcDeliveryChannelName]
+
 instance ToPath DeleteDeliveryChannel where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteDeliveryChannel where
-    toQuery = const mempty
-
-instance ToHeaders DeleteDeliveryChannel
-
-instance ToJSON DeleteDeliveryChannel where
-    toJSON DeleteDeliveryChannel{..} = object
-        [ "DeliveryChannelName" .= _ddcDeliveryChannelName
-        ]
+        toQuery = const mempty
 
-instance AWSRequest DeleteDeliveryChannel where
-    type Sv DeleteDeliveryChannel = Config
-    type Rs DeleteDeliveryChannel = DeleteDeliveryChannelResponse
+-- | /See:/ 'deleteDeliveryChannelResponse' smart constructor.
+data DeleteDeliveryChannelResponse =
+    DeleteDeliveryChannelResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteDeliveryChannel"
-    response = nullResponse DeleteDeliveryChannelResponse
+-- | Creates a value of 'DeleteDeliveryChannelResponse' with the minimum fields required to make a request.
+--
+deleteDeliveryChannelResponse
+    :: DeleteDeliveryChannelResponse
+deleteDeliveryChannelResponse = DeleteDeliveryChannelResponse'
diff --git a/gen/Network/AWS/Config/DeliverConfigSnapshot.hs b/gen/Network/AWS/Config/DeliverConfigSnapshot.hs
--- a/gen/Network/AWS/Config/DeliverConfigSnapshot.hs
+++ b/gen/Network/AWS/Config/DeliverConfigSnapshot.hs
@@ -1,120 +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.Config.DeliverConfigSnapshot
--- 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.
-
--- | Schedules delivery of a configuration snapshot to the Amazon S3 bucket in the
--- specified delivery channel. After the delivery has started, AWS Config sends
--- following notifications using an Amazon SNS topic that you have specified.
+-- Schedules delivery of a configuration snapshot to the Amazon S3 bucket
+-- in the specified delivery channel. After the delivery has started, AWS
+-- Config sends following notifications using an Amazon SNS topic that you
+-- have specified.
 --
--- Notification of starting the delivery. Notification of delivery completed,
--- if the delivery was successfully completed. Notification of delivery failure,
--- if the delivery failed to complete.
+-- -   Notification of starting the delivery.
+-- -   Notification of delivery completed, if the delivery was successfully
+--     completed.
+-- -   Notification of delivery failure, if the delivery failed to
+--     complete.
 --
--- <http://docs.aws.amazon.com/config/latest/APIReference/API_DeliverConfigSnapshot.html>
+-- /See:/ <http://docs.aws.amazon.com/config/latest/APIReference/API_DeliverConfigSnapshot.html AWS API Reference> for DeliverConfigSnapshot.
 module Network.AWS.Config.DeliverConfigSnapshot
     (
-    -- * Request
-      DeliverConfigSnapshot
-    -- ** Request constructor
-    , deliverConfigSnapshot
-    -- ** Request lenses
+    -- * Creating a Request
+      deliverConfigSnapshot
+    , DeliverConfigSnapshot
+    -- * Request Lenses
     , dcsDeliveryChannelName
 
-    -- * Response
-    , DeliverConfigSnapshotResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deliverConfigSnapshotResponse
-    -- ** Response lenses
-    , dcsrConfigSnapshotId
+    , DeliverConfigSnapshotResponse
+    -- * Response Lenses
+    , dcsrsConfigSnapshotId
+    , dcsrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Config.Types
-import qualified GHC.Exts
+import           Network.AWS.Config.Types
+import           Network.AWS.Config.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeliverConfigSnapshot = DeliverConfigSnapshot
+-- | The input for the DeliverConfigSnapshot action.
+--
+-- /See:/ 'deliverConfigSnapshot' smart constructor.
+newtype DeliverConfigSnapshot = DeliverConfigSnapshot'
     { _dcsDeliveryChannelName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeliverConfigSnapshot' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeliverConfigSnapshot' with the minimum fields required to make a request.
 --
--- * 'dcsDeliveryChannelName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deliverConfigSnapshot :: Text -- ^ 'dcsDeliveryChannelName'
-                      -> DeliverConfigSnapshot
-deliverConfigSnapshot p1 = DeliverConfigSnapshot
-    { _dcsDeliveryChannelName = p1
+-- * 'dcsDeliveryChannelName'
+deliverConfigSnapshot
+    :: Text -- ^ 'dcsDeliveryChannelName'
+    -> DeliverConfigSnapshot
+deliverConfigSnapshot pDeliveryChannelName_ =
+    DeliverConfigSnapshot'
+    { _dcsDeliveryChannelName = pDeliveryChannelName_
     }
 
--- | The name of the delivery channel through which the snapshot is delivered.
+-- | The name of the delivery channel through which the snapshot is
+-- delivered.
 dcsDeliveryChannelName :: Lens' DeliverConfigSnapshot Text
-dcsDeliveryChannelName =
-    lens _dcsDeliveryChannelName (\s a -> s { _dcsDeliveryChannelName = a })
+dcsDeliveryChannelName = lens _dcsDeliveryChannelName (\ s a -> s{_dcsDeliveryChannelName = a});
 
-newtype DeliverConfigSnapshotResponse = DeliverConfigSnapshotResponse
-    { _dcsrConfigSnapshotId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest DeliverConfigSnapshot where
+        type Sv DeliverConfigSnapshot = Config
+        type Rs DeliverConfigSnapshot =
+             DeliverConfigSnapshotResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeliverConfigSnapshotResponse' <$>
+                   (x .?> "configSnapshotId") <*> (pure (fromEnum s)))
 
--- | 'DeliverConfigSnapshotResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dcsrConfigSnapshotId' @::@ 'Maybe' 'Text'
---
-deliverConfigSnapshotResponse :: DeliverConfigSnapshotResponse
-deliverConfigSnapshotResponse = DeliverConfigSnapshotResponse
-    { _dcsrConfigSnapshotId = Nothing
-    }
+instance ToHeaders DeliverConfigSnapshot where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StarlingDoveService.DeliverConfigSnapshot" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The ID of the snapshot that is being created.
-dcsrConfigSnapshotId :: Lens' DeliverConfigSnapshotResponse (Maybe Text)
-dcsrConfigSnapshotId =
-    lens _dcsrConfigSnapshotId (\s a -> s { _dcsrConfigSnapshotId = a })
+instance ToJSON DeliverConfigSnapshot where
+        toJSON DeliverConfigSnapshot'{..}
+          = object
+              ["deliveryChannelName" .= _dcsDeliveryChannelName]
 
 instance ToPath DeliverConfigSnapshot where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeliverConfigSnapshot where
-    toQuery = const mempty
-
-instance ToHeaders DeliverConfigSnapshot
+        toQuery = const mempty
 
-instance ToJSON DeliverConfigSnapshot where
-    toJSON DeliverConfigSnapshot{..} = object
-        [ "deliveryChannelName" .= _dcsDeliveryChannelName
-        ]
+-- | The output for the DeliverConfigSnapshot action in JSON format.
+--
+-- /See:/ 'deliverConfigSnapshotResponse' smart constructor.
+data DeliverConfigSnapshotResponse = DeliverConfigSnapshotResponse'
+    { _dcsrsConfigSnapshotId :: !(Maybe Text)
+    , _dcsrsStatus           :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeliverConfigSnapshot where
-    type Sv DeliverConfigSnapshot = Config
-    type Rs DeliverConfigSnapshot = DeliverConfigSnapshotResponse
+-- | Creates a value of 'DeliverConfigSnapshotResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcsrsConfigSnapshotId'
+--
+-- * 'dcsrsStatus'
+deliverConfigSnapshotResponse
+    :: Int -- ^ 'dcsrsStatus'
+    -> DeliverConfigSnapshotResponse
+deliverConfigSnapshotResponse pStatus_ =
+    DeliverConfigSnapshotResponse'
+    { _dcsrsConfigSnapshotId = Nothing
+    , _dcsrsStatus = pStatus_
+    }
 
-    request  = post "DeliverConfigSnapshot"
-    response = jsonResponse
+-- | The ID of the snapshot that is being created.
+dcsrsConfigSnapshotId :: Lens' DeliverConfigSnapshotResponse (Maybe Text)
+dcsrsConfigSnapshotId = lens _dcsrsConfigSnapshotId (\ s a -> s{_dcsrsConfigSnapshotId = a});
 
-instance FromJSON DeliverConfigSnapshotResponse where
-    parseJSON = withObject "DeliverConfigSnapshotResponse" $ \o -> DeliverConfigSnapshotResponse
-        <$> o .:? "configSnapshotId"
+-- | The response status code.
+dcsrsStatus :: Lens' DeliverConfigSnapshotResponse Int
+dcsrsStatus = lens _dcsrsStatus (\ s a -> s{_dcsrsStatus = a});
diff --git a/gen/Network/AWS/Config/DescribeConfigurationRecorderStatus.hs b/gen/Network/AWS/Config/DescribeConfigurationRecorderStatus.hs
--- a/gen/Network/AWS/Config/DescribeConfigurationRecorderStatus.hs
+++ b/gen/Network/AWS/Config/DescribeConfigurationRecorderStatus.hs
@@ -1,135 +1,145 @@
-{-# 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.Config.DescribeConfigurationRecorderStatus
--- 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 current status of the specified configuration recorder. If a
--- configuration recorder is not specified, this action returns the status of
--- all configuration recorder associated with the account.
+-- Returns the current status of the specified configuration recorder. If a
+-- configuration recorder is not specified, this action returns the status
+-- of all configuration recorder associated with the account.
 --
 -- Currently, you can specify only one configuration recorder per account.
 --
--- <http://docs.aws.amazon.com/config/latest/APIReference/API_DescribeConfigurationRecorderStatus.html>
+-- /See:/ <http://docs.aws.amazon.com/config/latest/APIReference/API_DescribeConfigurationRecorderStatus.html AWS API Reference> for DescribeConfigurationRecorderStatus.
 module Network.AWS.Config.DescribeConfigurationRecorderStatus
     (
-    -- * Request
-      DescribeConfigurationRecorderStatus
-    -- ** Request constructor
-    , describeConfigurationRecorderStatus
-    -- ** Request lenses
+    -- * Creating a Request
+      describeConfigurationRecorderStatus
+    , DescribeConfigurationRecorderStatus
+    -- * Request Lenses
     , dcrsConfigurationRecorderNames
 
-    -- * Response
-    , DescribeConfigurationRecorderStatusResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeConfigurationRecorderStatusResponse
-    -- ** Response lenses
-    , dcrsrConfigurationRecordersStatus
+    , DescribeConfigurationRecorderStatusResponse
+    -- * Response Lenses
+    , dcrsrsConfigurationRecordersStatus
+    , dcrsrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Config.Types
-import qualified GHC.Exts
-
-newtype DescribeConfigurationRecorderStatus = DescribeConfigurationRecorderStatus
-    { _dcrsConfigurationRecorderNames :: List "ConfigurationRecorderNames" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeConfigurationRecorderStatus where
-    type Item DescribeConfigurationRecorderStatus = Text
-
-    fromList = DescribeConfigurationRecorderStatus . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dcrsConfigurationRecorderNames
+import           Network.AWS.Config.Types
+import           Network.AWS.Config.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeConfigurationRecorderStatus' constructor.
+-- | The input for the DescribeConfigurationRecorderStatus action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeConfigurationRecorderStatus' smart constructor.
+newtype DescribeConfigurationRecorderStatus = DescribeConfigurationRecorderStatus'
+    { _dcrsConfigurationRecorderNames :: Maybe [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeConfigurationRecorderStatus' with the minimum fields required to make a request.
 --
--- * 'dcrsConfigurationRecorderNames' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeConfigurationRecorderStatus :: DescribeConfigurationRecorderStatus
-describeConfigurationRecorderStatus = DescribeConfigurationRecorderStatus
-    { _dcrsConfigurationRecorderNames = mempty
+-- * 'dcrsConfigurationRecorderNames'
+describeConfigurationRecorderStatus
+    :: DescribeConfigurationRecorderStatus
+describeConfigurationRecorderStatus =
+    DescribeConfigurationRecorderStatus'
+    { _dcrsConfigurationRecorderNames = Nothing
     }
 
--- | The name(s) of the configuration recorder. If the name is not specified, the
--- action returns the current status of all the configuration recorders
+-- | The name(s) of the configuration recorder. If the name is not specified,
+-- the action returns the current status of all the configuration recorders
 -- associated with the account.
 dcrsConfigurationRecorderNames :: Lens' DescribeConfigurationRecorderStatus [Text]
-dcrsConfigurationRecorderNames =
-    lens _dcrsConfigurationRecorderNames
-        (\s a -> s { _dcrsConfigurationRecorderNames = a })
-            . _List
+dcrsConfigurationRecorderNames = lens _dcrsConfigurationRecorderNames (\ s a -> s{_dcrsConfigurationRecorderNames = a}) . _Default . _Coerce;
 
-newtype DescribeConfigurationRecorderStatusResponse = DescribeConfigurationRecorderStatusResponse
-    { _dcrsrConfigurationRecordersStatus :: List "ConfigurationRecordersStatus" ConfigurationRecorderStatus
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest
+         DescribeConfigurationRecorderStatus where
+        type Sv DescribeConfigurationRecorderStatus = Config
+        type Rs DescribeConfigurationRecorderStatus =
+             DescribeConfigurationRecorderStatusResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeConfigurationRecorderStatusResponse' <$>
+                   (x .?> "ConfigurationRecordersStatus" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DescribeConfigurationRecorderStatusResponse where
-    type Item DescribeConfigurationRecorderStatusResponse = ConfigurationRecorderStatus
+instance ToHeaders
+         DescribeConfigurationRecorderStatus where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StarlingDoveService.DescribeConfigurationRecorderStatus"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-    fromList = DescribeConfigurationRecorderStatusResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dcrsrConfigurationRecordersStatus
+instance ToJSON DescribeConfigurationRecorderStatus
+         where
+        toJSON DescribeConfigurationRecorderStatus'{..}
+          = object
+              ["ConfigurationRecorderNames" .=
+                 _dcrsConfigurationRecorderNames]
 
--- | 'DescribeConfigurationRecorderStatusResponse' constructor.
+instance ToPath DescribeConfigurationRecorderStatus
+         where
+        toPath = const "/"
+
+instance ToQuery DescribeConfigurationRecorderStatus
+         where
+        toQuery = const mempty
+
+-- | The output for the DescribeConfigurationRecorderStatus action in JSON
+-- format.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeConfigurationRecorderStatusResponse' smart constructor.
+data DescribeConfigurationRecorderStatusResponse = DescribeConfigurationRecorderStatusResponse'
+    { _dcrsrsConfigurationRecordersStatus :: !(Maybe [ConfigurationRecorderStatus])
+    , _dcrsrsStatus                       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeConfigurationRecorderStatusResponse' with the minimum fields required to make a request.
 --
--- * 'dcrsrConfigurationRecordersStatus' @::@ ['ConfigurationRecorderStatus']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeConfigurationRecorderStatusResponse :: DescribeConfigurationRecorderStatusResponse
-describeConfigurationRecorderStatusResponse = DescribeConfigurationRecorderStatusResponse
-    { _dcrsrConfigurationRecordersStatus = mempty
+-- * 'dcrsrsConfigurationRecordersStatus'
+--
+-- * 'dcrsrsStatus'
+describeConfigurationRecorderStatusResponse
+    :: Int -- ^ 'dcrsrsStatus'
+    -> DescribeConfigurationRecorderStatusResponse
+describeConfigurationRecorderStatusResponse pStatus_ =
+    DescribeConfigurationRecorderStatusResponse'
+    { _dcrsrsConfigurationRecordersStatus = Nothing
+    , _dcrsrsStatus = pStatus_
     }
 
 -- | A list that contains status of the specified recorders.
-dcrsrConfigurationRecordersStatus :: Lens' DescribeConfigurationRecorderStatusResponse [ConfigurationRecorderStatus]
-dcrsrConfigurationRecordersStatus =
-    lens _dcrsrConfigurationRecordersStatus
-        (\s a -> s { _dcrsrConfigurationRecordersStatus = a })
-            . _List
-
-instance ToPath DescribeConfigurationRecorderStatus where
-    toPath = const "/"
-
-instance ToQuery DescribeConfigurationRecorderStatus where
-    toQuery = const mempty
-
-instance ToHeaders DescribeConfigurationRecorderStatus
-
-instance ToJSON DescribeConfigurationRecorderStatus where
-    toJSON DescribeConfigurationRecorderStatus{..} = object
-        [ "ConfigurationRecorderNames" .= _dcrsConfigurationRecorderNames
-        ]
-
-instance AWSRequest DescribeConfigurationRecorderStatus where
-    type Sv DescribeConfigurationRecorderStatus = Config
-    type Rs DescribeConfigurationRecorderStatus = DescribeConfigurationRecorderStatusResponse
-
-    request  = post "DescribeConfigurationRecorderStatus"
-    response = jsonResponse
+dcrsrsConfigurationRecordersStatus :: Lens' DescribeConfigurationRecorderStatusResponse [ConfigurationRecorderStatus]
+dcrsrsConfigurationRecordersStatus = lens _dcrsrsConfigurationRecordersStatus (\ s a -> s{_dcrsrsConfigurationRecordersStatus = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeConfigurationRecorderStatusResponse where
-    parseJSON = withObject "DescribeConfigurationRecorderStatusResponse" $ \o -> DescribeConfigurationRecorderStatusResponse
-        <$> o .:? "ConfigurationRecordersStatus" .!= mempty
+-- | The response status code.
+dcrsrsStatus :: Lens' DescribeConfigurationRecorderStatusResponse Int
+dcrsrsStatus = lens _dcrsrsStatus (\ s a -> s{_dcrsrsStatus = a});
diff --git a/gen/Network/AWS/Config/DescribeConfigurationRecorders.hs b/gen/Network/AWS/Config/DescribeConfigurationRecorders.hs
--- a/gen/Network/AWS/Config/DescribeConfigurationRecorders.hs
+++ b/gen/Network/AWS/Config/DescribeConfigurationRecorders.hs
@@ -1,136 +1,140 @@
-{-# 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.Config.DescribeConfigurationRecorders
--- 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 name of one or more specified configuration recorders. If the
--- recorder name is not specified, this action returns the names of all the
--- configuration recorders associated with the account.
+-- Returns the name of one or more specified configuration recorders. If
+-- the recorder name is not specified, this action returns the names of all
+-- the configuration recorders associated with the account.
 --
 -- Currently, you can specify only one configuration recorder per account.
 --
---
---
--- <http://docs.aws.amazon.com/config/latest/APIReference/API_DescribeConfigurationRecorders.html>
+-- /See:/ <http://docs.aws.amazon.com/config/latest/APIReference/API_DescribeConfigurationRecorders.html AWS API Reference> for DescribeConfigurationRecorders.
 module Network.AWS.Config.DescribeConfigurationRecorders
     (
-    -- * Request
-      DescribeConfigurationRecorders
-    -- ** Request constructor
-    , describeConfigurationRecorders
-    -- ** Request lenses
+    -- * Creating a Request
+      describeConfigurationRecorders
+    , DescribeConfigurationRecorders
+    -- * Request Lenses
     , dcrConfigurationRecorderNames
 
-    -- * Response
-    , DescribeConfigurationRecordersResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeConfigurationRecordersResponse
-    -- ** Response lenses
-    , dcrrConfigurationRecorders
+    , DescribeConfigurationRecordersResponse
+    -- * Response Lenses
+    , dcrrsConfigurationRecorders
+    , dcrrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Config.Types
-import qualified GHC.Exts
-
-newtype DescribeConfigurationRecorders = DescribeConfigurationRecorders
-    { _dcrConfigurationRecorderNames :: List "ConfigurationRecorderNames" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeConfigurationRecorders where
-    type Item DescribeConfigurationRecorders = Text
-
-    fromList = DescribeConfigurationRecorders . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dcrConfigurationRecorderNames
+import           Network.AWS.Config.Types
+import           Network.AWS.Config.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeConfigurationRecorders' constructor.
+-- | The input for the DescribeConfigurationRecorders action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeConfigurationRecorders' smart constructor.
+newtype DescribeConfigurationRecorders = DescribeConfigurationRecorders'
+    { _dcrConfigurationRecorderNames :: Maybe [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeConfigurationRecorders' with the minimum fields required to make a request.
 --
--- * 'dcrConfigurationRecorderNames' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeConfigurationRecorders :: DescribeConfigurationRecorders
-describeConfigurationRecorders = DescribeConfigurationRecorders
-    { _dcrConfigurationRecorderNames = mempty
+-- * 'dcrConfigurationRecorderNames'
+describeConfigurationRecorders
+    :: DescribeConfigurationRecorders
+describeConfigurationRecorders =
+    DescribeConfigurationRecorders'
+    { _dcrConfigurationRecorderNames = Nothing
     }
 
 -- | A list of configuration recorder names.
 dcrConfigurationRecorderNames :: Lens' DescribeConfigurationRecorders [Text]
-dcrConfigurationRecorderNames =
-    lens _dcrConfigurationRecorderNames
-        (\s a -> s { _dcrConfigurationRecorderNames = a })
-            . _List
+dcrConfigurationRecorderNames = lens _dcrConfigurationRecorderNames (\ s a -> s{_dcrConfigurationRecorderNames = a}) . _Default . _Coerce;
 
-newtype DescribeConfigurationRecordersResponse = DescribeConfigurationRecordersResponse
-    { _dcrrConfigurationRecorders :: List "ConfigurationRecorders" ConfigurationRecorder
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest DescribeConfigurationRecorders
+         where
+        type Sv DescribeConfigurationRecorders = Config
+        type Rs DescribeConfigurationRecorders =
+             DescribeConfigurationRecordersResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeConfigurationRecordersResponse' <$>
+                   (x .?> "ConfigurationRecorders" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DescribeConfigurationRecordersResponse where
-    type Item DescribeConfigurationRecordersResponse = ConfigurationRecorder
+instance ToHeaders DescribeConfigurationRecorders
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StarlingDoveService.DescribeConfigurationRecorders"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-    fromList = DescribeConfigurationRecordersResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dcrrConfigurationRecorders
+instance ToJSON DescribeConfigurationRecorders where
+        toJSON DescribeConfigurationRecorders'{..}
+          = object
+              ["ConfigurationRecorderNames" .=
+                 _dcrConfigurationRecorderNames]
 
--- | 'DescribeConfigurationRecordersResponse' constructor.
+instance ToPath DescribeConfigurationRecorders where
+        toPath = const "/"
+
+instance ToQuery DescribeConfigurationRecorders where
+        toQuery = const mempty
+
+-- | The output for the DescribeConfigurationRecorders action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeConfigurationRecordersResponse' smart constructor.
+data DescribeConfigurationRecordersResponse = DescribeConfigurationRecordersResponse'
+    { _dcrrsConfigurationRecorders :: !(Maybe [ConfigurationRecorder])
+    , _dcrrsStatus                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeConfigurationRecordersResponse' with the minimum fields required to make a request.
 --
--- * 'dcrrConfigurationRecorders' @::@ ['ConfigurationRecorder']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeConfigurationRecordersResponse :: DescribeConfigurationRecordersResponse
-describeConfigurationRecordersResponse = DescribeConfigurationRecordersResponse
-    { _dcrrConfigurationRecorders = mempty
+-- * 'dcrrsConfigurationRecorders'
+--
+-- * 'dcrrsStatus'
+describeConfigurationRecordersResponse
+    :: Int -- ^ 'dcrrsStatus'
+    -> DescribeConfigurationRecordersResponse
+describeConfigurationRecordersResponse pStatus_ =
+    DescribeConfigurationRecordersResponse'
+    { _dcrrsConfigurationRecorders = Nothing
+    , _dcrrsStatus = pStatus_
     }
 
 -- | A list that contains the descriptions of the specified configuration
 -- recorders.
-dcrrConfigurationRecorders :: Lens' DescribeConfigurationRecordersResponse [ConfigurationRecorder]
-dcrrConfigurationRecorders =
-    lens _dcrrConfigurationRecorders
-        (\s a -> s { _dcrrConfigurationRecorders = a })
-            . _List
-
-instance ToPath DescribeConfigurationRecorders where
-    toPath = const "/"
-
-instance ToQuery DescribeConfigurationRecorders where
-    toQuery = const mempty
-
-instance ToHeaders DescribeConfigurationRecorders
-
-instance ToJSON DescribeConfigurationRecorders where
-    toJSON DescribeConfigurationRecorders{..} = object
-        [ "ConfigurationRecorderNames" .= _dcrConfigurationRecorderNames
-        ]
-
-instance AWSRequest DescribeConfigurationRecorders where
-    type Sv DescribeConfigurationRecorders = Config
-    type Rs DescribeConfigurationRecorders = DescribeConfigurationRecordersResponse
-
-    request  = post "DescribeConfigurationRecorders"
-    response = jsonResponse
+dcrrsConfigurationRecorders :: Lens' DescribeConfigurationRecordersResponse [ConfigurationRecorder]
+dcrrsConfigurationRecorders = lens _dcrrsConfigurationRecorders (\ s a -> s{_dcrrsConfigurationRecorders = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeConfigurationRecordersResponse where
-    parseJSON = withObject "DescribeConfigurationRecordersResponse" $ \o -> DescribeConfigurationRecordersResponse
-        <$> o .:? "ConfigurationRecorders" .!= mempty
+-- | The response status code.
+dcrrsStatus :: Lens' DescribeConfigurationRecordersResponse Int
+dcrrsStatus = lens _dcrrsStatus (\ s a -> s{_dcrrsStatus = a});
diff --git a/gen/Network/AWS/Config/DescribeDeliveryChannelStatus.hs b/gen/Network/AWS/Config/DescribeDeliveryChannelStatus.hs
--- a/gen/Network/AWS/Config/DescribeDeliveryChannelStatus.hs
+++ b/gen/Network/AWS/Config/DescribeDeliveryChannelStatus.hs
@@ -1,133 +1,138 @@
-{-# 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.Config.DescribeDeliveryChannelStatus
--- 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 current status of the specified delivery channel. If a delivery
--- channel is not specified, this action returns the current status of all
--- delivery channels associated with the account.
+-- Returns the current status of the specified delivery channel. If a
+-- delivery channel is not specified, this action returns the current
+-- status of all delivery channels associated with the account.
 --
 -- Currently, you can specify only one delivery channel per account.
 --
--- <http://docs.aws.amazon.com/config/latest/APIReference/API_DescribeDeliveryChannelStatus.html>
+-- /See:/ <http://docs.aws.amazon.com/config/latest/APIReference/API_DescribeDeliveryChannelStatus.html AWS API Reference> for DescribeDeliveryChannelStatus.
 module Network.AWS.Config.DescribeDeliveryChannelStatus
     (
-    -- * Request
-      DescribeDeliveryChannelStatus
-    -- ** Request constructor
-    , describeDeliveryChannelStatus
-    -- ** Request lenses
+    -- * Creating a Request
+      describeDeliveryChannelStatus
+    , DescribeDeliveryChannelStatus
+    -- * Request Lenses
     , ddcsDeliveryChannelNames
 
-    -- * Response
-    , DescribeDeliveryChannelStatusResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeDeliveryChannelStatusResponse
-    -- ** Response lenses
-    , ddcsrDeliveryChannelsStatus
+    , DescribeDeliveryChannelStatusResponse
+    -- * Response Lenses
+    , ddcsrsDeliveryChannelsStatus
+    , ddcsrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Config.Types
-import qualified GHC.Exts
-
-newtype DescribeDeliveryChannelStatus = DescribeDeliveryChannelStatus
-    { _ddcsDeliveryChannelNames :: List "DeliveryChannelNames" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeDeliveryChannelStatus where
-    type Item DescribeDeliveryChannelStatus = Text
-
-    fromList = DescribeDeliveryChannelStatus . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _ddcsDeliveryChannelNames
+import           Network.AWS.Config.Types
+import           Network.AWS.Config.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeDeliveryChannelStatus' constructor.
+-- | The input for the DeliveryChannelStatus action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeDeliveryChannelStatus' smart constructor.
+newtype DescribeDeliveryChannelStatus = DescribeDeliveryChannelStatus'
+    { _ddcsDeliveryChannelNames :: Maybe [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDeliveryChannelStatus' with the minimum fields required to make a request.
 --
--- * 'ddcsDeliveryChannelNames' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeDeliveryChannelStatus :: DescribeDeliveryChannelStatus
-describeDeliveryChannelStatus = DescribeDeliveryChannelStatus
-    { _ddcsDeliveryChannelNames = mempty
+-- * 'ddcsDeliveryChannelNames'
+describeDeliveryChannelStatus
+    :: DescribeDeliveryChannelStatus
+describeDeliveryChannelStatus =
+    DescribeDeliveryChannelStatus'
+    { _ddcsDeliveryChannelNames = Nothing
     }
 
 -- | A list of delivery channel names.
 ddcsDeliveryChannelNames :: Lens' DescribeDeliveryChannelStatus [Text]
-ddcsDeliveryChannelNames =
-    lens _ddcsDeliveryChannelNames
-        (\s a -> s { _ddcsDeliveryChannelNames = a })
-            . _List
-
-newtype DescribeDeliveryChannelStatusResponse = DescribeDeliveryChannelStatusResponse
-    { _ddcsrDeliveryChannelsStatus :: List "DeliveryChannelsStatus" DeliveryChannelStatus
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeDeliveryChannelStatusResponse where
-    type Item DescribeDeliveryChannelStatusResponse = DeliveryChannelStatus
+ddcsDeliveryChannelNames = lens _ddcsDeliveryChannelNames (\ s a -> s{_ddcsDeliveryChannelNames = a}) . _Default . _Coerce;
 
-    fromList = DescribeDeliveryChannelStatusResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _ddcsrDeliveryChannelsStatus
+instance AWSRequest DescribeDeliveryChannelStatus
+         where
+        type Sv DescribeDeliveryChannelStatus = Config
+        type Rs DescribeDeliveryChannelStatus =
+             DescribeDeliveryChannelStatusResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeDeliveryChannelStatusResponse' <$>
+                   (x .?> "DeliveryChannelsStatus" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeDeliveryChannelStatusResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddcsrDeliveryChannelsStatus' @::@ ['DeliveryChannelStatus']
---
-describeDeliveryChannelStatusResponse :: DescribeDeliveryChannelStatusResponse
-describeDeliveryChannelStatusResponse = DescribeDeliveryChannelStatusResponse
-    { _ddcsrDeliveryChannelsStatus = mempty
-    }
+instance ToHeaders DescribeDeliveryChannelStatus
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StarlingDoveService.DescribeDeliveryChannelStatus"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A list that contains the status of a specified delivery channel.
-ddcsrDeliveryChannelsStatus :: Lens' DescribeDeliveryChannelStatusResponse [DeliveryChannelStatus]
-ddcsrDeliveryChannelsStatus =
-    lens _ddcsrDeliveryChannelsStatus
-        (\s a -> s { _ddcsrDeliveryChannelsStatus = a })
-            . _List
+instance ToJSON DescribeDeliveryChannelStatus where
+        toJSON DescribeDeliveryChannelStatus'{..}
+          = object
+              ["DeliveryChannelNames" .= _ddcsDeliveryChannelNames]
 
 instance ToPath DescribeDeliveryChannelStatus where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeDeliveryChannelStatus where
-    toQuery = const mempty
-
-instance ToHeaders DescribeDeliveryChannelStatus
+        toQuery = const mempty
 
-instance ToJSON DescribeDeliveryChannelStatus where
-    toJSON DescribeDeliveryChannelStatus{..} = object
-        [ "DeliveryChannelNames" .= _ddcsDeliveryChannelNames
-        ]
+-- | The output for the DescribeDeliveryChannelStatus action.
+--
+-- /See:/ 'describeDeliveryChannelStatusResponse' smart constructor.
+data DescribeDeliveryChannelStatusResponse = DescribeDeliveryChannelStatusResponse'
+    { _ddcsrsDeliveryChannelsStatus :: !(Maybe [DeliveryChannelStatus])
+    , _ddcsrsStatus                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeDeliveryChannelStatus where
-    type Sv DescribeDeliveryChannelStatus = Config
-    type Rs DescribeDeliveryChannelStatus = DescribeDeliveryChannelStatusResponse
+-- | Creates a value of 'DescribeDeliveryChannelStatusResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddcsrsDeliveryChannelsStatus'
+--
+-- * 'ddcsrsStatus'
+describeDeliveryChannelStatusResponse
+    :: Int -- ^ 'ddcsrsStatus'
+    -> DescribeDeliveryChannelStatusResponse
+describeDeliveryChannelStatusResponse pStatus_ =
+    DescribeDeliveryChannelStatusResponse'
+    { _ddcsrsDeliveryChannelsStatus = Nothing
+    , _ddcsrsStatus = pStatus_
+    }
 
-    request  = post "DescribeDeliveryChannelStatus"
-    response = jsonResponse
+-- | A list that contains the status of a specified delivery channel.
+ddcsrsDeliveryChannelsStatus :: Lens' DescribeDeliveryChannelStatusResponse [DeliveryChannelStatus]
+ddcsrsDeliveryChannelsStatus = lens _ddcsrsDeliveryChannelsStatus (\ s a -> s{_ddcsrsDeliveryChannelsStatus = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeDeliveryChannelStatusResponse where
-    parseJSON = withObject "DescribeDeliveryChannelStatusResponse" $ \o -> DescribeDeliveryChannelStatusResponse
-        <$> o .:? "DeliveryChannelsStatus" .!= mempty
+-- | The response status code.
+ddcsrsStatus :: Lens' DescribeDeliveryChannelStatusResponse Int
+ddcsrsStatus = lens _ddcsrsStatus (\ s a -> s{_ddcsrsStatus = a});
diff --git a/gen/Network/AWS/Config/DescribeDeliveryChannels.hs b/gen/Network/AWS/Config/DescribeDeliveryChannels.hs
--- a/gen/Network/AWS/Config/DescribeDeliveryChannels.hs
+++ b/gen/Network/AWS/Config/DescribeDeliveryChannels.hs
@@ -1,132 +1,136 @@
-{-# 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.Config.DescribeDeliveryChannels
--- 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 details about the specified delivery channel. If a delivery channel
--- is not specified, this action returns the details of all delivery channels
--- associated with the account.
+-- Returns details about the specified delivery channel. If a delivery
+-- channel is not specified, this action returns the details of all
+-- delivery channels associated with the account.
 --
 -- Currently, you can specify only one delivery channel per account.
 --
---
--- <http://docs.aws.amazon.com/config/latest/APIReference/API_DescribeDeliveryChannels.html>
+-- /See:/ <http://docs.aws.amazon.com/config/latest/APIReference/API_DescribeDeliveryChannels.html AWS API Reference> for DescribeDeliveryChannels.
 module Network.AWS.Config.DescribeDeliveryChannels
     (
-    -- * Request
-      DescribeDeliveryChannels
-    -- ** Request constructor
-    , describeDeliveryChannels
-    -- ** Request lenses
+    -- * Creating a Request
+      describeDeliveryChannels
+    , DescribeDeliveryChannels
+    -- * Request Lenses
     , ddcDeliveryChannelNames
 
-    -- * Response
-    , DescribeDeliveryChannelsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeDeliveryChannelsResponse
-    -- ** Response lenses
-    , ddcrDeliveryChannels
+    , DescribeDeliveryChannelsResponse
+    -- * Response Lenses
+    , ddcrsDeliveryChannels
+    , ddcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Config.Types
-import qualified GHC.Exts
-
-newtype DescribeDeliveryChannels = DescribeDeliveryChannels
-    { _ddcDeliveryChannelNames :: List "DeliveryChannelNames" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeDeliveryChannels where
-    type Item DescribeDeliveryChannels = Text
-
-    fromList = DescribeDeliveryChannels . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _ddcDeliveryChannelNames
+import           Network.AWS.Config.Types
+import           Network.AWS.Config.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeDeliveryChannels' constructor.
+-- | The input for the DescribeDeliveryChannels action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeDeliveryChannels' smart constructor.
+newtype DescribeDeliveryChannels = DescribeDeliveryChannels'
+    { _ddcDeliveryChannelNames :: Maybe [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDeliveryChannels' with the minimum fields required to make a request.
 --
--- * 'ddcDeliveryChannelNames' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeDeliveryChannels :: DescribeDeliveryChannels
-describeDeliveryChannels = DescribeDeliveryChannels
-    { _ddcDeliveryChannelNames = mempty
+-- * 'ddcDeliveryChannelNames'
+describeDeliveryChannels
+    :: DescribeDeliveryChannels
+describeDeliveryChannels =
+    DescribeDeliveryChannels'
+    { _ddcDeliveryChannelNames = Nothing
     }
 
 -- | A list of delivery channel names.
 ddcDeliveryChannelNames :: Lens' DescribeDeliveryChannels [Text]
-ddcDeliveryChannelNames =
-    lens _ddcDeliveryChannelNames (\s a -> s { _ddcDeliveryChannelNames = a })
-        . _List
-
-newtype DescribeDeliveryChannelsResponse = DescribeDeliveryChannelsResponse
-    { _ddcrDeliveryChannels :: List "DeliveryChannels" DeliveryChannel
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeDeliveryChannelsResponse where
-    type Item DescribeDeliveryChannelsResponse = DeliveryChannel
+ddcDeliveryChannelNames = lens _ddcDeliveryChannelNames (\ s a -> s{_ddcDeliveryChannelNames = a}) . _Default . _Coerce;
 
-    fromList = DescribeDeliveryChannelsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _ddcrDeliveryChannels
+instance AWSRequest DescribeDeliveryChannels where
+        type Sv DescribeDeliveryChannels = Config
+        type Rs DescribeDeliveryChannels =
+             DescribeDeliveryChannelsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeDeliveryChannelsResponse' <$>
+                   (x .?> "DeliveryChannels" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeDeliveryChannelsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddcrDeliveryChannels' @::@ ['DeliveryChannel']
---
-describeDeliveryChannelsResponse :: DescribeDeliveryChannelsResponse
-describeDeliveryChannelsResponse = DescribeDeliveryChannelsResponse
-    { _ddcrDeliveryChannels = mempty
-    }
+instance ToHeaders DescribeDeliveryChannels where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StarlingDoveService.DescribeDeliveryChannels" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A list that contains the descriptions of the specified delivery channel.
-ddcrDeliveryChannels :: Lens' DescribeDeliveryChannelsResponse [DeliveryChannel]
-ddcrDeliveryChannels =
-    lens _ddcrDeliveryChannels (\s a -> s { _ddcrDeliveryChannels = a })
-        . _List
+instance ToJSON DescribeDeliveryChannels where
+        toJSON DescribeDeliveryChannels'{..}
+          = object
+              ["DeliveryChannelNames" .= _ddcDeliveryChannelNames]
 
 instance ToPath DescribeDeliveryChannels where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeDeliveryChannels where
-    toQuery = const mempty
-
-instance ToHeaders DescribeDeliveryChannels
+        toQuery = const mempty
 
-instance ToJSON DescribeDeliveryChannels where
-    toJSON DescribeDeliveryChannels{..} = object
-        [ "DeliveryChannelNames" .= _ddcDeliveryChannelNames
-        ]
+-- | The output for the DescribeDeliveryChannels action.
+--
+-- /See:/ 'describeDeliveryChannelsResponse' smart constructor.
+data DescribeDeliveryChannelsResponse = DescribeDeliveryChannelsResponse'
+    { _ddcrsDeliveryChannels :: !(Maybe [DeliveryChannel])
+    , _ddcrsStatus           :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeDeliveryChannels where
-    type Sv DescribeDeliveryChannels = Config
-    type Rs DescribeDeliveryChannels = DescribeDeliveryChannelsResponse
+-- | Creates a value of 'DescribeDeliveryChannelsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddcrsDeliveryChannels'
+--
+-- * 'ddcrsStatus'
+describeDeliveryChannelsResponse
+    :: Int -- ^ 'ddcrsStatus'
+    -> DescribeDeliveryChannelsResponse
+describeDeliveryChannelsResponse pStatus_ =
+    DescribeDeliveryChannelsResponse'
+    { _ddcrsDeliveryChannels = Nothing
+    , _ddcrsStatus = pStatus_
+    }
 
-    request  = post "DescribeDeliveryChannels"
-    response = jsonResponse
+-- | A list that contains the descriptions of the specified delivery channel.
+ddcrsDeliveryChannels :: Lens' DescribeDeliveryChannelsResponse [DeliveryChannel]
+ddcrsDeliveryChannels = lens _ddcrsDeliveryChannels (\ s a -> s{_ddcrsDeliveryChannels = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeDeliveryChannelsResponse where
-    parseJSON = withObject "DescribeDeliveryChannelsResponse" $ \o -> DescribeDeliveryChannelsResponse
-        <$> o .:? "DeliveryChannels" .!= mempty
+-- | The response status code.
+ddcrsStatus :: Lens' DescribeDeliveryChannelsResponse Int
+ddcrsStatus = lens _ddcrsStatus (\ s a -> s{_ddcrsStatus = a});
diff --git a/gen/Network/AWS/Config/GetResourceConfigHistory.hs b/gen/Network/AWS/Config/GetResourceConfigHistory.hs
--- a/gen/Network/AWS/Config/GetResourceConfigHistory.hs
+++ b/gen/Network/AWS/Config/GetResourceConfigHistory.hs
@@ -1,201 +1,218 @@
-{-# 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.Config.GetResourceConfigHistory
--- 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 configuration items for the specified resource. The list
--- contains details about each state of the resource during the specified time
--- interval. You can specify a 'limit' on the number of results returned on the
--- page. If a limit is specified, a 'nextToken' is returned as part of the result
--- that you can use to continue this request.
+-- Returns a list of configuration items for the specified resource. The
+-- list contains details about each state of the resource during the
+-- specified time interval. You can specify a 'limit' on the number of
+-- results returned on the page. If a limit is specified, a 'nextToken' is
+-- returned as part of the result that you can use to continue this
+-- request.
 --
 -- Each call to the API is limited to span a duration of seven days. It is
--- likely that the number of records returned is smaller than the specified 'limit'
--- . In such cases, you can make another call, using the 'nextToken' .
---
---
+-- likely that the number of records returned is smaller than the specified
+-- 'limit'. In such cases, you can make another call, using the 'nextToken'
+-- .
 --
--- <http://docs.aws.amazon.com/config/latest/APIReference/API_GetResourceConfigHistory.html>
+-- /See:/ <http://docs.aws.amazon.com/config/latest/APIReference/API_GetResourceConfigHistory.html AWS API Reference> for GetResourceConfigHistory.
 module Network.AWS.Config.GetResourceConfigHistory
     (
-    -- * Request
-      GetResourceConfigHistory
-    -- ** Request constructor
-    , getResourceConfigHistory
-    -- ** Request lenses
+    -- * Creating a Request
+      getResourceConfigHistory
+    , GetResourceConfigHistory
+    -- * Request Lenses
     , grchChronologicalOrder
-    , grchEarlierTime
-    , grchLaterTime
-    , grchLimit
     , grchNextToken
-    , grchResourceId
+    , grchLimit
+    , grchLaterTime
+    , grchEarlierTime
     , grchResourceType
+    , grchResourceId
 
-    -- * Response
-    , GetResourceConfigHistoryResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getResourceConfigHistoryResponse
-    -- ** Response lenses
-    , grchrConfigurationItems
-    , grchrNextToken
+    , GetResourceConfigHistoryResponse
+    -- * Response Lenses
+    , grchrsNextToken
+    , grchrsConfigurationItems
+    , grchrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Config.Types
-import qualified GHC.Exts
-
-data GetResourceConfigHistory = GetResourceConfigHistory
-    { _grchChronologicalOrder :: Maybe ChronologicalOrder
-    , _grchEarlierTime        :: Maybe POSIX
-    , _grchLaterTime          :: Maybe POSIX
-    , _grchLimit              :: Maybe Nat
-    , _grchNextToken          :: Maybe Text
-    , _grchResourceId         :: Text
-    , _grchResourceType       :: ResourceType
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Config.Types
+import           Network.AWS.Config.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'GetResourceConfigHistory' constructor.
+-- | The input for the GetResourceConfigHistory action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getResourceConfigHistory' smart constructor.
+data GetResourceConfigHistory = GetResourceConfigHistory'
+    { _grchChronologicalOrder :: !(Maybe ChronologicalOrder)
+    , _grchNextToken          :: !(Maybe Text)
+    , _grchLimit              :: !(Maybe Nat)
+    , _grchLaterTime          :: !(Maybe POSIX)
+    , _grchEarlierTime        :: !(Maybe POSIX)
+    , _grchResourceType       :: !ResourceType
+    , _grchResourceId         :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetResourceConfigHistory' with the minimum fields required to make a request.
 --
--- * 'grchChronologicalOrder' @::@ 'Maybe' 'ChronologicalOrder'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'grchEarlierTime' @::@ 'Maybe' 'UTCTime'
+-- * 'grchChronologicalOrder'
 --
--- * 'grchLaterTime' @::@ 'Maybe' 'UTCTime'
+-- * 'grchNextToken'
 --
--- * 'grchLimit' @::@ 'Maybe' 'Natural'
+-- * 'grchLimit'
 --
--- * 'grchNextToken' @::@ 'Maybe' 'Text'
+-- * 'grchLaterTime'
 --
--- * 'grchResourceId' @::@ 'Text'
+-- * 'grchEarlierTime'
 --
--- * 'grchResourceType' @::@ 'ResourceType'
+-- * 'grchResourceType'
 --
-getResourceConfigHistory :: ResourceType -- ^ 'grchResourceType'
-                         -> Text -- ^ 'grchResourceId'
-                         -> GetResourceConfigHistory
-getResourceConfigHistory p1 p2 = GetResourceConfigHistory
-    { _grchResourceType       = p1
-    , _grchResourceId         = p2
-    , _grchLaterTime          = Nothing
-    , _grchEarlierTime        = Nothing
-    , _grchChronologicalOrder = Nothing
-    , _grchLimit              = Nothing
-    , _grchNextToken          = Nothing
+-- * 'grchResourceId'
+getResourceConfigHistory
+    :: ResourceType -- ^ 'grchResourceType'
+    -> Text -- ^ 'grchResourceId'
+    -> GetResourceConfigHistory
+getResourceConfigHistory pResourceType_ pResourceId_ =
+    GetResourceConfigHistory'
+    { _grchChronologicalOrder = Nothing
+    , _grchNextToken = Nothing
+    , _grchLimit = Nothing
+    , _grchLaterTime = Nothing
+    , _grchEarlierTime = Nothing
+    , _grchResourceType = pResourceType_
+    , _grchResourceId = pResourceId_
     }
 
 -- | The chronological order for configuration items listed. By default the
 -- results are listed in reverse chronological order.
 grchChronologicalOrder :: Lens' GetResourceConfigHistory (Maybe ChronologicalOrder)
-grchChronologicalOrder =
-    lens _grchChronologicalOrder (\s a -> s { _grchChronologicalOrder = a })
-
--- | The time stamp that indicates an earlier time. If not specified, the action
--- returns paginated results that contain configuration items that start from
--- when the first configuration item was recorded.
-grchEarlierTime :: Lens' GetResourceConfigHistory (Maybe UTCTime)
-grchEarlierTime = lens _grchEarlierTime (\s a -> s { _grchEarlierTime = a }) . mapping _Time
+grchChronologicalOrder = lens _grchChronologicalOrder (\ s a -> s{_grchChronologicalOrder = a});
 
--- | The time stamp that indicates a later time. If not specified, current time is
--- taken.
-grchLaterTime :: Lens' GetResourceConfigHistory (Maybe UTCTime)
-grchLaterTime = lens _grchLaterTime (\s a -> s { _grchLaterTime = a }) . mapping _Time
+-- | An optional parameter used for pagination of the results.
+grchNextToken :: Lens' GetResourceConfigHistory (Maybe Text)
+grchNextToken = lens _grchNextToken (\ s a -> s{_grchNextToken = a});
 
--- | The maximum number of configuration items returned in each page. The default
--- is 10. You cannot specify a limit greater than 100.
+-- | The maximum number of configuration items returned in each page. The
+-- default is 10. You cannot specify a limit greater than 100.
 grchLimit :: Lens' GetResourceConfigHistory (Maybe Natural)
-grchLimit = lens _grchLimit (\s a -> s { _grchLimit = a }) . mapping _Nat
+grchLimit = lens _grchLimit (\ s a -> s{_grchLimit = a}) . mapping _Nat;
 
--- | An optional parameter used for pagination of the results.
-grchNextToken :: Lens' GetResourceConfigHistory (Maybe Text)
-grchNextToken = lens _grchNextToken (\s a -> s { _grchNextToken = a })
+-- | The time stamp that indicates a later time. If not specified, current
+-- time is taken.
+grchLaterTime :: Lens' GetResourceConfigHistory (Maybe UTCTime)
+grchLaterTime = lens _grchLaterTime (\ s a -> s{_grchLaterTime = a}) . mapping _Time;
 
--- | The ID of the resource (for example., 'sg-xxxxxx').
-grchResourceId :: Lens' GetResourceConfigHistory Text
-grchResourceId = lens _grchResourceId (\s a -> s { _grchResourceId = a })
+-- | The time stamp that indicates an earlier time. If not specified, the
+-- action returns paginated results that contain configuration items that
+-- start from when the first configuration item was recorded.
+grchEarlierTime :: Lens' GetResourceConfigHistory (Maybe UTCTime)
+grchEarlierTime = lens _grchEarlierTime (\ s a -> s{_grchEarlierTime = a}) . mapping _Time;
 
 -- | The resource type.
 grchResourceType :: Lens' GetResourceConfigHistory ResourceType
-grchResourceType = lens _grchResourceType (\s a -> s { _grchResourceType = a })
+grchResourceType = lens _grchResourceType (\ s a -> s{_grchResourceType = a});
 
-data GetResourceConfigHistoryResponse = GetResourceConfigHistoryResponse
-    { _grchrConfigurationItems :: List "configurationItems" ConfigurationItem
-    , _grchrNextToken          :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | The ID of the resource (for example., 'sg-xxxxxx').
+grchResourceId :: Lens' GetResourceConfigHistory Text
+grchResourceId = lens _grchResourceId (\ s a -> s{_grchResourceId = a});
 
--- | 'GetResourceConfigHistoryResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'grchrConfigurationItems' @::@ ['ConfigurationItem']
---
--- * 'grchrNextToken' @::@ 'Maybe' 'Text'
---
-getResourceConfigHistoryResponse :: GetResourceConfigHistoryResponse
-getResourceConfigHistoryResponse = GetResourceConfigHistoryResponse
-    { _grchrConfigurationItems = mempty
-    , _grchrNextToken          = Nothing
-    }
+instance AWSRequest GetResourceConfigHistory where
+        type Sv GetResourceConfigHistory = Config
+        type Rs GetResourceConfigHistory =
+             GetResourceConfigHistoryResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetResourceConfigHistoryResponse' <$>
+                   (x .?> "nextToken") <*>
+                     (x .?> "configurationItems" .!@ mempty)
+                     <*> (pure (fromEnum s)))
 
--- | A list that contains the configuration history of one or more resources.
-grchrConfigurationItems :: Lens' GetResourceConfigHistoryResponse [ConfigurationItem]
-grchrConfigurationItems =
-    lens _grchrConfigurationItems (\s a -> s { _grchrConfigurationItems = a })
-        . _List
+instance ToHeaders GetResourceConfigHistory where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StarlingDoveService.GetResourceConfigHistory" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A token used for pagination of results.
-grchrNextToken :: Lens' GetResourceConfigHistoryResponse (Maybe Text)
-grchrNextToken = lens _grchrNextToken (\s a -> s { _grchrNextToken = a })
+instance ToJSON GetResourceConfigHistory where
+        toJSON GetResourceConfigHistory'{..}
+          = object
+              ["chronologicalOrder" .= _grchChronologicalOrder,
+               "nextToken" .= _grchNextToken, "limit" .= _grchLimit,
+               "laterTime" .= _grchLaterTime,
+               "earlierTime" .= _grchEarlierTime,
+               "resourceType" .= _grchResourceType,
+               "resourceId" .= _grchResourceId]
 
 instance ToPath GetResourceConfigHistory where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery GetResourceConfigHistory where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders GetResourceConfigHistory
+-- | The output for the GetResourceConfigHistory action.
+--
+-- /See:/ 'getResourceConfigHistoryResponse' smart constructor.
+data GetResourceConfigHistoryResponse = GetResourceConfigHistoryResponse'
+    { _grchrsNextToken          :: !(Maybe Text)
+    , _grchrsConfigurationItems :: !(Maybe [ConfigurationItem])
+    , _grchrsStatus             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON GetResourceConfigHistory where
-    toJSON GetResourceConfigHistory{..} = object
-        [ "resourceType"       .= _grchResourceType
-        , "resourceId"         .= _grchResourceId
-        , "laterTime"          .= _grchLaterTime
-        , "earlierTime"        .= _grchEarlierTime
-        , "chronologicalOrder" .= _grchChronologicalOrder
-        , "limit"              .= _grchLimit
-        , "nextToken"          .= _grchNextToken
-        ]
+-- | Creates a value of 'GetResourceConfigHistoryResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'grchrsNextToken'
+--
+-- * 'grchrsConfigurationItems'
+--
+-- * 'grchrsStatus'
+getResourceConfigHistoryResponse
+    :: Int -- ^ 'grchrsStatus'
+    -> GetResourceConfigHistoryResponse
+getResourceConfigHistoryResponse pStatus_ =
+    GetResourceConfigHistoryResponse'
+    { _grchrsNextToken = Nothing
+    , _grchrsConfigurationItems = Nothing
+    , _grchrsStatus = pStatus_
+    }
 
-instance AWSRequest GetResourceConfigHistory where
-    type Sv GetResourceConfigHistory = Config
-    type Rs GetResourceConfigHistory = GetResourceConfigHistoryResponse
+-- | A token used for pagination of results.
+grchrsNextToken :: Lens' GetResourceConfigHistoryResponse (Maybe Text)
+grchrsNextToken = lens _grchrsNextToken (\ s a -> s{_grchrsNextToken = a});
 
-    request  = post "GetResourceConfigHistory"
-    response = jsonResponse
+-- | A list that contains the configuration history of one or more resources.
+grchrsConfigurationItems :: Lens' GetResourceConfigHistoryResponse [ConfigurationItem]
+grchrsConfigurationItems = lens _grchrsConfigurationItems (\ s a -> s{_grchrsConfigurationItems = a}) . _Default . _Coerce;
 
-instance FromJSON GetResourceConfigHistoryResponse where
-    parseJSON = withObject "GetResourceConfigHistoryResponse" $ \o -> GetResourceConfigHistoryResponse
-        <$> o .:? "configurationItems" .!= mempty
-        <*> o .:? "nextToken"
+-- | The response status code.
+grchrsStatus :: Lens' GetResourceConfigHistoryResponse Int
+grchrsStatus = lens _grchrsStatus (\ s a -> s{_grchrsStatus = a});
diff --git a/gen/Network/AWS/Config/PutConfigurationRecorder.hs b/gen/Network/AWS/Config/PutConfigurationRecorder.hs
--- a/gen/Network/AWS/Config/PutConfigurationRecorder.hs
+++ b/gen/Network/AWS/Config/PutConfigurationRecorder.hs
@@ -1,105 +1,118 @@
-{-# 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.Config.PutConfigurationRecorder
--- 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 configuration recorder to record the resource configurations.
+-- Creates a new configuration recorder to record the selected resource
+-- configurations.
 --
--- You can use this action to change the role ('roleARN') of an existing
--- recorder. To change the role, call the action on the existing configuration
--- recorder and specify a role.
+-- You can use this action to change the role 'roleARN' and\/or the
+-- 'recordingGroup' of an existing recorder. To change the role, call the
+-- action on the existing configuration recorder and specify a role.
 --
 -- Currently, you can specify only one configuration recorder per account.
 --
---
+-- If 'ConfigurationRecorder' does not have the __recordingGroup__
+-- parameter specified, the default is to record all supported resource
+-- types.
 --
--- <http://docs.aws.amazon.com/config/latest/APIReference/API_PutConfigurationRecorder.html>
+-- /See:/ <http://docs.aws.amazon.com/config/latest/APIReference/API_PutConfigurationRecorder.html AWS API Reference> for PutConfigurationRecorder.
 module Network.AWS.Config.PutConfigurationRecorder
     (
-    -- * Request
-      PutConfigurationRecorder
-    -- ** Request constructor
-    , putConfigurationRecorder
-    -- ** Request lenses
+    -- * Creating a Request
+      putConfigurationRecorder
+    , PutConfigurationRecorder
+    -- * Request Lenses
     , pcrConfigurationRecorder
 
-    -- * Response
-    , PutConfigurationRecorderResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , putConfigurationRecorderResponse
+    , PutConfigurationRecorderResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Config.Types
-import qualified GHC.Exts
+import           Network.AWS.Config.Types
+import           Network.AWS.Config.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype PutConfigurationRecorder = PutConfigurationRecorder
+-- | The input for the PutConfigurationRecorder action.
+--
+-- /See:/ 'putConfigurationRecorder' smart constructor.
+newtype PutConfigurationRecorder = PutConfigurationRecorder'
     { _pcrConfigurationRecorder :: ConfigurationRecorder
-    } deriving (Eq, Read, Show)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'PutConfigurationRecorder' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'PutConfigurationRecorder' with the minimum fields required to make a request.
 --
--- * 'pcrConfigurationRecorder' @::@ 'ConfigurationRecorder'
+-- Use one of the following lenses to modify other fields as desired:
 --
-putConfigurationRecorder :: ConfigurationRecorder -- ^ 'pcrConfigurationRecorder'
-                         -> PutConfigurationRecorder
-putConfigurationRecorder p1 = PutConfigurationRecorder
-    { _pcrConfigurationRecorder = p1
+-- * 'pcrConfigurationRecorder'
+putConfigurationRecorder
+    :: ConfigurationRecorder -- ^ 'pcrConfigurationRecorder'
+    -> PutConfigurationRecorder
+putConfigurationRecorder pConfigurationRecorder_ =
+    PutConfigurationRecorder'
+    { _pcrConfigurationRecorder = pConfigurationRecorder_
     }
 
--- | The configuration recorder object that records each configuration change made
--- to the resources.
+-- | The configuration recorder object that records each configuration change
+-- made to the resources.
 pcrConfigurationRecorder :: Lens' PutConfigurationRecorder ConfigurationRecorder
-pcrConfigurationRecorder =
-    lens _pcrConfigurationRecorder
-        (\s a -> s { _pcrConfigurationRecorder = a })
+pcrConfigurationRecorder = lens _pcrConfigurationRecorder (\ s a -> s{_pcrConfigurationRecorder = a});
 
-data PutConfigurationRecorderResponse = PutConfigurationRecorderResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest PutConfigurationRecorder where
+        type Sv PutConfigurationRecorder = Config
+        type Rs PutConfigurationRecorder =
+             PutConfigurationRecorderResponse
+        request = postJSON
+        response
+          = receiveNull PutConfigurationRecorderResponse'
 
--- | 'PutConfigurationRecorderResponse' constructor.
-putConfigurationRecorderResponse :: PutConfigurationRecorderResponse
-putConfigurationRecorderResponse = PutConfigurationRecorderResponse
+instance ToHeaders PutConfigurationRecorder where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StarlingDoveService.PutConfigurationRecorder" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON PutConfigurationRecorder where
+        toJSON PutConfigurationRecorder'{..}
+          = object
+              ["ConfigurationRecorder" .=
+                 _pcrConfigurationRecorder]
+
 instance ToPath PutConfigurationRecorder where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery PutConfigurationRecorder where
-    toQuery = const mempty
-
-instance ToHeaders PutConfigurationRecorder
-
-instance ToJSON PutConfigurationRecorder where
-    toJSON PutConfigurationRecorder{..} = object
-        [ "ConfigurationRecorder" .= _pcrConfigurationRecorder
-        ]
+        toQuery = const mempty
 
-instance AWSRequest PutConfigurationRecorder where
-    type Sv PutConfigurationRecorder = Config
-    type Rs PutConfigurationRecorder = PutConfigurationRecorderResponse
+-- | /See:/ 'putConfigurationRecorderResponse' smart constructor.
+data PutConfigurationRecorderResponse =
+    PutConfigurationRecorderResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "PutConfigurationRecorder"
-    response = nullResponse PutConfigurationRecorderResponse
+-- | Creates a value of 'PutConfigurationRecorderResponse' with the minimum fields required to make a request.
+--
+putConfigurationRecorderResponse
+    :: PutConfigurationRecorderResponse
+putConfigurationRecorderResponse = PutConfigurationRecorderResponse'
diff --git a/gen/Network/AWS/Config/PutDeliveryChannel.hs b/gen/Network/AWS/Config/PutDeliveryChannel.hs
--- a/gen/Network/AWS/Config/PutDeliveryChannel.hs
+++ b/gen/Network/AWS/Config/PutDeliveryChannel.hs
@@ -1,108 +1,115 @@
-{-# 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.Config.PutDeliveryChannel
--- 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 delivery channel object to deliver the configuration
+-- Creates a new delivery channel object to deliver the configuration
 -- information to an Amazon S3 bucket, and to an Amazon SNS topic.
 --
 -- You can use this action to change the Amazon S3 bucket or an Amazon SNS
--- topic of the existing delivery channel. To change the Amazon S3 bucket or an
--- Amazon SNS topic, call this action and specify the changed values for the S3
--- bucket and the SNS topic. If you specify a different value for either the S3
--- bucket or the SNS topic, this action will keep the existing value for the
--- parameter that is not changed.
+-- topic of the existing delivery channel. To change the Amazon S3 bucket
+-- or an Amazon SNS topic, call this action and specify the changed values
+-- for the S3 bucket and the SNS topic. If you specify a different value
+-- for either the S3 bucket or the SNS topic, this action will keep the
+-- existing value for the parameter that is not changed.
 --
 -- Currently, you can specify only one delivery channel per account.
 --
---
---
--- <http://docs.aws.amazon.com/config/latest/APIReference/API_PutDeliveryChannel.html>
+-- /See:/ <http://docs.aws.amazon.com/config/latest/APIReference/API_PutDeliveryChannel.html AWS API Reference> for PutDeliveryChannel.
 module Network.AWS.Config.PutDeliveryChannel
     (
-    -- * Request
-      PutDeliveryChannel
-    -- ** Request constructor
-    , putDeliveryChannel
-    -- ** Request lenses
+    -- * Creating a Request
+      putDeliveryChannel
+    , PutDeliveryChannel
+    -- * Request Lenses
     , pdcDeliveryChannel
 
-    -- * Response
-    , PutDeliveryChannelResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , putDeliveryChannelResponse
+    , PutDeliveryChannelResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Config.Types
-import qualified GHC.Exts
+import           Network.AWS.Config.Types
+import           Network.AWS.Config.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype PutDeliveryChannel = PutDeliveryChannel
+-- | The input for the PutDeliveryChannel action.
+--
+-- /See:/ 'putDeliveryChannel' smart constructor.
+newtype PutDeliveryChannel = PutDeliveryChannel'
     { _pdcDeliveryChannel :: DeliveryChannel
-    } deriving (Eq, Read, Show)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'PutDeliveryChannel' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'PutDeliveryChannel' with the minimum fields required to make a request.
 --
--- * 'pdcDeliveryChannel' @::@ 'DeliveryChannel'
+-- Use one of the following lenses to modify other fields as desired:
 --
-putDeliveryChannel :: DeliveryChannel -- ^ 'pdcDeliveryChannel'
-                   -> PutDeliveryChannel
-putDeliveryChannel p1 = PutDeliveryChannel
-    { _pdcDeliveryChannel = p1
+-- * 'pdcDeliveryChannel'
+putDeliveryChannel
+    :: DeliveryChannel -- ^ 'pdcDeliveryChannel'
+    -> PutDeliveryChannel
+putDeliveryChannel pDeliveryChannel_ =
+    PutDeliveryChannel'
+    { _pdcDeliveryChannel = pDeliveryChannel_
     }
 
--- | The configuration delivery channel object that delivers the configuration
--- information to an Amazon S3 bucket, and to an Amazon SNS topic.
+-- | The configuration delivery channel object that delivers the
+-- configuration information to an Amazon S3 bucket, and to an Amazon SNS
+-- topic.
 pdcDeliveryChannel :: Lens' PutDeliveryChannel DeliveryChannel
-pdcDeliveryChannel =
-    lens _pdcDeliveryChannel (\s a -> s { _pdcDeliveryChannel = a })
+pdcDeliveryChannel = lens _pdcDeliveryChannel (\ s a -> s{_pdcDeliveryChannel = a});
 
-data PutDeliveryChannelResponse = PutDeliveryChannelResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest PutDeliveryChannel where
+        type Sv PutDeliveryChannel = Config
+        type Rs PutDeliveryChannel =
+             PutDeliveryChannelResponse
+        request = postJSON
+        response = receiveNull PutDeliveryChannelResponse'
 
--- | 'PutDeliveryChannelResponse' constructor.
-putDeliveryChannelResponse :: PutDeliveryChannelResponse
-putDeliveryChannelResponse = PutDeliveryChannelResponse
+instance ToHeaders PutDeliveryChannel where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StarlingDoveService.PutDeliveryChannel" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON PutDeliveryChannel where
+        toJSON PutDeliveryChannel'{..}
+          = object ["DeliveryChannel" .= _pdcDeliveryChannel]
+
 instance ToPath PutDeliveryChannel where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery PutDeliveryChannel where
-    toQuery = const mempty
-
-instance ToHeaders PutDeliveryChannel
-
-instance ToJSON PutDeliveryChannel where
-    toJSON PutDeliveryChannel{..} = object
-        [ "DeliveryChannel" .= _pdcDeliveryChannel
-        ]
+        toQuery = const mempty
 
-instance AWSRequest PutDeliveryChannel where
-    type Sv PutDeliveryChannel = Config
-    type Rs PutDeliveryChannel = PutDeliveryChannelResponse
+-- | /See:/ 'putDeliveryChannelResponse' smart constructor.
+data PutDeliveryChannelResponse =
+    PutDeliveryChannelResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "PutDeliveryChannel"
-    response = nullResponse PutDeliveryChannelResponse
+-- | Creates a value of 'PutDeliveryChannelResponse' with the minimum fields required to make a request.
+--
+putDeliveryChannelResponse
+    :: PutDeliveryChannelResponse
+putDeliveryChannelResponse = PutDeliveryChannelResponse'
diff --git a/gen/Network/AWS/Config/StartConfigurationRecorder.hs b/gen/Network/AWS/Config/StartConfigurationRecorder.hs
--- a/gen/Network/AWS/Config/StartConfigurationRecorder.hs
+++ b/gen/Network/AWS/Config/StartConfigurationRecorder.hs
@@ -1,101 +1,111 @@
-{-# 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.Config.StartConfigurationRecorder
--- 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.
-
--- | Starts recording configurations of all the resources associated with the
--- account.
+-- Starts recording configurations of the AWS resources you have selected
+-- to record in your AWS account.
 --
--- You must have created at least one delivery channel to successfully start
--- the configuration recorder.
+-- You must have created at least one delivery channel to successfully
+-- start the configuration recorder.
 --
--- <http://docs.aws.amazon.com/config/latest/APIReference/API_StartConfigurationRecorder.html>
+-- /See:/ <http://docs.aws.amazon.com/config/latest/APIReference/API_StartConfigurationRecorder.html AWS API Reference> for StartConfigurationRecorder.
 module Network.AWS.Config.StartConfigurationRecorder
     (
-    -- * Request
-      StartConfigurationRecorder
-    -- ** Request constructor
-    , startConfigurationRecorder
-    -- ** Request lenses
-    , scr1ConfigurationRecorderName
+    -- * Creating a Request
+      startConfigurationRecorder
+    , StartConfigurationRecorder
+    -- * Request Lenses
+    , sConfigurationRecorderName
 
-    -- * Response
-    , StartConfigurationRecorderResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , startConfigurationRecorderResponse
+    , StartConfigurationRecorderResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Config.Types
-import qualified GHC.Exts
-
-newtype StartConfigurationRecorder = StartConfigurationRecorder
-    { _scr1ConfigurationRecorderName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+import           Network.AWS.Config.Types
+import           Network.AWS.Config.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'StartConfigurationRecorder' constructor.
+-- | The input for the StartConfigurationRecorder action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'startConfigurationRecorder' smart constructor.
+newtype StartConfigurationRecorder = StartConfigurationRecorder'
+    { _sConfigurationRecorderName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StartConfigurationRecorder' with the minimum fields required to make a request.
 --
--- * 'scr1ConfigurationRecorderName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-startConfigurationRecorder :: Text -- ^ 'scr1ConfigurationRecorderName'
-                           -> StartConfigurationRecorder
-startConfigurationRecorder p1 = StartConfigurationRecorder
-    { _scr1ConfigurationRecorderName = p1
+-- * 'sConfigurationRecorderName'
+startConfigurationRecorder
+    :: Text -- ^ 'sConfigurationRecorderName'
+    -> StartConfigurationRecorder
+startConfigurationRecorder pConfigurationRecorderName_ =
+    StartConfigurationRecorder'
+    { _sConfigurationRecorderName = pConfigurationRecorderName_
     }
 
--- | The name of the recorder object that records each configuration change made
--- to the resources.
-scr1ConfigurationRecorderName :: Lens' StartConfigurationRecorder Text
-scr1ConfigurationRecorderName =
-    lens _scr1ConfigurationRecorderName
-        (\s a -> s { _scr1ConfigurationRecorderName = a })
+-- | The name of the recorder object that records each configuration change
+-- made to the resources.
+sConfigurationRecorderName :: Lens' StartConfigurationRecorder Text
+sConfigurationRecorderName = lens _sConfigurationRecorderName (\ s a -> s{_sConfigurationRecorderName = a});
 
-data StartConfigurationRecorderResponse = StartConfigurationRecorderResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest StartConfigurationRecorder where
+        type Sv StartConfigurationRecorder = Config
+        type Rs StartConfigurationRecorder =
+             StartConfigurationRecorderResponse
+        request = postJSON
+        response
+          = receiveNull StartConfigurationRecorderResponse'
 
--- | 'StartConfigurationRecorderResponse' constructor.
-startConfigurationRecorderResponse :: StartConfigurationRecorderResponse
-startConfigurationRecorderResponse = StartConfigurationRecorderResponse
+instance ToHeaders StartConfigurationRecorder where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StarlingDoveService.StartConfigurationRecorder" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON StartConfigurationRecorder where
+        toJSON StartConfigurationRecorder'{..}
+          = object
+              ["ConfigurationRecorderName" .=
+                 _sConfigurationRecorderName]
+
 instance ToPath StartConfigurationRecorder where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery StartConfigurationRecorder where
-    toQuery = const mempty
-
-instance ToHeaders StartConfigurationRecorder
-
-instance ToJSON StartConfigurationRecorder where
-    toJSON StartConfigurationRecorder{..} = object
-        [ "ConfigurationRecorderName" .= _scr1ConfigurationRecorderName
-        ]
+        toQuery = const mempty
 
-instance AWSRequest StartConfigurationRecorder where
-    type Sv StartConfigurationRecorder = Config
-    type Rs StartConfigurationRecorder = StartConfigurationRecorderResponse
+-- | /See:/ 'startConfigurationRecorderResponse' smart constructor.
+data StartConfigurationRecorderResponse =
+    StartConfigurationRecorderResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "StartConfigurationRecorder"
-    response = nullResponse StartConfigurationRecorderResponse
+-- | Creates a value of 'StartConfigurationRecorderResponse' with the minimum fields required to make a request.
+--
+startConfigurationRecorderResponse
+    :: StartConfigurationRecorderResponse
+startConfigurationRecorderResponse = StartConfigurationRecorderResponse'
diff --git a/gen/Network/AWS/Config/StopConfigurationRecorder.hs b/gen/Network/AWS/Config/StopConfigurationRecorder.hs
--- a/gen/Network/AWS/Config/StopConfigurationRecorder.hs
+++ b/gen/Network/AWS/Config/StopConfigurationRecorder.hs
@@ -1,98 +1,108 @@
-{-# 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.Config.StopConfigurationRecorder
--- 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.
-
--- | Stops recording configurations of all the resources associated with the
--- account.
+-- Stops recording configurations of the AWS resources you have selected to
+-- record in your AWS account.
 --
--- <http://docs.aws.amazon.com/config/latest/APIReference/API_StopConfigurationRecorder.html>
+-- /See:/ <http://docs.aws.amazon.com/config/latest/APIReference/API_StopConfigurationRecorder.html AWS API Reference> for StopConfigurationRecorder.
 module Network.AWS.Config.StopConfigurationRecorder
     (
-    -- * Request
-      StopConfigurationRecorder
-    -- ** Request constructor
-    , stopConfigurationRecorder
-    -- ** Request lenses
+    -- * Creating a Request
+      stopConfigurationRecorder
+    , StopConfigurationRecorder
+    -- * Request Lenses
     , scrConfigurationRecorderName
 
-    -- * Response
-    , StopConfigurationRecorderResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , stopConfigurationRecorderResponse
+    , StopConfigurationRecorderResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Config.Types
-import qualified GHC.Exts
+import           Network.AWS.Config.Types
+import           Network.AWS.Config.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype StopConfigurationRecorder = StopConfigurationRecorder
+-- | The input for the StopConfigurationRecorder action.
+--
+-- /See:/ 'stopConfigurationRecorder' smart constructor.
+newtype StopConfigurationRecorder = StopConfigurationRecorder'
     { _scrConfigurationRecorderName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'StopConfigurationRecorder' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'StopConfigurationRecorder' with the minimum fields required to make a request.
 --
--- * 'scrConfigurationRecorderName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-stopConfigurationRecorder :: Text -- ^ 'scrConfigurationRecorderName'
-                          -> StopConfigurationRecorder
-stopConfigurationRecorder p1 = StopConfigurationRecorder
-    { _scrConfigurationRecorderName = p1
+-- * 'scrConfigurationRecorderName'
+stopConfigurationRecorder
+    :: Text -- ^ 'scrConfigurationRecorderName'
+    -> StopConfigurationRecorder
+stopConfigurationRecorder pConfigurationRecorderName_ =
+    StopConfigurationRecorder'
+    { _scrConfigurationRecorderName = pConfigurationRecorderName_
     }
 
--- | The name of the recorder object that records each configuration change made
--- to the resources.
+-- | The name of the recorder object that records each configuration change
+-- made to the resources.
 scrConfigurationRecorderName :: Lens' StopConfigurationRecorder Text
-scrConfigurationRecorderName =
-    lens _scrConfigurationRecorderName
-        (\s a -> s { _scrConfigurationRecorderName = a })
+scrConfigurationRecorderName = lens _scrConfigurationRecorderName (\ s a -> s{_scrConfigurationRecorderName = a});
 
-data StopConfigurationRecorderResponse = StopConfigurationRecorderResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest StopConfigurationRecorder where
+        type Sv StopConfigurationRecorder = Config
+        type Rs StopConfigurationRecorder =
+             StopConfigurationRecorderResponse
+        request = postJSON
+        response
+          = receiveNull StopConfigurationRecorderResponse'
 
--- | 'StopConfigurationRecorderResponse' constructor.
-stopConfigurationRecorderResponse :: StopConfigurationRecorderResponse
-stopConfigurationRecorderResponse = StopConfigurationRecorderResponse
+instance ToHeaders StopConfigurationRecorder where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StarlingDoveService.StopConfigurationRecorder" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON StopConfigurationRecorder where
+        toJSON StopConfigurationRecorder'{..}
+          = object
+              ["ConfigurationRecorderName" .=
+                 _scrConfigurationRecorderName]
+
 instance ToPath StopConfigurationRecorder where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery StopConfigurationRecorder where
-    toQuery = const mempty
-
-instance ToHeaders StopConfigurationRecorder
-
-instance ToJSON StopConfigurationRecorder where
-    toJSON StopConfigurationRecorder{..} = object
-        [ "ConfigurationRecorderName" .= _scrConfigurationRecorderName
-        ]
+        toQuery = const mempty
 
-instance AWSRequest StopConfigurationRecorder where
-    type Sv StopConfigurationRecorder = Config
-    type Rs StopConfigurationRecorder = StopConfigurationRecorderResponse
+-- | /See:/ 'stopConfigurationRecorderResponse' smart constructor.
+data StopConfigurationRecorderResponse =
+    StopConfigurationRecorderResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "StopConfigurationRecorder"
-    response = nullResponse StopConfigurationRecorderResponse
+-- | Creates a value of 'StopConfigurationRecorderResponse' with the minimum fields required to make a request.
+--
+stopConfigurationRecorderResponse
+    :: StopConfigurationRecorderResponse
+stopConfigurationRecorderResponse = StopConfigurationRecorderResponse'
diff --git a/gen/Network/AWS/Config/Types.hs b/gen/Network/AWS/Config/Types.hs
--- a/gen/Network/AWS/Config/Types.hs
+++ b/gen/Network/AWS/Config/Types.hs
@@ -1,1009 +1,288 @@
-{-# 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.Config.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.Config.Types
-    (
-    -- * Service
-      Config
-    -- ** Error
-    , JSONError
-
-    -- * ConfigExportDeliveryInfo
-    , ConfigExportDeliveryInfo
-    , configExportDeliveryInfo
-    , cediLastAttemptTime
-    , cediLastErrorCode
-    , cediLastErrorMessage
-    , cediLastStatus
-    , cediLastSuccessfulTime
-
-    -- * ConfigStreamDeliveryInfo
-    , ConfigStreamDeliveryInfo
-    , configStreamDeliveryInfo
-    , csdiLastErrorCode
-    , csdiLastErrorMessage
-    , csdiLastStatus
-    , csdiLastStatusChangeTime
-
-    -- * Relationship
-    , Relationship
-    , relationship
-    , rRelationshipName
-    , rResourceId
-    , rResourceType
-
-    -- * DeliveryChannel
-    , DeliveryChannel
-    , deliveryChannel
-    , dcName
-    , dcS3BucketName
-    , dcS3KeyPrefix
-    , dcSnsTopicARN
-
-    -- * ChronologicalOrder
-    , ChronologicalOrder (..)
-
-    -- * ResourceType
-    , ResourceType (..)
-
-    -- * ConfigurationItem
-    , ConfigurationItem
-    , configurationItem
-    , ciAccountId
-    , ciArn
-    , ciAvailabilityZone
-    , ciConfiguration
-    , ciConfigurationItemCaptureTime
-    , ciConfigurationItemMD5Hash
-    , ciConfigurationItemStatus
-    , ciConfigurationStateId
-    , ciRelatedEvents
-    , ciRelationships
-    , ciResourceCreationTime
-    , ciResourceId
-    , ciResourceType
-    , ciTags
-    , ciVersion
-
-    -- * DeliveryStatus
-    , DeliveryStatus (..)
-
-    -- * DeliveryChannelStatus
-    , DeliveryChannelStatus
-    , deliveryChannelStatus
-    , dcsConfigHistoryDeliveryInfo
-    , dcsConfigSnapshotDeliveryInfo
-    , dcsConfigStreamDeliveryInfo
-    , dcsName
-
-    -- * ConfigurationRecorderStatus
-    , ConfigurationRecorderStatus
-    , configurationRecorderStatus
-    , crsLastErrorCode
-    , crsLastErrorMessage
-    , crsLastStartTime
-    , crsLastStatus
-    , crsLastStatusChangeTime
-    , crsLastStopTime
-    , crsName
-    , crsRecording
-
-    -- * ConfigurationItemStatus
-    , ConfigurationItemStatus (..)
-
-    -- * ConfigurationRecorder
-    , ConfigurationRecorder
-    , configurationRecorder
-    , crName
-    , crRoleARN
-
-    -- * RecorderStatus
-    , RecorderStatus (..)
-    ) where
-
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
-
--- | Version @2014-11-12@ of the Amazon Config service.
-data Config
-
-instance AWSService Config where
-    type Sg Config = V4
-    type Er Config = JSONError
-
-    service = service'
-      where
-        service' :: Service Config
-        service' = Service
-            { _svcAbbrev       = "Config"
-            , _svcPrefix       = "config"
-            , _svcVersion      = "2014-11-12"
-            , _svcTargetPrefix = Just "StarlingDoveService"
-            , _svcJSONVersion  = Just "1.1"
-            , _svcHandle       = handle
-            , _svcRetry        = retry
-            }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError JSONError)
-        handle = jsonError statusSuccess service'
-
-        retry :: Retry Config
-        retry = Exponential
-            { _retryBase     = 0.05
-            , _retryGrowth   = 2
-            , _retryAttempts = 5
-            , _retryCheck    = check
-            }
-
-        check :: Status
-              -> JSONError
-              -> Bool
-        check (statusCode -> s) (awsErrorCode -> e)
-            | s == 500  = True -- General Server Error
-            | s == 509  = True -- Limit Exceeded
-            | s == 503  = True -- Service Unavailable
-            | otherwise = False
-
-data ConfigExportDeliveryInfo = ConfigExportDeliveryInfo
-    { _cediLastAttemptTime    :: Maybe POSIX
-    , _cediLastErrorCode      :: Maybe Text
-    , _cediLastErrorMessage   :: Maybe Text
-    , _cediLastStatus         :: Maybe DeliveryStatus
-    , _cediLastSuccessfulTime :: Maybe POSIX
-    } deriving (Eq, Read, Show)
-
--- | 'ConfigExportDeliveryInfo' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cediLastAttemptTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'cediLastErrorCode' @::@ 'Maybe' 'Text'
---
--- * 'cediLastErrorMessage' @::@ 'Maybe' 'Text'
---
--- * 'cediLastStatus' @::@ 'Maybe' 'DeliveryStatus'
---
--- * 'cediLastSuccessfulTime' @::@ 'Maybe' 'UTCTime'
---
-configExportDeliveryInfo :: ConfigExportDeliveryInfo
-configExportDeliveryInfo = ConfigExportDeliveryInfo
-    { _cediLastStatus         = Nothing
-    , _cediLastErrorCode      = Nothing
-    , _cediLastErrorMessage   = Nothing
-    , _cediLastAttemptTime    = Nothing
-    , _cediLastSuccessfulTime = Nothing
-    }
-
--- | The time of the last attempted delivery.
-cediLastAttemptTime :: Lens' ConfigExportDeliveryInfo (Maybe UTCTime)
-cediLastAttemptTime =
-    lens _cediLastAttemptTime (\s a -> s { _cediLastAttemptTime = a })
-        . mapping _Time
-
--- | The error code from the last attempted delivery.
-cediLastErrorCode :: Lens' ConfigExportDeliveryInfo (Maybe Text)
-cediLastErrorCode =
-    lens _cediLastErrorCode (\s a -> s { _cediLastErrorCode = a })
-
--- | The error message from the last attempted delivery.
-cediLastErrorMessage :: Lens' ConfigExportDeliveryInfo (Maybe Text)
-cediLastErrorMessage =
-    lens _cediLastErrorMessage (\s a -> s { _cediLastErrorMessage = a })
-
--- | Status of the last attempted delivery.
-cediLastStatus :: Lens' ConfigExportDeliveryInfo (Maybe DeliveryStatus)
-cediLastStatus = lens _cediLastStatus (\s a -> s { _cediLastStatus = a })
-
--- | The time of the last successful delivery.
-cediLastSuccessfulTime :: Lens' ConfigExportDeliveryInfo (Maybe UTCTime)
-cediLastSuccessfulTime =
-    lens _cediLastSuccessfulTime (\s a -> s { _cediLastSuccessfulTime = a })
-        . mapping _Time
-
-instance FromJSON ConfigExportDeliveryInfo where
-    parseJSON = withObject "ConfigExportDeliveryInfo" $ \o -> ConfigExportDeliveryInfo
-        <$> o .:? "lastAttemptTime"
-        <*> o .:? "lastErrorCode"
-        <*> o .:? "lastErrorMessage"
-        <*> o .:? "lastStatus"
-        <*> o .:? "lastSuccessfulTime"
-
-instance ToJSON ConfigExportDeliveryInfo where
-    toJSON ConfigExportDeliveryInfo{..} = object
-        [ "lastStatus"         .= _cediLastStatus
-        , "lastErrorCode"      .= _cediLastErrorCode
-        , "lastErrorMessage"   .= _cediLastErrorMessage
-        , "lastAttemptTime"    .= _cediLastAttemptTime
-        , "lastSuccessfulTime" .= _cediLastSuccessfulTime
-        ]
-
-data ConfigStreamDeliveryInfo = ConfigStreamDeliveryInfo
-    { _csdiLastErrorCode        :: Maybe Text
-    , _csdiLastErrorMessage     :: Maybe Text
-    , _csdiLastStatus           :: Maybe DeliveryStatus
-    , _csdiLastStatusChangeTime :: Maybe POSIX
-    } deriving (Eq, Read, Show)
-
--- | 'ConfigStreamDeliveryInfo' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'csdiLastErrorCode' @::@ 'Maybe' 'Text'
---
--- * 'csdiLastErrorMessage' @::@ 'Maybe' 'Text'
---
--- * 'csdiLastStatus' @::@ 'Maybe' 'DeliveryStatus'
---
--- * 'csdiLastStatusChangeTime' @::@ 'Maybe' 'UTCTime'
---
-configStreamDeliveryInfo :: ConfigStreamDeliveryInfo
-configStreamDeliveryInfo = ConfigStreamDeliveryInfo
-    { _csdiLastStatus           = Nothing
-    , _csdiLastErrorCode        = Nothing
-    , _csdiLastErrorMessage     = Nothing
-    , _csdiLastStatusChangeTime = Nothing
-    }
-
--- | The error code from the last attempted delivery.
-csdiLastErrorCode :: Lens' ConfigStreamDeliveryInfo (Maybe Text)
-csdiLastErrorCode =
-    lens _csdiLastErrorCode (\s a -> s { _csdiLastErrorCode = a })
-
--- | The error message from the last attempted delivery.
-csdiLastErrorMessage :: Lens' ConfigStreamDeliveryInfo (Maybe Text)
-csdiLastErrorMessage =
-    lens _csdiLastErrorMessage (\s a -> s { _csdiLastErrorMessage = a })
-
--- | Status of the last attempted delivery.
-csdiLastStatus :: Lens' ConfigStreamDeliveryInfo (Maybe DeliveryStatus)
-csdiLastStatus = lens _csdiLastStatus (\s a -> s { _csdiLastStatus = a })
-
--- | The time from the last status change.
-csdiLastStatusChangeTime :: Lens' ConfigStreamDeliveryInfo (Maybe UTCTime)
-csdiLastStatusChangeTime =
-    lens _csdiLastStatusChangeTime
-        (\s a -> s { _csdiLastStatusChangeTime = a })
-            . mapping _Time
-
-instance FromJSON ConfigStreamDeliveryInfo where
-    parseJSON = withObject "ConfigStreamDeliveryInfo" $ \o -> ConfigStreamDeliveryInfo
-        <$> o .:? "lastErrorCode"
-        <*> o .:? "lastErrorMessage"
-        <*> o .:? "lastStatus"
-        <*> o .:? "lastStatusChangeTime"
-
-instance ToJSON ConfigStreamDeliveryInfo where
-    toJSON ConfigStreamDeliveryInfo{..} = object
-        [ "lastStatus"           .= _csdiLastStatus
-        , "lastErrorCode"        .= _csdiLastErrorCode
-        , "lastErrorMessage"     .= _csdiLastErrorMessage
-        , "lastStatusChangeTime" .= _csdiLastStatusChangeTime
-        ]
-
-data Relationship = Relationship
-    { _rRelationshipName :: Maybe Text
-    , _rResourceId       :: Maybe Text
-    , _rResourceType     :: Maybe ResourceType
-    } deriving (Eq, Read, Show)
-
--- | 'Relationship' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rRelationshipName' @::@ 'Maybe' 'Text'
---
--- * 'rResourceId' @::@ 'Maybe' 'Text'
---
--- * 'rResourceType' @::@ 'Maybe' 'ResourceType'
---
-relationship :: Relationship
-relationship = Relationship
-    { _rResourceType     = Nothing
-    , _rResourceId       = Nothing
-    , _rRelationshipName = Nothing
-    }
-
--- | The name of the related resource.
-rRelationshipName :: Lens' Relationship (Maybe Text)
-rRelationshipName =
-    lens _rRelationshipName (\s a -> s { _rRelationshipName = a })
-
--- | The resource ID of the related resource (for example, 'sg-xxxxxx'.
-rResourceId :: Lens' Relationship (Maybe Text)
-rResourceId = lens _rResourceId (\s a -> s { _rResourceId = a })
-
--- | The resource type of the related resource.
-rResourceType :: Lens' Relationship (Maybe ResourceType)
-rResourceType = lens _rResourceType (\s a -> s { _rResourceType = a })
-
-instance FromJSON Relationship where
-    parseJSON = withObject "Relationship" $ \o -> Relationship
-        <$> o .:? "relationshipName"
-        <*> o .:? "resourceId"
-        <*> o .:? "resourceType"
-
-instance ToJSON Relationship where
-    toJSON Relationship{..} = object
-        [ "resourceType"     .= _rResourceType
-        , "resourceId"       .= _rResourceId
-        , "relationshipName" .= _rRelationshipName
-        ]
-
-data DeliveryChannel = DeliveryChannel
-    { _dcName         :: Maybe Text
-    , _dcS3BucketName :: Maybe Text
-    , _dcS3KeyPrefix  :: Maybe Text
-    , _dcSnsTopicARN  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DeliveryChannel' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dcName' @::@ 'Maybe' 'Text'
---
--- * 'dcS3BucketName' @::@ 'Maybe' 'Text'
---
--- * 'dcS3KeyPrefix' @::@ 'Maybe' 'Text'
---
--- * 'dcSnsTopicARN' @::@ 'Maybe' 'Text'
---
-deliveryChannel :: DeliveryChannel
-deliveryChannel = DeliveryChannel
-    { _dcName         = Nothing
-    , _dcS3BucketName = Nothing
-    , _dcS3KeyPrefix  = Nothing
-    , _dcSnsTopicARN  = Nothing
-    }
-
--- | The name of the delivery channel. By default, AWS Config automatically
--- assigns the name "default" when creating the delivery channel. You cannot
--- change the assigned name.
-dcName :: Lens' DeliveryChannel (Maybe Text)
-dcName = lens _dcName (\s a -> s { _dcName = a })
-
--- | The name of the Amazon S3 bucket used to store configuration history for the
--- delivery channel.
-dcS3BucketName :: Lens' DeliveryChannel (Maybe Text)
-dcS3BucketName = lens _dcS3BucketName (\s a -> s { _dcS3BucketName = a })
-
--- | The prefix for the specified Amazon S3 bucket.
-dcS3KeyPrefix :: Lens' DeliveryChannel (Maybe Text)
-dcS3KeyPrefix = lens _dcS3KeyPrefix (\s a -> s { _dcS3KeyPrefix = a })
-
--- | The Amazon Resource Name (ARN) of the IAM role used for accessing the Amazon
--- S3 bucket and the Amazon SNS topic.
-dcSnsTopicARN :: Lens' DeliveryChannel (Maybe Text)
-dcSnsTopicARN = lens _dcSnsTopicARN (\s a -> s { _dcSnsTopicARN = a })
-
-instance FromJSON DeliveryChannel where
-    parseJSON = withObject "DeliveryChannel" $ \o -> DeliveryChannel
-        <$> o .:? "name"
-        <*> o .:? "s3BucketName"
-        <*> o .:? "s3KeyPrefix"
-        <*> o .:? "snsTopicARN"
-
-instance ToJSON DeliveryChannel where
-    toJSON DeliveryChannel{..} = object
-        [ "name"         .= _dcName
-        , "s3BucketName" .= _dcS3BucketName
-        , "s3KeyPrefix"  .= _dcS3KeyPrefix
-        , "snsTopicARN"  .= _dcSnsTopicARN
-        ]
-
-data ChronologicalOrder
-    = Forward -- ^ Forward
-    | Reverse -- ^ Reverse
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable ChronologicalOrder
-
-instance FromText ChronologicalOrder where
-    parser = takeLowerText >>= \case
-        "forward" -> pure Forward
-        "reverse" -> pure Reverse
-        e         -> fail $
-            "Failure parsing ChronologicalOrder from " ++ show e
-
-instance ToText ChronologicalOrder where
-    toText = \case
-        Forward -> "Forward"
-        Reverse -> "Reverse"
-
-instance ToByteString ChronologicalOrder
-instance ToHeader     ChronologicalOrder
-instance ToQuery      ChronologicalOrder
-
-instance FromJSON ChronologicalOrder where
-    parseJSON = parseJSONText "ChronologicalOrder"
-
-instance ToJSON ChronologicalOrder where
-    toJSON = toJSONText
-
-data ResourceType
-    = AWSCloudTrailTrail     -- ^ AWS::CloudTrail::Trail
-    | AWSEC2CustomerGateway  -- ^ AWS::EC2::CustomerGateway
-    | AWSEC2EIP              -- ^ AWS::EC2::EIP
-    | AWSEC2Instance         -- ^ AWS::EC2::Instance
-    | AWSEC2InternetGateway  -- ^ AWS::EC2::InternetGateway
-    | AWSEC2NetworkAcl       -- ^ AWS::EC2::NetworkAcl
-    | AWSEC2NetworkInterface -- ^ AWS::EC2::NetworkInterface
-    | AWSEC2RouteTable       -- ^ AWS::EC2::RouteTable
-    | AWSEC2SecurityGroup    -- ^ AWS::EC2::SecurityGroup
-    | AWSEC2Subnet           -- ^ AWS::EC2::Subnet
-    | AWSEC2VPC              -- ^ AWS::EC2::VPC
-    | AWSEC2VPNConnection    -- ^ AWS::EC2::VPNConnection
-    | AWSEC2VPNGateway       -- ^ AWS::EC2::VPNGateway
-    | AWSEC2Volume           -- ^ AWS::EC2::Volume
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable ResourceType
-
-instance FromText ResourceType where
-    parser = takeLowerText >>= \case
-        "aws::cloudtrail::trail"     -> pure AWSCloudTrailTrail
-        "aws::ec2::customergateway"  -> pure AWSEC2CustomerGateway
-        "aws::ec2::eip"              -> pure AWSEC2EIP
-        "aws::ec2::instance"         -> pure AWSEC2Instance
-        "aws::ec2::internetgateway"  -> pure AWSEC2InternetGateway
-        "aws::ec2::networkacl"       -> pure AWSEC2NetworkAcl
-        "aws::ec2::networkinterface" -> pure AWSEC2NetworkInterface
-        "aws::ec2::routetable"       -> pure AWSEC2RouteTable
-        "aws::ec2::securitygroup"    -> pure AWSEC2SecurityGroup
-        "aws::ec2::subnet"           -> pure AWSEC2Subnet
-        "aws::ec2::vpc"              -> pure AWSEC2VPC
-        "aws::ec2::vpnconnection"    -> pure AWSEC2VPNConnection
-        "aws::ec2::vpngateway"       -> pure AWSEC2VPNGateway
-        "aws::ec2::volume"           -> pure AWSEC2Volume
-        e                            -> fail $
-            "Failure parsing ResourceType from " ++ show e
-
-instance ToText ResourceType where
-    toText = \case
-        AWSCloudTrailTrail     -> "AWS::CloudTrail::Trail"
-        AWSEC2CustomerGateway  -> "AWS::EC2::CustomerGateway"
-        AWSEC2EIP              -> "AWS::EC2::EIP"
-        AWSEC2Instance         -> "AWS::EC2::Instance"
-        AWSEC2InternetGateway  -> "AWS::EC2::InternetGateway"
-        AWSEC2NetworkAcl       -> "AWS::EC2::NetworkAcl"
-        AWSEC2NetworkInterface -> "AWS::EC2::NetworkInterface"
-        AWSEC2RouteTable       -> "AWS::EC2::RouteTable"
-        AWSEC2SecurityGroup    -> "AWS::EC2::SecurityGroup"
-        AWSEC2Subnet           -> "AWS::EC2::Subnet"
-        AWSEC2VPC              -> "AWS::EC2::VPC"
-        AWSEC2VPNConnection    -> "AWS::EC2::VPNConnection"
-        AWSEC2VPNGateway       -> "AWS::EC2::VPNGateway"
-        AWSEC2Volume           -> "AWS::EC2::Volume"
-
-instance ToByteString ResourceType
-instance ToHeader     ResourceType
-instance ToQuery      ResourceType
-
-instance FromJSON ResourceType where
-    parseJSON = parseJSONText "ResourceType"
-
-instance ToJSON ResourceType where
-    toJSON = toJSONText
-
-data ConfigurationItem = ConfigurationItem
-    { _ciAccountId                    :: Maybe Text
-    , _ciArn                          :: Maybe Text
-    , _ciAvailabilityZone             :: Maybe Text
-    , _ciConfiguration                :: Maybe Text
-    , _ciConfigurationItemCaptureTime :: Maybe POSIX
-    , _ciConfigurationItemMD5Hash     :: Maybe Text
-    , _ciConfigurationItemStatus      :: Maybe ConfigurationItemStatus
-    , _ciConfigurationStateId         :: Maybe Text
-    , _ciRelatedEvents                :: List "relatedEvents" Text
-    , _ciRelationships                :: List "relationships" Relationship
-    , _ciResourceCreationTime         :: Maybe POSIX
-    , _ciResourceId                   :: Maybe Text
-    , _ciResourceType                 :: Maybe ResourceType
-    , _ciTags                         :: Map Text Text
-    , _ciVersion                      :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'ConfigurationItem' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ciAccountId' @::@ 'Maybe' 'Text'
---
--- * 'ciArn' @::@ 'Maybe' 'Text'
---
--- * 'ciAvailabilityZone' @::@ 'Maybe' 'Text'
---
--- * 'ciConfiguration' @::@ 'Maybe' 'Text'
---
--- * 'ciConfigurationItemCaptureTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'ciConfigurationItemMD5Hash' @::@ 'Maybe' 'Text'
---
--- * 'ciConfigurationItemStatus' @::@ 'Maybe' 'ConfigurationItemStatus'
---
--- * 'ciConfigurationStateId' @::@ 'Maybe' 'Text'
---
--- * 'ciRelatedEvents' @::@ ['Text']
---
--- * 'ciRelationships' @::@ ['Relationship']
---
--- * 'ciResourceCreationTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'ciResourceId' @::@ 'Maybe' 'Text'
---
--- * 'ciResourceType' @::@ 'Maybe' 'ResourceType'
---
--- * 'ciTags' @::@ 'HashMap' 'Text' 'Text'
---
--- * 'ciVersion' @::@ 'Maybe' 'Text'
---
-configurationItem :: ConfigurationItem
-configurationItem = ConfigurationItem
-    { _ciVersion                      = Nothing
-    , _ciAccountId                    = Nothing
-    , _ciConfigurationItemCaptureTime = Nothing
-    , _ciConfigurationItemStatus      = Nothing
-    , _ciConfigurationStateId         = Nothing
-    , _ciConfigurationItemMD5Hash     = Nothing
-    , _ciArn                          = Nothing
-    , _ciResourceType                 = Nothing
-    , _ciResourceId                   = Nothing
-    , _ciAvailabilityZone             = Nothing
-    , _ciResourceCreationTime         = Nothing
-    , _ciTags                         = mempty
-    , _ciRelatedEvents                = mempty
-    , _ciRelationships                = mempty
-    , _ciConfiguration                = Nothing
-    }
-
--- | The 12 digit AWS account ID associated with the resource.
-ciAccountId :: Lens' ConfigurationItem (Maybe Text)
-ciAccountId = lens _ciAccountId (\s a -> s { _ciAccountId = a })
-
--- | The Amazon Resource Name (ARN) of the resource.
-ciArn :: Lens' ConfigurationItem (Maybe Text)
-ciArn = lens _ciArn (\s a -> s { _ciArn = a })
-
--- | The Availability Zone associated with the resource.
-ciAvailabilityZone :: Lens' ConfigurationItem (Maybe Text)
-ciAvailabilityZone =
-    lens _ciAvailabilityZone (\s a -> s { _ciAvailabilityZone = a })
-
--- | The description of the resource configuration.
-ciConfiguration :: Lens' ConfigurationItem (Maybe Text)
-ciConfiguration = lens _ciConfiguration (\s a -> s { _ciConfiguration = a })
-
--- | The time when the configuration recording was initiated.
-ciConfigurationItemCaptureTime :: Lens' ConfigurationItem (Maybe UTCTime)
-ciConfigurationItemCaptureTime =
-    lens _ciConfigurationItemCaptureTime
-        (\s a -> s { _ciConfigurationItemCaptureTime = a })
-            . mapping _Time
-
--- | Unique MD5 hash that represents the configuration item's state.
---
--- You can use MD5 hash to compare the states of two or more configuration
--- items that are associated with the same resource.
-ciConfigurationItemMD5Hash :: Lens' ConfigurationItem (Maybe Text)
-ciConfigurationItemMD5Hash =
-    lens _ciConfigurationItemMD5Hash
-        (\s a -> s { _ciConfigurationItemMD5Hash = a })
-
--- | The configuration item status.
-ciConfigurationItemStatus :: Lens' ConfigurationItem (Maybe ConfigurationItemStatus)
-ciConfigurationItemStatus =
-    lens _ciConfigurationItemStatus
-        (\s a -> s { _ciConfigurationItemStatus = a })
-
--- | An identifier that indicates the ordering of the configuration items of a
--- resource.
-ciConfigurationStateId :: Lens' ConfigurationItem (Maybe Text)
-ciConfigurationStateId =
-    lens _ciConfigurationStateId (\s a -> s { _ciConfigurationStateId = a })
-
--- | A list of CloudTrail event IDs.
---
--- A populated field indicates that the current configuration was initiated by
--- the events recorded in the CloudTrail log. For more information about
--- CloudTrail, see <http://docs.aws.amazon.com/awscloudtrail/latest/userguide/what_is_cloud_trail_top_level.html What is AWS CloudTrail?>.
---
--- An empty field indicates that the current configuration was not initiated by
--- any event.
-ciRelatedEvents :: Lens' ConfigurationItem [Text]
-ciRelatedEvents = lens _ciRelatedEvents (\s a -> s { _ciRelatedEvents = a }) . _List
-
--- | A list of related AWS resources.
-ciRelationships :: Lens' ConfigurationItem [Relationship]
-ciRelationships = lens _ciRelationships (\s a -> s { _ciRelationships = a }) . _List
-
--- | The time stamp when the resource was created.
-ciResourceCreationTime :: Lens' ConfigurationItem (Maybe UTCTime)
-ciResourceCreationTime =
-    lens _ciResourceCreationTime (\s a -> s { _ciResourceCreationTime = a })
-        . mapping _Time
-
--- | The ID of the resource (for example., 'sg-xxxxxx').
-ciResourceId :: Lens' ConfigurationItem (Maybe Text)
-ciResourceId = lens _ciResourceId (\s a -> s { _ciResourceId = a })
-
--- | The type of AWS resource.
-ciResourceType :: Lens' ConfigurationItem (Maybe ResourceType)
-ciResourceType = lens _ciResourceType (\s a -> s { _ciResourceType = a })
-
--- | A mapping of key value tags associated with the resource.
-ciTags :: Lens' ConfigurationItem (HashMap Text Text)
-ciTags = lens _ciTags (\s a -> s { _ciTags = a }) . _Map
-
--- | The version number of the resource configuration.
-ciVersion :: Lens' ConfigurationItem (Maybe Text)
-ciVersion = lens _ciVersion (\s a -> s { _ciVersion = a })
-
-instance FromJSON ConfigurationItem where
-    parseJSON = withObject "ConfigurationItem" $ \o -> ConfigurationItem
-        <$> o .:? "accountId"
-        <*> o .:? "arn"
-        <*> o .:? "availabilityZone"
-        <*> o .:? "configuration"
-        <*> o .:? "configurationItemCaptureTime"
-        <*> o .:? "configurationItemMD5Hash"
-        <*> o .:? "configurationItemStatus"
-        <*> o .:? "configurationStateId"
-        <*> o .:? "relatedEvents" .!= mempty
-        <*> o .:? "relationships" .!= mempty
-        <*> o .:? "resourceCreationTime"
-        <*> o .:? "resourceId"
-        <*> o .:? "resourceType"
-        <*> o .:? "tags" .!= mempty
-        <*> o .:? "version"
-
-instance ToJSON ConfigurationItem where
-    toJSON ConfigurationItem{..} = object
-        [ "version"                      .= _ciVersion
-        , "accountId"                    .= _ciAccountId
-        , "configurationItemCaptureTime" .= _ciConfigurationItemCaptureTime
-        , "configurationItemStatus"      .= _ciConfigurationItemStatus
-        , "configurationStateId"         .= _ciConfigurationStateId
-        , "configurationItemMD5Hash"     .= _ciConfigurationItemMD5Hash
-        , "arn"                          .= _ciArn
-        , "resourceType"                 .= _ciResourceType
-        , "resourceId"                   .= _ciResourceId
-        , "availabilityZone"             .= _ciAvailabilityZone
-        , "resourceCreationTime"         .= _ciResourceCreationTime
-        , "tags"                         .= _ciTags
-        , "relatedEvents"                .= _ciRelatedEvents
-        , "relationships"                .= _ciRelationships
-        , "configuration"                .= _ciConfiguration
-        ]
-
-data DeliveryStatus
-    = Failure       -- ^ Failure
-    | NotApplicable -- ^ Not_Applicable
-    | Success       -- ^ Success
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable DeliveryStatus
-
-instance FromText DeliveryStatus where
-    parser = takeLowerText >>= \case
-        "failure"        -> pure Failure
-        "not_applicable" -> pure NotApplicable
-        "success"        -> pure Success
-        e                -> fail $
-            "Failure parsing DeliveryStatus from " ++ show e
-
-instance ToText DeliveryStatus where
-    toText = \case
-        Failure       -> "Failure"
-        NotApplicable -> "Not_Applicable"
-        Success       -> "Success"
-
-instance ToByteString DeliveryStatus
-instance ToHeader     DeliveryStatus
-instance ToQuery      DeliveryStatus
-
-instance FromJSON DeliveryStatus where
-    parseJSON = parseJSONText "DeliveryStatus"
-
-instance ToJSON DeliveryStatus where
-    toJSON = toJSONText
-
-data DeliveryChannelStatus = DeliveryChannelStatus
-    { _dcsConfigHistoryDeliveryInfo  :: Maybe ConfigExportDeliveryInfo
-    , _dcsConfigSnapshotDeliveryInfo :: Maybe ConfigExportDeliveryInfo
-    , _dcsConfigStreamDeliveryInfo   :: Maybe ConfigStreamDeliveryInfo
-    , _dcsName                       :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'DeliveryChannelStatus' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dcsConfigHistoryDeliveryInfo' @::@ 'Maybe' 'ConfigExportDeliveryInfo'
---
--- * 'dcsConfigSnapshotDeliveryInfo' @::@ 'Maybe' 'ConfigExportDeliveryInfo'
---
--- * 'dcsConfigStreamDeliveryInfo' @::@ 'Maybe' 'ConfigStreamDeliveryInfo'
---
--- * 'dcsName' @::@ 'Maybe' 'Text'
---
-deliveryChannelStatus :: DeliveryChannelStatus
-deliveryChannelStatus = DeliveryChannelStatus
-    { _dcsName                       = Nothing
-    , _dcsConfigSnapshotDeliveryInfo = Nothing
-    , _dcsConfigHistoryDeliveryInfo  = Nothing
-    , _dcsConfigStreamDeliveryInfo   = Nothing
-    }
-
--- | A list that contains the status of the delivery of the configuration history
--- to the specified Amazon S3 bucket.
-dcsConfigHistoryDeliveryInfo :: Lens' DeliveryChannelStatus (Maybe ConfigExportDeliveryInfo)
-dcsConfigHistoryDeliveryInfo =
-    lens _dcsConfigHistoryDeliveryInfo
-        (\s a -> s { _dcsConfigHistoryDeliveryInfo = a })
-
--- | A list containing the status of the delivery of the snapshot to the specified
--- Amazon S3 bucket.
-dcsConfigSnapshotDeliveryInfo :: Lens' DeliveryChannelStatus (Maybe ConfigExportDeliveryInfo)
-dcsConfigSnapshotDeliveryInfo =
-    lens _dcsConfigSnapshotDeliveryInfo
-        (\s a -> s { _dcsConfigSnapshotDeliveryInfo = a })
-
--- | A list containing the status of the delivery of the configuration stream
--- notification to the specified Amazon SNS topic.
-dcsConfigStreamDeliveryInfo :: Lens' DeliveryChannelStatus (Maybe ConfigStreamDeliveryInfo)
-dcsConfigStreamDeliveryInfo =
-    lens _dcsConfigStreamDeliveryInfo
-        (\s a -> s { _dcsConfigStreamDeliveryInfo = a })
-
--- | The name of the delivery channel.
-dcsName :: Lens' DeliveryChannelStatus (Maybe Text)
-dcsName = lens _dcsName (\s a -> s { _dcsName = a })
-
-instance FromJSON DeliveryChannelStatus where
-    parseJSON = withObject "DeliveryChannelStatus" $ \o -> DeliveryChannelStatus
-        <$> o .:? "configHistoryDeliveryInfo"
-        <*> o .:? "configSnapshotDeliveryInfo"
-        <*> o .:? "configStreamDeliveryInfo"
-        <*> o .:? "name"
-
-instance ToJSON DeliveryChannelStatus where
-    toJSON DeliveryChannelStatus{..} = object
-        [ "name"                       .= _dcsName
-        , "configSnapshotDeliveryInfo" .= _dcsConfigSnapshotDeliveryInfo
-        , "configHistoryDeliveryInfo"  .= _dcsConfigHistoryDeliveryInfo
-        , "configStreamDeliveryInfo"   .= _dcsConfigStreamDeliveryInfo
-        ]
-
-data ConfigurationRecorderStatus = ConfigurationRecorderStatus
-    { _crsLastErrorCode        :: Maybe Text
-    , _crsLastErrorMessage     :: Maybe Text
-    , _crsLastStartTime        :: Maybe POSIX
-    , _crsLastStatus           :: Maybe RecorderStatus
-    , _crsLastStatusChangeTime :: Maybe POSIX
-    , _crsLastStopTime         :: Maybe POSIX
-    , _crsName                 :: Maybe Text
-    , _crsRecording            :: Maybe Bool
-    } deriving (Eq, Read, Show)
-
--- | 'ConfigurationRecorderStatus' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'crsLastErrorCode' @::@ 'Maybe' 'Text'
---
--- * 'crsLastErrorMessage' @::@ 'Maybe' 'Text'
---
--- * 'crsLastStartTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'crsLastStatus' @::@ 'Maybe' 'RecorderStatus'
---
--- * 'crsLastStatusChangeTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'crsLastStopTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'crsName' @::@ 'Maybe' 'Text'
---
--- * 'crsRecording' @::@ 'Maybe' 'Bool'
---
-configurationRecorderStatus :: ConfigurationRecorderStatus
-configurationRecorderStatus = ConfigurationRecorderStatus
-    { _crsName                 = Nothing
-    , _crsLastStartTime        = Nothing
-    , _crsLastStopTime         = Nothing
-    , _crsRecording            = Nothing
-    , _crsLastStatus           = Nothing
-    , _crsLastErrorCode        = Nothing
-    , _crsLastErrorMessage     = Nothing
-    , _crsLastStatusChangeTime = Nothing
-    }
-
--- | The error code indicating that the recording failed.
-crsLastErrorCode :: Lens' ConfigurationRecorderStatus (Maybe Text)
-crsLastErrorCode = lens _crsLastErrorCode (\s a -> s { _crsLastErrorCode = a })
-
--- | The message indicating that the recording failed due to an error.
-crsLastErrorMessage :: Lens' ConfigurationRecorderStatus (Maybe Text)
-crsLastErrorMessage =
-    lens _crsLastErrorMessage (\s a -> s { _crsLastErrorMessage = a })
-
--- | The time the recorder was last started.
-crsLastStartTime :: Lens' ConfigurationRecorderStatus (Maybe UTCTime)
-crsLastStartTime = lens _crsLastStartTime (\s a -> s { _crsLastStartTime = a }) . mapping _Time
-
--- | The last (previous) status of the recorder.
-crsLastStatus :: Lens' ConfigurationRecorderStatus (Maybe RecorderStatus)
-crsLastStatus = lens _crsLastStatus (\s a -> s { _crsLastStatus = a })
-
--- | The time when the status was last changed.
-crsLastStatusChangeTime :: Lens' ConfigurationRecorderStatus (Maybe UTCTime)
-crsLastStatusChangeTime =
-    lens _crsLastStatusChangeTime (\s a -> s { _crsLastStatusChangeTime = a })
-        . mapping _Time
-
--- | The time the recorder was last stopped.
-crsLastStopTime :: Lens' ConfigurationRecorderStatus (Maybe UTCTime)
-crsLastStopTime = lens _crsLastStopTime (\s a -> s { _crsLastStopTime = a }) . mapping _Time
-
--- | The name of the configuration recorder.
-crsName :: Lens' ConfigurationRecorderStatus (Maybe Text)
-crsName = lens _crsName (\s a -> s { _crsName = a })
-
--- | Specifies whether the recorder is currently recording or not.
-crsRecording :: Lens' ConfigurationRecorderStatus (Maybe Bool)
-crsRecording = lens _crsRecording (\s a -> s { _crsRecording = a })
-
-instance FromJSON ConfigurationRecorderStatus where
-    parseJSON = withObject "ConfigurationRecorderStatus" $ \o -> ConfigurationRecorderStatus
-        <$> o .:? "lastErrorCode"
-        <*> o .:? "lastErrorMessage"
-        <*> o .:? "lastStartTime"
-        <*> o .:? "lastStatus"
-        <*> o .:? "lastStatusChangeTime"
-        <*> o .:? "lastStopTime"
-        <*> o .:? "name"
-        <*> o .:? "recording"
-
-instance ToJSON ConfigurationRecorderStatus where
-    toJSON ConfigurationRecorderStatus{..} = object
-        [ "name"                 .= _crsName
-        , "lastStartTime"        .= _crsLastStartTime
-        , "lastStopTime"         .= _crsLastStopTime
-        , "recording"            .= _crsRecording
-        , "lastStatus"           .= _crsLastStatus
-        , "lastErrorCode"        .= _crsLastErrorCode
-        , "lastErrorMessage"     .= _crsLastErrorMessage
-        , "lastStatusChangeTime" .= _crsLastStatusChangeTime
-        ]
-
-data ConfigurationItemStatus
-    = Deleted    -- ^ Deleted
-    | Discovered -- ^ Discovered
-    | Failed     -- ^ Failed
-    | Ok         -- ^ Ok
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable ConfigurationItemStatus
-
-instance FromText ConfigurationItemStatus where
-    parser = takeLowerText >>= \case
-        "deleted"    -> pure Deleted
-        "discovered" -> pure Discovered
-        "failed"     -> pure Failed
-        "ok"         -> pure Ok
-        e            -> fail $
-            "Failure parsing ConfigurationItemStatus from " ++ show e
-
-instance ToText ConfigurationItemStatus where
-    toText = \case
-        Deleted    -> "Deleted"
-        Discovered -> "Discovered"
-        Failed     -> "Failed"
-        Ok         -> "Ok"
-
-instance ToByteString ConfigurationItemStatus
-instance ToHeader     ConfigurationItemStatus
-instance ToQuery      ConfigurationItemStatus
-
-instance FromJSON ConfigurationItemStatus where
-    parseJSON = parseJSONText "ConfigurationItemStatus"
-
-instance ToJSON ConfigurationItemStatus where
-    toJSON = toJSONText
-
-data ConfigurationRecorder = ConfigurationRecorder
-    { _crName    :: Maybe Text
-    , _crRoleARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ConfigurationRecorder' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'crName' @::@ 'Maybe' 'Text'
---
--- * 'crRoleARN' @::@ 'Maybe' 'Text'
---
-configurationRecorder :: ConfigurationRecorder
-configurationRecorder = ConfigurationRecorder
-    { _crName    = Nothing
-    , _crRoleARN = Nothing
-    }
-
--- | The name of the recorder. By default, AWS Config automatically assigns the
--- name "default" when creating the configuration recorder. You cannot change
--- the assigned name.
-crName :: Lens' ConfigurationRecorder (Maybe Text)
-crName = lens _crName (\s a -> s { _crName = a })
-
--- | Amazon Resource Name (ARN) of the IAM role used to describe the AWS resources
--- associated with the account.
-crRoleARN :: Lens' ConfigurationRecorder (Maybe Text)
-crRoleARN = lens _crRoleARN (\s a -> s { _crRoleARN = a })
-
-instance FromJSON ConfigurationRecorder where
-    parseJSON = withObject "ConfigurationRecorder" $ \o -> ConfigurationRecorder
-        <$> o .:? "name"
-        <*> o .:? "roleARN"
-
-instance ToJSON ConfigurationRecorder where
-    toJSON ConfigurationRecorder{..} = object
-        [ "name"    .= _crName
-        , "roleARN" .= _crRoleARN
-        ]
-
-data RecorderStatus
-    = RSFailure -- ^ Failure
-    | RSPending -- ^ Pending
-    | RSSuccess -- ^ Success
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable RecorderStatus
-
-instance FromText RecorderStatus where
-    parser = takeLowerText >>= \case
-        "failure" -> pure RSFailure
-        "pending" -> pure RSPending
-        "success" -> pure RSSuccess
-        e         -> fail $
-            "Failure parsing RecorderStatus from " ++ show e
-
-instance ToText RecorderStatus where
-    toText = \case
-        RSFailure -> "Failure"
-        RSPending -> "Pending"
-        RSSuccess -> "Success"
-
-instance ToByteString RecorderStatus
-instance ToHeader     RecorderStatus
-instance ToQuery      RecorderStatus
-
-instance FromJSON RecorderStatus where
-    parseJSON = parseJSONText "RecorderStatus"
-
-instance ToJSON RecorderStatus where
-    toJSON = toJSONText
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.Config.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.Config.Types
+    (
+    -- * Service
+      Config
+
+    -- * Errors
+    , _ValidationException
+    , _InvalidTimeRangeException
+    , _InvalidRecordingGroupException
+    , _InvalidSNSTopicARNException
+    , _InvalidRoleException
+    , _LastDeliveryChannelDeleteFailedException
+    , _InvalidLimitException
+    , _InvalidDeliveryChannelNameException
+    , _NoSuchDeliveryChannelException
+    , _ResourceNotDiscoveredException
+    , _InvalidNextTokenException
+    , _NoSuchBucketException
+    , _NoAvailableConfigurationRecorderException
+    , _NoAvailableDeliveryChannelException
+    , _NoRunningConfigurationRecorderException
+    , _MaxNumberOfConfigurationRecordersExceededException
+    , _InvalidConfigurationRecorderNameException
+    , _InsufficientDeliveryPolicyException
+    , _MaxNumberOfDeliveryChannelsExceededException
+    , _NoSuchConfigurationRecorderException
+    , _InvalidS3KeyPrefixException
+
+    -- * ChronologicalOrder
+    , ChronologicalOrder (..)
+
+    -- * ConfigurationItemStatus
+    , ConfigurationItemStatus (..)
+
+    -- * DeliveryStatus
+    , DeliveryStatus (..)
+
+    -- * RecorderStatus
+    , RecorderStatus (..)
+
+    -- * ResourceType
+    , ResourceType (..)
+
+    -- * ConfigExportDeliveryInfo
+    , ConfigExportDeliveryInfo
+    , configExportDeliveryInfo
+    , cediLastErrorCode
+    , cediLastAttemptTime
+    , cediLastSuccessfulTime
+    , cediLastStatus
+    , cediLastErrorMessage
+
+    -- * ConfigStreamDeliveryInfo
+    , ConfigStreamDeliveryInfo
+    , configStreamDeliveryInfo
+    , csdiLastErrorCode
+    , csdiLastStatusChangeTime
+    , csdiLastStatus
+    , csdiLastErrorMessage
+
+    -- * ConfigurationItem
+    , ConfigurationItem
+    , configurationItem
+    , ciResourceId
+    , ciConfigurationStateId
+    , ciResourceType
+    , ciArn
+    , ciResourceCreationTime
+    , ciConfigurationItemStatus
+    , ciAccountId
+    , ciConfigurationItemCaptureTime
+    , ciAvailabilityZone
+    , ciRelationships
+    , ciVersion
+    , ciRelatedEvents
+    , ciConfiguration
+    , ciConfigurationItemMD5Hash
+    , ciTags
+
+    -- * ConfigurationRecorder
+    , ConfigurationRecorder
+    , configurationRecorder
+    , crName
+    , crRecordingGroup
+    , crRoleARN
+
+    -- * ConfigurationRecorderStatus
+    , ConfigurationRecorderStatus
+    , configurationRecorderStatus
+    , crsLastErrorCode
+    , crsLastStopTime
+    , crsLastStatusChangeTime
+    , crsRecording
+    , crsLastStatus
+    , crsLastErrorMessage
+    , crsName
+    , crsLastStartTime
+
+    -- * DeliveryChannel
+    , DeliveryChannel
+    , deliveryChannel
+    , dcS3KeyPrefix
+    , dcSnsTopicARN
+    , dcName
+    , dcS3BucketName
+
+    -- * DeliveryChannelStatus
+    , DeliveryChannelStatus
+    , deliveryChannelStatus
+    , dcsConfigStreamDeliveryInfo
+    , dcsConfigSnapshotDeliveryInfo
+    , dcsConfigHistoryDeliveryInfo
+    , dcsName
+
+    -- * RecordingGroup
+    , RecordingGroup
+    , recordingGroup
+    , rgAllSupported
+    , rgResourceTypes
+
+    -- * Relationship
+    , Relationship
+    , relationship
+    , rResourceId
+    , rResourceType
+    , rRelationshipName
+    ) where
+
+import           Network.AWS.Config.Types.Product
+import           Network.AWS.Config.Types.Sum
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
+
+-- | Version @2014-11-12@ of the Amazon Config SDK.
+data Config
+
+instance AWSService Config where
+    type Sg Config = V4
+    service = const svc
+      where
+        svc =
+            Service
+            { _svcAbbrev = "Config"
+            , _svcPrefix = "config"
+            , _svcVersion = "2014-11-12"
+            , _svcEndpoint = defaultEndpoint svc
+            , _svcTimeout = Just 70
+            , _svcStatus = statusSuccess
+            , _svcError = parseJSONError
+            , _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
+
+-- | The requested action is not valid.
+_ValidationException :: AsError a => Getting (First ServiceError) a ServiceError
+_ValidationException = _ServiceError . hasCode "ValidationException"
+
+-- | The specified time range is not valid. The earlier time is not
+-- chronologically before the later time.
+_InvalidTimeRangeException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidTimeRangeException =
+    _ServiceError . hasCode "InvalidTimeRangeException"
+
+-- | AWS Config throws an exception if the recording group does not contain a
+-- valid list of resource types. Invalid values could also be incorrectly
+-- formatted.
+_InvalidRecordingGroupException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidRecordingGroupException =
+    _ServiceError . hasCode "InvalidRecordingGroupException"
+
+-- | The specified Amazon SNS topic does not exist.
+_InvalidSNSTopicARNException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidSNSTopicARNException =
+    _ServiceError . hasCode "InvalidSNSTopicARNException"
+
+-- | You have provided a null or empty role ARN.
+_InvalidRoleException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidRoleException = _ServiceError . hasCode "InvalidRoleException"
+
+-- | You cannot delete the delivery channel you specified because the
+-- configuration recorder is running.
+_LastDeliveryChannelDeleteFailedException :: AsError a => Getting (First ServiceError) a ServiceError
+_LastDeliveryChannelDeleteFailedException =
+    _ServiceError . hasCode "LastDeliveryChannelDeleteFailedException"
+
+-- | You have reached the limit on the pagination.
+_InvalidLimitException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidLimitException = _ServiceError . hasCode "InvalidLimitException"
+
+-- | The specified delivery channel name is not valid.
+_InvalidDeliveryChannelNameException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidDeliveryChannelNameException =
+    _ServiceError . hasCode "InvalidDeliveryChannelNameException"
+
+-- | You have specified a delivery channel that does not exist.
+_NoSuchDeliveryChannelException :: AsError a => Getting (First ServiceError) a ServiceError
+_NoSuchDeliveryChannelException =
+    _ServiceError . hasCode "NoSuchDeliveryChannelException"
+
+-- | You have specified a resource that is either unknown or has not been
+-- discovered.
+_ResourceNotDiscoveredException :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceNotDiscoveredException =
+    _ServiceError . hasCode "ResourceNotDiscoveredException"
+
+-- | The specified nextToken for pagination is not valid.
+_InvalidNextTokenException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidNextTokenException =
+    _ServiceError . hasCode "InvalidNextTokenException"
+
+-- | The specified Amazon S3 bucket does not exist.
+_NoSuchBucketException :: AsError a => Getting (First ServiceError) a ServiceError
+_NoSuchBucketException = _ServiceError . hasCode "NoSuchBucketException"
+
+-- | There are no configuration recorders available to provide the role
+-- needed to describe your resources.
+_NoAvailableConfigurationRecorderException :: AsError a => Getting (First ServiceError) a ServiceError
+_NoAvailableConfigurationRecorderException =
+    _ServiceError . hasCode "NoAvailableConfigurationRecorderException"
+
+-- | There is no delivery channel available to record configurations.
+_NoAvailableDeliveryChannelException :: AsError a => Getting (First ServiceError) a ServiceError
+_NoAvailableDeliveryChannelException =
+    _ServiceError . hasCode "NoAvailableDeliveryChannelException"
+
+-- | There is no configuration recorder running.
+_NoRunningConfigurationRecorderException :: AsError a => Getting (First ServiceError) a ServiceError
+_NoRunningConfigurationRecorderException =
+    _ServiceError . hasCode "NoRunningConfigurationRecorderException"
+
+-- | You have reached the limit on the number of recorders you can create.
+_MaxNumberOfConfigurationRecordersExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_MaxNumberOfConfigurationRecordersExceededException =
+    _ServiceError .
+    hasCode "MaxNumberOfConfigurationRecordersExceededException"
+
+-- | You have provided a configuration recorder name that is not valid.
+_InvalidConfigurationRecorderNameException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidConfigurationRecorderNameException =
+    _ServiceError . hasCode "InvalidConfigurationRecorderNameException"
+
+-- | Your Amazon S3 bucket policy does not permit AWS Config to write to it.
+_InsufficientDeliveryPolicyException :: AsError a => Getting (First ServiceError) a ServiceError
+_InsufficientDeliveryPolicyException =
+    _ServiceError . hasCode "InsufficientDeliveryPolicyException"
+
+-- | You have reached the limit on the number of delivery channels you can
+-- create.
+_MaxNumberOfDeliveryChannelsExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_MaxNumberOfDeliveryChannelsExceededException =
+    _ServiceError . hasCode "MaxNumberOfDeliveryChannelsExceededException"
+
+-- | You have specified a configuration recorder that does not exist.
+_NoSuchConfigurationRecorderException :: AsError a => Getting (First ServiceError) a ServiceError
+_NoSuchConfigurationRecorderException =
+    _ServiceError . hasCode "NoSuchConfigurationRecorderException"
+
+-- | The specified Amazon S3 key prefix is not valid.
+_InvalidS3KeyPrefixException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidS3KeyPrefixException =
+    _ServiceError . hasCode "InvalidS3KeyPrefixException"
diff --git a/gen/Network/AWS/Config/Types/Product.hs b/gen/Network/AWS/Config/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Config/Types/Product.hs
@@ -0,0 +1,709 @@
+{-# 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.Config.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.Config.Types.Product where
+
+import           Network.AWS.Config.Types.Sum
+import           Network.AWS.Prelude
+
+-- | A list that contains the status of the delivery of either the snapshot
+-- or the configuration history to the specified Amazon S3 bucket.
+--
+-- /See:/ 'configExportDeliveryInfo' smart constructor.
+data ConfigExportDeliveryInfo = ConfigExportDeliveryInfo'
+    { _cediLastErrorCode      :: !(Maybe Text)
+    , _cediLastAttemptTime    :: !(Maybe POSIX)
+    , _cediLastSuccessfulTime :: !(Maybe POSIX)
+    , _cediLastStatus         :: !(Maybe DeliveryStatus)
+    , _cediLastErrorMessage   :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConfigExportDeliveryInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cediLastErrorCode'
+--
+-- * 'cediLastAttemptTime'
+--
+-- * 'cediLastSuccessfulTime'
+--
+-- * 'cediLastStatus'
+--
+-- * 'cediLastErrorMessage'
+configExportDeliveryInfo
+    :: ConfigExportDeliveryInfo
+configExportDeliveryInfo =
+    ConfigExportDeliveryInfo'
+    { _cediLastErrorCode = Nothing
+    , _cediLastAttemptTime = Nothing
+    , _cediLastSuccessfulTime = Nothing
+    , _cediLastStatus = Nothing
+    , _cediLastErrorMessage = Nothing
+    }
+
+-- | The error code from the last attempted delivery.
+cediLastErrorCode :: Lens' ConfigExportDeliveryInfo (Maybe Text)
+cediLastErrorCode = lens _cediLastErrorCode (\ s a -> s{_cediLastErrorCode = a});
+
+-- | The time of the last attempted delivery.
+cediLastAttemptTime :: Lens' ConfigExportDeliveryInfo (Maybe UTCTime)
+cediLastAttemptTime = lens _cediLastAttemptTime (\ s a -> s{_cediLastAttemptTime = a}) . mapping _Time;
+
+-- | The time of the last successful delivery.
+cediLastSuccessfulTime :: Lens' ConfigExportDeliveryInfo (Maybe UTCTime)
+cediLastSuccessfulTime = lens _cediLastSuccessfulTime (\ s a -> s{_cediLastSuccessfulTime = a}) . mapping _Time;
+
+-- | Status of the last attempted delivery.
+cediLastStatus :: Lens' ConfigExportDeliveryInfo (Maybe DeliveryStatus)
+cediLastStatus = lens _cediLastStatus (\ s a -> s{_cediLastStatus = a});
+
+-- | The error message from the last attempted delivery.
+cediLastErrorMessage :: Lens' ConfigExportDeliveryInfo (Maybe Text)
+cediLastErrorMessage = lens _cediLastErrorMessage (\ s a -> s{_cediLastErrorMessage = a});
+
+instance FromJSON ConfigExportDeliveryInfo where
+        parseJSON
+          = withObject "ConfigExportDeliveryInfo"
+              (\ x ->
+                 ConfigExportDeliveryInfo' <$>
+                   (x .:? "lastErrorCode") <*> (x .:? "lastAttemptTime")
+                     <*> (x .:? "lastSuccessfulTime")
+                     <*> (x .:? "lastStatus")
+                     <*> (x .:? "lastErrorMessage"))
+
+-- | A list that contains the status of the delivery of the configuration
+-- stream notification to the Amazon SNS topic.
+--
+-- /See:/ 'configStreamDeliveryInfo' smart constructor.
+data ConfigStreamDeliveryInfo = ConfigStreamDeliveryInfo'
+    { _csdiLastErrorCode        :: !(Maybe Text)
+    , _csdiLastStatusChangeTime :: !(Maybe POSIX)
+    , _csdiLastStatus           :: !(Maybe DeliveryStatus)
+    , _csdiLastErrorMessage     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConfigStreamDeliveryInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csdiLastErrorCode'
+--
+-- * 'csdiLastStatusChangeTime'
+--
+-- * 'csdiLastStatus'
+--
+-- * 'csdiLastErrorMessage'
+configStreamDeliveryInfo
+    :: ConfigStreamDeliveryInfo
+configStreamDeliveryInfo =
+    ConfigStreamDeliveryInfo'
+    { _csdiLastErrorCode = Nothing
+    , _csdiLastStatusChangeTime = Nothing
+    , _csdiLastStatus = Nothing
+    , _csdiLastErrorMessage = Nothing
+    }
+
+-- | The error code from the last attempted delivery.
+csdiLastErrorCode :: Lens' ConfigStreamDeliveryInfo (Maybe Text)
+csdiLastErrorCode = lens _csdiLastErrorCode (\ s a -> s{_csdiLastErrorCode = a});
+
+-- | The time from the last status change.
+csdiLastStatusChangeTime :: Lens' ConfigStreamDeliveryInfo (Maybe UTCTime)
+csdiLastStatusChangeTime = lens _csdiLastStatusChangeTime (\ s a -> s{_csdiLastStatusChangeTime = a}) . mapping _Time;
+
+-- | Status of the last attempted delivery.
+--
+-- __Note__ Providing an SNS topic on a
+-- <http://docs.aws.amazon.com/config/latest/APIReference/API_DeliveryChannel.html DeliveryChannel>
+-- for AWS Config is optional. If the SNS delivery is turned off, the last
+-- status will be __Not_Applicable__.
+csdiLastStatus :: Lens' ConfigStreamDeliveryInfo (Maybe DeliveryStatus)
+csdiLastStatus = lens _csdiLastStatus (\ s a -> s{_csdiLastStatus = a});
+
+-- | The error message from the last attempted delivery.
+csdiLastErrorMessage :: Lens' ConfigStreamDeliveryInfo (Maybe Text)
+csdiLastErrorMessage = lens _csdiLastErrorMessage (\ s a -> s{_csdiLastErrorMessage = a});
+
+instance FromJSON ConfigStreamDeliveryInfo where
+        parseJSON
+          = withObject "ConfigStreamDeliveryInfo"
+              (\ x ->
+                 ConfigStreamDeliveryInfo' <$>
+                   (x .:? "lastErrorCode") <*>
+                     (x .:? "lastStatusChangeTime")
+                     <*> (x .:? "lastStatus")
+                     <*> (x .:? "lastErrorMessage"))
+
+-- | A list that contains detailed configurations of a specified resource.
+--
+-- Currently, the list does not contain information about non-AWS
+-- components (for example, applications on your Amazon EC2 instances).
+--
+-- /See:/ 'configurationItem' smart constructor.
+data ConfigurationItem = ConfigurationItem'
+    { _ciResourceId                   :: !(Maybe Text)
+    , _ciConfigurationStateId         :: !(Maybe Text)
+    , _ciResourceType                 :: !(Maybe ResourceType)
+    , _ciArn                          :: !(Maybe Text)
+    , _ciResourceCreationTime         :: !(Maybe POSIX)
+    , _ciConfigurationItemStatus      :: !(Maybe ConfigurationItemStatus)
+    , _ciAccountId                    :: !(Maybe Text)
+    , _ciConfigurationItemCaptureTime :: !(Maybe POSIX)
+    , _ciAvailabilityZone             :: !(Maybe Text)
+    , _ciRelationships                :: !(Maybe [Relationship])
+    , _ciVersion                      :: !(Maybe Text)
+    , _ciRelatedEvents                :: !(Maybe [Text])
+    , _ciConfiguration                :: !(Maybe Text)
+    , _ciConfigurationItemMD5Hash     :: !(Maybe Text)
+    , _ciTags                         :: !(Maybe (Map Text Text))
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConfigurationItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ciResourceId'
+--
+-- * 'ciConfigurationStateId'
+--
+-- * 'ciResourceType'
+--
+-- * 'ciArn'
+--
+-- * 'ciResourceCreationTime'
+--
+-- * 'ciConfigurationItemStatus'
+--
+-- * 'ciAccountId'
+--
+-- * 'ciConfigurationItemCaptureTime'
+--
+-- * 'ciAvailabilityZone'
+--
+-- * 'ciRelationships'
+--
+-- * 'ciVersion'
+--
+-- * 'ciRelatedEvents'
+--
+-- * 'ciConfiguration'
+--
+-- * 'ciConfigurationItemMD5Hash'
+--
+-- * 'ciTags'
+configurationItem
+    :: ConfigurationItem
+configurationItem =
+    ConfigurationItem'
+    { _ciResourceId = Nothing
+    , _ciConfigurationStateId = Nothing
+    , _ciResourceType = Nothing
+    , _ciArn = Nothing
+    , _ciResourceCreationTime = Nothing
+    , _ciConfigurationItemStatus = Nothing
+    , _ciAccountId = Nothing
+    , _ciConfigurationItemCaptureTime = Nothing
+    , _ciAvailabilityZone = Nothing
+    , _ciRelationships = Nothing
+    , _ciVersion = Nothing
+    , _ciRelatedEvents = Nothing
+    , _ciConfiguration = Nothing
+    , _ciConfigurationItemMD5Hash = Nothing
+    , _ciTags = Nothing
+    }
+
+-- | The ID of the resource (for example., 'sg-xxxxxx').
+ciResourceId :: Lens' ConfigurationItem (Maybe Text)
+ciResourceId = lens _ciResourceId (\ s a -> s{_ciResourceId = a});
+
+-- | An identifier that indicates the ordering of the configuration items of
+-- a resource.
+ciConfigurationStateId :: Lens' ConfigurationItem (Maybe Text)
+ciConfigurationStateId = lens _ciConfigurationStateId (\ s a -> s{_ciConfigurationStateId = a});
+
+-- | The type of AWS resource.
+ciResourceType :: Lens' ConfigurationItem (Maybe ResourceType)
+ciResourceType = lens _ciResourceType (\ s a -> s{_ciResourceType = a});
+
+-- | The Amazon Resource Name (ARN) of the resource.
+ciArn :: Lens' ConfigurationItem (Maybe Text)
+ciArn = lens _ciArn (\ s a -> s{_ciArn = a});
+
+-- | The time stamp when the resource was created.
+ciResourceCreationTime :: Lens' ConfigurationItem (Maybe UTCTime)
+ciResourceCreationTime = lens _ciResourceCreationTime (\ s a -> s{_ciResourceCreationTime = a}) . mapping _Time;
+
+-- | The configuration item status.
+ciConfigurationItemStatus :: Lens' ConfigurationItem (Maybe ConfigurationItemStatus)
+ciConfigurationItemStatus = lens _ciConfigurationItemStatus (\ s a -> s{_ciConfigurationItemStatus = a});
+
+-- | The 12 digit AWS account ID associated with the resource.
+ciAccountId :: Lens' ConfigurationItem (Maybe Text)
+ciAccountId = lens _ciAccountId (\ s a -> s{_ciAccountId = a});
+
+-- | The time when the configuration recording was initiated.
+ciConfigurationItemCaptureTime :: Lens' ConfigurationItem (Maybe UTCTime)
+ciConfigurationItemCaptureTime = lens _ciConfigurationItemCaptureTime (\ s a -> s{_ciConfigurationItemCaptureTime = a}) . mapping _Time;
+
+-- | The Availability Zone associated with the resource.
+ciAvailabilityZone :: Lens' ConfigurationItem (Maybe Text)
+ciAvailabilityZone = lens _ciAvailabilityZone (\ s a -> s{_ciAvailabilityZone = a});
+
+-- | A list of related AWS resources.
+ciRelationships :: Lens' ConfigurationItem [Relationship]
+ciRelationships = lens _ciRelationships (\ s a -> s{_ciRelationships = a}) . _Default . _Coerce;
+
+-- | The version number of the resource configuration.
+ciVersion :: Lens' ConfigurationItem (Maybe Text)
+ciVersion = lens _ciVersion (\ s a -> s{_ciVersion = a});
+
+-- | A list of CloudTrail event IDs.
+--
+-- A populated field indicates that the current configuration was initiated
+-- by the events recorded in the CloudTrail log. For more information about
+-- CloudTrail, see
+-- <http://docs.aws.amazon.com/awscloudtrail/latest/userguide/what_is_cloud_trail_top_level.html What is AWS CloudTrail?>.
+--
+-- An empty field indicates that the current configuration was not
+-- initiated by any event.
+ciRelatedEvents :: Lens' ConfigurationItem [Text]
+ciRelatedEvents = lens _ciRelatedEvents (\ s a -> s{_ciRelatedEvents = a}) . _Default . _Coerce;
+
+-- | The description of the resource configuration.
+ciConfiguration :: Lens' ConfigurationItem (Maybe Text)
+ciConfiguration = lens _ciConfiguration (\ s a -> s{_ciConfiguration = a});
+
+-- | Unique MD5 hash that represents the configuration item\'s state.
+--
+-- You can use MD5 hash to compare the states of two or more configuration
+-- items that are associated with the same resource.
+ciConfigurationItemMD5Hash :: Lens' ConfigurationItem (Maybe Text)
+ciConfigurationItemMD5Hash = lens _ciConfigurationItemMD5Hash (\ s a -> s{_ciConfigurationItemMD5Hash = a});
+
+-- | A mapping of key value tags associated with the resource.
+ciTags :: Lens' ConfigurationItem (HashMap Text Text)
+ciTags = lens _ciTags (\ s a -> s{_ciTags = a}) . _Default . _Map;
+
+instance FromJSON ConfigurationItem where
+        parseJSON
+          = withObject "ConfigurationItem"
+              (\ x ->
+                 ConfigurationItem' <$>
+                   (x .:? "resourceId") <*>
+                     (x .:? "configurationStateId")
+                     <*> (x .:? "resourceType")
+                     <*> (x .:? "arn")
+                     <*> (x .:? "resourceCreationTime")
+                     <*> (x .:? "configurationItemStatus")
+                     <*> (x .:? "accountId")
+                     <*> (x .:? "configurationItemCaptureTime")
+                     <*> (x .:? "availabilityZone")
+                     <*> (x .:? "relationships" .!= mempty)
+                     <*> (x .:? "version")
+                     <*> (x .:? "relatedEvents" .!= mempty)
+                     <*> (x .:? "configuration")
+                     <*> (x .:? "configurationItemMD5Hash")
+                     <*> (x .:? "tags" .!= mempty))
+
+-- | An object that represents the recording of configuration changes of an
+-- AWS resource.
+--
+-- /See:/ 'configurationRecorder' smart constructor.
+data ConfigurationRecorder = ConfigurationRecorder'
+    { _crName           :: !(Maybe Text)
+    , _crRecordingGroup :: !(Maybe RecordingGroup)
+    , _crRoleARN        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConfigurationRecorder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crName'
+--
+-- * 'crRecordingGroup'
+--
+-- * 'crRoleARN'
+configurationRecorder
+    :: ConfigurationRecorder
+configurationRecorder =
+    ConfigurationRecorder'
+    { _crName = Nothing
+    , _crRecordingGroup = Nothing
+    , _crRoleARN = Nothing
+    }
+
+-- | The name of the recorder. By default, AWS Config automatically assigns
+-- the name \"default\" when creating the configuration recorder. You
+-- cannot change the assigned name.
+crName :: Lens' ConfigurationRecorder (Maybe Text)
+crName = lens _crName (\ s a -> s{_crName = a});
+
+-- | The recording group specifies either to record configurations for all
+-- supported resources or to provide a list of resource types to record.
+-- The list of resource types must be a subset of supported resource types.
+crRecordingGroup :: Lens' ConfigurationRecorder (Maybe RecordingGroup)
+crRecordingGroup = lens _crRecordingGroup (\ s a -> s{_crRecordingGroup = a});
+
+-- | Amazon Resource Name (ARN) of the IAM role used to describe the AWS
+-- resources associated with the account.
+crRoleARN :: Lens' ConfigurationRecorder (Maybe Text)
+crRoleARN = lens _crRoleARN (\ s a -> s{_crRoleARN = a});
+
+instance FromJSON ConfigurationRecorder where
+        parseJSON
+          = withObject "ConfigurationRecorder"
+              (\ x ->
+                 ConfigurationRecorder' <$>
+                   (x .:? "name") <*> (x .:? "recordingGroup") <*>
+                     (x .:? "roleARN"))
+
+instance ToJSON ConfigurationRecorder where
+        toJSON ConfigurationRecorder'{..}
+          = object
+              ["name" .= _crName,
+               "recordingGroup" .= _crRecordingGroup,
+               "roleARN" .= _crRoleARN]
+
+-- | The current status of the configuration recorder.
+--
+-- /See:/ 'configurationRecorderStatus' smart constructor.
+data ConfigurationRecorderStatus = ConfigurationRecorderStatus'
+    { _crsLastErrorCode        :: !(Maybe Text)
+    , _crsLastStopTime         :: !(Maybe POSIX)
+    , _crsLastStatusChangeTime :: !(Maybe POSIX)
+    , _crsRecording            :: !(Maybe Bool)
+    , _crsLastStatus           :: !(Maybe RecorderStatus)
+    , _crsLastErrorMessage     :: !(Maybe Text)
+    , _crsName                 :: !(Maybe Text)
+    , _crsLastStartTime        :: !(Maybe POSIX)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConfigurationRecorderStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crsLastErrorCode'
+--
+-- * 'crsLastStopTime'
+--
+-- * 'crsLastStatusChangeTime'
+--
+-- * 'crsRecording'
+--
+-- * 'crsLastStatus'
+--
+-- * 'crsLastErrorMessage'
+--
+-- * 'crsName'
+--
+-- * 'crsLastStartTime'
+configurationRecorderStatus
+    :: ConfigurationRecorderStatus
+configurationRecorderStatus =
+    ConfigurationRecorderStatus'
+    { _crsLastErrorCode = Nothing
+    , _crsLastStopTime = Nothing
+    , _crsLastStatusChangeTime = Nothing
+    , _crsRecording = Nothing
+    , _crsLastStatus = Nothing
+    , _crsLastErrorMessage = Nothing
+    , _crsName = Nothing
+    , _crsLastStartTime = Nothing
+    }
+
+-- | The error code indicating that the recording failed.
+crsLastErrorCode :: Lens' ConfigurationRecorderStatus (Maybe Text)
+crsLastErrorCode = lens _crsLastErrorCode (\ s a -> s{_crsLastErrorCode = a});
+
+-- | The time the recorder was last stopped.
+crsLastStopTime :: Lens' ConfigurationRecorderStatus (Maybe UTCTime)
+crsLastStopTime = lens _crsLastStopTime (\ s a -> s{_crsLastStopTime = a}) . mapping _Time;
+
+-- | The time when the status was last changed.
+crsLastStatusChangeTime :: Lens' ConfigurationRecorderStatus (Maybe UTCTime)
+crsLastStatusChangeTime = lens _crsLastStatusChangeTime (\ s a -> s{_crsLastStatusChangeTime = a}) . mapping _Time;
+
+-- | Specifies whether the recorder is currently recording or not.
+crsRecording :: Lens' ConfigurationRecorderStatus (Maybe Bool)
+crsRecording = lens _crsRecording (\ s a -> s{_crsRecording = a});
+
+-- | The last (previous) status of the recorder.
+crsLastStatus :: Lens' ConfigurationRecorderStatus (Maybe RecorderStatus)
+crsLastStatus = lens _crsLastStatus (\ s a -> s{_crsLastStatus = a});
+
+-- | The message indicating that the recording failed due to an error.
+crsLastErrorMessage :: Lens' ConfigurationRecorderStatus (Maybe Text)
+crsLastErrorMessage = lens _crsLastErrorMessage (\ s a -> s{_crsLastErrorMessage = a});
+
+-- | The name of the configuration recorder.
+crsName :: Lens' ConfigurationRecorderStatus (Maybe Text)
+crsName = lens _crsName (\ s a -> s{_crsName = a});
+
+-- | The time the recorder was last started.
+crsLastStartTime :: Lens' ConfigurationRecorderStatus (Maybe UTCTime)
+crsLastStartTime = lens _crsLastStartTime (\ s a -> s{_crsLastStartTime = a}) . mapping _Time;
+
+instance FromJSON ConfigurationRecorderStatus where
+        parseJSON
+          = withObject "ConfigurationRecorderStatus"
+              (\ x ->
+                 ConfigurationRecorderStatus' <$>
+                   (x .:? "lastErrorCode") <*> (x .:? "lastStopTime")
+                     <*> (x .:? "lastStatusChangeTime")
+                     <*> (x .:? "recording")
+                     <*> (x .:? "lastStatus")
+                     <*> (x .:? "lastErrorMessage")
+                     <*> (x .:? "name")
+                     <*> (x .:? "lastStartTime"))
+
+-- | A logical container used for storing the configuration changes of an AWS
+-- resource.
+--
+-- /See:/ 'deliveryChannel' smart constructor.
+data DeliveryChannel = DeliveryChannel'
+    { _dcS3KeyPrefix  :: !(Maybe Text)
+    , _dcSnsTopicARN  :: !(Maybe Text)
+    , _dcName         :: !(Maybe Text)
+    , _dcS3BucketName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeliveryChannel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcS3KeyPrefix'
+--
+-- * 'dcSnsTopicARN'
+--
+-- * 'dcName'
+--
+-- * 'dcS3BucketName'
+deliveryChannel
+    :: DeliveryChannel
+deliveryChannel =
+    DeliveryChannel'
+    { _dcS3KeyPrefix = Nothing
+    , _dcSnsTopicARN = Nothing
+    , _dcName = Nothing
+    , _dcS3BucketName = Nothing
+    }
+
+-- | The prefix for the specified Amazon S3 bucket.
+dcS3KeyPrefix :: Lens' DeliveryChannel (Maybe Text)
+dcS3KeyPrefix = lens _dcS3KeyPrefix (\ s a -> s{_dcS3KeyPrefix = a});
+
+-- | The Amazon Resource Name (ARN) of the IAM role used for accessing the
+-- Amazon S3 bucket and the Amazon SNS topic.
+dcSnsTopicARN :: Lens' DeliveryChannel (Maybe Text)
+dcSnsTopicARN = lens _dcSnsTopicARN (\ s a -> s{_dcSnsTopicARN = a});
+
+-- | The name of the delivery channel. By default, AWS Config automatically
+-- assigns the name \"default\" when creating the delivery channel. You
+-- cannot change the assigned name.
+dcName :: Lens' DeliveryChannel (Maybe Text)
+dcName = lens _dcName (\ s a -> s{_dcName = a});
+
+-- | The name of the Amazon S3 bucket used to store configuration history for
+-- the delivery channel.
+dcS3BucketName :: Lens' DeliveryChannel (Maybe Text)
+dcS3BucketName = lens _dcS3BucketName (\ s a -> s{_dcS3BucketName = a});
+
+instance FromJSON DeliveryChannel where
+        parseJSON
+          = withObject "DeliveryChannel"
+              (\ x ->
+                 DeliveryChannel' <$>
+                   (x .:? "s3KeyPrefix") <*> (x .:? "snsTopicARN") <*>
+                     (x .:? "name")
+                     <*> (x .:? "s3BucketName"))
+
+instance ToJSON DeliveryChannel where
+        toJSON DeliveryChannel'{..}
+          = object
+              ["s3KeyPrefix" .= _dcS3KeyPrefix,
+               "snsTopicARN" .= _dcSnsTopicARN, "name" .= _dcName,
+               "s3BucketName" .= _dcS3BucketName]
+
+-- | The status of a specified delivery channel.
+--
+-- Valid values: 'Success' | 'Failure'
+--
+-- /See:/ 'deliveryChannelStatus' smart constructor.
+data DeliveryChannelStatus = DeliveryChannelStatus'
+    { _dcsConfigStreamDeliveryInfo   :: !(Maybe ConfigStreamDeliveryInfo)
+    , _dcsConfigSnapshotDeliveryInfo :: !(Maybe ConfigExportDeliveryInfo)
+    , _dcsConfigHistoryDeliveryInfo  :: !(Maybe ConfigExportDeliveryInfo)
+    , _dcsName                       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeliveryChannelStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcsConfigStreamDeliveryInfo'
+--
+-- * 'dcsConfigSnapshotDeliveryInfo'
+--
+-- * 'dcsConfigHistoryDeliveryInfo'
+--
+-- * 'dcsName'
+deliveryChannelStatus
+    :: DeliveryChannelStatus
+deliveryChannelStatus =
+    DeliveryChannelStatus'
+    { _dcsConfigStreamDeliveryInfo = Nothing
+    , _dcsConfigSnapshotDeliveryInfo = Nothing
+    , _dcsConfigHistoryDeliveryInfo = Nothing
+    , _dcsName = Nothing
+    }
+
+-- | A list containing the status of the delivery of the configuration stream
+-- notification to the specified Amazon SNS topic.
+dcsConfigStreamDeliveryInfo :: Lens' DeliveryChannelStatus (Maybe ConfigStreamDeliveryInfo)
+dcsConfigStreamDeliveryInfo = lens _dcsConfigStreamDeliveryInfo (\ s a -> s{_dcsConfigStreamDeliveryInfo = a});
+
+-- | A list containing the status of the delivery of the snapshot to the
+-- specified Amazon S3 bucket.
+dcsConfigSnapshotDeliveryInfo :: Lens' DeliveryChannelStatus (Maybe ConfigExportDeliveryInfo)
+dcsConfigSnapshotDeliveryInfo = lens _dcsConfigSnapshotDeliveryInfo (\ s a -> s{_dcsConfigSnapshotDeliveryInfo = a});
+
+-- | A list that contains the status of the delivery of the configuration
+-- history to the specified Amazon S3 bucket.
+dcsConfigHistoryDeliveryInfo :: Lens' DeliveryChannelStatus (Maybe ConfigExportDeliveryInfo)
+dcsConfigHistoryDeliveryInfo = lens _dcsConfigHistoryDeliveryInfo (\ s a -> s{_dcsConfigHistoryDeliveryInfo = a});
+
+-- | The name of the delivery channel.
+dcsName :: Lens' DeliveryChannelStatus (Maybe Text)
+dcsName = lens _dcsName (\ s a -> s{_dcsName = a});
+
+instance FromJSON DeliveryChannelStatus where
+        parseJSON
+          = withObject "DeliveryChannelStatus"
+              (\ x ->
+                 DeliveryChannelStatus' <$>
+                   (x .:? "configStreamDeliveryInfo") <*>
+                     (x .:? "configSnapshotDeliveryInfo")
+                     <*> (x .:? "configHistoryDeliveryInfo")
+                     <*> (x .:? "name"))
+
+-- | The group of AWS resource types that AWS Config records when starting
+-- the configuration recorder.
+--
+-- __recordingGroup__ can have one and only one parameter. Choose either
+-- __allSupported__ or __resourceTypes__.
+--
+-- /See:/ 'recordingGroup' smart constructor.
+data RecordingGroup = RecordingGroup'
+    { _rgAllSupported  :: !(Maybe Bool)
+    , _rgResourceTypes :: !(Maybe [ResourceType])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RecordingGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rgAllSupported'
+--
+-- * 'rgResourceTypes'
+recordingGroup
+    :: RecordingGroup
+recordingGroup =
+    RecordingGroup'
+    { _rgAllSupported = Nothing
+    , _rgResourceTypes = Nothing
+    }
+
+-- | Records all supported resource types in the recording group. For a list
+-- of supported resource types, see
+-- <http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources Supported resource types>.
+-- If you specify __allSupported__, you cannot enumerate a list of
+-- __resourceTypes__.
+rgAllSupported :: Lens' RecordingGroup (Maybe Bool)
+rgAllSupported = lens _rgAllSupported (\ s a -> s{_rgAllSupported = a});
+
+-- | A comma-separated list of strings representing valid AWS resource types
+-- (e.g., 'AWS::EC2::Instance' or 'AWS::CloudTrail::Trail').
+-- __resourceTypes__ is only valid if you have chosen not to select
+-- __allSupported__. For a list of valid __resourceTypes__ values, see the
+-- __resourceType Value__ column in the following topic:
+-- <http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources Supported AWS Resource Types>.
+rgResourceTypes :: Lens' RecordingGroup [ResourceType]
+rgResourceTypes = lens _rgResourceTypes (\ s a -> s{_rgResourceTypes = a}) . _Default . _Coerce;
+
+instance FromJSON RecordingGroup where
+        parseJSON
+          = withObject "RecordingGroup"
+              (\ x ->
+                 RecordingGroup' <$>
+                   (x .:? "allSupported") <*>
+                     (x .:? "resourceTypes" .!= mempty))
+
+instance ToJSON RecordingGroup where
+        toJSON RecordingGroup'{..}
+          = object
+              ["allSupported" .= _rgAllSupported,
+               "resourceTypes" .= _rgResourceTypes]
+
+-- | The relationship of the related resource to the main resource.
+--
+-- /See:/ 'relationship' smart constructor.
+data Relationship = Relationship'
+    { _rResourceId       :: !(Maybe Text)
+    , _rResourceType     :: !(Maybe ResourceType)
+    , _rRelationshipName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Relationship' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rResourceId'
+--
+-- * 'rResourceType'
+--
+-- * 'rRelationshipName'
+relationship
+    :: Relationship
+relationship =
+    Relationship'
+    { _rResourceId = Nothing
+    , _rResourceType = Nothing
+    , _rRelationshipName = Nothing
+    }
+
+-- | The resource ID of the related resource (for example, 'sg-xxxxxx').
+rResourceId :: Lens' Relationship (Maybe Text)
+rResourceId = lens _rResourceId (\ s a -> s{_rResourceId = a});
+
+-- | The resource type of the related resource.
+rResourceType :: Lens' Relationship (Maybe ResourceType)
+rResourceType = lens _rResourceType (\ s a -> s{_rResourceType = a});
+
+-- | The name of the related resource.
+rRelationshipName :: Lens' Relationship (Maybe Text)
+rRelationshipName = lens _rRelationshipName (\ s a -> s{_rRelationshipName = a});
+
+instance FromJSON Relationship where
+        parseJSON
+          = withObject "Relationship"
+              (\ x ->
+                 Relationship' <$>
+                   (x .:? "resourceId") <*> (x .:? "resourceType") <*>
+                     (x .:? "relationshipName"))
diff --git a/gen/Network/AWS/Config/Types/Sum.hs b/gen/Network/AWS/Config/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Config/Types/Sum.hs
@@ -0,0 +1,196 @@
+{-# 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.Config.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.Config.Types.Sum where
+
+import           Network.AWS.Prelude
+
+data ChronologicalOrder
+    = Forward
+    | Reverse
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText ChronologicalOrder where
+    parser = takeLowerText >>= \case
+        "forward" -> pure Forward
+        "reverse" -> pure Reverse
+        e -> fromTextError $ "Failure parsing ChronologicalOrder from value: '" <> e
+           <> "'. Accepted values: forward, reverse"
+
+instance ToText ChronologicalOrder where
+    toText = \case
+        Forward -> "forward"
+        Reverse -> "reverse"
+
+instance Hashable     ChronologicalOrder
+instance ToByteString ChronologicalOrder
+instance ToQuery      ChronologicalOrder
+instance ToHeader     ChronologicalOrder
+
+instance ToJSON ChronologicalOrder where
+    toJSON = toJSONText
+
+data ConfigurationItemStatus
+    = Deleted
+    | Discovered
+    | Failed
+    | OK
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText ConfigurationItemStatus where
+    parser = takeLowerText >>= \case
+        "deleted" -> pure Deleted
+        "discovered" -> pure Discovered
+        "failed" -> pure Failed
+        "ok" -> pure OK
+        e -> fromTextError $ "Failure parsing ConfigurationItemStatus from value: '" <> e
+           <> "'. Accepted values: deleted, discovered, failed, ok"
+
+instance ToText ConfigurationItemStatus where
+    toText = \case
+        Deleted -> "deleted"
+        Discovered -> "discovered"
+        Failed -> "failed"
+        OK -> "ok"
+
+instance Hashable     ConfigurationItemStatus
+instance ToByteString ConfigurationItemStatus
+instance ToQuery      ConfigurationItemStatus
+instance ToHeader     ConfigurationItemStatus
+
+instance FromJSON ConfigurationItemStatus where
+    parseJSON = parseJSONText "ConfigurationItemStatus"
+
+data DeliveryStatus
+    = Failure
+    | NotApplicable
+    | Success
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText DeliveryStatus where
+    parser = takeLowerText >>= \case
+        "failure" -> pure Failure
+        "not_applicable" -> pure NotApplicable
+        "success" -> pure Success
+        e -> fromTextError $ "Failure parsing DeliveryStatus from value: '" <> e
+           <> "'. Accepted values: failure, not_applicable, success"
+
+instance ToText DeliveryStatus where
+    toText = \case
+        Failure -> "failure"
+        NotApplicable -> "not_applicable"
+        Success -> "success"
+
+instance Hashable     DeliveryStatus
+instance ToByteString DeliveryStatus
+instance ToQuery      DeliveryStatus
+instance ToHeader     DeliveryStatus
+
+instance FromJSON DeliveryStatus where
+    parseJSON = parseJSONText "DeliveryStatus"
+
+data RecorderStatus
+    = RSFailure
+    | RSPending
+    | RSSuccess
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText RecorderStatus where
+    parser = takeLowerText >>= \case
+        "failure" -> pure RSFailure
+        "pending" -> pure RSPending
+        "success" -> pure RSSuccess
+        e -> fromTextError $ "Failure parsing RecorderStatus from value: '" <> e
+           <> "'. Accepted values: failure, pending, success"
+
+instance ToText RecorderStatus where
+    toText = \case
+        RSFailure -> "failure"
+        RSPending -> "pending"
+        RSSuccess -> "success"
+
+instance Hashable     RecorderStatus
+instance ToByteString RecorderStatus
+instance ToQuery      RecorderStatus
+instance ToHeader     RecorderStatus
+
+instance FromJSON RecorderStatus where
+    parseJSON = parseJSONText "RecorderStatus"
+
+data ResourceType
+    = AWSCloudTrailTrail
+    | AWSEC2CustomerGateway
+    | AWSEC2EIP
+    | AWSEC2Instance
+    | AWSEC2InternetGateway
+    | AWSEC2NetworkACL
+    | AWSEC2NetworkInterface
+    | AWSEC2RouteTable
+    | AWSEC2SecurityGroup
+    | AWSEC2Subnet
+    | AWSEC2VPC
+    | AWSEC2VPNConnection
+    | AWSEC2VPNGateway
+    | AWSEC2Volume
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText ResourceType where
+    parser = takeLowerText >>= \case
+        "aws::cloudtrail::trail" -> pure AWSCloudTrailTrail
+        "aws::ec2::customergateway" -> pure AWSEC2CustomerGateway
+        "aws::ec2::eip" -> pure AWSEC2EIP
+        "aws::ec2::instance" -> pure AWSEC2Instance
+        "aws::ec2::internetgateway" -> pure AWSEC2InternetGateway
+        "aws::ec2::networkacl" -> pure AWSEC2NetworkACL
+        "aws::ec2::networkinterface" -> pure AWSEC2NetworkInterface
+        "aws::ec2::routetable" -> pure AWSEC2RouteTable
+        "aws::ec2::securitygroup" -> pure AWSEC2SecurityGroup
+        "aws::ec2::subnet" -> pure AWSEC2Subnet
+        "aws::ec2::vpc" -> pure AWSEC2VPC
+        "aws::ec2::vpnconnection" -> pure AWSEC2VPNConnection
+        "aws::ec2::vpngateway" -> pure AWSEC2VPNGateway
+        "aws::ec2::volume" -> pure AWSEC2Volume
+        e -> fromTextError $ "Failure parsing ResourceType from value: '" <> e
+           <> "'. Accepted values: aws::cloudtrail::trail, aws::ec2::customergateway, aws::ec2::eip, aws::ec2::instance, aws::ec2::internetgateway, aws::ec2::networkacl, aws::ec2::networkinterface, aws::ec2::routetable, aws::ec2::securitygroup, aws::ec2::subnet, aws::ec2::vpc, aws::ec2::vpnconnection, aws::ec2::vpngateway, aws::ec2::volume"
+
+instance ToText ResourceType where
+    toText = \case
+        AWSCloudTrailTrail -> "aws::cloudtrail::trail"
+        AWSEC2CustomerGateway -> "aws::ec2::customergateway"
+        AWSEC2EIP -> "aws::ec2::eip"
+        AWSEC2Instance -> "aws::ec2::instance"
+        AWSEC2InternetGateway -> "aws::ec2::internetgateway"
+        AWSEC2NetworkACL -> "aws::ec2::networkacl"
+        AWSEC2NetworkInterface -> "aws::ec2::networkinterface"
+        AWSEC2RouteTable -> "aws::ec2::routetable"
+        AWSEC2SecurityGroup -> "aws::ec2::securitygroup"
+        AWSEC2Subnet -> "aws::ec2::subnet"
+        AWSEC2VPC -> "aws::ec2::vpc"
+        AWSEC2VPNConnection -> "aws::ec2::vpnconnection"
+        AWSEC2VPNGateway -> "aws::ec2::vpngateway"
+        AWSEC2Volume -> "aws::ec2::volume"
+
+instance Hashable     ResourceType
+instance ToByteString ResourceType
+instance ToQuery      ResourceType
+instance ToHeader     ResourceType
+
+instance ToJSON ResourceType where
+    toJSON = toJSONText
+
+instance FromJSON ResourceType where
+    parseJSON = parseJSONText "ResourceType"
diff --git a/gen/Network/AWS/Config/Waiters.hs b/gen/Network/AWS/Config/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Config/Waiters.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.Config.Waiters
+-- 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.Config.Waiters where
+
+import           Network.AWS.Config.Types
+import           Network.AWS.Prelude
+import           Network.AWS.Waiter
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.Config
+import Test.AWS.Config.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "Config"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/Config.hs b/test/Test/AWS/Config.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Config.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.Config
+-- 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.Config
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.Config
+import           Test.AWS.Gen.Config
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/Config/Internal.hs b/test/Test/AWS/Config/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Config/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.Config.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.Config.Internal where
+
+import Test.AWS.Prelude
diff --git a/test/Test/AWS/Gen/Config.hs b/test/Test/AWS/Gen/Config.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/Config.hs
@@ -0,0 +1,226 @@
+{-# 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.Config
+-- 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.Config where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.Config
+import Test.AWS.Config.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"
+--         [ testGetResourceConfigHistory $
+--             getResourceConfigHistory
+--
+--         , testStopConfigurationRecorder $
+--             stopConfigurationRecorder
+--
+--         , testDeliverConfigSnapshot $
+--             deliverConfigSnapshot
+--
+--         , testDescribeConfigurationRecorders $
+--             describeConfigurationRecorders
+--
+--         , testStartConfigurationRecorder $
+--             startConfigurationRecorder
+--
+--         , testDescribeConfigurationRecorderStatus $
+--             describeConfigurationRecorderStatus
+--
+--         , testPutConfigurationRecorder $
+--             putConfigurationRecorder
+--
+--         , testDeleteDeliveryChannel $
+--             deleteDeliveryChannel
+--
+--         , testPutDeliveryChannel $
+--             putDeliveryChannel
+--
+--         , testDescribeDeliveryChannelStatus $
+--             describeDeliveryChannelStatus
+--
+--         , testDescribeDeliveryChannels $
+--             describeDeliveryChannels
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testGetResourceConfigHistoryResponse $
+--             getResourceConfigHistoryResponse
+--
+--         , testStopConfigurationRecorderResponse $
+--             stopConfigurationRecorderResponse
+--
+--         , testDeliverConfigSnapshotResponse $
+--             deliverConfigSnapshotResponse
+--
+--         , testDescribeConfigurationRecordersResponse $
+--             describeConfigurationRecordersResponse
+--
+--         , testStartConfigurationRecorderResponse $
+--             startConfigurationRecorderResponse
+--
+--         , testDescribeConfigurationRecorderStatusResponse $
+--             describeConfigurationRecorderStatusResponse
+--
+--         , testPutConfigurationRecorderResponse $
+--             putConfigurationRecorderResponse
+--
+--         , testDeleteDeliveryChannelResponse $
+--             deleteDeliveryChannelResponse
+--
+--         , testPutDeliveryChannelResponse $
+--             putDeliveryChannelResponse
+--
+--         , testDescribeDeliveryChannelStatusResponse $
+--             describeDeliveryChannelStatusResponse
+--
+--         , testDescribeDeliveryChannelsResponse $
+--             describeDeliveryChannelsResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testGetResourceConfigHistory :: GetResourceConfigHistory -> TestTree
+testGetResourceConfigHistory = req
+    "GetResourceConfigHistory"
+    "fixture/GetResourceConfigHistory"
+
+testStopConfigurationRecorder :: StopConfigurationRecorder -> TestTree
+testStopConfigurationRecorder = req
+    "StopConfigurationRecorder"
+    "fixture/StopConfigurationRecorder"
+
+testDeliverConfigSnapshot :: DeliverConfigSnapshot -> TestTree
+testDeliverConfigSnapshot = req
+    "DeliverConfigSnapshot"
+    "fixture/DeliverConfigSnapshot"
+
+testDescribeConfigurationRecorders :: DescribeConfigurationRecorders -> TestTree
+testDescribeConfigurationRecorders = req
+    "DescribeConfigurationRecorders"
+    "fixture/DescribeConfigurationRecorders"
+
+testStartConfigurationRecorder :: StartConfigurationRecorder -> TestTree
+testStartConfigurationRecorder = req
+    "StartConfigurationRecorder"
+    "fixture/StartConfigurationRecorder"
+
+testDescribeConfigurationRecorderStatus :: DescribeConfigurationRecorderStatus -> TestTree
+testDescribeConfigurationRecorderStatus = req
+    "DescribeConfigurationRecorderStatus"
+    "fixture/DescribeConfigurationRecorderStatus"
+
+testPutConfigurationRecorder :: PutConfigurationRecorder -> TestTree
+testPutConfigurationRecorder = req
+    "PutConfigurationRecorder"
+    "fixture/PutConfigurationRecorder"
+
+testDeleteDeliveryChannel :: DeleteDeliveryChannel -> TestTree
+testDeleteDeliveryChannel = req
+    "DeleteDeliveryChannel"
+    "fixture/DeleteDeliveryChannel"
+
+testPutDeliveryChannel :: PutDeliveryChannel -> TestTree
+testPutDeliveryChannel = req
+    "PutDeliveryChannel"
+    "fixture/PutDeliveryChannel"
+
+testDescribeDeliveryChannelStatus :: DescribeDeliveryChannelStatus -> TestTree
+testDescribeDeliveryChannelStatus = req
+    "DescribeDeliveryChannelStatus"
+    "fixture/DescribeDeliveryChannelStatus"
+
+testDescribeDeliveryChannels :: DescribeDeliveryChannels -> TestTree
+testDescribeDeliveryChannels = req
+    "DescribeDeliveryChannels"
+    "fixture/DescribeDeliveryChannels"
+
+-- Responses
+
+testGetResourceConfigHistoryResponse :: GetResourceConfigHistoryResponse -> TestTree
+testGetResourceConfigHistoryResponse = res
+    "GetResourceConfigHistoryResponse"
+    "fixture/GetResourceConfigHistoryResponse"
+    (Proxy :: Proxy GetResourceConfigHistory)
+
+testStopConfigurationRecorderResponse :: StopConfigurationRecorderResponse -> TestTree
+testStopConfigurationRecorderResponse = res
+    "StopConfigurationRecorderResponse"
+    "fixture/StopConfigurationRecorderResponse"
+    (Proxy :: Proxy StopConfigurationRecorder)
+
+testDeliverConfigSnapshotResponse :: DeliverConfigSnapshotResponse -> TestTree
+testDeliverConfigSnapshotResponse = res
+    "DeliverConfigSnapshotResponse"
+    "fixture/DeliverConfigSnapshotResponse"
+    (Proxy :: Proxy DeliverConfigSnapshot)
+
+testDescribeConfigurationRecordersResponse :: DescribeConfigurationRecordersResponse -> TestTree
+testDescribeConfigurationRecordersResponse = res
+    "DescribeConfigurationRecordersResponse"
+    "fixture/DescribeConfigurationRecordersResponse"
+    (Proxy :: Proxy DescribeConfigurationRecorders)
+
+testStartConfigurationRecorderResponse :: StartConfigurationRecorderResponse -> TestTree
+testStartConfigurationRecorderResponse = res
+    "StartConfigurationRecorderResponse"
+    "fixture/StartConfigurationRecorderResponse"
+    (Proxy :: Proxy StartConfigurationRecorder)
+
+testDescribeConfigurationRecorderStatusResponse :: DescribeConfigurationRecorderStatusResponse -> TestTree
+testDescribeConfigurationRecorderStatusResponse = res
+    "DescribeConfigurationRecorderStatusResponse"
+    "fixture/DescribeConfigurationRecorderStatusResponse"
+    (Proxy :: Proxy DescribeConfigurationRecorderStatus)
+
+testPutConfigurationRecorderResponse :: PutConfigurationRecorderResponse -> TestTree
+testPutConfigurationRecorderResponse = res
+    "PutConfigurationRecorderResponse"
+    "fixture/PutConfigurationRecorderResponse"
+    (Proxy :: Proxy PutConfigurationRecorder)
+
+testDeleteDeliveryChannelResponse :: DeleteDeliveryChannelResponse -> TestTree
+testDeleteDeliveryChannelResponse = res
+    "DeleteDeliveryChannelResponse"
+    "fixture/DeleteDeliveryChannelResponse"
+    (Proxy :: Proxy DeleteDeliveryChannel)
+
+testPutDeliveryChannelResponse :: PutDeliveryChannelResponse -> TestTree
+testPutDeliveryChannelResponse = res
+    "PutDeliveryChannelResponse"
+    "fixture/PutDeliveryChannelResponse"
+    (Proxy :: Proxy PutDeliveryChannel)
+
+testDescribeDeliveryChannelStatusResponse :: DescribeDeliveryChannelStatusResponse -> TestTree
+testDescribeDeliveryChannelStatusResponse = res
+    "DescribeDeliveryChannelStatusResponse"
+    "fixture/DescribeDeliveryChannelStatusResponse"
+    (Proxy :: Proxy DescribeDeliveryChannelStatus)
+
+testDescribeDeliveryChannelsResponse :: DescribeDeliveryChannelsResponse -> TestTree
+testDescribeDeliveryChannelsResponse = res
+    "DescribeDeliveryChannelsResponse"
+    "fixture/DescribeDeliveryChannelsResponse"
+    (Proxy :: Proxy DescribeDeliveryChannels)
