diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,25 +1,54 @@
 # Amazon Cognito Sync 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 Cognito Sync provides an AWS service and client library that enable
-cross-device syncing of application-related user data. High-level client
-libraries are available for both iOS and Android. You can use these libraries
-to persist data locally so that it's available even if the device is offline.
-Developer credentials don't need to be stored on the mobile device to access
-the service. You can use Amazon Cognito to obtain a normalized user ID and
-credentials. User data is persisted in a dataset that can store up to 1 MB of
-key-value pairs, and you can have up to 20 datasets per user identity.
+Amazon Cognito Sync
 
+Amazon Cognito Sync provides an AWS service and client library that
+enable cross-device syncing of application-related user data. High-level
+client libraries are available for both iOS and Android. You can use
+these libraries to persist data locally so that it\'s available even if
+the device is offline. Developer credentials don\'t need to be stored on
+the mobile device to access the service. You can use Amazon Cognito to
+obtain a normalized user ID and credentials. User data is persisted in a
+dataset that can store up to 1 MB of key-value pairs, and you can have
+up to 20 datasets per user identity.
+
+With Amazon Cognito Sync, the data stored for each identity is
+accessible only to credentials assigned to that identity. In order to
+use the Cognito Sync service, you need to make API calls using
+credentials retrieved with
+<http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/Welcome.html Amazon Cognito Identity service>.
+
+If you want to use Cognito Sync in an Android or iOS application, you
+will probably want to make API calls via the AWS Mobile SDK. To learn
+more, see the
+<http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/cognito-sync.html Developer Guide for Android>
+and the
+<http://docs.aws.amazon.com/mobile/sdkforios/developerguide/cognito-sync.html Developer Guide for iOS>.
+
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-cognito-sync)
 and the [AWS API Reference](http://docs.aws.amazon.com/cognitosync/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-cognito-sync.cabal b/amazonka-cognito-sync.cabal
--- a/amazonka-cognito-sync.cabal
+++ b/amazonka-cognito-sync.cabal
@@ -1,32 +1,56 @@
 name:                  amazonka-cognito-sync
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon Cognito Sync 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 Cognito Sync provides an AWS service and client library that enable
-    cross-device syncing of application-related user data. High-level client
-    libraries are available for both iOS and Android. You can use these libraries
-    to persist data locally so that it's available even if the device is offline.
-    Developer credentials don't need to be stored on the mobile device to access
-    the service. You can use Amazon Cognito to obtain a normalized user ID and
-    credentials. User data is persisted in a dataset that can store up to 1 MB of
-    key-value pairs, and you can have up to 20 datasets per user identity.
+    Amazon Cognito Sync
 
+    Amazon Cognito Sync provides an AWS service and client library that
+    enable cross-device syncing of application-related user data. High-level
+    client libraries are available for both iOS and Android. You can use
+    these libraries to persist data locally so that it\'s available even if
+    the device is offline. Developer credentials don\'t need to be stored on
+    the mobile device to access the service. You can use Amazon Cognito to
+    obtain a normalized user ID and credentials. User data is persisted in a
+    dataset that can store up to 1 MB of key-value pairs, and you can have
+    up to 20 datasets per user identity.
+
+    With Amazon Cognito Sync, the data stored for each identity is
+    accessible only to credentials assigned to that identity. In order to
+    use the Cognito Sync service, you need to make API calls using
+    credentials retrieved with
+    <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/Welcome.html Amazon Cognito Identity service>.
+
+    If you want to use Cognito Sync in an Android or iOS application, you
+    will probably want to make API calls via the AWS Mobile SDK. To learn
+    more, see the
+    <http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/cognito-sync.html Developer Guide for Android>
+    and the
+    <http://docs.aws.amazon.com/mobile/sdkforios/developerguide/cognito-sync.html Developer Guide for iOS>.
     .
-    /See:/ <http://docs.aws.amazon.com/cognitosync/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.CognitoSync" and the <http://docs.aws.amazon.com/cognitosync/latest/APIReference/Welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -58,9 +82,40 @@
         , Network.AWS.CognitoSync.Types
         , Network.AWS.CognitoSync.UnsubscribeFromDataset
         , Network.AWS.CognitoSync.UpdateRecords
+        , Network.AWS.CognitoSync.Waiters
 
     other-modules:
+          Network.AWS.CognitoSync.Types.Product
+        , Network.AWS.CognitoSync.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-cognito-sync-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.CognitoSync
+        , Test.AWS.Gen.CognitoSync
+        , Test.AWS.CognitoSync.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-cognito-sync == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/gen/Network/AWS/CognitoSync.hs b/gen/Network/AWS/CognitoSync.hs
--- a/gen/Network/AWS/CognitoSync.hs
+++ b/gen/Network/AWS/CognitoSync.hs
@@ -1,59 +1,267 @@
+{-# 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.CognitoSync
--- 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 Cognito Sync provides an AWS service and client library that enable
--- cross-device syncing of application-related user data. High-level client
--- libraries are available for both iOS and Android. You can use these libraries
--- to persist data locally so that it's available even if the device is offline.
--- Developer credentials don't need to be stored on the mobile device to access
--- the service. You can use Amazon Cognito to obtain a normalized user ID and
--- credentials. User data is persisted in a dataset that can store up to 1 MB of
--- key-value pairs, and you can have up to 20 datasets per user identity.
+-- Amazon Cognito Sync
+--
+-- Amazon Cognito Sync provides an AWS service and client library that
+-- enable cross-device syncing of application-related user data. High-level
+-- client libraries are available for both iOS and Android. You can use
+-- these libraries to persist data locally so that it\'s available even if
+-- the device is offline. Developer credentials don\'t need to be stored on
+-- the mobile device to access the service. You can use Amazon Cognito to
+-- obtain a normalized user ID and credentials. User data is persisted in a
+-- dataset that can store up to 1 MB of key-value pairs, and you can have
+-- up to 20 datasets per user identity.
+--
+-- With Amazon Cognito Sync, the data stored for each identity is
+-- accessible only to credentials assigned to that identity. In order to
+-- use the Cognito Sync service, you need to make API calls using
+-- credentials retrieved with
+-- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/Welcome.html Amazon Cognito Identity service>.
+--
+-- If you want to use Cognito Sync in an Android or iOS application, you
+-- will probably want to make API calls via the AWS Mobile SDK. To learn
+-- more, see the
+-- <http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/cognito-sync.html Developer Guide for Android>
+-- and the
+-- <http://docs.aws.amazon.com/mobile/sdkforios/developerguide/cognito-sync.html Developer Guide for iOS>.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.CognitoSync
-    ( module Network.AWS.CognitoSync.BulkPublish
-    , module Network.AWS.CognitoSync.DeleteDataset
+    (
+    -- * Service
+      CognitoSync
+
+    -- * Errors
+    -- $errors
+
+    -- ** InvalidParameterException
+    , _InvalidParameterException
+
+    -- ** NotAuthorizedException
+    , _NotAuthorizedException
+
+    -- ** InternalErrorException
+    , _InternalErrorException
+
+    -- ** InvalidConfigurationException
+    , _InvalidConfigurationException
+
+    -- ** DuplicateRequestException
+    , _DuplicateRequestException
+
+    -- ** LambdaThrottledException
+    , _LambdaThrottledException
+
+    -- ** AlreadyStreamedException
+    , _AlreadyStreamedException
+
+    -- ** InvalidLambdaFunctionOutputException
+    , _InvalidLambdaFunctionOutputException
+
+    -- ** ConcurrentModificationException
+    , _ConcurrentModificationException
+
+    -- ** TooManyRequestsException
+    , _TooManyRequestsException
+
+    -- ** ResourceConflictException
+    , _ResourceConflictException
+
+    -- ** ResourceNotFoundException
+    , _ResourceNotFoundException
+
+    -- ** LimitExceededException
+    , _LimitExceededException
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** DescribeDataset
     , module Network.AWS.CognitoSync.DescribeDataset
+
+    -- ** DescribeIdentityPoolUsage
     , module Network.AWS.CognitoSync.DescribeIdentityPoolUsage
-    , module Network.AWS.CognitoSync.DescribeIdentityUsage
+
+    -- ** SetCognitoEvents
+    , module Network.AWS.CognitoSync.SetCognitoEvents
+
+    -- ** ListIdentityPoolUsage
+    , module Network.AWS.CognitoSync.ListIdentityPoolUsage
+
+    -- ** GetBulkPublishDetails
     , module Network.AWS.CognitoSync.GetBulkPublishDetails
+
+    -- ** SetIdentityPoolConfiguration
+    , module Network.AWS.CognitoSync.SetIdentityPoolConfiguration
+
+    -- ** DeleteDataset
+    , module Network.AWS.CognitoSync.DeleteDataset
+
+    -- ** DescribeIdentityUsage
+    , module Network.AWS.CognitoSync.DescribeIdentityUsage
+
+    -- ** GetCognitoEvents
     , module Network.AWS.CognitoSync.GetCognitoEvents
-    , module Network.AWS.CognitoSync.GetIdentityPoolConfiguration
-    , module Network.AWS.CognitoSync.ListDatasets
-    , module Network.AWS.CognitoSync.ListIdentityPoolUsage
-    , module Network.AWS.CognitoSync.ListRecords
+
+    -- ** RegisterDevice
     , module Network.AWS.CognitoSync.RegisterDevice
-    , module Network.AWS.CognitoSync.SetCognitoEvents
-    , module Network.AWS.CognitoSync.SetIdentityPoolConfiguration
+
+    -- ** SubscribeToDataset
     , module Network.AWS.CognitoSync.SubscribeToDataset
-    , module Network.AWS.CognitoSync.Types
+
+    -- ** GetIdentityPoolConfiguration
+    , module Network.AWS.CognitoSync.GetIdentityPoolConfiguration
+
+    -- ** ListRecords
+    , module Network.AWS.CognitoSync.ListRecords
+
+    -- ** UnsubscribeFromDataset
     , module Network.AWS.CognitoSync.UnsubscribeFromDataset
+
+    -- ** UpdateRecords
     , module Network.AWS.CognitoSync.UpdateRecords
+
+    -- ** ListDatasets
+    , module Network.AWS.CognitoSync.ListDatasets
+
+    -- ** BulkPublish
+    , module Network.AWS.CognitoSync.BulkPublish
+
+    -- * Types
+
+    -- ** BulkPublishStatus
+    , BulkPublishStatus (..)
+
+    -- ** Operation
+    , Operation (..)
+
+    -- ** Platform
+    , Platform (..)
+
+    -- ** StreamingStatus
+    , StreamingStatus (..)
+
+    -- ** CognitoStreams
+    , CognitoStreams
+    , cognitoStreams
+    , csStreamingStatus
+    , csStreamName
+    , csRoleARN
+
+    -- ** Dataset
+    , Dataset
+    , dataset
+    , dLastModifiedDate
+    , dNumRecords
+    , dDataStorage
+    , dDatasetName
+    , dCreationDate
+    , dLastModifiedBy
+    , dIdentityId
+
+    -- ** IdentityPoolUsage
+    , IdentityPoolUsage
+    , identityPoolUsage
+    , ipuLastModifiedDate
+    , ipuIdentityPoolId
+    , ipuDataStorage
+    , ipuSyncSessionsCount
+
+    -- ** IdentityUsage
+    , IdentityUsage
+    , identityUsage
+    , iuLastModifiedDate
+    , iuIdentityPoolId
+    , iuDatasetCount
+    , iuDataStorage
+    , iuIdentityId
+
+    -- ** PushSync
+    , PushSync
+    , pushSync
+    , psApplicationARNs
+    , psRoleARN
+
+    -- ** Record
+    , Record
+    , record
+    , rSyncCount
+    , rLastModifiedDate
+    , rDeviceLastModifiedDate
+    , rValue
+    , rKey
+    , rLastModifiedBy
+
+    -- ** RecordPatch
+    , RecordPatch
+    , recordPatch
+    , rpDeviceLastModifiedDate
+    , rpValue
+    , rpOp
+    , rpKey
+    , rpSyncCount
     ) where
 
-import Network.AWS.CognitoSync.BulkPublish
-import Network.AWS.CognitoSync.DeleteDataset
-import Network.AWS.CognitoSync.DescribeDataset
-import Network.AWS.CognitoSync.DescribeIdentityPoolUsage
-import Network.AWS.CognitoSync.DescribeIdentityUsage
-import Network.AWS.CognitoSync.GetBulkPublishDetails
-import Network.AWS.CognitoSync.GetCognitoEvents
-import Network.AWS.CognitoSync.GetIdentityPoolConfiguration
-import Network.AWS.CognitoSync.ListDatasets
-import Network.AWS.CognitoSync.ListIdentityPoolUsage
-import Network.AWS.CognitoSync.ListRecords
-import Network.AWS.CognitoSync.RegisterDevice
-import Network.AWS.CognitoSync.SetCognitoEvents
-import Network.AWS.CognitoSync.SetIdentityPoolConfiguration
-import Network.AWS.CognitoSync.SubscribeToDataset
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.UnsubscribeFromDataset
-import Network.AWS.CognitoSync.UpdateRecords
+import           Network.AWS.CognitoSync.BulkPublish
+import           Network.AWS.CognitoSync.DeleteDataset
+import           Network.AWS.CognitoSync.DescribeDataset
+import           Network.AWS.CognitoSync.DescribeIdentityPoolUsage
+import           Network.AWS.CognitoSync.DescribeIdentityUsage
+import           Network.AWS.CognitoSync.GetBulkPublishDetails
+import           Network.AWS.CognitoSync.GetCognitoEvents
+import           Network.AWS.CognitoSync.GetIdentityPoolConfiguration
+import           Network.AWS.CognitoSync.ListDatasets
+import           Network.AWS.CognitoSync.ListIdentityPoolUsage
+import           Network.AWS.CognitoSync.ListRecords
+import           Network.AWS.CognitoSync.RegisterDevice
+import           Network.AWS.CognitoSync.SetCognitoEvents
+import           Network.AWS.CognitoSync.SetIdentityPoolConfiguration
+import           Network.AWS.CognitoSync.SubscribeToDataset
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.UnsubscribeFromDataset
+import           Network.AWS.CognitoSync.UpdateRecords
+import           Network.AWS.CognitoSync.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 'CognitoSync'.
+-}
+
+{- $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/CognitoSync/BulkPublish.hs b/gen/Network/AWS/CognitoSync/BulkPublish.hs
--- a/gen/Network/AWS/CognitoSync/BulkPublish.hs
+++ b/gen/Network/AWS/CognitoSync/BulkPublish.hs
@@ -1,122 +1,141 @@
-{-# 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.CognitoSync.BulkPublish
--- 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.
-
--- | Initiates a bulk publish of all existing datasets for an Identity Pool to the
--- configured stream. Customers are limited to one successful bulk publish per
--- 24 hours. Bulk publish is an asynchronous request, customers can see the
--- status of the request via the GetBulkPublishDetails operation.
+-- Initiates a bulk publish of all existing datasets for an Identity Pool
+-- to the configured stream. Customers are limited to one successful bulk
+-- publish per 24 hours. Bulk publish is an asynchronous request, customers
+-- can see the status of the request via the GetBulkPublishDetails
+-- operation.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_BulkPublish.html>
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_BulkPublish.html AWS API Reference> for BulkPublish.
 module Network.AWS.CognitoSync.BulkPublish
     (
-    -- * Request
-      BulkPublish
-    -- ** Request constructor
-    , bulkPublish
-    -- ** Request lenses
+    -- * Creating a Request
+      bulkPublish
+    , BulkPublish
+    -- * Request Lenses
     , bpIdentityPoolId
 
-    -- * Response
-    , BulkPublishResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , bulkPublishResponse
-    -- ** Response lenses
-    , bprIdentityPoolId
+    , BulkPublishResponse
+    -- * Response Lenses
+    , bprsIdentityPoolId
+    , bprsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype BulkPublish = BulkPublish
+-- | The input for the BulkPublish operation.
+--
+-- /See:/ 'bulkPublish' smart constructor.
+newtype BulkPublish = BulkPublish'
     { _bpIdentityPoolId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'BulkPublish' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'BulkPublish' with the minimum fields required to make a request.
 --
--- * 'bpIdentityPoolId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-bulkPublish :: Text -- ^ 'bpIdentityPoolId'
-            -> BulkPublish
-bulkPublish p1 = BulkPublish
-    { _bpIdentityPoolId = p1
+-- * 'bpIdentityPoolId'
+bulkPublish
+    :: Text -- ^ 'bpIdentityPoolId'
+    -> BulkPublish
+bulkPublish pIdentityPoolId_ =
+    BulkPublish'
+    { _bpIdentityPoolId = pIdentityPoolId_
     }
 
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
 bpIdentityPoolId :: Lens' BulkPublish Text
-bpIdentityPoolId = lens _bpIdentityPoolId (\s a -> s { _bpIdentityPoolId = a })
+bpIdentityPoolId = lens _bpIdentityPoolId (\ s a -> s{_bpIdentityPoolId = a});
 
-newtype BulkPublishResponse = BulkPublishResponse
-    { _bprIdentityPoolId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest BulkPublish where
+        type Sv BulkPublish = CognitoSync
+        type Rs BulkPublish = BulkPublishResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 BulkPublishResponse' <$>
+                   (x .?> "IdentityPoolId") <*> (pure (fromEnum s)))
 
--- | 'BulkPublishResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'bprIdentityPoolId' @::@ 'Maybe' 'Text'
---
-bulkPublishResponse :: BulkPublishResponse
-bulkPublishResponse = BulkPublishResponse
-    { _bprIdentityPoolId = Nothing
-    }
+instance ToHeaders BulkPublish where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-bprIdentityPoolId :: Lens' BulkPublishResponse (Maybe Text)
-bprIdentityPoolId =
-    lens _bprIdentityPoolId (\s a -> s { _bprIdentityPoolId = a })
+instance ToJSON BulkPublish where
+        toJSON = const (Object mempty)
 
 instance ToPath BulkPublish where
-    toPath BulkPublish{..} = mconcat
-        [ "/identitypools/"
-        , toText _bpIdentityPoolId
-        , "/bulkpublish"
-        ]
+        toPath BulkPublish'{..}
+          = mconcat
+              ["/identitypools/", toBS _bpIdentityPoolId,
+               "/bulkpublish"]
 
 instance ToQuery BulkPublish where
-    toQuery = const mempty
-
-instance ToHeaders BulkPublish
+        toQuery = const mempty
 
-instance ToJSON BulkPublish where
-    toJSON = const (toJSON Empty)
+-- | The output for the BulkPublish operation.
+--
+-- /See:/ 'bulkPublishResponse' smart constructor.
+data BulkPublishResponse = BulkPublishResponse'
+    { _bprsIdentityPoolId :: !(Maybe Text)
+    , _bprsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest BulkPublish where
-    type Sv BulkPublish = CognitoSync
-    type Rs BulkPublish = BulkPublishResponse
+-- | Creates a value of 'BulkPublishResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bprsIdentityPoolId'
+--
+-- * 'bprsStatus'
+bulkPublishResponse
+    :: Int -- ^ 'bprsStatus'
+    -> BulkPublishResponse
+bulkPublishResponse pStatus_ =
+    BulkPublishResponse'
+    { _bprsIdentityPoolId = Nothing
+    , _bprsStatus = pStatus_
+    }
 
-    request  = post
-    response = jsonResponse
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+bprsIdentityPoolId :: Lens' BulkPublishResponse (Maybe Text)
+bprsIdentityPoolId = lens _bprsIdentityPoolId (\ s a -> s{_bprsIdentityPoolId = a});
 
-instance FromJSON BulkPublishResponse where
-    parseJSON = withObject "BulkPublishResponse" $ \o -> BulkPublishResponse
-        <$> o .:? "IdentityPoolId"
+-- | The response status code.
+bprsStatus :: Lens' BulkPublishResponse Int
+bprsStatus = lens _bprsStatus (\ s a -> s{_bprsStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/DeleteDataset.hs b/gen/Network/AWS/CognitoSync/DeleteDataset.hs
--- a/gen/Network/AWS/CognitoSync/DeleteDataset.hs
+++ b/gen/Network/AWS/CognitoSync/DeleteDataset.hs
@@ -1,153 +1,162 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CognitoSync.DeleteDataset
--- 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 specific dataset. The dataset will be deleted permanently, and
--- the action can't be undone. Datasets that this dataset was merged with will
--- no longer report the merge. Any subsequent operation on this dataset will
--- result in a ResourceNotFoundException.
+-- Deletes the specific dataset. The dataset will be deleted permanently,
+-- and the action can\'t be undone. Datasets that this dataset was merged
+-- with will no longer report the merge. Any subsequent operation on this
+-- dataset will result in a ResourceNotFoundException.
 --
--- DeleteDataset can be called with temporary user credentials provided by
+-- This API can be called with temporary user credentials provided by
 -- Cognito Identity or with developer credentials.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_DeleteDataset.html>
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_DeleteDataset.html AWS API Reference> for DeleteDataset.
 module Network.AWS.CognitoSync.DeleteDataset
     (
-    -- * Request
-      DeleteDataset
-    -- ** Request constructor
-    , deleteDataset
-    -- ** Request lenses
-    , dd1DatasetName
-    , dd1IdentityId
-    , dd1IdentityPoolId
+    -- * Creating a Request
+      deleteDataset
+    , DeleteDataset
+    -- * Request Lenses
+    , delIdentityPoolId
+    , delIdentityId
+    , delDatasetName
 
-    -- * Response
-    , DeleteDatasetResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteDatasetResponse
-    -- ** Response lenses
-    , ddr1Dataset
+    , DeleteDatasetResponse
+    -- * Response Lenses
+    , drsDataset
+    , drsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
-
-data DeleteDataset = DeleteDataset
-    { _dd1DatasetName    :: Text
-    , _dd1IdentityId     :: Text
-    , _dd1IdentityPoolId :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeleteDataset' constructor.
+-- | A request to delete the specific dataset.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deleteDataset' smart constructor.
+data DeleteDataset = DeleteDataset'
+    { _delIdentityPoolId :: !Text
+    , _delIdentityId     :: !Text
+    , _delDatasetName    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDataset' with the minimum fields required to make a request.
 --
--- * 'dd1DatasetName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dd1IdentityId' @::@ 'Text'
+-- * 'delIdentityPoolId'
 --
--- * 'dd1IdentityPoolId' @::@ 'Text'
+-- * 'delIdentityId'
 --
-deleteDataset :: Text -- ^ 'dd1IdentityPoolId'
-              -> Text -- ^ 'dd1IdentityId'
-              -> Text -- ^ 'dd1DatasetName'
-              -> DeleteDataset
-deleteDataset p1 p2 p3 = DeleteDataset
-    { _dd1IdentityPoolId = p1
-    , _dd1IdentityId     = p2
-    , _dd1DatasetName    = p3
+-- * 'delDatasetName'
+deleteDataset
+    :: Text -- ^ 'delIdentityPoolId'
+    -> Text -- ^ 'delIdentityId'
+    -> Text -- ^ 'delDatasetName'
+    -> DeleteDataset
+deleteDataset pIdentityPoolId_ pIdentityId_ pDatasetName_ =
+    DeleteDataset'
+    { _delIdentityPoolId = pIdentityPoolId_
+    , _delIdentityId = pIdentityId_
+    , _delDatasetName = pDatasetName_
     }
 
--- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_'
--- (underscore), '-' (dash), and '.' (dot).
-dd1DatasetName :: Lens' DeleteDataset Text
-dd1DatasetName = lens _dd1DatasetName (\s a -> s { _dd1DatasetName = a })
-
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-dd1IdentityId :: Lens' DeleteDataset Text
-dd1IdentityId = lens _dd1IdentityId (\s a -> s { _dd1IdentityId = a })
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+delIdentityPoolId :: Lens' DeleteDataset Text
+delIdentityPoolId = lens _delIdentityPoolId (\ s a -> s{_delIdentityPoolId = a});
 
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-dd1IdentityPoolId :: Lens' DeleteDataset Text
-dd1IdentityPoolId =
-    lens _dd1IdentityPoolId (\s a -> s { _dd1IdentityPoolId = a })
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+delIdentityId :: Lens' DeleteDataset Text
+delIdentityId = lens _delIdentityId (\ s a -> s{_delIdentityId = a});
 
-newtype DeleteDatasetResponse = DeleteDatasetResponse
-    { _ddr1Dataset :: Maybe Dataset
-    } deriving (Eq, Read, Show)
+-- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+delDatasetName :: Lens' DeleteDataset Text
+delDatasetName = lens _delDatasetName (\ s a -> s{_delDatasetName = a});
 
--- | 'DeleteDatasetResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddr1Dataset' @::@ 'Maybe' 'Dataset'
---
-deleteDatasetResponse :: DeleteDatasetResponse
-deleteDatasetResponse = DeleteDatasetResponse
-    { _ddr1Dataset = Nothing
-    }
+instance AWSRequest DeleteDataset where
+        type Sv DeleteDataset = CognitoSync
+        type Rs DeleteDataset = DeleteDatasetResponse
+        request = delete
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteDatasetResponse' <$>
+                   (x .?> "Dataset") <*> (pure (fromEnum s)))
 
--- | A collection of data for an identity pool. An identity pool can have multiple
--- datasets. A dataset is per identity and can be general or associated with a
--- particular entity in an application (like a saved game). Datasets are
--- automatically created if they don't exist. Data is synced by dataset, and a
--- dataset can hold up to 1MB of key-value pairs.
-ddr1Dataset :: Lens' DeleteDatasetResponse (Maybe Dataset)
-ddr1Dataset = lens _ddr1Dataset (\s a -> s { _ddr1Dataset = a })
+instance ToHeaders DeleteDataset where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToPath DeleteDataset where
-    toPath DeleteDataset{..} = mconcat
-        [ "/identitypools/"
-        , toText _dd1IdentityPoolId
-        , "/identities/"
-        , toText _dd1IdentityId
-        , "/datasets/"
-        , toText _dd1DatasetName
-        ]
+        toPath DeleteDataset'{..}
+          = mconcat
+              ["/identitypools/", toBS _delIdentityPoolId,
+               "/identities/", toBS _delIdentityId, "/datasets/",
+               toBS _delDatasetName]
 
 instance ToQuery DeleteDataset where
-    toQuery = const mempty
-
-instance ToHeaders DeleteDataset
+        toQuery = const mempty
 
-instance ToJSON DeleteDataset where
-    toJSON = const (toJSON Empty)
+-- | Response to a successful DeleteDataset request.
+--
+-- /See:/ 'deleteDatasetResponse' smart constructor.
+data DeleteDatasetResponse = DeleteDatasetResponse'
+    { _drsDataset :: !(Maybe Dataset)
+    , _drsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteDataset where
-    type Sv DeleteDataset = CognitoSync
-    type Rs DeleteDataset = DeleteDatasetResponse
+-- | Creates a value of 'DeleteDatasetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsDataset'
+--
+-- * 'drsStatus'
+deleteDatasetResponse
+    :: Int -- ^ 'drsStatus'
+    -> DeleteDatasetResponse
+deleteDatasetResponse pStatus_ =
+    DeleteDatasetResponse'
+    { _drsDataset = Nothing
+    , _drsStatus = pStatus_
+    }
 
-    request  = delete
-    response = jsonResponse
+-- | A collection of data for an identity pool. An identity pool can have
+-- multiple datasets. A dataset is per identity and can be general or
+-- associated with a particular entity in an application (like a saved
+-- game). Datasets are automatically created if they don\'t exist. Data is
+-- synced by dataset, and a dataset can hold up to 1MB of key-value pairs.
+drsDataset :: Lens' DeleteDatasetResponse (Maybe Dataset)
+drsDataset = lens _drsDataset (\ s a -> s{_drsDataset = a});
 
-instance FromJSON DeleteDatasetResponse where
-    parseJSON = withObject "DeleteDatasetResponse" $ \o -> DeleteDatasetResponse
-        <$> o .:? "Dataset"
+-- | The response status code.
+drsStatus :: Lens' DeleteDatasetResponse Int
+drsStatus = lens _drsStatus (\ s a -> s{_drsStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/DescribeDataset.hs b/gen/Network/AWS/CognitoSync/DescribeDataset.hs
--- a/gen/Network/AWS/CognitoSync/DescribeDataset.hs
+++ b/gen/Network/AWS/CognitoSync/DescribeDataset.hs
@@ -1,153 +1,164 @@
-{-# 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.CognitoSync.DescribeDataset
--- 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.
-
--- | Gets meta data about a dataset by identity and dataset name. With Amazon
+-- Gets meta data about a dataset by identity and dataset name. With Amazon
 -- Cognito Sync, each identity has access only to its own data. Thus, the
--- credentials used to make this API call need to have access to the identity
--- data.
+-- credentials used to make this API call need to have access to the
+-- identity data.
 --
--- DescribeDataset can be called with temporary user credentials provided by
+-- This API can be called with temporary user credentials provided by
 -- Cognito Identity or with developer credentials. You should use Cognito
 -- Identity credentials to make this API call.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_DescribeDataset.html>
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_DescribeDataset.html AWS API Reference> for DescribeDataset.
 module Network.AWS.CognitoSync.DescribeDataset
     (
-    -- * Request
-      DescribeDataset
-    -- ** Request constructor
-    , describeDataset
-    -- ** Request lenses
-    , ddDatasetName
-    , ddIdentityId
+    -- * Creating a Request
+      describeDataset
+    , DescribeDataset
+    -- * Request Lenses
     , ddIdentityPoolId
+    , ddIdentityId
+    , ddDatasetName
 
-    -- * Response
-    , DescribeDatasetResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeDatasetResponse
-    -- ** Response lenses
-    , ddrDataset
+    , DescribeDatasetResponse
+    -- * Response Lenses
+    , ddrsDataset
+    , ddrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
-
-data DescribeDataset = DescribeDataset
-    { _ddDatasetName    :: Text
-    , _ddIdentityId     :: Text
-    , _ddIdentityPoolId :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeDataset' constructor.
+-- | A request for meta data about a dataset (creation date, number of
+-- records, size) by owner and dataset name.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeDataset' smart constructor.
+data DescribeDataset = DescribeDataset'
+    { _ddIdentityPoolId :: !Text
+    , _ddIdentityId     :: !Text
+    , _ddDatasetName    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeDataset' with the minimum fields required to make a request.
 --
--- * 'ddDatasetName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddIdentityId' @::@ 'Text'
+-- * 'ddIdentityPoolId'
 --
--- * 'ddIdentityPoolId' @::@ 'Text'
+-- * 'ddIdentityId'
 --
-describeDataset :: Text -- ^ 'ddIdentityPoolId'
-                -> Text -- ^ 'ddIdentityId'
-                -> Text -- ^ 'ddDatasetName'
-                -> DescribeDataset
-describeDataset p1 p2 p3 = DescribeDataset
-    { _ddIdentityPoolId = p1
-    , _ddIdentityId     = p2
-    , _ddDatasetName    = p3
+-- * 'ddDatasetName'
+describeDataset
+    :: Text -- ^ 'ddIdentityPoolId'
+    -> Text -- ^ 'ddIdentityId'
+    -> Text -- ^ 'ddDatasetName'
+    -> DescribeDataset
+describeDataset pIdentityPoolId_ pIdentityId_ pDatasetName_ =
+    DescribeDataset'
+    { _ddIdentityPoolId = pIdentityPoolId_
+    , _ddIdentityId = pIdentityId_
+    , _ddDatasetName = pDatasetName_
     }
 
--- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_'
--- (underscore), '-' (dash), and '.' (dot).
-ddDatasetName :: Lens' DescribeDataset Text
-ddDatasetName = lens _ddDatasetName (\s a -> s { _ddDatasetName = a })
-
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-ddIdentityId :: Lens' DescribeDataset Text
-ddIdentityId = lens _ddIdentityId (\s a -> s { _ddIdentityId = a })
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+ddIdentityPoolId :: Lens' DescribeDataset Text
+ddIdentityPoolId = lens _ddIdentityPoolId (\ s a -> s{_ddIdentityPoolId = a});
 
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-ddIdentityPoolId :: Lens' DescribeDataset Text
-ddIdentityPoolId = lens _ddIdentityPoolId (\s a -> s { _ddIdentityPoolId = a })
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+ddIdentityId :: Lens' DescribeDataset Text
+ddIdentityId = lens _ddIdentityId (\ s a -> s{_ddIdentityId = a});
 
-newtype DescribeDatasetResponse = DescribeDatasetResponse
-    { _ddrDataset :: Maybe Dataset
-    } deriving (Eq, Read, Show)
+-- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+ddDatasetName :: Lens' DescribeDataset Text
+ddDatasetName = lens _ddDatasetName (\ s a -> s{_ddDatasetName = a});
 
--- | 'DescribeDatasetResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddrDataset' @::@ 'Maybe' 'Dataset'
---
-describeDatasetResponse :: DescribeDatasetResponse
-describeDatasetResponse = DescribeDatasetResponse
-    { _ddrDataset = Nothing
-    }
+instance AWSRequest DescribeDataset where
+        type Sv DescribeDataset = CognitoSync
+        type Rs DescribeDataset = DescribeDatasetResponse
+        request = get
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeDatasetResponse' <$>
+                   (x .?> "Dataset") <*> (pure (fromEnum s)))
 
--- | Meta data for a collection of data for an identity. An identity can have
--- multiple datasets. A dataset can be general or associated with a particular
--- entity in an application (like a saved game). Datasets are automatically
--- created if they don't exist. Data is synced by dataset, and a dataset can
--- hold up to 1MB of key-value pairs.
-ddrDataset :: Lens' DescribeDatasetResponse (Maybe Dataset)
-ddrDataset = lens _ddrDataset (\s a -> s { _ddrDataset = a })
+instance ToHeaders DescribeDataset where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToPath DescribeDataset where
-    toPath DescribeDataset{..} = mconcat
-        [ "/identitypools/"
-        , toText _ddIdentityPoolId
-        , "/identities/"
-        , toText _ddIdentityId
-        , "/datasets/"
-        , toText _ddDatasetName
-        ]
+        toPath DescribeDataset'{..}
+          = mconcat
+              ["/identitypools/", toBS _ddIdentityPoolId,
+               "/identities/", toBS _ddIdentityId, "/datasets/",
+               toBS _ddDatasetName]
 
 instance ToQuery DescribeDataset where
-    toQuery = const mempty
-
-instance ToHeaders DescribeDataset
+        toQuery = const mempty
 
-instance ToJSON DescribeDataset where
-    toJSON = const (toJSON Empty)
+-- | Response to a successful DescribeDataset request.
+--
+-- /See:/ 'describeDatasetResponse' smart constructor.
+data DescribeDatasetResponse = DescribeDatasetResponse'
+    { _ddrsDataset :: !(Maybe Dataset)
+    , _ddrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeDataset where
-    type Sv DescribeDataset = CognitoSync
-    type Rs DescribeDataset = DescribeDatasetResponse
+-- | Creates a value of 'DescribeDatasetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddrsDataset'
+--
+-- * 'ddrsStatus'
+describeDatasetResponse
+    :: Int -- ^ 'ddrsStatus'
+    -> DescribeDatasetResponse
+describeDatasetResponse pStatus_ =
+    DescribeDatasetResponse'
+    { _ddrsDataset = Nothing
+    , _ddrsStatus = pStatus_
+    }
 
-    request  = get
-    response = jsonResponse
+-- | Meta data for a collection of data for an identity. An identity can have
+-- multiple datasets. A dataset can be general or associated with a
+-- particular entity in an application (like a saved game). Datasets are
+-- automatically created if they don\'t exist. Data is synced by dataset,
+-- and a dataset can hold up to 1MB of key-value pairs.
+ddrsDataset :: Lens' DescribeDatasetResponse (Maybe Dataset)
+ddrsDataset = lens _ddrsDataset (\ s a -> s{_ddrsDataset = a});
 
-instance FromJSON DescribeDatasetResponse where
-    parseJSON = withObject "DescribeDatasetResponse" $ \o -> DescribeDatasetResponse
-        <$> o .:? "Dataset"
+-- | The response status code.
+ddrsStatus :: Lens' DescribeDatasetResponse Int
+ddrsStatus = lens _ddrsStatus (\ s a -> s{_ddrsStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/DescribeIdentityPoolUsage.hs b/gen/Network/AWS/CognitoSync/DescribeIdentityPoolUsage.hs
--- a/gen/Network/AWS/CognitoSync/DescribeIdentityPoolUsage.hs
+++ b/gen/Network/AWS/CognitoSync/DescribeIdentityPoolUsage.hs
@@ -1,122 +1,133 @@
-{-# 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.CognitoSync.DescribeIdentityPoolUsage
--- 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.
-
--- | Gets usage details (for example, data storage) about a particular identity
--- pool.
+-- Gets usage details (for example, data storage) about a particular
+-- identity pool.
 --
--- DescribeIdentityPoolUsage can only be called with developer credentials. You
--- cannot make this API call with the temporary user credentials provided by
--- Cognito Identity.
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_DescribeIdentityPoolUsage.html>
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_DescribeIdentityPoolUsage.html AWS API Reference> for DescribeIdentityPoolUsage.
 module Network.AWS.CognitoSync.DescribeIdentityPoolUsage
     (
-    -- * Request
-      DescribeIdentityPoolUsage
-    -- ** Request constructor
-    , describeIdentityPoolUsage
-    -- ** Request lenses
+    -- * Creating a Request
+      describeIdentityPoolUsage
+    , DescribeIdentityPoolUsage
+    -- * Request Lenses
     , dipuIdentityPoolId
 
-    -- * Response
-    , DescribeIdentityPoolUsageResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeIdentityPoolUsageResponse
-    -- ** Response lenses
-    , dipurIdentityPoolUsage
+    , DescribeIdentityPoolUsageResponse
+    -- * Response Lenses
+    , dipursIdentityPoolUsage
+    , dipursStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DescribeIdentityPoolUsage = DescribeIdentityPoolUsage
+-- | A request for usage information about the identity pool.
+--
+-- /See:/ 'describeIdentityPoolUsage' smart constructor.
+newtype DescribeIdentityPoolUsage = DescribeIdentityPoolUsage'
     { _dipuIdentityPoolId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeIdentityPoolUsage' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeIdentityPoolUsage' with the minimum fields required to make a request.
 --
--- * 'dipuIdentityPoolId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeIdentityPoolUsage :: Text -- ^ 'dipuIdentityPoolId'
-                          -> DescribeIdentityPoolUsage
-describeIdentityPoolUsage p1 = DescribeIdentityPoolUsage
-    { _dipuIdentityPoolId = p1
+-- * 'dipuIdentityPoolId'
+describeIdentityPoolUsage
+    :: Text -- ^ 'dipuIdentityPoolId'
+    -> DescribeIdentityPoolUsage
+describeIdentityPoolUsage pIdentityPoolId_ =
+    DescribeIdentityPoolUsage'
+    { _dipuIdentityPoolId = pIdentityPoolId_
     }
 
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
 dipuIdentityPoolId :: Lens' DescribeIdentityPoolUsage Text
-dipuIdentityPoolId =
-    lens _dipuIdentityPoolId (\s a -> s { _dipuIdentityPoolId = a })
-
-newtype DescribeIdentityPoolUsageResponse = DescribeIdentityPoolUsageResponse
-    { _dipurIdentityPoolUsage :: Maybe IdentityPoolUsage
-    } deriving (Eq, Read, Show)
+dipuIdentityPoolId = lens _dipuIdentityPoolId (\ s a -> s{_dipuIdentityPoolId = a});
 
--- | 'DescribeIdentityPoolUsageResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dipurIdentityPoolUsage' @::@ 'Maybe' 'IdentityPoolUsage'
---
-describeIdentityPoolUsageResponse :: DescribeIdentityPoolUsageResponse
-describeIdentityPoolUsageResponse = DescribeIdentityPoolUsageResponse
-    { _dipurIdentityPoolUsage = Nothing
-    }
+instance AWSRequest DescribeIdentityPoolUsage where
+        type Sv DescribeIdentityPoolUsage = CognitoSync
+        type Rs DescribeIdentityPoolUsage =
+             DescribeIdentityPoolUsageResponse
+        request = get
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeIdentityPoolUsageResponse' <$>
+                   (x .?> "IdentityPoolUsage") <*> (pure (fromEnum s)))
 
--- | Information about the usage of the identity pool.
-dipurIdentityPoolUsage :: Lens' DescribeIdentityPoolUsageResponse (Maybe IdentityPoolUsage)
-dipurIdentityPoolUsage =
-    lens _dipurIdentityPoolUsage (\s a -> s { _dipurIdentityPoolUsage = a })
+instance ToHeaders DescribeIdentityPoolUsage where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToPath DescribeIdentityPoolUsage where
-    toPath DescribeIdentityPoolUsage{..} = mconcat
-        [ "/identitypools/"
-        , toText _dipuIdentityPoolId
-        ]
+        toPath DescribeIdentityPoolUsage'{..}
+          = mconcat
+              ["/identitypools/", toBS _dipuIdentityPoolId]
 
 instance ToQuery DescribeIdentityPoolUsage where
-    toQuery = const mempty
-
-instance ToHeaders DescribeIdentityPoolUsage
+        toQuery = const mempty
 
-instance ToJSON DescribeIdentityPoolUsage where
-    toJSON = const (toJSON Empty)
+-- | Response to a successful DescribeIdentityPoolUsage request.
+--
+-- /See:/ 'describeIdentityPoolUsageResponse' smart constructor.
+data DescribeIdentityPoolUsageResponse = DescribeIdentityPoolUsageResponse'
+    { _dipursIdentityPoolUsage :: !(Maybe IdentityPoolUsage)
+    , _dipursStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeIdentityPoolUsage where
-    type Sv DescribeIdentityPoolUsage = CognitoSync
-    type Rs DescribeIdentityPoolUsage = DescribeIdentityPoolUsageResponse
+-- | Creates a value of 'DescribeIdentityPoolUsageResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dipursIdentityPoolUsage'
+--
+-- * 'dipursStatus'
+describeIdentityPoolUsageResponse
+    :: Int -- ^ 'dipursStatus'
+    -> DescribeIdentityPoolUsageResponse
+describeIdentityPoolUsageResponse pStatus_ =
+    DescribeIdentityPoolUsageResponse'
+    { _dipursIdentityPoolUsage = Nothing
+    , _dipursStatus = pStatus_
+    }
 
-    request  = get
-    response = jsonResponse
+-- | Information about the usage of the identity pool.
+dipursIdentityPoolUsage :: Lens' DescribeIdentityPoolUsageResponse (Maybe IdentityPoolUsage)
+dipursIdentityPoolUsage = lens _dipursIdentityPoolUsage (\ s a -> s{_dipursIdentityPoolUsage = a});
 
-instance FromJSON DescribeIdentityPoolUsageResponse where
-    parseJSON = withObject "DescribeIdentityPoolUsageResponse" $ \o -> DescribeIdentityPoolUsageResponse
-        <$> o .:? "IdentityPoolUsage"
+-- | The response status code.
+dipursStatus :: Lens' DescribeIdentityPoolUsageResponse Int
+dipursStatus = lens _dipursStatus (\ s a -> s{_dipursStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/DescribeIdentityUsage.hs b/gen/Network/AWS/CognitoSync/DescribeIdentityUsage.hs
--- a/gen/Network/AWS/CognitoSync/DescribeIdentityUsage.hs
+++ b/gen/Network/AWS/CognitoSync/DescribeIdentityUsage.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.CognitoSync.DescribeIdentityUsage
--- 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.
-
--- | Gets usage information for an identity, including number of datasets and data
--- usage.
+-- Gets usage information for an identity, including number of datasets and
+-- data usage.
 --
--- DescribeIdentityUsage can be called with temporary user credentials provided
--- by Cognito Identity or with developer credentials.
+-- This API can be called with temporary user credentials provided by
+-- Cognito Identity or with developer credentials.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_DescribeIdentityUsage.html>
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_DescribeIdentityUsage.html AWS API Reference> for DescribeIdentityUsage.
 module Network.AWS.CognitoSync.DescribeIdentityUsage
     (
-    -- * Request
-      DescribeIdentityUsage
-    -- ** Request constructor
-    , describeIdentityUsage
-    -- ** Request lenses
-    , diuIdentityId
+    -- * Creating a Request
+      describeIdentityUsage
+    , DescribeIdentityUsage
+    -- * Request Lenses
     , diuIdentityPoolId
+    , diuIdentityId
 
-    -- * Response
-    , DescribeIdentityUsageResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeIdentityUsageResponse
-    -- ** Response lenses
-    , diurIdentityUsage
+    , DescribeIdentityUsageResponse
+    -- * Response Lenses
+    , diursIdentityUsage
+    , diursStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
-
-data DescribeIdentityUsage = DescribeIdentityUsage
-    { _diuIdentityId     :: Text
-    , _diuIdentityPoolId :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeIdentityUsage' constructor.
+-- | A request for information about the usage of an identity pool.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeIdentityUsage' smart constructor.
+data DescribeIdentityUsage = DescribeIdentityUsage'
+    { _diuIdentityPoolId :: !Text
+    , _diuIdentityId     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeIdentityUsage' with the minimum fields required to make a request.
 --
--- * 'diuIdentityId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'diuIdentityPoolId' @::@ 'Text'
+-- * 'diuIdentityPoolId'
 --
-describeIdentityUsage :: Text -- ^ 'diuIdentityPoolId'
-                      -> Text -- ^ 'diuIdentityId'
-                      -> DescribeIdentityUsage
-describeIdentityUsage p1 p2 = DescribeIdentityUsage
-    { _diuIdentityPoolId = p1
-    , _diuIdentityId     = p2
+-- * 'diuIdentityId'
+describeIdentityUsage
+    :: Text -- ^ 'diuIdentityPoolId'
+    -> Text -- ^ 'diuIdentityId'
+    -> DescribeIdentityUsage
+describeIdentityUsage pIdentityPoolId_ pIdentityId_ =
+    DescribeIdentityUsage'
+    { _diuIdentityPoolId = pIdentityPoolId_
+    , _diuIdentityId = pIdentityId_
     }
 
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-diuIdentityId :: Lens' DescribeIdentityUsage Text
-diuIdentityId = lens _diuIdentityId (\s a -> s { _diuIdentityId = a })
-
--- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
 diuIdentityPoolId :: Lens' DescribeIdentityUsage Text
-diuIdentityPoolId =
-    lens _diuIdentityPoolId (\s a -> s { _diuIdentityPoolId = a })
+diuIdentityPoolId = lens _diuIdentityPoolId (\ s a -> s{_diuIdentityPoolId = a});
 
-newtype DescribeIdentityUsageResponse = DescribeIdentityUsageResponse
-    { _diurIdentityUsage :: Maybe IdentityUsage
-    } deriving (Eq, Read, Show)
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+diuIdentityId :: Lens' DescribeIdentityUsage Text
+diuIdentityId = lens _diuIdentityId (\ s a -> s{_diuIdentityId = a});
 
--- | 'DescribeIdentityUsageResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'diurIdentityUsage' @::@ 'Maybe' 'IdentityUsage'
---
-describeIdentityUsageResponse :: DescribeIdentityUsageResponse
-describeIdentityUsageResponse = DescribeIdentityUsageResponse
-    { _diurIdentityUsage = Nothing
-    }
+instance AWSRequest DescribeIdentityUsage where
+        type Sv DescribeIdentityUsage = CognitoSync
+        type Rs DescribeIdentityUsage =
+             DescribeIdentityUsageResponse
+        request = get
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeIdentityUsageResponse' <$>
+                   (x .?> "IdentityUsage") <*> (pure (fromEnum s)))
 
--- | Usage information for the identity.
-diurIdentityUsage :: Lens' DescribeIdentityUsageResponse (Maybe IdentityUsage)
-diurIdentityUsage =
-    lens _diurIdentityUsage (\s a -> s { _diurIdentityUsage = a })
+instance ToHeaders DescribeIdentityUsage where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToPath DescribeIdentityUsage where
-    toPath DescribeIdentityUsage{..} = mconcat
-        [ "/identitypools/"
-        , toText _diuIdentityPoolId
-        , "/identities/"
-        , toText _diuIdentityId
-        ]
+        toPath DescribeIdentityUsage'{..}
+          = mconcat
+              ["/identitypools/", toBS _diuIdentityPoolId,
+               "/identities/", toBS _diuIdentityId]
 
 instance ToQuery DescribeIdentityUsage where
-    toQuery = const mempty
-
-instance ToHeaders DescribeIdentityUsage
+        toQuery = const mempty
 
-instance ToJSON DescribeIdentityUsage where
-    toJSON = const (toJSON Empty)
+-- | The response to a successful DescribeIdentityUsage request.
+--
+-- /See:/ 'describeIdentityUsageResponse' smart constructor.
+data DescribeIdentityUsageResponse = DescribeIdentityUsageResponse'
+    { _diursIdentityUsage :: !(Maybe IdentityUsage)
+    , _diursStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeIdentityUsage where
-    type Sv DescribeIdentityUsage = CognitoSync
-    type Rs DescribeIdentityUsage = DescribeIdentityUsageResponse
+-- | Creates a value of 'DescribeIdentityUsageResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'diursIdentityUsage'
+--
+-- * 'diursStatus'
+describeIdentityUsageResponse
+    :: Int -- ^ 'diursStatus'
+    -> DescribeIdentityUsageResponse
+describeIdentityUsageResponse pStatus_ =
+    DescribeIdentityUsageResponse'
+    { _diursIdentityUsage = Nothing
+    , _diursStatus = pStatus_
+    }
 
-    request  = get
-    response = jsonResponse
+-- | Usage information for the identity.
+diursIdentityUsage :: Lens' DescribeIdentityUsageResponse (Maybe IdentityUsage)
+diursIdentityUsage = lens _diursIdentityUsage (\ s a -> s{_diursIdentityUsage = a});
 
-instance FromJSON DescribeIdentityUsageResponse where
-    parseJSON = withObject "DescribeIdentityUsageResponse" $ \o -> DescribeIdentityUsageResponse
-        <$> o .:? "IdentityUsage"
+-- | The response status code.
+diursStatus :: Lens' DescribeIdentityUsageResponse Int
+diursStatus = lens _diursStatus (\ s a -> s{_diursStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/GetBulkPublishDetails.hs b/gen/Network/AWS/CognitoSync/GetBulkPublishDetails.hs
--- a/gen/Network/AWS/CognitoSync/GetBulkPublishDetails.hs
+++ b/gen/Network/AWS/CognitoSync/GetBulkPublishDetails.hs
@@ -1,129 +1,181 @@
-{-# 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.CognitoSync.GetBulkPublishDetails
--- 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.
-
--- | Get the status of the last BulkPublish operation for an identity pool.
+-- Get the status of the last BulkPublish operation for an identity pool.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_GetBulkPublishDetails.html>
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_GetBulkPublishDetails.html AWS API Reference> for GetBulkPublishDetails.
 module Network.AWS.CognitoSync.GetBulkPublishDetails
     (
-    -- * Request
-      GetBulkPublishDetails
-    -- ** Request constructor
-    , getBulkPublishDetails
-    -- ** Request lenses
+    -- * Creating a Request
+      getBulkPublishDetails
+    , GetBulkPublishDetails
+    -- * Request Lenses
     , gbpdIdentityPoolId
 
-    -- * Response
-    , GetBulkPublishDetailsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getBulkPublishDetailsResponse
-    -- ** Response lenses
-    , gbpdrBulkPublishCompleteTime
-    , gbpdrBulkPublishStartTime
-    , gbpdrBulkPublishStatus
-    , gbpdrFailureMessage
-    , gbpdrIdentityPoolId
+    , GetBulkPublishDetailsResponse
+    -- * Response Lenses
+    , gbpdrsBulkPublishStartTime
+    , gbpdrsIdentityPoolId
+    , gbpdrsBulkPublishCompleteTime
+    , gbpdrsFailureMessage
+    , gbpdrsBulkPublishStatus
+    , gbpdrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype GetBulkPublishDetails = GetBulkPublishDetails
+-- | The input for the GetBulkPublishDetails operation.
+--
+-- /See:/ 'getBulkPublishDetails' smart constructor.
+newtype GetBulkPublishDetails = GetBulkPublishDetails'
     { _gbpdIdentityPoolId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'GetBulkPublishDetails' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'GetBulkPublishDetails' with the minimum fields required to make a request.
 --
--- * 'gbpdIdentityPoolId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-getBulkPublishDetails :: Text -- ^ 'gbpdIdentityPoolId'
-                      -> GetBulkPublishDetails
-getBulkPublishDetails p1 = GetBulkPublishDetails
-    { _gbpdIdentityPoolId = p1
+-- * 'gbpdIdentityPoolId'
+getBulkPublishDetails
+    :: Text -- ^ 'gbpdIdentityPoolId'
+    -> GetBulkPublishDetails
+getBulkPublishDetails pIdentityPoolId_ =
+    GetBulkPublishDetails'
+    { _gbpdIdentityPoolId = pIdentityPoolId_
     }
 
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
 gbpdIdentityPoolId :: Lens' GetBulkPublishDetails Text
-gbpdIdentityPoolId =
-    lens _gbpdIdentityPoolId (\s a -> s { _gbpdIdentityPoolId = a })
+gbpdIdentityPoolId = lens _gbpdIdentityPoolId (\ s a -> s{_gbpdIdentityPoolId = a});
 
-data GetBulkPublishDetailsResponse = GetBulkPublishDetailsResponse
-    { _gbpdrBulkPublishCompleteTime :: Maybe POSIX
-    , _gbpdrBulkPublishStartTime    :: Maybe POSIX
-    , _gbpdrBulkPublishStatus       :: Maybe BulkPublishStatus
-    , _gbpdrFailureMessage          :: Maybe Text
-    , _gbpdrIdentityPoolId          :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance AWSRequest GetBulkPublishDetails where
+        type Sv GetBulkPublishDetails = CognitoSync
+        type Rs GetBulkPublishDetails =
+             GetBulkPublishDetailsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetBulkPublishDetailsResponse' <$>
+                   (x .?> "BulkPublishStartTime") <*>
+                     (x .?> "IdentityPoolId")
+                     <*> (x .?> "BulkPublishCompleteTime")
+                     <*> (x .?> "FailureMessage")
+                     <*> (x .?> "BulkPublishStatus")
+                     <*> (pure (fromEnum s)))
 
--- | 'GetBulkPublishDetailsResponse' constructor.
+instance ToHeaders GetBulkPublishDetails where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON GetBulkPublishDetails where
+        toJSON = const (Object mempty)
+
+instance ToPath GetBulkPublishDetails where
+        toPath GetBulkPublishDetails'{..}
+          = mconcat
+              ["/identitypools/", toBS _gbpdIdentityPoolId,
+               "/getBulkPublishDetails"]
+
+instance ToQuery GetBulkPublishDetails where
+        toQuery = const mempty
+
+-- | The output for the GetBulkPublishDetails operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getBulkPublishDetailsResponse' smart constructor.
+data GetBulkPublishDetailsResponse = GetBulkPublishDetailsResponse'
+    { _gbpdrsBulkPublishStartTime    :: !(Maybe POSIX)
+    , _gbpdrsIdentityPoolId          :: !(Maybe Text)
+    , _gbpdrsBulkPublishCompleteTime :: !(Maybe POSIX)
+    , _gbpdrsFailureMessage          :: !(Maybe Text)
+    , _gbpdrsBulkPublishStatus       :: !(Maybe BulkPublishStatus)
+    , _gbpdrsStatus                  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetBulkPublishDetailsResponse' with the minimum fields required to make a request.
 --
--- * 'gbpdrBulkPublishCompleteTime' @::@ 'Maybe' 'UTCTime'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gbpdrBulkPublishStartTime' @::@ 'Maybe' 'UTCTime'
+-- * 'gbpdrsBulkPublishStartTime'
 --
--- * 'gbpdrBulkPublishStatus' @::@ 'Maybe' 'BulkPublishStatus'
+-- * 'gbpdrsIdentityPoolId'
 --
--- * 'gbpdrFailureMessage' @::@ 'Maybe' 'Text'
+-- * 'gbpdrsBulkPublishCompleteTime'
 --
--- * 'gbpdrIdentityPoolId' @::@ 'Maybe' 'Text'
+-- * 'gbpdrsFailureMessage'
 --
-getBulkPublishDetailsResponse :: GetBulkPublishDetailsResponse
-getBulkPublishDetailsResponse = GetBulkPublishDetailsResponse
-    { _gbpdrIdentityPoolId          = Nothing
-    , _gbpdrBulkPublishStartTime    = Nothing
-    , _gbpdrBulkPublishCompleteTime = Nothing
-    , _gbpdrBulkPublishStatus       = Nothing
-    , _gbpdrFailureMessage          = Nothing
+-- * 'gbpdrsBulkPublishStatus'
+--
+-- * 'gbpdrsStatus'
+getBulkPublishDetailsResponse
+    :: Int -- ^ 'gbpdrsStatus'
+    -> GetBulkPublishDetailsResponse
+getBulkPublishDetailsResponse pStatus_ =
+    GetBulkPublishDetailsResponse'
+    { _gbpdrsBulkPublishStartTime = Nothing
+    , _gbpdrsIdentityPoolId = Nothing
+    , _gbpdrsBulkPublishCompleteTime = Nothing
+    , _gbpdrsFailureMessage = Nothing
+    , _gbpdrsBulkPublishStatus = Nothing
+    , _gbpdrsStatus = pStatus_
     }
 
--- | If BulkPublishStatus is SUCCEEDED, the time the last bulk publish operation
--- completed.
-gbpdrBulkPublishCompleteTime :: Lens' GetBulkPublishDetailsResponse (Maybe UTCTime)
-gbpdrBulkPublishCompleteTime =
-    lens _gbpdrBulkPublishCompleteTime
-        (\s a -> s { _gbpdrBulkPublishCompleteTime = a })
-            . mapping _Time
+-- | The date\/time at which the last bulk publish was initiated.
+gbpdrsBulkPublishStartTime :: Lens' GetBulkPublishDetailsResponse (Maybe UTCTime)
+gbpdrsBulkPublishStartTime = lens _gbpdrsBulkPublishStartTime (\ s a -> s{_gbpdrsBulkPublishStartTime = a}) . mapping _Time;
 
--- | The date/time at which the last bulk publish was initiated.
-gbpdrBulkPublishStartTime :: Lens' GetBulkPublishDetailsResponse (Maybe UTCTime)
-gbpdrBulkPublishStartTime =
-    lens _gbpdrBulkPublishStartTime
-        (\s a -> s { _gbpdrBulkPublishStartTime = a })
-            . mapping _Time
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+gbpdrsIdentityPoolId :: Lens' GetBulkPublishDetailsResponse (Maybe Text)
+gbpdrsIdentityPoolId = lens _gbpdrsIdentityPoolId (\ s a -> s{_gbpdrsIdentityPoolId = a});
 
--- | Status of the last bulk publish operation, valid values are: NOT_STARTED - No
--- bulk publish has been requested for this identity pool
+-- | If BulkPublishStatus is SUCCEEDED, the time the last bulk publish
+-- operation completed.
+gbpdrsBulkPublishCompleteTime :: Lens' GetBulkPublishDetailsResponse (Maybe UTCTime)
+gbpdrsBulkPublishCompleteTime = lens _gbpdrsBulkPublishCompleteTime (\ s a -> s{_gbpdrsBulkPublishCompleteTime = a}) . mapping _Time;
+
+-- | If BulkPublishStatus is FAILED this field will contain the error message
+-- that caused the bulk publish to fail.
+gbpdrsFailureMessage :: Lens' GetBulkPublishDetailsResponse (Maybe Text)
+gbpdrsFailureMessage = lens _gbpdrsFailureMessage (\ s a -> s{_gbpdrsFailureMessage = a});
+
+-- | Status of the last bulk publish operation, valid values are:
 --
+-- NOT_STARTED - No bulk publish has been requested for this identity pool
+--
 -- IN_PROGRESS - Data is being published to the configured stream
 --
 -- SUCCEEDED - All data for the identity pool has been published to the
@@ -131,49 +183,9 @@
 --
 -- FAILED - Some portion of the data has failed to publish, check
 -- FailureMessage for the cause.
-gbpdrBulkPublishStatus :: Lens' GetBulkPublishDetailsResponse (Maybe BulkPublishStatus)
-gbpdrBulkPublishStatus =
-    lens _gbpdrBulkPublishStatus (\s a -> s { _gbpdrBulkPublishStatus = a })
-
--- | If BulkPublishStatus is FAILED this field will contain the error message that
--- caused the bulk publish to fail.
-gbpdrFailureMessage :: Lens' GetBulkPublishDetailsResponse (Maybe Text)
-gbpdrFailureMessage =
-    lens _gbpdrFailureMessage (\s a -> s { _gbpdrFailureMessage = a })
-
--- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-gbpdrIdentityPoolId :: Lens' GetBulkPublishDetailsResponse (Maybe Text)
-gbpdrIdentityPoolId =
-    lens _gbpdrIdentityPoolId (\s a -> s { _gbpdrIdentityPoolId = a })
-
-instance ToPath GetBulkPublishDetails where
-    toPath GetBulkPublishDetails{..} = mconcat
-        [ "/identitypools/"
-        , toText _gbpdIdentityPoolId
-        , "/getBulkPublishDetails"
-        ]
-
-instance ToQuery GetBulkPublishDetails where
-    toQuery = const mempty
-
-instance ToHeaders GetBulkPublishDetails
-
-instance ToJSON GetBulkPublishDetails where
-    toJSON = const (toJSON Empty)
-
-instance AWSRequest GetBulkPublishDetails where
-    type Sv GetBulkPublishDetails = CognitoSync
-    type Rs GetBulkPublishDetails = GetBulkPublishDetailsResponse
-
-    request  = post
-    response = jsonResponse
+gbpdrsBulkPublishStatus :: Lens' GetBulkPublishDetailsResponse (Maybe BulkPublishStatus)
+gbpdrsBulkPublishStatus = lens _gbpdrsBulkPublishStatus (\ s a -> s{_gbpdrsBulkPublishStatus = a});
 
-instance FromJSON GetBulkPublishDetailsResponse where
-    parseJSON = withObject "GetBulkPublishDetailsResponse" $ \o -> GetBulkPublishDetailsResponse
-        <$> o .:? "BulkPublishCompleteTime"
-        <*> o .:? "BulkPublishStartTime"
-        <*> o .:? "BulkPublishStatus"
-        <*> o .:? "FailureMessage"
-        <*> o .:? "IdentityPoolId"
+-- | The response status code.
+gbpdrsStatus :: Lens' GetBulkPublishDetailsResponse Int
+gbpdrsStatus = lens _gbpdrsStatus (\ s a -> s{_gbpdrsStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/GetCognitoEvents.hs b/gen/Network/AWS/CognitoSync/GetCognitoEvents.hs
--- a/gen/Network/AWS/CognitoSync/GetCognitoEvents.hs
+++ b/gen/Network/AWS/CognitoSync/GetCognitoEvents.hs
@@ -1,116 +1,131 @@
-{-# 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.CognitoSync.GetCognitoEvents
--- 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.
-
--- | Gets the events and the corresponding Lambda functions associated with an
--- identity pool
+-- Gets the events and the corresponding Lambda functions associated with
+-- an identity pool.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_GetCognitoEvents.html>
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_GetCognitoEvents.html AWS API Reference> for GetCognitoEvents.
 module Network.AWS.CognitoSync.GetCognitoEvents
     (
-    -- * Request
-      GetCognitoEvents
-    -- ** Request constructor
-    , getCognitoEvents
-    -- ** Request lenses
+    -- * Creating a Request
+      getCognitoEvents
+    , GetCognitoEvents
+    -- * Request Lenses
     , gceIdentityPoolId
 
-    -- * Response
-    , GetCognitoEventsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getCognitoEventsResponse
-    -- ** Response lenses
-    , gcerEvents
+    , GetCognitoEventsResponse
+    -- * Response Lenses
+    , gcersEvents
+    , gcersStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype GetCognitoEvents = GetCognitoEvents
+-- | A request for a list of the configured Cognito Events
+--
+-- /See:/ 'getCognitoEvents' smart constructor.
+newtype GetCognitoEvents = GetCognitoEvents'
     { _gceIdentityPoolId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'GetCognitoEvents' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'GetCognitoEvents' with the minimum fields required to make a request.
 --
--- * 'gceIdentityPoolId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-getCognitoEvents :: Text -- ^ 'gceIdentityPoolId'
-                 -> GetCognitoEvents
-getCognitoEvents p1 = GetCognitoEvents
-    { _gceIdentityPoolId = p1
+-- * 'gceIdentityPoolId'
+getCognitoEvents
+    :: Text -- ^ 'gceIdentityPoolId'
+    -> GetCognitoEvents
+getCognitoEvents pIdentityPoolId_ =
+    GetCognitoEvents'
+    { _gceIdentityPoolId = pIdentityPoolId_
     }
 
 -- | The Cognito Identity Pool ID for the request
 gceIdentityPoolId :: Lens' GetCognitoEvents Text
-gceIdentityPoolId =
-    lens _gceIdentityPoolId (\s a -> s { _gceIdentityPoolId = a })
-
-newtype GetCognitoEventsResponse = GetCognitoEventsResponse
-    { _gcerEvents :: Map Text Text
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+gceIdentityPoolId = lens _gceIdentityPoolId (\ s a -> s{_gceIdentityPoolId = a});
 
--- | 'GetCognitoEventsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'gcerEvents' @::@ 'HashMap' 'Text' 'Text'
---
-getCognitoEventsResponse :: GetCognitoEventsResponse
-getCognitoEventsResponse = GetCognitoEventsResponse
-    { _gcerEvents = mempty
-    }
+instance AWSRequest GetCognitoEvents where
+        type Sv GetCognitoEvents = CognitoSync
+        type Rs GetCognitoEvents = GetCognitoEventsResponse
+        request = get
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetCognitoEventsResponse' <$>
+                   (x .?> "Events" .!@ mempty) <*> (pure (fromEnum s)))
 
--- | The Cognito Events returned from the GetCognitoEvents request
-gcerEvents :: Lens' GetCognitoEventsResponse (HashMap Text Text)
-gcerEvents = lens _gcerEvents (\s a -> s { _gcerEvents = a }) . _Map
+instance ToHeaders GetCognitoEvents where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToPath GetCognitoEvents where
-    toPath GetCognitoEvents{..} = mconcat
-        [ "/identitypools/"
-        , toText _gceIdentityPoolId
-        , "/events"
-        ]
+        toPath GetCognitoEvents'{..}
+          = mconcat
+              ["/identitypools/", toBS _gceIdentityPoolId,
+               "/events"]
 
 instance ToQuery GetCognitoEvents where
-    toQuery = const mempty
-
-instance ToHeaders GetCognitoEvents
+        toQuery = const mempty
 
-instance ToJSON GetCognitoEvents where
-    toJSON = const (toJSON Empty)
+-- | The response from the GetCognitoEvents request
+--
+-- /See:/ 'getCognitoEventsResponse' smart constructor.
+data GetCognitoEventsResponse = GetCognitoEventsResponse'
+    { _gcersEvents :: !(Maybe (Map Text Text))
+    , _gcersStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest GetCognitoEvents where
-    type Sv GetCognitoEvents = CognitoSync
-    type Rs GetCognitoEvents = GetCognitoEventsResponse
+-- | Creates a value of 'GetCognitoEventsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gcersEvents'
+--
+-- * 'gcersStatus'
+getCognitoEventsResponse
+    :: Int -- ^ 'gcersStatus'
+    -> GetCognitoEventsResponse
+getCognitoEventsResponse pStatus_ =
+    GetCognitoEventsResponse'
+    { _gcersEvents = Nothing
+    , _gcersStatus = pStatus_
+    }
 
-    request  = get
-    response = jsonResponse
+-- | The Cognito Events returned from the GetCognitoEvents request
+gcersEvents :: Lens' GetCognitoEventsResponse (HashMap Text Text)
+gcersEvents = lens _gcersEvents (\ s a -> s{_gcersEvents = a}) . _Default . _Map;
 
-instance FromJSON GetCognitoEventsResponse where
-    parseJSON = withObject "GetCognitoEventsResponse" $ \o -> GetCognitoEventsResponse
-        <$> o .:? "Events" .!= mempty
+-- | The response status code.
+gcersStatus :: Lens' GetCognitoEventsResponse Int
+gcersStatus = lens _gcersStatus (\ s a -> s{_gcersStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/GetIdentityPoolConfiguration.hs b/gen/Network/AWS/CognitoSync/GetIdentityPoolConfiguration.hs
--- a/gen/Network/AWS/CognitoSync/GetIdentityPoolConfiguration.hs
+++ b/gen/Network/AWS/CognitoSync/GetIdentityPoolConfiguration.hs
@@ -1,140 +1,156 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CognitoSync.GetIdentityPoolConfiguration
--- 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.
-
--- | Gets the configuration settings of an identity pool.
+-- Gets the configuration settings of an identity pool.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_GetIdentityPoolConfiguration.html>
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_GetIdentityPoolConfiguration.html AWS API Reference> for GetIdentityPoolConfiguration.
 module Network.AWS.CognitoSync.GetIdentityPoolConfiguration
     (
-    -- * Request
-      GetIdentityPoolConfiguration
-    -- ** Request constructor
-    , getIdentityPoolConfiguration
-    -- ** Request lenses
+    -- * Creating a Request
+      getIdentityPoolConfiguration
+    , GetIdentityPoolConfiguration
+    -- * Request Lenses
     , gipcIdentityPoolId
 
-    -- * Response
-    , GetIdentityPoolConfigurationResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getIdentityPoolConfigurationResponse
-    -- ** Response lenses
-    , gipcrCognitoStreams
-    , gipcrIdentityPoolId
-    , gipcrPushSync
+    , GetIdentityPoolConfigurationResponse
+    -- * Response Lenses
+    , gipcrsIdentityPoolId
+    , gipcrsCognitoStreams
+    , gipcrsPushSync
+    , gipcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype GetIdentityPoolConfiguration = GetIdentityPoolConfiguration
+-- | The input for the GetIdentityPoolConfiguration operation.
+--
+-- /See:/ 'getIdentityPoolConfiguration' smart constructor.
+newtype GetIdentityPoolConfiguration = GetIdentityPoolConfiguration'
     { _gipcIdentityPoolId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'GetIdentityPoolConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'GetIdentityPoolConfiguration' with the minimum fields required to make a request.
 --
--- * 'gipcIdentityPoolId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-getIdentityPoolConfiguration :: Text -- ^ 'gipcIdentityPoolId'
-                             -> GetIdentityPoolConfiguration
-getIdentityPoolConfiguration p1 = GetIdentityPoolConfiguration
-    { _gipcIdentityPoolId = p1
+-- * 'gipcIdentityPoolId'
+getIdentityPoolConfiguration
+    :: Text -- ^ 'gipcIdentityPoolId'
+    -> GetIdentityPoolConfiguration
+getIdentityPoolConfiguration pIdentityPoolId_ =
+    GetIdentityPoolConfiguration'
+    { _gipcIdentityPoolId = pIdentityPoolId_
     }
 
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- This is the ID of the pool for which to return a configuration.
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. This is the ID of the pool for which to return a configuration.
 gipcIdentityPoolId :: Lens' GetIdentityPoolConfiguration Text
-gipcIdentityPoolId =
-    lens _gipcIdentityPoolId (\s a -> s { _gipcIdentityPoolId = a })
+gipcIdentityPoolId = lens _gipcIdentityPoolId (\ s a -> s{_gipcIdentityPoolId = a});
 
-data GetIdentityPoolConfigurationResponse = GetIdentityPoolConfigurationResponse
-    { _gipcrCognitoStreams :: Maybe CognitoStreams
-    , _gipcrIdentityPoolId :: Maybe Text
-    , _gipcrPushSync       :: Maybe PushSync
-    } deriving (Eq, Read, Show)
+instance AWSRequest GetIdentityPoolConfiguration
+         where
+        type Sv GetIdentityPoolConfiguration = CognitoSync
+        type Rs GetIdentityPoolConfiguration =
+             GetIdentityPoolConfigurationResponse
+        request = get
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetIdentityPoolConfigurationResponse' <$>
+                   (x .?> "IdentityPoolId") <*> (x .?> "CognitoStreams")
+                     <*> (x .?> "PushSync")
+                     <*> (pure (fromEnum s)))
 
--- | 'GetIdentityPoolConfigurationResponse' constructor.
+instance ToHeaders GetIdentityPoolConfiguration where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToPath GetIdentityPoolConfiguration where
+        toPath GetIdentityPoolConfiguration'{..}
+          = mconcat
+              ["/identitypools/", toBS _gipcIdentityPoolId,
+               "/configuration"]
+
+instance ToQuery GetIdentityPoolConfiguration where
+        toQuery = const mempty
+
+-- | The output for the GetIdentityPoolConfiguration operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getIdentityPoolConfigurationResponse' smart constructor.
+data GetIdentityPoolConfigurationResponse = GetIdentityPoolConfigurationResponse'
+    { _gipcrsIdentityPoolId :: !(Maybe Text)
+    , _gipcrsCognitoStreams :: !(Maybe CognitoStreams)
+    , _gipcrsPushSync       :: !(Maybe PushSync)
+    , _gipcrsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIdentityPoolConfigurationResponse' with the minimum fields required to make a request.
 --
--- * 'gipcrCognitoStreams' @::@ 'Maybe' 'CognitoStreams'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gipcrIdentityPoolId' @::@ 'Maybe' 'Text'
+-- * 'gipcrsIdentityPoolId'
 --
--- * 'gipcrPushSync' @::@ 'Maybe' 'PushSync'
+-- * 'gipcrsCognitoStreams'
 --
-getIdentityPoolConfigurationResponse :: GetIdentityPoolConfigurationResponse
-getIdentityPoolConfigurationResponse = GetIdentityPoolConfigurationResponse
-    { _gipcrIdentityPoolId = Nothing
-    , _gipcrPushSync       = Nothing
-    , _gipcrCognitoStreams = Nothing
+-- * 'gipcrsPushSync'
+--
+-- * 'gipcrsStatus'
+getIdentityPoolConfigurationResponse
+    :: Int -- ^ 'gipcrsStatus'
+    -> GetIdentityPoolConfigurationResponse
+getIdentityPoolConfigurationResponse pStatus_ =
+    GetIdentityPoolConfigurationResponse'
+    { _gipcrsIdentityPoolId = Nothing
+    , _gipcrsCognitoStreams = Nothing
+    , _gipcrsPushSync = Nothing
+    , _gipcrsStatus = pStatus_
     }
 
--- | Options to apply to this identity pool for Amazon Cognito streams.
-gipcrCognitoStreams :: Lens' GetIdentityPoolConfigurationResponse (Maybe CognitoStreams)
-gipcrCognitoStreams =
-    lens _gipcrCognitoStreams (\s a -> s { _gipcrCognitoStreams = a })
-
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
-gipcrIdentityPoolId :: Lens' GetIdentityPoolConfigurationResponse (Maybe Text)
-gipcrIdentityPoolId =
-    lens _gipcrIdentityPoolId (\s a -> s { _gipcrIdentityPoolId = a })
-
--- | Options to apply to this identity pool for push synchronization.
-gipcrPushSync :: Lens' GetIdentityPoolConfigurationResponse (Maybe PushSync)
-gipcrPushSync = lens _gipcrPushSync (\s a -> s { _gipcrPushSync = a })
-
-instance ToPath GetIdentityPoolConfiguration where
-    toPath GetIdentityPoolConfiguration{..} = mconcat
-        [ "/identitypools/"
-        , toText _gipcIdentityPoolId
-        , "/configuration"
-        ]
-
-instance ToQuery GetIdentityPoolConfiguration where
-    toQuery = const mempty
-
-instance ToHeaders GetIdentityPoolConfiguration
-
-instance ToJSON GetIdentityPoolConfiguration where
-    toJSON = const (toJSON Empty)
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito.
+gipcrsIdentityPoolId :: Lens' GetIdentityPoolConfigurationResponse (Maybe Text)
+gipcrsIdentityPoolId = lens _gipcrsIdentityPoolId (\ s a -> s{_gipcrsIdentityPoolId = a});
 
-instance AWSRequest GetIdentityPoolConfiguration where
-    type Sv GetIdentityPoolConfiguration = CognitoSync
-    type Rs GetIdentityPoolConfiguration = GetIdentityPoolConfigurationResponse
+-- | Options to apply to this identity pool for Amazon Cognito streams.
+gipcrsCognitoStreams :: Lens' GetIdentityPoolConfigurationResponse (Maybe CognitoStreams)
+gipcrsCognitoStreams = lens _gipcrsCognitoStreams (\ s a -> s{_gipcrsCognitoStreams = a});
 
-    request  = get
-    response = jsonResponse
+-- | Options to apply to this identity pool for push synchronization.
+gipcrsPushSync :: Lens' GetIdentityPoolConfigurationResponse (Maybe PushSync)
+gipcrsPushSync = lens _gipcrsPushSync (\ s a -> s{_gipcrsPushSync = a});
 
-instance FromJSON GetIdentityPoolConfigurationResponse where
-    parseJSON = withObject "GetIdentityPoolConfigurationResponse" $ \o -> GetIdentityPoolConfigurationResponse
-        <$> o .:? "CognitoStreams"
-        <*> o .:? "IdentityPoolId"
-        <*> o .:? "PushSync"
+-- | The response status code.
+gipcrsStatus :: Lens' GetIdentityPoolConfigurationResponse Int
+gipcrsStatus = lens _gipcrsStatus (\ s a -> s{_gipcrsStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/ListDatasets.hs b/gen/Network/AWS/CognitoSync/ListDatasets.hs
--- a/gen/Network/AWS/CognitoSync/ListDatasets.hs
+++ b/gen/Network/AWS/CognitoSync/ListDatasets.hs
@@ -1,177 +1,187 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CognitoSync.ListDatasets
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Lists datasets for an identity. With Amazon Cognito Sync, each identity has
--- access only to its own data. Thus, the credentials used to make this API call
--- need to have access to the identity data.
+-- Lists datasets for an identity. With Amazon Cognito Sync, each identity
+-- has access only to its own data. Thus, the credentials used to make this
+-- API call need to have access to the identity data.
 --
 -- ListDatasets can be called with temporary user credentials provided by
--- Cognito Identity or with developer credentials. You should use the Cognito
--- Identity credentials to make this API call.
+-- Cognito Identity or with developer credentials. You should use the
+-- Cognito Identity credentials to make this API call.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_ListDatasets.html>
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_ListDatasets.html AWS API Reference> for ListDatasets.
 module Network.AWS.CognitoSync.ListDatasets
     (
-    -- * Request
-      ListDatasets
-    -- ** Request constructor
-    , listDatasets
-    -- ** Request lenses
+    -- * Creating a Request
+      listDatasets
+    , ListDatasets
+    -- * Request Lenses
+    , ldNextToken
+    , ldMaxResults
     , ldIdentityId
     , ldIdentityPoolId
-    , ldMaxResults
-    , ldNextToken
 
-    -- * Response
-    , ListDatasetsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listDatasetsResponse
-    -- ** Response lenses
-    , ldrCount
-    , ldrDatasets
-    , ldrNextToken
+    , ListDatasetsResponse
+    -- * Response Lenses
+    , ldrsCount
+    , ldrsNextToken
+    , ldrsDatasets
+    , ldrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
-
-data ListDatasets = ListDatasets
-    { _ldIdentityId     :: Text
-    , _ldIdentityPoolId :: Text
-    , _ldMaxResults     :: Maybe Int
-    , _ldNextToken      :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ListDatasets' constructor.
+-- | Request for a list of datasets for an identity.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listDatasets' smart constructor.
+data ListDatasets = ListDatasets'
+    { _ldNextToken      :: !(Maybe Text)
+    , _ldMaxResults     :: !(Maybe Int)
+    , _ldIdentityId     :: !Text
+    , _ldIdentityPoolId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListDatasets' with the minimum fields required to make a request.
 --
--- * 'ldIdentityId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ldIdentityPoolId' @::@ 'Text'
+-- * 'ldNextToken'
 --
--- * 'ldMaxResults' @::@ 'Maybe' 'Int'
+-- * 'ldMaxResults'
 --
--- * 'ldNextToken' @::@ 'Maybe' 'Text'
+-- * 'ldIdentityId'
 --
-listDatasets :: Text -- ^ 'ldIdentityPoolId'
-             -> Text -- ^ 'ldIdentityId'
-             -> ListDatasets
-listDatasets p1 p2 = ListDatasets
-    { _ldIdentityPoolId = p1
-    , _ldIdentityId     = p2
-    , _ldNextToken      = Nothing
-    , _ldMaxResults     = Nothing
+-- * 'ldIdentityPoolId'
+listDatasets
+    :: Text -- ^ 'ldIdentityId'
+    -> Text -- ^ 'ldIdentityPoolId'
+    -> ListDatasets
+listDatasets pIdentityId_ pIdentityPoolId_ =
+    ListDatasets'
+    { _ldNextToken = Nothing
+    , _ldMaxResults = Nothing
+    , _ldIdentityId = pIdentityId_
+    , _ldIdentityPoolId = pIdentityPoolId_
     }
 
+-- | A pagination token for obtaining the next page of results.
+ldNextToken :: Lens' ListDatasets (Maybe Text)
+ldNextToken = lens _ldNextToken (\ s a -> s{_ldNextToken = a});
+
+-- | The maximum number of results to be returned.
+ldMaxResults :: Lens' ListDatasets (Maybe Int)
+ldMaxResults = lens _ldMaxResults (\ s a -> s{_ldMaxResults = a});
+
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
 ldIdentityId :: Lens' ListDatasets Text
-ldIdentityId = lens _ldIdentityId (\s a -> s { _ldIdentityId = a })
+ldIdentityId = lens _ldIdentityId (\ s a -> s{_ldIdentityId = a});
 
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
 ldIdentityPoolId :: Lens' ListDatasets Text
-ldIdentityPoolId = lens _ldIdentityPoolId (\s a -> s { _ldIdentityPoolId = a })
+ldIdentityPoolId = lens _ldIdentityPoolId (\ s a -> s{_ldIdentityPoolId = a});
 
--- | The maximum number of results to be returned.
-ldMaxResults :: Lens' ListDatasets (Maybe Int)
-ldMaxResults = lens _ldMaxResults (\s a -> s { _ldMaxResults = a })
+instance AWSRequest ListDatasets where
+        type Sv ListDatasets = CognitoSync
+        type Rs ListDatasets = ListDatasetsResponse
+        request = get
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListDatasetsResponse' <$>
+                   (x .?> "Count") <*> (x .?> "NextToken") <*>
+                     (x .?> "Datasets" .!@ mempty)
+                     <*> (pure (fromEnum s)))
 
--- | A pagination token for obtaining the next page of results.
-ldNextToken :: Lens' ListDatasets (Maybe Text)
-ldNextToken = lens _ldNextToken (\s a -> s { _ldNextToken = a })
+instance ToHeaders ListDatasets where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-data ListDatasetsResponse = ListDatasetsResponse
-    { _ldrCount     :: Maybe Int
-    , _ldrDatasets  :: List "Datasets" Dataset
-    , _ldrNextToken :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance ToPath ListDatasets where
+        toPath ListDatasets'{..}
+          = mconcat
+              ["/identitypools/", toBS _ldIdentityPoolId,
+               "/identities/", toBS _ldIdentityId, "/datasets"]
 
--- | 'ListDatasetsResponse' constructor.
+instance ToQuery ListDatasets where
+        toQuery ListDatasets'{..}
+          = mconcat
+              ["nextToken" =: _ldNextToken,
+               "maxResults" =: _ldMaxResults]
+
+-- | Returned for a successful ListDatasets request.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listDatasetsResponse' smart constructor.
+data ListDatasetsResponse = ListDatasetsResponse'
+    { _ldrsCount     :: !(Maybe Int)
+    , _ldrsNextToken :: !(Maybe Text)
+    , _ldrsDatasets  :: !(Maybe [Dataset])
+    , _ldrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListDatasetsResponse' with the minimum fields required to make a request.
 --
--- * 'ldrCount' @::@ 'Maybe' 'Int'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ldrDatasets' @::@ ['Dataset']
+-- * 'ldrsCount'
 --
--- * 'ldrNextToken' @::@ 'Maybe' 'Text'
+-- * 'ldrsNextToken'
 --
-listDatasetsResponse :: ListDatasetsResponse
-listDatasetsResponse = ListDatasetsResponse
-    { _ldrDatasets  = mempty
-    , _ldrCount     = Nothing
-    , _ldrNextToken = Nothing
+-- * 'ldrsDatasets'
+--
+-- * 'ldrsStatus'
+listDatasetsResponse
+    :: Int -- ^ 'ldrsStatus'
+    -> ListDatasetsResponse
+listDatasetsResponse pStatus_ =
+    ListDatasetsResponse'
+    { _ldrsCount = Nothing
+    , _ldrsNextToken = Nothing
+    , _ldrsDatasets = Nothing
+    , _ldrsStatus = pStatus_
     }
 
 -- | Number of datasets returned.
-ldrCount :: Lens' ListDatasetsResponse (Maybe Int)
-ldrCount = lens _ldrCount (\s a -> s { _ldrCount = a })
-
--- | A set of datasets.
-ldrDatasets :: Lens' ListDatasetsResponse [Dataset]
-ldrDatasets = lens _ldrDatasets (\s a -> s { _ldrDatasets = a }) . _List
+ldrsCount :: Lens' ListDatasetsResponse (Maybe Int)
+ldrsCount = lens _ldrsCount (\ s a -> s{_ldrsCount = a});
 
 -- | A pagination token for obtaining the next page of results.
-ldrNextToken :: Lens' ListDatasetsResponse (Maybe Text)
-ldrNextToken = lens _ldrNextToken (\s a -> s { _ldrNextToken = a })
-
-instance ToPath ListDatasets where
-    toPath ListDatasets{..} = mconcat
-        [ "/identitypools/"
-        , toText _ldIdentityPoolId
-        , "/identities/"
-        , toText _ldIdentityId
-        , "/datasets"
-        ]
-
-instance ToQuery ListDatasets where
-    toQuery ListDatasets{..} = mconcat
-        [ "nextToken"  =? _ldNextToken
-        , "maxResults" =? _ldMaxResults
-        ]
-
-instance ToHeaders ListDatasets
-
-instance ToJSON ListDatasets where
-    toJSON = const (toJSON Empty)
-
-instance AWSRequest ListDatasets where
-    type Sv ListDatasets = CognitoSync
-    type Rs ListDatasets = ListDatasetsResponse
+ldrsNextToken :: Lens' ListDatasetsResponse (Maybe Text)
+ldrsNextToken = lens _ldrsNextToken (\ s a -> s{_ldrsNextToken = a});
 
-    request  = get
-    response = jsonResponse
+-- | A set of datasets.
+ldrsDatasets :: Lens' ListDatasetsResponse [Dataset]
+ldrsDatasets = lens _ldrsDatasets (\ s a -> s{_ldrsDatasets = a}) . _Default . _Coerce;
 
-instance FromJSON ListDatasetsResponse where
-    parseJSON = withObject "ListDatasetsResponse" $ \o -> ListDatasetsResponse
-        <$> o .:? "Count"
-        <*> o .:? "Datasets" .!= mempty
-        <*> o .:? "NextToken"
+-- | The response status code.
+ldrsStatus :: Lens' ListDatasetsResponse Int
+ldrsStatus = lens _ldrsStatus (\ s a -> s{_ldrsStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/ListIdentityPoolUsage.hs b/gen/Network/AWS/CognitoSync/ListIdentityPoolUsage.hs
--- a/gen/Network/AWS/CognitoSync/ListIdentityPoolUsage.hs
+++ b/gen/Network/AWS/CognitoSync/ListIdentityPoolUsage.hs
@@ -1,157 +1,170 @@
-{-# 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.CognitoSync.ListIdentityPoolUsage
--- 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.
-
--- | Gets a list of identity pools registered with Cognito.
+-- Gets a list of identity pools registered with Cognito.
 --
 -- ListIdentityPoolUsage can only be called with developer credentials. You
--- cannot make this API call with the temporary user credentials provided by
--- Cognito Identity.
+-- cannot make this API call with the temporary user credentials provided
+-- by Cognito Identity.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_ListIdentityPoolUsage.html>
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_ListIdentityPoolUsage.html AWS API Reference> for ListIdentityPoolUsage.
 module Network.AWS.CognitoSync.ListIdentityPoolUsage
     (
-    -- * Request
-      ListIdentityPoolUsage
-    -- ** Request constructor
-    , listIdentityPoolUsage
-    -- ** Request lenses
-    , lipuMaxResults
+    -- * Creating a Request
+      listIdentityPoolUsage
+    , ListIdentityPoolUsage
+    -- * Request Lenses
     , lipuNextToken
+    , lipuMaxResults
 
-    -- * Response
-    , ListIdentityPoolUsageResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listIdentityPoolUsageResponse
-    -- ** Response lenses
-    , lipurCount
-    , lipurIdentityPoolUsages
-    , lipurMaxResults
-    , lipurNextToken
+    , ListIdentityPoolUsageResponse
+    -- * Response Lenses
+    , lipursIdentityPoolUsages
+    , lipursCount
+    , lipursNextToken
+    , lipursMaxResults
+    , lipursStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
-
-data ListIdentityPoolUsage = ListIdentityPoolUsage
-    { _lipuMaxResults :: Maybe Int
-    , _lipuNextToken  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ListIdentityPoolUsage' constructor.
+-- | A request for usage information on an identity pool.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listIdentityPoolUsage' smart constructor.
+data ListIdentityPoolUsage = ListIdentityPoolUsage'
+    { _lipuNextToken  :: !(Maybe Text)
+    , _lipuMaxResults :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListIdentityPoolUsage' with the minimum fields required to make a request.
 --
--- * 'lipuMaxResults' @::@ 'Maybe' 'Int'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lipuNextToken' @::@ 'Maybe' 'Text'
+-- * 'lipuNextToken'
 --
-listIdentityPoolUsage :: ListIdentityPoolUsage
-listIdentityPoolUsage = ListIdentityPoolUsage
-    { _lipuNextToken  = Nothing
+-- * 'lipuMaxResults'
+listIdentityPoolUsage
+    :: ListIdentityPoolUsage
+listIdentityPoolUsage =
+    ListIdentityPoolUsage'
+    { _lipuNextToken = Nothing
     , _lipuMaxResults = Nothing
     }
 
+-- | A pagination token for obtaining the next page of results.
+lipuNextToken :: Lens' ListIdentityPoolUsage (Maybe Text)
+lipuNextToken = lens _lipuNextToken (\ s a -> s{_lipuNextToken = a});
+
 -- | The maximum number of results to be returned.
 lipuMaxResults :: Lens' ListIdentityPoolUsage (Maybe Int)
-lipuMaxResults = lens _lipuMaxResults (\s a -> s { _lipuMaxResults = a })
+lipuMaxResults = lens _lipuMaxResults (\ s a -> s{_lipuMaxResults = a});
 
--- | A pagination token for obtaining the next page of results.
-lipuNextToken :: Lens' ListIdentityPoolUsage (Maybe Text)
-lipuNextToken = lens _lipuNextToken (\s a -> s { _lipuNextToken = a })
+instance AWSRequest ListIdentityPoolUsage where
+        type Sv ListIdentityPoolUsage = CognitoSync
+        type Rs ListIdentityPoolUsage =
+             ListIdentityPoolUsageResponse
+        request = get
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListIdentityPoolUsageResponse' <$>
+                   (x .?> "IdentityPoolUsages" .!@ mempty) <*>
+                     (x .?> "Count")
+                     <*> (x .?> "NextToken")
+                     <*> (x .?> "MaxResults")
+                     <*> (pure (fromEnum s)))
 
-data ListIdentityPoolUsageResponse = ListIdentityPoolUsageResponse
-    { _lipurCount              :: Maybe Int
-    , _lipurIdentityPoolUsages :: List "IdentityPoolUsages" IdentityPoolUsage
-    , _lipurMaxResults         :: Maybe Int
-    , _lipurNextToken          :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance ToHeaders ListIdentityPoolUsage where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'ListIdentityPoolUsageResponse' constructor.
+instance ToPath ListIdentityPoolUsage where
+        toPath = const "/identitypools"
+
+instance ToQuery ListIdentityPoolUsage where
+        toQuery ListIdentityPoolUsage'{..}
+          = mconcat
+              ["nextToken" =: _lipuNextToken,
+               "maxResults" =: _lipuMaxResults]
+
+-- | Returned for a successful ListIdentityPoolUsage request.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listIdentityPoolUsageResponse' smart constructor.
+data ListIdentityPoolUsageResponse = ListIdentityPoolUsageResponse'
+    { _lipursIdentityPoolUsages :: !(Maybe [IdentityPoolUsage])
+    , _lipursCount              :: !(Maybe Int)
+    , _lipursNextToken          :: !(Maybe Text)
+    , _lipursMaxResults         :: !(Maybe Int)
+    , _lipursStatus             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListIdentityPoolUsageResponse' with the minimum fields required to make a request.
 --
--- * 'lipurCount' @::@ 'Maybe' 'Int'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lipurIdentityPoolUsages' @::@ ['IdentityPoolUsage']
+-- * 'lipursIdentityPoolUsages'
 --
--- * 'lipurMaxResults' @::@ 'Maybe' 'Int'
+-- * 'lipursCount'
 --
--- * 'lipurNextToken' @::@ 'Maybe' 'Text'
+-- * 'lipursNextToken'
 --
-listIdentityPoolUsageResponse :: ListIdentityPoolUsageResponse
-listIdentityPoolUsageResponse = ListIdentityPoolUsageResponse
-    { _lipurIdentityPoolUsages = mempty
-    , _lipurMaxResults         = Nothing
-    , _lipurCount              = Nothing
-    , _lipurNextToken          = Nothing
+-- * 'lipursMaxResults'
+--
+-- * 'lipursStatus'
+listIdentityPoolUsageResponse
+    :: Int -- ^ 'lipursStatus'
+    -> ListIdentityPoolUsageResponse
+listIdentityPoolUsageResponse pStatus_ =
+    ListIdentityPoolUsageResponse'
+    { _lipursIdentityPoolUsages = Nothing
+    , _lipursCount = Nothing
+    , _lipursNextToken = Nothing
+    , _lipursMaxResults = Nothing
+    , _lipursStatus = pStatus_
     }
 
--- | Total number of identities for the identity pool.
-lipurCount :: Lens' ListIdentityPoolUsageResponse (Maybe Int)
-lipurCount = lens _lipurCount (\s a -> s { _lipurCount = a })
-
 -- | Usage information for the identity pools.
-lipurIdentityPoolUsages :: Lens' ListIdentityPoolUsageResponse [IdentityPoolUsage]
-lipurIdentityPoolUsages =
-    lens _lipurIdentityPoolUsages (\s a -> s { _lipurIdentityPoolUsages = a })
-        . _List
+lipursIdentityPoolUsages :: Lens' ListIdentityPoolUsageResponse [IdentityPoolUsage]
+lipursIdentityPoolUsages = lens _lipursIdentityPoolUsages (\ s a -> s{_lipursIdentityPoolUsages = a}) . _Default . _Coerce;
 
--- | The maximum number of results to be returned.
-lipurMaxResults :: Lens' ListIdentityPoolUsageResponse (Maybe Int)
-lipurMaxResults = lens _lipurMaxResults (\s a -> s { _lipurMaxResults = a })
+-- | Total number of identities for the identity pool.
+lipursCount :: Lens' ListIdentityPoolUsageResponse (Maybe Int)
+lipursCount = lens _lipursCount (\ s a -> s{_lipursCount = a});
 
 -- | A pagination token for obtaining the next page of results.
-lipurNextToken :: Lens' ListIdentityPoolUsageResponse (Maybe Text)
-lipurNextToken = lens _lipurNextToken (\s a -> s { _lipurNextToken = a })
-
-instance ToPath ListIdentityPoolUsage where
-    toPath = const "/identitypools"
-
-instance ToQuery ListIdentityPoolUsage where
-    toQuery ListIdentityPoolUsage{..} = mconcat
-        [ "maxResults" =? _lipuMaxResults
-        , "nextToken"  =? _lipuNextToken
-        ]
-
-instance ToHeaders ListIdentityPoolUsage
-
-instance ToJSON ListIdentityPoolUsage where
-    toJSON = const (toJSON Empty)
-
-instance AWSRequest ListIdentityPoolUsage where
-    type Sv ListIdentityPoolUsage = CognitoSync
-    type Rs ListIdentityPoolUsage = ListIdentityPoolUsageResponse
+lipursNextToken :: Lens' ListIdentityPoolUsageResponse (Maybe Text)
+lipursNextToken = lens _lipursNextToken (\ s a -> s{_lipursNextToken = a});
 
-    request  = get
-    response = jsonResponse
+-- | The maximum number of results to be returned.
+lipursMaxResults :: Lens' ListIdentityPoolUsageResponse (Maybe Int)
+lipursMaxResults = lens _lipursMaxResults (\ s a -> s{_lipursMaxResults = a});
 
-instance FromJSON ListIdentityPoolUsageResponse where
-    parseJSON = withObject "ListIdentityPoolUsageResponse" $ \o -> ListIdentityPoolUsageResponse
-        <$> o .:? "Count"
-        <*> o .:? "IdentityPoolUsages" .!= mempty
-        <*> o .:? "MaxResults"
-        <*> o .:? "NextToken"
+-- | The response status code.
+lipursStatus :: Lens' ListIdentityPoolUsageResponse Int
+lipursStatus = lens _lipursStatus (\ s a -> s{_lipursStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/ListRecords.hs b/gen/Network/AWS/CognitoSync/ListRecords.hs
--- a/gen/Network/AWS/CognitoSync/ListRecords.hs
+++ b/gen/Network/AWS/CognitoSync/ListRecords.hs
@@ -1,279 +1,281 @@
-{-# 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.CognitoSync.ListRecords
--- 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.
-
--- | Gets paginated records, optionally changed after a particular sync count for
--- a dataset and identity. With Amazon Cognito Sync, each identity has access
--- only to its own data. Thus, the credentials used to make this API call need
--- to have access to the identity data.
+-- Gets paginated records, optionally changed after a particular sync count
+-- for a dataset and identity. With Amazon Cognito Sync, each identity has
+-- access only to its own data. Thus, the credentials used to make this API
+-- call need to have access to the identity data.
 --
 -- ListRecords can be called with temporary user credentials provided by
 -- Cognito Identity or with developer credentials. You should use Cognito
 -- Identity credentials to make this API call.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_ListRecords.html>
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_ListRecords.html AWS API Reference> for ListRecords.
 module Network.AWS.CognitoSync.ListRecords
     (
-    -- * Request
-      ListRecords
-    -- ** Request constructor
-    , listRecords
-    -- ** Request lenses
-    , lrDatasetName
-    , lrIdentityId
-    , lrIdentityPoolId
+    -- * Creating a Request
+      listRecords
+    , ListRecords
+    -- * Request Lenses
     , lrLastSyncCount
-    , lrMaxResults
     , lrNextToken
     , lrSyncSessionToken
+    , lrMaxResults
+    , lrIdentityPoolId
+    , lrIdentityId
+    , lrDatasetName
 
-    -- * Response
-    , ListRecordsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listRecordsResponse
-    -- ** Response lenses
-    , lrrCount
-    , lrrDatasetDeletedAfterRequestedSyncCount
-    , lrrDatasetExists
-    , lrrDatasetSyncCount
-    , lrrLastModifiedBy
-    , lrrMergedDatasetNames
-    , lrrNextToken
-    , lrrRecords
-    , lrrSyncSessionToken
+    , ListRecordsResponse
+    -- * Response Lenses
+    , lrrsDatasetDeletedAfterRequestedSyncCount
+    , lrrsDatasetExists
+    , lrrsCount
+    , lrrsRecords
+    , lrrsNextToken
+    , lrrsSyncSessionToken
+    , lrrsMergedDatasetNames
+    , lrrsLastModifiedBy
+    , lrrsDatasetSyncCount
+    , lrrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
-
-data ListRecords = ListRecords
-    { _lrDatasetName      :: Text
-    , _lrIdentityId       :: Text
-    , _lrIdentityPoolId   :: Text
-    , _lrLastSyncCount    :: Maybe Integer
-    , _lrMaxResults       :: Maybe Int
-    , _lrNextToken        :: Maybe Text
-    , _lrSyncSessionToken :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ListRecords' constructor.
+-- | A request for a list of records.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listRecords' smart constructor.
+data ListRecords = ListRecords'
+    { _lrLastSyncCount    :: !(Maybe Integer)
+    , _lrNextToken        :: !(Maybe Text)
+    , _lrSyncSessionToken :: !(Maybe Text)
+    , _lrMaxResults       :: !(Maybe Int)
+    , _lrIdentityPoolId   :: !Text
+    , _lrIdentityId       :: !Text
+    , _lrDatasetName      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListRecords' with the minimum fields required to make a request.
 --
--- * 'lrDatasetName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lrIdentityId' @::@ 'Text'
+-- * 'lrLastSyncCount'
 --
--- * 'lrIdentityPoolId' @::@ 'Text'
+-- * 'lrNextToken'
 --
--- * 'lrLastSyncCount' @::@ 'Maybe' 'Integer'
+-- * 'lrSyncSessionToken'
 --
--- * 'lrMaxResults' @::@ 'Maybe' 'Int'
+-- * 'lrMaxResults'
 --
--- * 'lrNextToken' @::@ 'Maybe' 'Text'
+-- * 'lrIdentityPoolId'
 --
--- * 'lrSyncSessionToken' @::@ 'Maybe' 'Text'
+-- * 'lrIdentityId'
 --
-listRecords :: Text -- ^ 'lrIdentityPoolId'
-            -> Text -- ^ 'lrIdentityId'
-            -> Text -- ^ 'lrDatasetName'
-            -> ListRecords
-listRecords p1 p2 p3 = ListRecords
-    { _lrIdentityPoolId   = p1
-    , _lrIdentityId       = p2
-    , _lrDatasetName      = p3
-    , _lrLastSyncCount    = Nothing
-    , _lrNextToken        = Nothing
-    , _lrMaxResults       = Nothing
+-- * 'lrDatasetName'
+listRecords
+    :: Text -- ^ 'lrIdentityPoolId'
+    -> Text -- ^ 'lrIdentityId'
+    -> Text -- ^ 'lrDatasetName'
+    -> ListRecords
+listRecords pIdentityPoolId_ pIdentityId_ pDatasetName_ =
+    ListRecords'
+    { _lrLastSyncCount = Nothing
+    , _lrNextToken = Nothing
     , _lrSyncSessionToken = Nothing
+    , _lrMaxResults = Nothing
+    , _lrIdentityPoolId = pIdentityPoolId_
+    , _lrIdentityId = pIdentityId_
+    , _lrDatasetName = pDatasetName_
     }
 
--- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_'
--- (underscore), '-' (dash), and '.' (dot).
-lrDatasetName :: Lens' ListRecords Text
-lrDatasetName = lens _lrDatasetName (\s a -> s { _lrDatasetName = a })
-
--- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-lrIdentityId :: Lens' ListRecords Text
-lrIdentityId = lens _lrIdentityId (\s a -> s { _lrIdentityId = a })
-
--- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-lrIdentityPoolId :: Lens' ListRecords Text
-lrIdentityPoolId = lens _lrIdentityPoolId (\s a -> s { _lrIdentityPoolId = a })
-
 -- | The last server sync count for this record.
 lrLastSyncCount :: Lens' ListRecords (Maybe Integer)
-lrLastSyncCount = lens _lrLastSyncCount (\s a -> s { _lrLastSyncCount = a })
-
--- | The maximum number of results to be returned.
-lrMaxResults :: Lens' ListRecords (Maybe Int)
-lrMaxResults = lens _lrMaxResults (\s a -> s { _lrMaxResults = a })
+lrLastSyncCount = lens _lrLastSyncCount (\ s a -> s{_lrLastSyncCount = a});
 
 -- | A pagination token for obtaining the next page of results.
 lrNextToken :: Lens' ListRecords (Maybe Text)
-lrNextToken = lens _lrNextToken (\s a -> s { _lrNextToken = a })
+lrNextToken = lens _lrNextToken (\ s a -> s{_lrNextToken = a});
 
 -- | A token containing a session ID, identity ID, and expiration.
 lrSyncSessionToken :: Lens' ListRecords (Maybe Text)
-lrSyncSessionToken =
-    lens _lrSyncSessionToken (\s a -> s { _lrSyncSessionToken = a })
+lrSyncSessionToken = lens _lrSyncSessionToken (\ s a -> s{_lrSyncSessionToken = a});
 
-data ListRecordsResponse = ListRecordsResponse
-    { _lrrCount                                 :: Maybe Int
-    , _lrrDatasetDeletedAfterRequestedSyncCount :: Maybe Bool
-    , _lrrDatasetExists                         :: Maybe Bool
-    , _lrrDatasetSyncCount                      :: Maybe Integer
-    , _lrrLastModifiedBy                        :: Maybe Text
-    , _lrrMergedDatasetNames                    :: List "MergedDatasetNames" Text
-    , _lrrNextToken                             :: Maybe Text
-    , _lrrRecords                               :: List "Records" Record
-    , _lrrSyncSessionToken                      :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | The maximum number of results to be returned.
+lrMaxResults :: Lens' ListRecords (Maybe Int)
+lrMaxResults = lens _lrMaxResults (\ s a -> s{_lrMaxResults = a});
 
--- | 'ListRecordsResponse' constructor.
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+lrIdentityPoolId :: Lens' ListRecords Text
+lrIdentityPoolId = lens _lrIdentityPoolId (\ s a -> s{_lrIdentityPoolId = a});
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+lrIdentityId :: Lens' ListRecords Text
+lrIdentityId = lens _lrIdentityId (\ s a -> s{_lrIdentityId = a});
+
+-- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+lrDatasetName :: Lens' ListRecords Text
+lrDatasetName = lens _lrDatasetName (\ s a -> s{_lrDatasetName = a});
+
+instance AWSRequest ListRecords where
+        type Sv ListRecords = CognitoSync
+        type Rs ListRecords = ListRecordsResponse
+        request = get
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListRecordsResponse' <$>
+                   (x .?> "DatasetDeletedAfterRequestedSyncCount") <*>
+                     (x .?> "DatasetExists")
+                     <*> (x .?> "Count")
+                     <*> (x .?> "Records" .!@ mempty)
+                     <*> (x .?> "NextToken")
+                     <*> (x .?> "SyncSessionToken")
+                     <*> (x .?> "MergedDatasetNames" .!@ mempty)
+                     <*> (x .?> "LastModifiedBy")
+                     <*> (x .?> "DatasetSyncCount")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListRecords where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToPath ListRecords where
+        toPath ListRecords'{..}
+          = mconcat
+              ["/identitypools/", toBS _lrIdentityPoolId,
+               "/identities/", toBS _lrIdentityId, "/datasets/",
+               toBS _lrDatasetName, "/records"]
+
+instance ToQuery ListRecords where
+        toQuery ListRecords'{..}
+          = mconcat
+              ["lastSyncCount" =: _lrLastSyncCount,
+               "nextToken" =: _lrNextToken,
+               "syncSessionToken" =: _lrSyncSessionToken,
+               "maxResults" =: _lrMaxResults]
+
+-- | Returned for a successful ListRecordsRequest.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listRecordsResponse' smart constructor.
+data ListRecordsResponse = ListRecordsResponse'
+    { _lrrsDatasetDeletedAfterRequestedSyncCount :: !(Maybe Bool)
+    , _lrrsDatasetExists                         :: !(Maybe Bool)
+    , _lrrsCount                                 :: !(Maybe Int)
+    , _lrrsRecords                               :: !(Maybe [Record])
+    , _lrrsNextToken                             :: !(Maybe Text)
+    , _lrrsSyncSessionToken                      :: !(Maybe Text)
+    , _lrrsMergedDatasetNames                    :: !(Maybe [Text])
+    , _lrrsLastModifiedBy                        :: !(Maybe Text)
+    , _lrrsDatasetSyncCount                      :: !(Maybe Integer)
+    , _lrrsStatus                                :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListRecordsResponse' with the minimum fields required to make a request.
 --
--- * 'lrrCount' @::@ 'Maybe' 'Int'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lrrDatasetDeletedAfterRequestedSyncCount' @::@ 'Maybe' 'Bool'
+-- * 'lrrsDatasetDeletedAfterRequestedSyncCount'
 --
--- * 'lrrDatasetExists' @::@ 'Maybe' 'Bool'
+-- * 'lrrsDatasetExists'
 --
--- * 'lrrDatasetSyncCount' @::@ 'Maybe' 'Integer'
+-- * 'lrrsCount'
 --
--- * 'lrrLastModifiedBy' @::@ 'Maybe' 'Text'
+-- * 'lrrsRecords'
 --
--- * 'lrrMergedDatasetNames' @::@ ['Text']
+-- * 'lrrsNextToken'
 --
--- * 'lrrNextToken' @::@ 'Maybe' 'Text'
+-- * 'lrrsSyncSessionToken'
 --
--- * 'lrrRecords' @::@ ['Record']
+-- * 'lrrsMergedDatasetNames'
 --
--- * 'lrrSyncSessionToken' @::@ 'Maybe' 'Text'
+-- * 'lrrsLastModifiedBy'
 --
-listRecordsResponse :: ListRecordsResponse
-listRecordsResponse = ListRecordsResponse
-    { _lrrRecords                               = mempty
-    , _lrrNextToken                             = Nothing
-    , _lrrCount                                 = Nothing
-    , _lrrDatasetSyncCount                      = Nothing
-    , _lrrLastModifiedBy                        = Nothing
-    , _lrrMergedDatasetNames                    = mempty
-    , _lrrDatasetExists                         = Nothing
-    , _lrrDatasetDeletedAfterRequestedSyncCount = Nothing
-    , _lrrSyncSessionToken                      = Nothing
+-- * 'lrrsDatasetSyncCount'
+--
+-- * 'lrrsStatus'
+listRecordsResponse
+    :: Int -- ^ 'lrrsStatus'
+    -> ListRecordsResponse
+listRecordsResponse pStatus_ =
+    ListRecordsResponse'
+    { _lrrsDatasetDeletedAfterRequestedSyncCount = Nothing
+    , _lrrsDatasetExists = Nothing
+    , _lrrsCount = Nothing
+    , _lrrsRecords = Nothing
+    , _lrrsNextToken = Nothing
+    , _lrrsSyncSessionToken = Nothing
+    , _lrrsMergedDatasetNames = Nothing
+    , _lrrsLastModifiedBy = Nothing
+    , _lrrsDatasetSyncCount = Nothing
+    , _lrrsStatus = pStatus_
     }
 
--- | Total number of records.
-lrrCount :: Lens' ListRecordsResponse (Maybe Int)
-lrrCount = lens _lrrCount (\s a -> s { _lrrCount = a })
-
 -- | A boolean value specifying whether to delete the dataset locally.
-lrrDatasetDeletedAfterRequestedSyncCount :: Lens' ListRecordsResponse (Maybe Bool)
-lrrDatasetDeletedAfterRequestedSyncCount =
-    lens _lrrDatasetDeletedAfterRequestedSyncCount
-        (\s a -> s { _lrrDatasetDeletedAfterRequestedSyncCount = a })
+lrrsDatasetDeletedAfterRequestedSyncCount :: Lens' ListRecordsResponse (Maybe Bool)
+lrrsDatasetDeletedAfterRequestedSyncCount = lens _lrrsDatasetDeletedAfterRequestedSyncCount (\ s a -> s{_lrrsDatasetDeletedAfterRequestedSyncCount = a});
 
 -- | Indicates whether the dataset exists.
-lrrDatasetExists :: Lens' ListRecordsResponse (Maybe Bool)
-lrrDatasetExists = lens _lrrDatasetExists (\s a -> s { _lrrDatasetExists = a })
-
--- | Server sync count for this dataset.
-lrrDatasetSyncCount :: Lens' ListRecordsResponse (Maybe Integer)
-lrrDatasetSyncCount =
-    lens _lrrDatasetSyncCount (\s a -> s { _lrrDatasetSyncCount = a })
+lrrsDatasetExists :: Lens' ListRecordsResponse (Maybe Bool)
+lrrsDatasetExists = lens _lrrsDatasetExists (\ s a -> s{_lrrsDatasetExists = a});
 
--- | The user/device that made the last change to this record.
-lrrLastModifiedBy :: Lens' ListRecordsResponse (Maybe Text)
-lrrLastModifiedBy =
-    lens _lrrLastModifiedBy (\s a -> s { _lrrLastModifiedBy = a })
+-- | Total number of records.
+lrrsCount :: Lens' ListRecordsResponse (Maybe Int)
+lrrsCount = lens _lrrsCount (\ s a -> s{_lrrsCount = a});
 
--- | Names of merged datasets.
-lrrMergedDatasetNames :: Lens' ListRecordsResponse [Text]
-lrrMergedDatasetNames =
-    lens _lrrMergedDatasetNames (\s a -> s { _lrrMergedDatasetNames = a })
-        . _List
+-- | A list of all records.
+lrrsRecords :: Lens' ListRecordsResponse [Record]
+lrrsRecords = lens _lrrsRecords (\ s a -> s{_lrrsRecords = a}) . _Default . _Coerce;
 
 -- | A pagination token for obtaining the next page of results.
-lrrNextToken :: Lens' ListRecordsResponse (Maybe Text)
-lrrNextToken = lens _lrrNextToken (\s a -> s { _lrrNextToken = a })
-
--- | A list of all records.
-lrrRecords :: Lens' ListRecordsResponse [Record]
-lrrRecords = lens _lrrRecords (\s a -> s { _lrrRecords = a }) . _List
+lrrsNextToken :: Lens' ListRecordsResponse (Maybe Text)
+lrrsNextToken = lens _lrrsNextToken (\ s a -> s{_lrrsNextToken = a});
 
 -- | A token containing a session ID, identity ID, and expiration.
-lrrSyncSessionToken :: Lens' ListRecordsResponse (Maybe Text)
-lrrSyncSessionToken =
-    lens _lrrSyncSessionToken (\s a -> s { _lrrSyncSessionToken = a })
-
-instance ToPath ListRecords where
-    toPath ListRecords{..} = mconcat
-        [ "/identitypools/"
-        , toText _lrIdentityPoolId
-        , "/identities/"
-        , toText _lrIdentityId
-        , "/datasets/"
-        , toText _lrDatasetName
-        , "/records"
-        ]
-
-instance ToQuery ListRecords where
-    toQuery ListRecords{..} = mconcat
-        [ "lastSyncCount"    =? _lrLastSyncCount
-        , "nextToken"        =? _lrNextToken
-        , "maxResults"       =? _lrMaxResults
-        , "syncSessionToken" =? _lrSyncSessionToken
-        ]
-
-instance ToHeaders ListRecords
+lrrsSyncSessionToken :: Lens' ListRecordsResponse (Maybe Text)
+lrrsSyncSessionToken = lens _lrrsSyncSessionToken (\ s a -> s{_lrrsSyncSessionToken = a});
 
-instance ToJSON ListRecords where
-    toJSON = const (toJSON Empty)
+-- | Names of merged datasets.
+lrrsMergedDatasetNames :: Lens' ListRecordsResponse [Text]
+lrrsMergedDatasetNames = lens _lrrsMergedDatasetNames (\ s a -> s{_lrrsMergedDatasetNames = a}) . _Default . _Coerce;
 
-instance AWSRequest ListRecords where
-    type Sv ListRecords = CognitoSync
-    type Rs ListRecords = ListRecordsResponse
+-- | The user\/device that made the last change to this record.
+lrrsLastModifiedBy :: Lens' ListRecordsResponse (Maybe Text)
+lrrsLastModifiedBy = lens _lrrsLastModifiedBy (\ s a -> s{_lrrsLastModifiedBy = a});
 
-    request  = get
-    response = jsonResponse
+-- | Server sync count for this dataset.
+lrrsDatasetSyncCount :: Lens' ListRecordsResponse (Maybe Integer)
+lrrsDatasetSyncCount = lens _lrrsDatasetSyncCount (\ s a -> s{_lrrsDatasetSyncCount = a});
 
-instance FromJSON ListRecordsResponse where
-    parseJSON = withObject "ListRecordsResponse" $ \o -> ListRecordsResponse
-        <$> o .:? "Count"
-        <*> o .:? "DatasetDeletedAfterRequestedSyncCount"
-        <*> o .:? "DatasetExists"
-        <*> o .:? "DatasetSyncCount"
-        <*> o .:? "LastModifiedBy"
-        <*> o .:? "MergedDatasetNames" .!= mempty
-        <*> o .:? "NextToken"
-        <*> o .:? "Records" .!= mempty
-        <*> o .:? "SyncSessionToken"
+-- | The response status code.
+lrrsStatus :: Lens' ListRecordsResponse Int
+lrrsStatus = lens _lrrsStatus (\ s a -> s{_lrrsStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/RegisterDevice.hs b/gen/Network/AWS/CognitoSync/RegisterDevice.hs
--- a/gen/Network/AWS/CognitoSync/RegisterDevice.hs
+++ b/gen/Network/AWS/CognitoSync/RegisterDevice.hs
@@ -1,151 +1,166 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CognitoSync.RegisterDevice
--- 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.
-
--- | Registers a device to receive push sync notifications.
+-- Registers a device to receive push sync notifications.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_RegisterDevice.html>
+-- This API can only be called with temporary credentials provided by
+-- Cognito Identity. You cannot call this API with developer credentials.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_RegisterDevice.html AWS API Reference> for RegisterDevice.
 module Network.AWS.CognitoSync.RegisterDevice
     (
-    -- * Request
-      RegisterDevice
-    -- ** Request constructor
-    , registerDevice
-    -- ** Request lenses
-    , rdIdentityId
+    -- * Creating a Request
+      registerDevice
+    , RegisterDevice
+    -- * Request Lenses
     , rdIdentityPoolId
+    , rdIdentityId
     , rdPlatform
     , rdToken
 
-    -- * Response
-    , RegisterDeviceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , registerDeviceResponse
-    -- ** Response lenses
-    , rdrDeviceId
+    , RegisterDeviceResponse
+    -- * Response Lenses
+    , rdrsDeviceId
+    , rdrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
-
-data RegisterDevice = RegisterDevice
-    { _rdIdentityId     :: Text
-    , _rdIdentityPoolId :: Text
-    , _rdPlatform       :: Platform
-    , _rdToken          :: Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'RegisterDevice' constructor.
+-- | A request to RegisterDevice.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'registerDevice' smart constructor.
+data RegisterDevice = RegisterDevice'
+    { _rdIdentityPoolId :: !Text
+    , _rdIdentityId     :: !Text
+    , _rdPlatform       :: !Platform
+    , _rdToken          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegisterDevice' with the minimum fields required to make a request.
 --
--- * 'rdIdentityId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rdIdentityPoolId' @::@ 'Text'
+-- * 'rdIdentityPoolId'
 --
--- * 'rdPlatform' @::@ 'Platform'
+-- * 'rdIdentityId'
 --
--- * 'rdToken' @::@ 'Text'
+-- * 'rdPlatform'
 --
-registerDevice :: Text -- ^ 'rdIdentityPoolId'
-               -> Text -- ^ 'rdIdentityId'
-               -> Platform -- ^ 'rdPlatform'
-               -> Text -- ^ 'rdToken'
-               -> RegisterDevice
-registerDevice p1 p2 p3 p4 = RegisterDevice
-    { _rdIdentityPoolId = p1
-    , _rdIdentityId     = p2
-    , _rdPlatform       = p3
-    , _rdToken          = p4
+-- * 'rdToken'
+registerDevice
+    :: Text -- ^ 'rdIdentityPoolId'
+    -> Text -- ^ 'rdIdentityId'
+    -> Platform -- ^ 'rdPlatform'
+    -> Text -- ^ 'rdToken'
+    -> RegisterDevice
+registerDevice pIdentityPoolId_ pIdentityId_ pPlatform_ pToken_ =
+    RegisterDevice'
+    { _rdIdentityPoolId = pIdentityPoolId_
+    , _rdIdentityId = pIdentityId_
+    , _rdPlatform = pPlatform_
+    , _rdToken = pToken_
     }
 
--- | The unique ID for this identity.
-rdIdentityId :: Lens' RegisterDevice Text
-rdIdentityId = lens _rdIdentityId (\s a -> s { _rdIdentityId = a })
-
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- Here, the ID of the pool that the identity belongs to.
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. Here, the ID of the pool that the identity belongs to.
 rdIdentityPoolId :: Lens' RegisterDevice Text
-rdIdentityPoolId = lens _rdIdentityPoolId (\s a -> s { _rdIdentityPoolId = a })
+rdIdentityPoolId = lens _rdIdentityPoolId (\ s a -> s{_rdIdentityPoolId = a});
 
+-- | The unique ID for this identity.
+rdIdentityId :: Lens' RegisterDevice Text
+rdIdentityId = lens _rdIdentityId (\ s a -> s{_rdIdentityId = a});
+
 -- | The SNS platform type (e.g. GCM, SDM, APNS, APNS_SANDBOX).
 rdPlatform :: Lens' RegisterDevice Platform
-rdPlatform = lens _rdPlatform (\s a -> s { _rdPlatform = a })
+rdPlatform = lens _rdPlatform (\ s a -> s{_rdPlatform = a});
 
 -- | The push token.
 rdToken :: Lens' RegisterDevice Text
-rdToken = lens _rdToken (\s a -> s { _rdToken = a })
+rdToken = lens _rdToken (\ s a -> s{_rdToken = a});
 
-newtype RegisterDeviceResponse = RegisterDeviceResponse
-    { _rdrDeviceId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest RegisterDevice where
+        type Sv RegisterDevice = CognitoSync
+        type Rs RegisterDevice = RegisterDeviceResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RegisterDeviceResponse' <$>
+                   (x .?> "DeviceId") <*> (pure (fromEnum s)))
 
--- | 'RegisterDeviceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rdrDeviceId' @::@ 'Maybe' 'Text'
---
-registerDeviceResponse :: RegisterDeviceResponse
-registerDeviceResponse = RegisterDeviceResponse
-    { _rdrDeviceId = Nothing
-    }
+instance ToHeaders RegisterDevice where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The unique ID generated for this device by Cognito.
-rdrDeviceId :: Lens' RegisterDeviceResponse (Maybe Text)
-rdrDeviceId = lens _rdrDeviceId (\s a -> s { _rdrDeviceId = a })
+instance ToJSON RegisterDevice where
+        toJSON RegisterDevice'{..}
+          = object
+              ["Platform" .= _rdPlatform, "Token" .= _rdToken]
 
 instance ToPath RegisterDevice where
-    toPath RegisterDevice{..} = mconcat
-        [ "/identitypools/"
-        , toText _rdIdentityPoolId
-        , "/identity/"
-        , toText _rdIdentityId
-        , "/device"
-        ]
+        toPath RegisterDevice'{..}
+          = mconcat
+              ["/identitypools/", toBS _rdIdentityPoolId,
+               "/identity/", toBS _rdIdentityId, "/device"]
 
 instance ToQuery RegisterDevice where
-    toQuery = const mempty
-
-instance ToHeaders RegisterDevice
+        toQuery = const mempty
 
-instance ToJSON RegisterDevice where
-    toJSON RegisterDevice{..} = object
-        [ "Platform" .= _rdPlatform
-        , "Token"    .= _rdToken
-        ]
+-- | Response to a RegisterDevice request.
+--
+-- /See:/ 'registerDeviceResponse' smart constructor.
+data RegisterDeviceResponse = RegisterDeviceResponse'
+    { _rdrsDeviceId :: !(Maybe Text)
+    , _rdrsStatus   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest RegisterDevice where
-    type Sv RegisterDevice = CognitoSync
-    type Rs RegisterDevice = RegisterDeviceResponse
+-- | Creates a value of 'RegisterDeviceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdrsDeviceId'
+--
+-- * 'rdrsStatus'
+registerDeviceResponse
+    :: Int -- ^ 'rdrsStatus'
+    -> RegisterDeviceResponse
+registerDeviceResponse pStatus_ =
+    RegisterDeviceResponse'
+    { _rdrsDeviceId = Nothing
+    , _rdrsStatus = pStatus_
+    }
 
-    request  = post
-    response = jsonResponse
+-- | The unique ID generated for this device by Cognito.
+rdrsDeviceId :: Lens' RegisterDeviceResponse (Maybe Text)
+rdrsDeviceId = lens _rdrsDeviceId (\ s a -> s{_rdrsDeviceId = a});
 
-instance FromJSON RegisterDeviceResponse where
-    parseJSON = withObject "RegisterDeviceResponse" $ \o -> RegisterDeviceResponse
-        <$> o .:? "DeviceId"
+-- | The response status code.
+rdrsStatus :: Lens' RegisterDeviceResponse Int
+rdrsStatus = lens _rdrsStatus (\ s a -> s{_rdrsStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/SetCognitoEvents.hs b/gen/Network/AWS/CognitoSync/SetCognitoEvents.hs
--- a/gen/Network/AWS/CognitoSync/SetCognitoEvents.hs
+++ b/gen/Network/AWS/CognitoSync/SetCognitoEvents.hs
@@ -1,111 +1,120 @@
-{-# 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.CognitoSync.SetCognitoEvents
--- 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.
-
--- | Sets the AWS Lambda function for a given event type for an identity pool.
--- This request only updates the key/value pair specified. Other key/values
--- pairs are not updated. To remove a key value pair, pass a empty value for the
--- particular key.
+-- Sets the AWS Lambda function for a given event type for an identity
+-- pool. This request only updates the key\/value pair specified. Other
+-- key\/values pairs are not updated. To remove a key value pair, pass a
+-- empty value for the particular key.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_SetCognitoEvents.html>
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_SetCognitoEvents.html AWS API Reference> for SetCognitoEvents.
 module Network.AWS.CognitoSync.SetCognitoEvents
     (
-    -- * Request
-      SetCognitoEvents
-    -- ** Request constructor
-    , setCognitoEvents
-    -- ** Request lenses
-    , sceEvents
+    -- * Creating a Request
+      setCognitoEvents
+    , SetCognitoEvents
+    -- * Request Lenses
     , sceIdentityPoolId
+    , sceEvents
 
-    -- * Response
-    , SetCognitoEventsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setCognitoEventsResponse
+    , SetCognitoEventsResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
-
-data SetCognitoEvents = SetCognitoEvents
-    { _sceEvents         :: Map Text Text
-    , _sceIdentityPoolId :: Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'SetCognitoEvents' constructor.
+-- | A request to configure Cognito Events\"
 --
--- The fields accessible through corresponding lenses are:
+-- \"
 --
--- * 'sceEvents' @::@ 'HashMap' 'Text' 'Text'
+-- /See:/ 'setCognitoEvents' smart constructor.
+data SetCognitoEvents = SetCognitoEvents'
+    { _sceIdentityPoolId :: !Text
+    , _sceEvents         :: !(Map Text Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetCognitoEvents' with the minimum fields required to make a request.
 --
--- * 'sceIdentityPoolId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-setCognitoEvents :: Text -- ^ 'sceIdentityPoolId'
-                 -> SetCognitoEvents
-setCognitoEvents p1 = SetCognitoEvents
-    { _sceIdentityPoolId = p1
-    , _sceEvents         = mempty
+-- * 'sceIdentityPoolId'
+--
+-- * 'sceEvents'
+setCognitoEvents
+    :: Text -- ^ 'sceIdentityPoolId'
+    -> SetCognitoEvents
+setCognitoEvents pIdentityPoolId_ =
+    SetCognitoEvents'
+    { _sceIdentityPoolId = pIdentityPoolId_
+    , _sceEvents = mempty
     }
 
+-- | The Cognito Identity Pool to use when configuring Cognito Events
+sceIdentityPoolId :: Lens' SetCognitoEvents Text
+sceIdentityPoolId = lens _sceIdentityPoolId (\ s a -> s{_sceIdentityPoolId = a});
+
 -- | The events to configure
 sceEvents :: Lens' SetCognitoEvents (HashMap Text Text)
-sceEvents = lens _sceEvents (\s a -> s { _sceEvents = a }) . _Map
+sceEvents = lens _sceEvents (\ s a -> s{_sceEvents = a}) . _Map;
 
--- | The Cognito Identity Pool to use when configuring Cognito Events
-sceIdentityPoolId :: Lens' SetCognitoEvents Text
-sceIdentityPoolId =
-    lens _sceIdentityPoolId (\s a -> s { _sceIdentityPoolId = a })
+instance AWSRequest SetCognitoEvents where
+        type Sv SetCognitoEvents = CognitoSync
+        type Rs SetCognitoEvents = SetCognitoEventsResponse
+        request = postJSON
+        response = receiveNull SetCognitoEventsResponse'
 
-data SetCognitoEventsResponse = SetCognitoEventsResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance ToHeaders SetCognitoEvents where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'SetCognitoEventsResponse' constructor.
-setCognitoEventsResponse :: SetCognitoEventsResponse
-setCognitoEventsResponse = SetCognitoEventsResponse
+instance ToJSON SetCognitoEvents where
+        toJSON SetCognitoEvents'{..}
+          = object ["Events" .= _sceEvents]
 
 instance ToPath SetCognitoEvents where
-    toPath SetCognitoEvents{..} = mconcat
-        [ "/identitypools/"
-        , toText _sceIdentityPoolId
-        , "/events"
-        ]
+        toPath SetCognitoEvents'{..}
+          = mconcat
+              ["/identitypools/", toBS _sceIdentityPoolId,
+               "/events"]
 
 instance ToQuery SetCognitoEvents where
-    toQuery = const mempty
-
-instance ToHeaders SetCognitoEvents
-
-instance ToJSON SetCognitoEvents where
-    toJSON SetCognitoEvents{..} = object
-        [ "Events" .= _sceEvents
-        ]
+        toQuery = const mempty
 
-instance AWSRequest SetCognitoEvents where
-    type Sv SetCognitoEvents = CognitoSync
-    type Rs SetCognitoEvents = SetCognitoEventsResponse
+-- | /See:/ 'setCognitoEventsResponse' smart constructor.
+data SetCognitoEventsResponse =
+    SetCognitoEventsResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post
-    response = nullResponse SetCognitoEventsResponse
+-- | Creates a value of 'SetCognitoEventsResponse' with the minimum fields required to make a request.
+--
+setCognitoEventsResponse
+    :: SetCognitoEventsResponse
+setCognitoEventsResponse = SetCognitoEventsResponse'
diff --git a/gen/Network/AWS/CognitoSync/SetIdentityPoolConfiguration.hs b/gen/Network/AWS/CognitoSync/SetIdentityPoolConfiguration.hs
--- a/gen/Network/AWS/CognitoSync/SetIdentityPoolConfiguration.hs
+++ b/gen/Network/AWS/CognitoSync/SetIdentityPoolConfiguration.hs
@@ -1,162 +1,180 @@
-{-# 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.CognitoSync.SetIdentityPoolConfiguration
--- 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.
-
--- | Sets the necessary configuration for push sync.
+-- Sets the necessary configuration for push sync.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_SetIdentityPoolConfiguration.html>
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_SetIdentityPoolConfiguration.html AWS API Reference> for SetIdentityPoolConfiguration.
 module Network.AWS.CognitoSync.SetIdentityPoolConfiguration
     (
-    -- * Request
-      SetIdentityPoolConfiguration
-    -- ** Request constructor
-    , setIdentityPoolConfiguration
-    -- ** Request lenses
+    -- * Creating a Request
+      setIdentityPoolConfiguration
+    , SetIdentityPoolConfiguration
+    -- * Request Lenses
     , sipcCognitoStreams
-    , sipcIdentityPoolId
     , sipcPushSync
+    , sipcIdentityPoolId
 
-    -- * Response
-    , SetIdentityPoolConfigurationResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setIdentityPoolConfigurationResponse
-    -- ** Response lenses
-    , sipcrCognitoStreams
-    , sipcrIdentityPoolId
-    , sipcrPushSync
+    , SetIdentityPoolConfigurationResponse
+    -- * Response Lenses
+    , sipcrsIdentityPoolId
+    , sipcrsCognitoStreams
+    , sipcrsPushSync
+    , sipcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
-
-data SetIdentityPoolConfiguration = SetIdentityPoolConfiguration
-    { _sipcCognitoStreams :: Maybe CognitoStreams
-    , _sipcIdentityPoolId :: Text
-    , _sipcPushSync       :: Maybe PushSync
-    } deriving (Eq, Read, Show)
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'SetIdentityPoolConfiguration' constructor.
+-- | The input for the SetIdentityPoolConfiguration operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'setIdentityPoolConfiguration' smart constructor.
+data SetIdentityPoolConfiguration = SetIdentityPoolConfiguration'
+    { _sipcCognitoStreams :: !(Maybe CognitoStreams)
+    , _sipcPushSync       :: !(Maybe PushSync)
+    , _sipcIdentityPoolId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetIdentityPoolConfiguration' with the minimum fields required to make a request.
 --
--- * 'sipcCognitoStreams' @::@ 'Maybe' 'CognitoStreams'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sipcIdentityPoolId' @::@ 'Text'
+-- * 'sipcCognitoStreams'
 --
--- * 'sipcPushSync' @::@ 'Maybe' 'PushSync'
+-- * 'sipcPushSync'
 --
-setIdentityPoolConfiguration :: Text -- ^ 'sipcIdentityPoolId'
-                             -> SetIdentityPoolConfiguration
-setIdentityPoolConfiguration p1 = SetIdentityPoolConfiguration
-    { _sipcIdentityPoolId = p1
-    , _sipcPushSync       = Nothing
-    , _sipcCognitoStreams = Nothing
+-- * 'sipcIdentityPoolId'
+setIdentityPoolConfiguration
+    :: Text -- ^ 'sipcIdentityPoolId'
+    -> SetIdentityPoolConfiguration
+setIdentityPoolConfiguration pIdentityPoolId_ =
+    SetIdentityPoolConfiguration'
+    { _sipcCognitoStreams = Nothing
+    , _sipcPushSync = Nothing
+    , _sipcIdentityPoolId = pIdentityPoolId_
     }
 
 -- | Options to apply to this identity pool for Amazon Cognito streams.
 sipcCognitoStreams :: Lens' SetIdentityPoolConfiguration (Maybe CognitoStreams)
-sipcCognitoStreams =
-    lens _sipcCognitoStreams (\s a -> s { _sipcCognitoStreams = a })
+sipcCognitoStreams = lens _sipcCognitoStreams (\ s a -> s{_sipcCognitoStreams = a});
 
+-- | Options to apply to this identity pool for push synchronization.
+sipcPushSync :: Lens' SetIdentityPoolConfiguration (Maybe PushSync)
+sipcPushSync = lens _sipcPushSync (\ s a -> s{_sipcPushSync = a});
+
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- This is the ID of the pool to modify.
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. This is the ID of the pool to modify.
 sipcIdentityPoolId :: Lens' SetIdentityPoolConfiguration Text
-sipcIdentityPoolId =
-    lens _sipcIdentityPoolId (\s a -> s { _sipcIdentityPoolId = a })
+sipcIdentityPoolId = lens _sipcIdentityPoolId (\ s a -> s{_sipcIdentityPoolId = a});
 
--- | Options to apply to this identity pool for push synchronization.
-sipcPushSync :: Lens' SetIdentityPoolConfiguration (Maybe PushSync)
-sipcPushSync = lens _sipcPushSync (\s a -> s { _sipcPushSync = a })
+instance AWSRequest SetIdentityPoolConfiguration
+         where
+        type Sv SetIdentityPoolConfiguration = CognitoSync
+        type Rs SetIdentityPoolConfiguration =
+             SetIdentityPoolConfigurationResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 SetIdentityPoolConfigurationResponse' <$>
+                   (x .?> "IdentityPoolId") <*> (x .?> "CognitoStreams")
+                     <*> (x .?> "PushSync")
+                     <*> (pure (fromEnum s)))
 
-data SetIdentityPoolConfigurationResponse = SetIdentityPoolConfigurationResponse
-    { _sipcrCognitoStreams :: Maybe CognitoStreams
-    , _sipcrIdentityPoolId :: Maybe Text
-    , _sipcrPushSync       :: Maybe PushSync
-    } deriving (Eq, Read, Show)
+instance ToHeaders SetIdentityPoolConfiguration where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'SetIdentityPoolConfigurationResponse' constructor.
+instance ToJSON SetIdentityPoolConfiguration where
+        toJSON SetIdentityPoolConfiguration'{..}
+          = object
+              ["CognitoStreams" .= _sipcCognitoStreams,
+               "PushSync" .= _sipcPushSync]
+
+instance ToPath SetIdentityPoolConfiguration where
+        toPath SetIdentityPoolConfiguration'{..}
+          = mconcat
+              ["/identitypools/", toBS _sipcIdentityPoolId,
+               "/configuration"]
+
+instance ToQuery SetIdentityPoolConfiguration where
+        toQuery = const mempty
+
+-- | The output for the SetIdentityPoolConfiguration operation
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'setIdentityPoolConfigurationResponse' smart constructor.
+data SetIdentityPoolConfigurationResponse = SetIdentityPoolConfigurationResponse'
+    { _sipcrsIdentityPoolId :: !(Maybe Text)
+    , _sipcrsCognitoStreams :: !(Maybe CognitoStreams)
+    , _sipcrsPushSync       :: !(Maybe PushSync)
+    , _sipcrsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetIdentityPoolConfigurationResponse' with the minimum fields required to make a request.
 --
--- * 'sipcrCognitoStreams' @::@ 'Maybe' 'CognitoStreams'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sipcrIdentityPoolId' @::@ 'Maybe' 'Text'
+-- * 'sipcrsIdentityPoolId'
 --
--- * 'sipcrPushSync' @::@ 'Maybe' 'PushSync'
+-- * 'sipcrsCognitoStreams'
 --
-setIdentityPoolConfigurationResponse :: SetIdentityPoolConfigurationResponse
-setIdentityPoolConfigurationResponse = SetIdentityPoolConfigurationResponse
-    { _sipcrIdentityPoolId = Nothing
-    , _sipcrPushSync       = Nothing
-    , _sipcrCognitoStreams = Nothing
+-- * 'sipcrsPushSync'
+--
+-- * 'sipcrsStatus'
+setIdentityPoolConfigurationResponse
+    :: Int -- ^ 'sipcrsStatus'
+    -> SetIdentityPoolConfigurationResponse
+setIdentityPoolConfigurationResponse pStatus_ =
+    SetIdentityPoolConfigurationResponse'
+    { _sipcrsIdentityPoolId = Nothing
+    , _sipcrsCognitoStreams = Nothing
+    , _sipcrsPushSync = Nothing
+    , _sipcrsStatus = pStatus_
     }
 
--- | Options to apply to this identity pool for Amazon Cognito streams.
-sipcrCognitoStreams :: Lens' SetIdentityPoolConfigurationResponse (Maybe CognitoStreams)
-sipcrCognitoStreams =
-    lens _sipcrCognitoStreams (\s a -> s { _sipcrCognitoStreams = a })
-
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
-sipcrIdentityPoolId :: Lens' SetIdentityPoolConfigurationResponse (Maybe Text)
-sipcrIdentityPoolId =
-    lens _sipcrIdentityPoolId (\s a -> s { _sipcrIdentityPoolId = a })
-
--- | Options to apply to this identity pool for push synchronization.
-sipcrPushSync :: Lens' SetIdentityPoolConfigurationResponse (Maybe PushSync)
-sipcrPushSync = lens _sipcrPushSync (\s a -> s { _sipcrPushSync = a })
-
-instance ToPath SetIdentityPoolConfiguration where
-    toPath SetIdentityPoolConfiguration{..} = mconcat
-        [ "/identitypools/"
-        , toText _sipcIdentityPoolId
-        , "/configuration"
-        ]
-
-instance ToQuery SetIdentityPoolConfiguration where
-    toQuery = const mempty
-
-instance ToHeaders SetIdentityPoolConfiguration
-
-instance ToJSON SetIdentityPoolConfiguration where
-    toJSON SetIdentityPoolConfiguration{..} = object
-        [ "PushSync"       .= _sipcPushSync
-        , "CognitoStreams" .= _sipcCognitoStreams
-        ]
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito.
+sipcrsIdentityPoolId :: Lens' SetIdentityPoolConfigurationResponse (Maybe Text)
+sipcrsIdentityPoolId = lens _sipcrsIdentityPoolId (\ s a -> s{_sipcrsIdentityPoolId = a});
 
-instance AWSRequest SetIdentityPoolConfiguration where
-    type Sv SetIdentityPoolConfiguration = CognitoSync
-    type Rs SetIdentityPoolConfiguration = SetIdentityPoolConfigurationResponse
+-- | Options to apply to this identity pool for Amazon Cognito streams.
+sipcrsCognitoStreams :: Lens' SetIdentityPoolConfigurationResponse (Maybe CognitoStreams)
+sipcrsCognitoStreams = lens _sipcrsCognitoStreams (\ s a -> s{_sipcrsCognitoStreams = a});
 
-    request  = post
-    response = jsonResponse
+-- | Options to apply to this identity pool for push synchronization.
+sipcrsPushSync :: Lens' SetIdentityPoolConfigurationResponse (Maybe PushSync)
+sipcrsPushSync = lens _sipcrsPushSync (\ s a -> s{_sipcrsPushSync = a});
 
-instance FromJSON SetIdentityPoolConfigurationResponse where
-    parseJSON = withObject "SetIdentityPoolConfigurationResponse" $ \o -> SetIdentityPoolConfigurationResponse
-        <$> o .:? "CognitoStreams"
-        <*> o .:? "IdentityPoolId"
-        <*> o .:? "PushSync"
+-- | The response status code.
+sipcrsStatus :: Lens' SetIdentityPoolConfigurationResponse Int
+sipcrsStatus = lens _sipcrsStatus (\ s a -> s{_sipcrsStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/SubscribeToDataset.hs b/gen/Network/AWS/CognitoSync/SubscribeToDataset.hs
--- a/gen/Network/AWS/CognitoSync/SubscribeToDataset.hs
+++ b/gen/Network/AWS/CognitoSync/SubscribeToDataset.hs
@@ -1,135 +1,158 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CognitoSync.SubscribeToDataset
--- 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.
-
--- | Subscribes to receive notifications when a dataset is modified by another
--- device.
+-- Subscribes to receive notifications when a dataset is modified by
+-- another device.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_SubscribeToDataset.html>
+-- This API can only be called with temporary credentials provided by
+-- Cognito Identity. You cannot call this API with developer credentials.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_SubscribeToDataset.html AWS API Reference> for SubscribeToDataset.
 module Network.AWS.CognitoSync.SubscribeToDataset
     (
-    -- * Request
-      SubscribeToDataset
-    -- ** Request constructor
-    , subscribeToDataset
-    -- ** Request lenses
+    -- * Creating a Request
+      subscribeToDataset
+    , SubscribeToDataset
+    -- * Request Lenses
+    , stdIdentityPoolId
+    , stdIdentityId
     , stdDatasetName
     , stdDeviceId
-    , stdIdentityId
-    , stdIdentityPoolId
 
-    -- * Response
-    , SubscribeToDatasetResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , subscribeToDatasetResponse
+    , SubscribeToDatasetResponse
+    -- * Response Lenses
+    , stdrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
-
-data SubscribeToDataset = SubscribeToDataset
-    { _stdDatasetName    :: Text
-    , _stdDeviceId       :: Text
-    , _stdIdentityId     :: Text
-    , _stdIdentityPoolId :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'SubscribeToDataset' constructor.
+-- | A request to SubscribeToDatasetRequest.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'subscribeToDataset' smart constructor.
+data SubscribeToDataset = SubscribeToDataset'
+    { _stdIdentityPoolId :: !Text
+    , _stdIdentityId     :: !Text
+    , _stdDatasetName    :: !Text
+    , _stdDeviceId       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubscribeToDataset' with the minimum fields required to make a request.
 --
--- * 'stdDatasetName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'stdDeviceId' @::@ 'Text'
+-- * 'stdIdentityPoolId'
 --
--- * 'stdIdentityId' @::@ 'Text'
+-- * 'stdIdentityId'
 --
--- * 'stdIdentityPoolId' @::@ 'Text'
+-- * 'stdDatasetName'
 --
-subscribeToDataset :: Text -- ^ 'stdIdentityPoolId'
-                   -> Text -- ^ 'stdIdentityId'
-                   -> Text -- ^ 'stdDatasetName'
-                   -> Text -- ^ 'stdDeviceId'
-                   -> SubscribeToDataset
-subscribeToDataset p1 p2 p3 p4 = SubscribeToDataset
-    { _stdIdentityPoolId = p1
-    , _stdIdentityId     = p2
-    , _stdDatasetName    = p3
-    , _stdDeviceId       = p4
+-- * 'stdDeviceId'
+subscribeToDataset
+    :: Text -- ^ 'stdIdentityPoolId'
+    -> Text -- ^ 'stdIdentityId'
+    -> Text -- ^ 'stdDatasetName'
+    -> Text -- ^ 'stdDeviceId'
+    -> SubscribeToDataset
+subscribeToDataset pIdentityPoolId_ pIdentityId_ pDatasetName_ pDeviceId_ =
+    SubscribeToDataset'
+    { _stdIdentityPoolId = pIdentityPoolId_
+    , _stdIdentityId = pIdentityId_
+    , _stdDatasetName = pDatasetName_
+    , _stdDeviceId = pDeviceId_
     }
 
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. The ID of the pool to which the identity belongs.
+stdIdentityPoolId :: Lens' SubscribeToDataset Text
+stdIdentityPoolId = lens _stdIdentityPoolId (\ s a -> s{_stdIdentityPoolId = a});
+
+-- | Unique ID for this identity.
+stdIdentityId :: Lens' SubscribeToDataset Text
+stdIdentityId = lens _stdIdentityId (\ s a -> s{_stdIdentityId = a});
+
 -- | The name of the dataset to subcribe to.
 stdDatasetName :: Lens' SubscribeToDataset Text
-stdDatasetName = lens _stdDatasetName (\s a -> s { _stdDatasetName = a })
+stdDatasetName = lens _stdDatasetName (\ s a -> s{_stdDatasetName = a});
 
 -- | The unique ID generated for this device by Cognito.
 stdDeviceId :: Lens' SubscribeToDataset Text
-stdDeviceId = lens _stdDeviceId (\s a -> s { _stdDeviceId = a })
-
--- | Unique ID for this identity.
-stdIdentityId :: Lens' SubscribeToDataset Text
-stdIdentityId = lens _stdIdentityId (\s a -> s { _stdIdentityId = a })
+stdDeviceId = lens _stdDeviceId (\ s a -> s{_stdDeviceId = a});
 
--- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- The ID of the pool to which the identity belongs.
-stdIdentityPoolId :: Lens' SubscribeToDataset Text
-stdIdentityPoolId =
-    lens _stdIdentityPoolId (\s a -> s { _stdIdentityPoolId = a })
+instance AWSRequest SubscribeToDataset where
+        type Sv SubscribeToDataset = CognitoSync
+        type Rs SubscribeToDataset =
+             SubscribeToDatasetResponse
+        request = postJSON
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 SubscribeToDatasetResponse' <$> (pure (fromEnum s)))
 
-data SubscribeToDatasetResponse = SubscribeToDatasetResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance ToHeaders SubscribeToDataset where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'SubscribeToDatasetResponse' constructor.
-subscribeToDatasetResponse :: SubscribeToDatasetResponse
-subscribeToDatasetResponse = SubscribeToDatasetResponse
+instance ToJSON SubscribeToDataset where
+        toJSON = const (Object mempty)
 
 instance ToPath SubscribeToDataset where
-    toPath SubscribeToDataset{..} = mconcat
-        [ "/identitypools/"
-        , toText _stdIdentityPoolId
-        , "/identities/"
-        , toText _stdIdentityId
-        , "/datasets/"
-        , toText _stdDatasetName
-        , "/subscriptions/"
-        , toText _stdDeviceId
-        ]
+        toPath SubscribeToDataset'{..}
+          = mconcat
+              ["/identitypools/", toBS _stdIdentityPoolId,
+               "/identities/", toBS _stdIdentityId, "/datasets/",
+               toBS _stdDatasetName, "/subscriptions/",
+               toBS _stdDeviceId]
 
 instance ToQuery SubscribeToDataset where
-    toQuery = const mempty
-
-instance ToHeaders SubscribeToDataset
+        toQuery = const mempty
 
-instance ToJSON SubscribeToDataset where
-    toJSON = const (toJSON Empty)
+-- | Response to a SubscribeToDataset request.
+--
+-- /See:/ 'subscribeToDatasetResponse' smart constructor.
+newtype SubscribeToDatasetResponse = SubscribeToDatasetResponse'
+    { _stdrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest SubscribeToDataset where
-    type Sv SubscribeToDataset = CognitoSync
-    type Rs SubscribeToDataset = SubscribeToDatasetResponse
+-- | Creates a value of 'SubscribeToDatasetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'stdrsStatus'
+subscribeToDatasetResponse
+    :: Int -- ^ 'stdrsStatus'
+    -> SubscribeToDatasetResponse
+subscribeToDatasetResponse pStatus_ =
+    SubscribeToDatasetResponse'
+    { _stdrsStatus = pStatus_
+    }
 
-    request  = post
-    response = nullResponse SubscribeToDatasetResponse
+-- | The response status code.
+stdrsStatus :: Lens' SubscribeToDatasetResponse Int
+stdrsStatus = lens _stdrsStatus (\ s a -> s{_stdrsStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/Types.hs b/gen/Network/AWS/CognitoSync/Types.hs
--- a/gen/Network/AWS/CognitoSync/Types.hs
+++ b/gen/Network/AWS/CognitoSync/Types.hs
@@ -1,760 +1,214 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-{-# LANGUAGE ViewPatterns                #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
 
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
 
+-- |
 -- Module      : Network.AWS.CognitoSync.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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
 module Network.AWS.CognitoSync.Types
     (
     -- * Service
       CognitoSync
-    -- ** Error
-    , JSONError
 
-    -- * IdentityPoolUsage
-    , IdentityPoolUsage
-    , identityPoolUsage
-    , ipuDataStorage
-    , ipuIdentityPoolId
-    , ipuLastModifiedDate
-    , ipuSyncSessionsCount
+    -- * Errors
+    , _InvalidParameterException
+    , _NotAuthorizedException
+    , _InternalErrorException
+    , _InvalidConfigurationException
+    , _DuplicateRequestException
+    , _LambdaThrottledException
+    , _AlreadyStreamedException
+    , _InvalidLambdaFunctionOutputException
+    , _ConcurrentModificationException
+    , _TooManyRequestsException
+    , _ResourceConflictException
+    , _ResourceNotFoundException
+    , _LimitExceededException
 
+    -- * BulkPublishStatus
+    , BulkPublishStatus (..)
+
+    -- * Operation
+    , Operation (..)
+
     -- * Platform
     , Platform (..)
 
+    -- * StreamingStatus
+    , StreamingStatus (..)
+
+    -- * CognitoStreams
+    , CognitoStreams
+    , cognitoStreams
+    , csStreamingStatus
+    , csStreamName
+    , csRoleARN
+
     -- * Dataset
     , Dataset
     , dataset
-    , dCreationDate
+    , dLastModifiedDate
+    , dNumRecords
     , dDataStorage
     , dDatasetName
-    , dIdentityId
+    , dCreationDate
     , dLastModifiedBy
-    , dLastModifiedDate
-    , dNumRecords
+    , dIdentityId
 
-    -- * Operation
-    , Operation (..)
+    -- * IdentityPoolUsage
+    , IdentityPoolUsage
+    , identityPoolUsage
+    , ipuLastModifiedDate
+    , ipuIdentityPoolId
+    , ipuDataStorage
+    , ipuSyncSessionsCount
 
-    -- * StreamingStatus
-    , StreamingStatus (..)
+    -- * IdentityUsage
+    , IdentityUsage
+    , identityUsage
+    , iuLastModifiedDate
+    , iuIdentityPoolId
+    , iuDatasetCount
+    , iuDataStorage
+    , iuIdentityId
 
-    -- * BulkPublishStatus
-    , BulkPublishStatus (..)
+    -- * PushSync
+    , PushSync
+    , pushSync
+    , psApplicationARNs
+    , psRoleARN
 
     -- * Record
     , Record
     , record
+    , rSyncCount
+    , rLastModifiedDate
     , rDeviceLastModifiedDate
+    , rValue
     , rKey
     , rLastModifiedBy
-    , rLastModifiedDate
-    , rSyncCount
-    , rValue
 
-    -- * CognitoStreams
-    , CognitoStreams
-    , cognitoStreams
-    , csRoleArn
-    , csStreamName
-    , csStreamingStatus
-
-    -- * IdentityUsage
-    , IdentityUsage
-    , identityUsage
-    , iuDataStorage
-    , iuDatasetCount
-    , iuIdentityId
-    , iuIdentityPoolId
-    , iuLastModifiedDate
-
     -- * RecordPatch
     , RecordPatch
     , recordPatch
     , rpDeviceLastModifiedDate
-    , rpKey
+    , rpValue
     , rpOp
+    , rpKey
     , rpSyncCount
-    , rpValue
-
-    -- * PushSync
-    , PushSync
-    , pushSync
-    , psApplicationArns
-    , psRoleArn
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.CognitoSync.Types.Sum
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
 
--- | Version @2014-06-30@ of the Amazon Cognito Sync service.
+-- | Version @2014-06-30@ of the Amazon Cognito Sync SDK.
 data CognitoSync
 
 instance AWSService CognitoSync where
     type Sg CognitoSync = V4
-    type Er CognitoSync = JSONError
-
-    service = service'
+    service = const svc
       where
-        service' :: Service CognitoSync
-        service' = Service
-            { _svcAbbrev       = "CognitoSync"
-            , _svcPrefix       = "cognito-sync"
-            , _svcVersion      = "2014-06-30"
-            , _svcTargetPrefix = Nothing
-            , _svcJSONVersion  = Just "1.1"
-            , _svcHandle       = handle
-            , _svcRetry        = retry
+        svc =
+            Service
+            { _svcAbbrev = "CognitoSync"
+            , _svcPrefix = "cognito-sync"
+            , _svcVersion = "2014-06-30"
+            , _svcEndpoint = defaultEndpoint svc
+            , _svcTimeout = Just 70
+            , _svcStatus = statusSuccess
+            , _svcError = parseJSONError
+            , _svcRetry = retry
             }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError JSONError)
-        handle = jsonError statusSuccess service'
-
-        retry :: Retry CognitoSync
-        retry = Exponential
-            { _retryBase     = 0.05
-            , _retryGrowth   = 2
+        retry =
+            Exponential
+            { _retryBase = 5.0e-2
+            , _retryGrowth = 2
             , _retryAttempts = 5
-            , _retryCheck    = check
+            , _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 IdentityPoolUsage = IdentityPoolUsage
-    { _ipuDataStorage       :: Maybe Integer
-    , _ipuIdentityPoolId    :: Maybe Text
-    , _ipuLastModifiedDate  :: Maybe POSIX
-    , _ipuSyncSessionsCount :: Maybe Integer
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'IdentityPoolUsage' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ipuDataStorage' @::@ 'Maybe' 'Integer'
---
--- * 'ipuIdentityPoolId' @::@ 'Maybe' 'Text'
---
--- * 'ipuLastModifiedDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'ipuSyncSessionsCount' @::@ 'Maybe' 'Integer'
---
-identityPoolUsage :: IdentityPoolUsage
-identityPoolUsage = IdentityPoolUsage
-    { _ipuIdentityPoolId    = Nothing
-    , _ipuSyncSessionsCount = Nothing
-    , _ipuDataStorage       = Nothing
-    , _ipuLastModifiedDate  = Nothing
-    }
-
--- | Data storage information for the identity pool.
-ipuDataStorage :: Lens' IdentityPoolUsage (Maybe Integer)
-ipuDataStorage = lens _ipuDataStorage (\s a -> s { _ipuDataStorage = a })
-
--- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-ipuIdentityPoolId :: Lens' IdentityPoolUsage (Maybe Text)
-ipuIdentityPoolId =
-    lens _ipuIdentityPoolId (\s a -> s { _ipuIdentityPoolId = a })
-
--- | Date on which the identity pool was last modified.
-ipuLastModifiedDate :: Lens' IdentityPoolUsage (Maybe UTCTime)
-ipuLastModifiedDate =
-    lens _ipuLastModifiedDate (\s a -> s { _ipuLastModifiedDate = a })
-        . mapping _Time
-
--- | Number of sync sessions for the identity pool.
-ipuSyncSessionsCount :: Lens' IdentityPoolUsage (Maybe Integer)
-ipuSyncSessionsCount =
-    lens _ipuSyncSessionsCount (\s a -> s { _ipuSyncSessionsCount = a })
-
-instance FromJSON IdentityPoolUsage where
-    parseJSON = withObject "IdentityPoolUsage" $ \o -> IdentityPoolUsage
-        <$> o .:? "DataStorage"
-        <*> o .:? "IdentityPoolId"
-        <*> o .:? "LastModifiedDate"
-        <*> o .:? "SyncSessionsCount"
-
-instance ToJSON IdentityPoolUsage where
-    toJSON IdentityPoolUsage{..} = object
-        [ "IdentityPoolId"    .= _ipuIdentityPoolId
-        , "SyncSessionsCount" .= _ipuSyncSessionsCount
-        , "DataStorage"       .= _ipuDataStorage
-        , "LastModifiedDate"  .= _ipuLastModifiedDate
-        ]
-
-data Platform
-    = Adm         -- ^ ADM
-    | Apns        -- ^ APNS
-    | ApnsSandbox -- ^ APNS_SANDBOX
-    | Gcm         -- ^ GCM
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable Platform
-
-instance FromText Platform where
-    parser = takeLowerText >>= \case
-        "adm"          -> pure Adm
-        "apns"         -> pure Apns
-        "apns_sandbox" -> pure ApnsSandbox
-        "gcm"          -> pure Gcm
-        e              -> fail $
-            "Failure parsing Platform from " ++ show e
-
-instance ToText Platform where
-    toText = \case
-        Adm         -> "ADM"
-        Apns        -> "APNS"
-        ApnsSandbox -> "APNS_SANDBOX"
-        Gcm         -> "GCM"
-
-instance ToByteString Platform
-instance ToHeader     Platform
-instance ToQuery      Platform
-
-instance FromJSON Platform where
-    parseJSON = parseJSONText "Platform"
-
-instance ToJSON Platform where
-    toJSON = toJSONText
-
-data Dataset = Dataset
-    { _dCreationDate     :: Maybe POSIX
-    , _dDataStorage      :: Maybe Integer
-    , _dDatasetName      :: Maybe Text
-    , _dIdentityId       :: Maybe Text
-    , _dLastModifiedBy   :: Maybe Text
-    , _dLastModifiedDate :: Maybe POSIX
-    , _dNumRecords       :: Maybe Integer
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Dataset' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dCreationDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'dDataStorage' @::@ 'Maybe' 'Integer'
---
--- * 'dDatasetName' @::@ 'Maybe' 'Text'
---
--- * 'dIdentityId' @::@ 'Maybe' 'Text'
---
--- * 'dLastModifiedBy' @::@ 'Maybe' 'Text'
---
--- * 'dLastModifiedDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'dNumRecords' @::@ 'Maybe' 'Integer'
---
-dataset :: Dataset
-dataset = Dataset
-    { _dIdentityId       = Nothing
-    , _dDatasetName      = Nothing
-    , _dCreationDate     = Nothing
-    , _dLastModifiedDate = Nothing
-    , _dLastModifiedBy   = Nothing
-    , _dDataStorage      = Nothing
-    , _dNumRecords       = Nothing
-    }
-
--- | Date on which the dataset was created.
-dCreationDate :: Lens' Dataset (Maybe UTCTime)
-dCreationDate = lens _dCreationDate (\s a -> s { _dCreationDate = a }) . mapping _Time
-
--- | Total size in bytes of the records in this dataset.
-dDataStorage :: Lens' Dataset (Maybe Integer)
-dDataStorage = lens _dDataStorage (\s a -> s { _dDataStorage = a })
-
--- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_'
--- (underscore), '-' (dash), and '.' (dot).
-dDatasetName :: Lens' Dataset (Maybe Text)
-dDatasetName = lens _dDatasetName (\s a -> s { _dDatasetName = a })
-
--- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-dIdentityId :: Lens' Dataset (Maybe Text)
-dIdentityId = lens _dIdentityId (\s a -> s { _dIdentityId = a })
-
--- | The device that made the last change to this dataset.
-dLastModifiedBy :: Lens' Dataset (Maybe Text)
-dLastModifiedBy = lens _dLastModifiedBy (\s a -> s { _dLastModifiedBy = a })
-
--- | Date when the dataset was last modified.
-dLastModifiedDate :: Lens' Dataset (Maybe UTCTime)
-dLastModifiedDate =
-    lens _dLastModifiedDate (\s a -> s { _dLastModifiedDate = a })
-        . mapping _Time
-
--- | Number of records in this dataset.
-dNumRecords :: Lens' Dataset (Maybe Integer)
-dNumRecords = lens _dNumRecords (\s a -> s { _dNumRecords = a })
-
-instance FromJSON Dataset where
-    parseJSON = withObject "Dataset" $ \o -> Dataset
-        <$> o .:? "CreationDate"
-        <*> o .:? "DataStorage"
-        <*> o .:? "DatasetName"
-        <*> o .:? "IdentityId"
-        <*> o .:? "LastModifiedBy"
-        <*> o .:? "LastModifiedDate"
-        <*> o .:? "NumRecords"
-
-instance ToJSON Dataset where
-    toJSON Dataset{..} = object
-        [ "IdentityId"       .= _dIdentityId
-        , "DatasetName"      .= _dDatasetName
-        , "CreationDate"     .= _dCreationDate
-        , "LastModifiedDate" .= _dLastModifiedDate
-        , "LastModifiedBy"   .= _dLastModifiedBy
-        , "DataStorage"      .= _dDataStorage
-        , "NumRecords"       .= _dNumRecords
-        ]
-
-data Operation
-    = Remove  -- ^ remove
-    | Replace -- ^ replace
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable Operation
-
-instance FromText Operation where
-    parser = takeLowerText >>= \case
-        "remove"  -> pure Remove
-        "replace" -> pure Replace
-        e         -> fail $
-            "Failure parsing Operation from " ++ show e
-
-instance ToText Operation where
-    toText = \case
-        Remove  -> "remove"
-        Replace -> "replace"
-
-instance ToByteString Operation
-instance ToHeader     Operation
-instance ToQuery      Operation
-
-instance FromJSON Operation where
-    parseJSON = parseJSONText "Operation"
-
-instance ToJSON Operation where
-    toJSON = toJSONText
-
-data StreamingStatus
-    = Disabled -- ^ DISABLED
-    | Enabled  -- ^ ENABLED
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable StreamingStatus
-
-instance FromText StreamingStatus where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure Disabled
-        "enabled"  -> pure Enabled
-        e          -> fail $
-            "Failure parsing StreamingStatus from " ++ show e
-
-instance ToText StreamingStatus where
-    toText = \case
-        Disabled -> "DISABLED"
-        Enabled  -> "ENABLED"
-
-instance ToByteString StreamingStatus
-instance ToHeader     StreamingStatus
-instance ToQuery      StreamingStatus
-
-instance FromJSON StreamingStatus where
-    parseJSON = parseJSONText "StreamingStatus"
-
-instance ToJSON StreamingStatus where
-    toJSON = toJSONText
-
-data BulkPublishStatus
-    = Failed     -- ^ FAILED
-    | InProgress -- ^ IN_PROGRESS
-    | NotStarted -- ^ NOT_STARTED
-    | Succeeded  -- ^ SUCCEEDED
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable BulkPublishStatus
-
-instance FromText BulkPublishStatus where
-    parser = takeLowerText >>= \case
-        "failed"      -> pure Failed
-        "in_progress" -> pure InProgress
-        "not_started" -> pure NotStarted
-        "succeeded"   -> pure Succeeded
-        e             -> fail $
-            "Failure parsing BulkPublishStatus from " ++ show e
-
-instance ToText BulkPublishStatus where
-    toText = \case
-        Failed     -> "FAILED"
-        InProgress -> "IN_PROGRESS"
-        NotStarted -> "NOT_STARTED"
-        Succeeded  -> "SUCCEEDED"
-
-instance ToByteString BulkPublishStatus
-instance ToHeader     BulkPublishStatus
-instance ToQuery      BulkPublishStatus
-
-instance FromJSON BulkPublishStatus where
-    parseJSON = parseJSONText "BulkPublishStatus"
-
-instance ToJSON BulkPublishStatus where
-    toJSON = toJSONText
-
-data Record = Record
-    { _rDeviceLastModifiedDate :: Maybe POSIX
-    , _rKey                    :: Maybe Text
-    , _rLastModifiedBy         :: Maybe Text
-    , _rLastModifiedDate       :: Maybe POSIX
-    , _rSyncCount              :: Maybe Integer
-    , _rValue                  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Record' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rDeviceLastModifiedDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'rKey' @::@ 'Maybe' 'Text'
---
--- * 'rLastModifiedBy' @::@ 'Maybe' 'Text'
---
--- * 'rLastModifiedDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'rSyncCount' @::@ 'Maybe' 'Integer'
---
--- * 'rValue' @::@ 'Maybe' 'Text'
---
-record :: Record
-record = Record
-    { _rKey                    = Nothing
-    , _rValue                  = Nothing
-    , _rSyncCount              = Nothing
-    , _rLastModifiedDate       = Nothing
-    , _rLastModifiedBy         = Nothing
-    , _rDeviceLastModifiedDate = Nothing
-    }
-
--- | The last modified date of the client device.
-rDeviceLastModifiedDate :: Lens' Record (Maybe UTCTime)
-rDeviceLastModifiedDate =
-    lens _rDeviceLastModifiedDate (\s a -> s { _rDeviceLastModifiedDate = a })
-        . mapping _Time
-
--- | The key for the record.
-rKey :: Lens' Record (Maybe Text)
-rKey = lens _rKey (\s a -> s { _rKey = a })
-
--- | The user/device that made the last change to this record.
-rLastModifiedBy :: Lens' Record (Maybe Text)
-rLastModifiedBy = lens _rLastModifiedBy (\s a -> s { _rLastModifiedBy = a })
-
--- | The date on which the record was last modified.
-rLastModifiedDate :: Lens' Record (Maybe UTCTime)
-rLastModifiedDate =
-    lens _rLastModifiedDate (\s a -> s { _rLastModifiedDate = a })
-        . mapping _Time
-
--- | The server sync count for this record.
-rSyncCount :: Lens' Record (Maybe Integer)
-rSyncCount = lens _rSyncCount (\s a -> s { _rSyncCount = a })
-
--- | The value for the record.
-rValue :: Lens' Record (Maybe Text)
-rValue = lens _rValue (\s a -> s { _rValue = a })
-
-instance FromJSON Record where
-    parseJSON = withObject "Record" $ \o -> Record
-        <$> o .:? "DeviceLastModifiedDate"
-        <*> o .:? "Key"
-        <*> o .:? "LastModifiedBy"
-        <*> o .:? "LastModifiedDate"
-        <*> o .:? "SyncCount"
-        <*> o .:? "Value"
-
-instance ToJSON Record where
-    toJSON Record{..} = object
-        [ "Key"                    .= _rKey
-        , "Value"                  .= _rValue
-        , "SyncCount"              .= _rSyncCount
-        , "LastModifiedDate"       .= _rLastModifiedDate
-        , "LastModifiedBy"         .= _rLastModifiedBy
-        , "DeviceLastModifiedDate" .= _rDeviceLastModifiedDate
-        ]
-
-data CognitoStreams = CognitoStreams
-    { _csRoleArn         :: Maybe Text
-    , _csStreamName      :: Maybe Text
-    , _csStreamingStatus :: Maybe StreamingStatus
-    } deriving (Eq, Read, Show)
-
--- | 'CognitoStreams' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'csRoleArn' @::@ 'Maybe' 'Text'
---
--- * 'csStreamName' @::@ 'Maybe' 'Text'
---
--- * 'csStreamingStatus' @::@ 'Maybe' 'StreamingStatus'
---
-cognitoStreams :: CognitoStreams
-cognitoStreams = CognitoStreams
-    { _csStreamName      = Nothing
-    , _csRoleArn         = Nothing
-    , _csStreamingStatus = Nothing
-    }
-
--- | The ARN of the role Amazon Cognito can assume in order to publish to the
--- stream. This role must grant access to Amazon Cognito (cognito-sync) to
--- invoke PutRecord on your Cognito stream.
-csRoleArn :: Lens' CognitoStreams (Maybe Text)
-csRoleArn = lens _csRoleArn (\s a -> s { _csRoleArn = a })
-
--- | The name of the Cognito stream to receive updates. This stream must be in the
--- developers account and in the same region as the identity pool.
-csStreamName :: Lens' CognitoStreams (Maybe Text)
-csStreamName = lens _csStreamName (\s a -> s { _csStreamName = a })
-
--- | Status of the Cognito streams. Valid values are: ENABLED - Streaming of
--- updates to identity pool is enabled.
---
--- DISABLED - Streaming of updates to identity pool is disabled. Bulk publish
--- will also fail if StreamingStatus is DISABLED.
-csStreamingStatus :: Lens' CognitoStreams (Maybe StreamingStatus)
-csStreamingStatus =
-    lens _csStreamingStatus (\s a -> s { _csStreamingStatus = a })
-
-instance FromJSON CognitoStreams where
-    parseJSON = withObject "CognitoStreams" $ \o -> CognitoStreams
-        <$> o .:? "RoleArn"
-        <*> o .:? "StreamName"
-        <*> o .:? "StreamingStatus"
-
-instance ToJSON CognitoStreams where
-    toJSON CognitoStreams{..} = object
-        [ "StreamName"      .= _csStreamName
-        , "RoleArn"         .= _csRoleArn
-        , "StreamingStatus" .= _csStreamingStatus
-        ]
-
-data IdentityUsage = IdentityUsage
-    { _iuDataStorage      :: Maybe Integer
-    , _iuDatasetCount     :: Maybe Int
-    , _iuIdentityId       :: Maybe Text
-    , _iuIdentityPoolId   :: Maybe Text
-    , _iuLastModifiedDate :: Maybe POSIX
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'IdentityUsage' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'iuDataStorage' @::@ 'Maybe' 'Integer'
---
--- * 'iuDatasetCount' @::@ 'Maybe' 'Int'
---
--- * 'iuIdentityId' @::@ 'Maybe' 'Text'
---
--- * 'iuIdentityPoolId' @::@ 'Maybe' 'Text'
---
--- * 'iuLastModifiedDate' @::@ 'Maybe' 'UTCTime'
---
-identityUsage :: IdentityUsage
-identityUsage = IdentityUsage
-    { _iuIdentityId       = Nothing
-    , _iuIdentityPoolId   = Nothing
-    , _iuLastModifiedDate = Nothing
-    , _iuDatasetCount     = Nothing
-    , _iuDataStorage      = Nothing
-    }
-
--- | Total data storage for this identity.
-iuDataStorage :: Lens' IdentityUsage (Maybe Integer)
-iuDataStorage = lens _iuDataStorage (\s a -> s { _iuDataStorage = a })
-
--- | Number of datasets for the identity.
-iuDatasetCount :: Lens' IdentityUsage (Maybe Int)
-iuDatasetCount = lens _iuDatasetCount (\s a -> s { _iuDatasetCount = a })
-
--- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-iuIdentityId :: Lens' IdentityUsage (Maybe Text)
-iuIdentityId = lens _iuIdentityId (\s a -> s { _iuIdentityId = a })
-
--- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-iuIdentityPoolId :: Lens' IdentityUsage (Maybe Text)
-iuIdentityPoolId = lens _iuIdentityPoolId (\s a -> s { _iuIdentityPoolId = a })
-
--- | Date on which the identity was last modified.
-iuLastModifiedDate :: Lens' IdentityUsage (Maybe UTCTime)
-iuLastModifiedDate =
-    lens _iuLastModifiedDate (\s a -> s { _iuLastModifiedDate = a })
-        . mapping _Time
-
-instance FromJSON IdentityUsage where
-    parseJSON = withObject "IdentityUsage" $ \o -> IdentityUsage
-        <$> o .:? "DataStorage"
-        <*> o .:? "DatasetCount"
-        <*> o .:? "IdentityId"
-        <*> o .:? "IdentityPoolId"
-        <*> o .:? "LastModifiedDate"
-
-instance ToJSON IdentityUsage where
-    toJSON IdentityUsage{..} = object
-        [ "IdentityId"       .= _iuIdentityId
-        , "IdentityPoolId"   .= _iuIdentityPoolId
-        , "LastModifiedDate" .= _iuLastModifiedDate
-        , "DatasetCount"     .= _iuDatasetCount
-        , "DataStorage"      .= _iuDataStorage
-        ]
-
-data RecordPatch = RecordPatch
-    { _rpDeviceLastModifiedDate :: Maybe POSIX
-    , _rpKey                    :: Text
-    , _rpOp                     :: Operation
-    , _rpSyncCount              :: Integer
-    , _rpValue                  :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'RecordPatch' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rpDeviceLastModifiedDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'rpKey' @::@ 'Text'
---
--- * 'rpOp' @::@ 'Operation'
---
--- * 'rpSyncCount' @::@ 'Integer'
---
--- * 'rpValue' @::@ 'Maybe' 'Text'
---
-recordPatch :: Operation -- ^ 'rpOp'
-            -> Text -- ^ 'rpKey'
-            -> Integer -- ^ 'rpSyncCount'
-            -> RecordPatch
-recordPatch p1 p2 p3 = RecordPatch
-    { _rpOp                     = p1
-    , _rpKey                    = p2
-    , _rpSyncCount              = p3
-    , _rpValue                  = Nothing
-    , _rpDeviceLastModifiedDate = Nothing
-    }
+        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 last modified date of the client device.
-rpDeviceLastModifiedDate :: Lens' RecordPatch (Maybe UTCTime)
-rpDeviceLastModifiedDate =
-    lens _rpDeviceLastModifiedDate
-        (\s a -> s { _rpDeviceLastModifiedDate = a })
-            . mapping _Time
+-- | Thrown when a request parameter does not comply with the associated
+-- constraints.
+_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidParameterException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidParameter"
 
--- | The key associated with the record patch.
-rpKey :: Lens' RecordPatch Text
-rpKey = lens _rpKey (\s a -> s { _rpKey = a })
+-- | Thrown when a user is not authorized to access the requested resource.
+_NotAuthorizedException :: AsError a => Getting (First ServiceError) a ServiceError
+_NotAuthorizedException =
+    _ServiceError . hasStatus 403 . hasCode "NotAuthorizedError"
 
--- | An operation, either replace or remove.
-rpOp :: Lens' RecordPatch Operation
-rpOp = lens _rpOp (\s a -> s { _rpOp = a })
+-- | Indicates an internal service error.
+_InternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError
+_InternalErrorException =
+    _ServiceError . hasStatus 500 . hasCode "InternalError"
 
--- | Last known server sync count for this record. Set to 0 if unknown.
-rpSyncCount :: Lens' RecordPatch Integer
-rpSyncCount = lens _rpSyncCount (\s a -> s { _rpSyncCount = a })
+-- | Prism for InvalidConfigurationException' errors.
+_InvalidConfigurationException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidConfigurationException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidConfiguration"
 
--- | The value associated with the record patch.
-rpValue :: Lens' RecordPatch (Maybe Text)
-rpValue = lens _rpValue (\s a -> s { _rpValue = a })
+-- | An exception thrown when there is an IN_PROGRESS bulk publish operation
+-- for the given identity pool.
+_DuplicateRequestException :: AsError a => Getting (First ServiceError) a ServiceError
+_DuplicateRequestException =
+    _ServiceError . hasStatus 400 . hasCode "DuplicateRequest"
 
-instance FromJSON RecordPatch where
-    parseJSON = withObject "RecordPatch" $ \o -> RecordPatch
-        <$> o .:? "DeviceLastModifiedDate"
-        <*> o .:  "Key"
-        <*> o .:  "Op"
-        <*> o .:  "SyncCount"
-        <*> o .:? "Value"
+-- | AWS Lambda throttled your account, please contact AWS Support
+_LambdaThrottledException :: AsError a => Getting (First ServiceError) a ServiceError
+_LambdaThrottledException =
+    _ServiceError . hasStatus 429 . hasCode "LambdaThrottled"
 
-instance ToJSON RecordPatch where
-    toJSON RecordPatch{..} = object
-        [ "Op"                     .= _rpOp
-        , "Key"                    .= _rpKey
-        , "Value"                  .= _rpValue
-        , "SyncCount"              .= _rpSyncCount
-        , "DeviceLastModifiedDate" .= _rpDeviceLastModifiedDate
-        ]
+-- | An exception thrown when a bulk publish operation is requested less than
+-- 24 hours after a previous bulk publish operation completed successfully.
+_AlreadyStreamedException :: AsError a => Getting (First ServiceError) a ServiceError
+_AlreadyStreamedException =
+    _ServiceError . hasStatus 400 . hasCode "AlreadyStreamed"
 
-data PushSync = PushSync
-    { _psApplicationArns :: List "ApplicationArns" Text
-    , _psRoleArn         :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | The AWS Lambda function returned invalid output or an exception.
+_InvalidLambdaFunctionOutputException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidLambdaFunctionOutputException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidLambdaFunctionOutput"
 
--- | 'PushSync' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'psApplicationArns' @::@ ['Text']
---
--- * 'psRoleArn' @::@ 'Maybe' 'Text'
---
-pushSync :: PushSync
-pushSync = PushSync
-    { _psApplicationArns = mempty
-    , _psRoleArn         = Nothing
-    }
+-- | Thrown if there are parallel requests to modify a resource.
+_ConcurrentModificationException :: AsError a => Getting (First ServiceError) a ServiceError
+_ConcurrentModificationException =
+    _ServiceError . hasStatus 400 . hasCode "ConcurrentModification"
 
--- | List of SNS platform application ARNs that could be used by clients.
-psApplicationArns :: Lens' PushSync [Text]
-psApplicationArns =
-    lens _psApplicationArns (\s a -> s { _psApplicationArns = a })
-        . _List
+-- | Thrown if the request is throttled.
+_TooManyRequestsException :: AsError a => Getting (First ServiceError) a ServiceError
+_TooManyRequestsException =
+    _ServiceError . hasStatus 429 . hasCode "TooManyRequests"
 
--- | A role configured to allow Cognito to call SNS on behalf of the developer.
-psRoleArn :: Lens' PushSync (Maybe Text)
-psRoleArn = lens _psRoleArn (\s a -> s { _psRoleArn = a })
+-- | Thrown if an update can\'t be applied because the resource was changed
+-- by another call and this would result in a conflict.
+_ResourceConflictException :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceConflictException =
+    _ServiceError . hasStatus 409 . hasCode "ResourceConflict"
 
-instance FromJSON PushSync where
-    parseJSON = withObject "PushSync" $ \o -> PushSync
-        <$> o .:? "ApplicationArns" .!= mempty
-        <*> o .:? "RoleArn"
+-- | Thrown if the resource doesn\'t exist.
+_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceNotFoundException =
+    _ServiceError . hasStatus 404 . hasCode "ResourceNotFound"
 
-instance ToJSON PushSync where
-    toJSON PushSync{..} = object
-        [ "ApplicationArns" .= _psApplicationArns
-        , "RoleArn"         .= _psRoleArn
-        ]
+-- | Thrown when the limit on the number of objects or operations has been
+-- exceeded.
+_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_LimitExceededException =
+    _ServiceError . hasStatus 400 . hasCode "LimitExceeded"
diff --git a/gen/Network/AWS/CognitoSync/Types/Product.hs b/gen/Network/AWS/CognitoSync/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CognitoSync/Types/Product.hs
@@ -0,0 +1,489 @@
+{-# 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.CognitoSync.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.CognitoSync.Types.Product where
+
+import           Network.AWS.CognitoSync.Types.Sum
+import           Network.AWS.Prelude
+
+-- | Configuration options for configure Cognito streams.
+--
+-- /See:/ 'cognitoStreams' smart constructor.
+data CognitoStreams = CognitoStreams'
+    { _csStreamingStatus :: !(Maybe StreamingStatus)
+    , _csStreamName      :: !(Maybe Text)
+    , _csRoleARN         :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CognitoStreams' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csStreamingStatus'
+--
+-- * 'csStreamName'
+--
+-- * 'csRoleARN'
+cognitoStreams
+    :: CognitoStreams
+cognitoStreams =
+    CognitoStreams'
+    { _csStreamingStatus = Nothing
+    , _csStreamName = Nothing
+    , _csRoleARN = Nothing
+    }
+
+-- | Status of the Cognito streams. Valid values are:
+--
+-- ENABLED - Streaming of updates to identity pool is enabled.
+--
+-- DISABLED - Streaming of updates to identity pool is disabled. Bulk
+-- publish will also fail if StreamingStatus is DISABLED.
+csStreamingStatus :: Lens' CognitoStreams (Maybe StreamingStatus)
+csStreamingStatus = lens _csStreamingStatus (\ s a -> s{_csStreamingStatus = a});
+
+-- | The name of the Cognito stream to receive updates. This stream must be
+-- in the developers account and in the same region as the identity pool.
+csStreamName :: Lens' CognitoStreams (Maybe Text)
+csStreamName = lens _csStreamName (\ s a -> s{_csStreamName = a});
+
+-- | The ARN of the role Amazon Cognito can assume in order to publish to the
+-- stream. This role must grant access to Amazon Cognito (cognito-sync) to
+-- invoke PutRecord on your Cognito stream.
+csRoleARN :: Lens' CognitoStreams (Maybe Text)
+csRoleARN = lens _csRoleARN (\ s a -> s{_csRoleARN = a});
+
+instance FromJSON CognitoStreams where
+        parseJSON
+          = withObject "CognitoStreams"
+              (\ x ->
+                 CognitoStreams' <$>
+                   (x .:? "StreamingStatus") <*> (x .:? "StreamName")
+                     <*> (x .:? "RoleArn"))
+
+instance ToJSON CognitoStreams where
+        toJSON CognitoStreams'{..}
+          = object
+              ["StreamingStatus" .= _csStreamingStatus,
+               "StreamName" .= _csStreamName,
+               "RoleArn" .= _csRoleARN]
+
+-- | A collection of data for an identity pool. An identity pool can have
+-- multiple datasets. A dataset is per identity and can be general or
+-- associated with a particular entity in an application (like a saved
+-- game). Datasets are automatically created if they don\'t exist. Data is
+-- synced by dataset, and a dataset can hold up to 1MB of key-value pairs.
+--
+-- /See:/ 'dataset' smart constructor.
+data Dataset = Dataset'
+    { _dLastModifiedDate :: !(Maybe POSIX)
+    , _dNumRecords       :: !(Maybe Integer)
+    , _dDataStorage      :: !(Maybe Integer)
+    , _dDatasetName      :: !(Maybe Text)
+    , _dCreationDate     :: !(Maybe POSIX)
+    , _dLastModifiedBy   :: !(Maybe Text)
+    , _dIdentityId       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Dataset' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dLastModifiedDate'
+--
+-- * 'dNumRecords'
+--
+-- * 'dDataStorage'
+--
+-- * 'dDatasetName'
+--
+-- * 'dCreationDate'
+--
+-- * 'dLastModifiedBy'
+--
+-- * 'dIdentityId'
+dataset
+    :: Dataset
+dataset =
+    Dataset'
+    { _dLastModifiedDate = Nothing
+    , _dNumRecords = Nothing
+    , _dDataStorage = Nothing
+    , _dDatasetName = Nothing
+    , _dCreationDate = Nothing
+    , _dLastModifiedBy = Nothing
+    , _dIdentityId = Nothing
+    }
+
+-- | Date when the dataset was last modified.
+dLastModifiedDate :: Lens' Dataset (Maybe UTCTime)
+dLastModifiedDate = lens _dLastModifiedDate (\ s a -> s{_dLastModifiedDate = a}) . mapping _Time;
+
+-- | Number of records in this dataset.
+dNumRecords :: Lens' Dataset (Maybe Integer)
+dNumRecords = lens _dNumRecords (\ s a -> s{_dNumRecords = a});
+
+-- | Total size in bytes of the records in this dataset.
+dDataStorage :: Lens' Dataset (Maybe Integer)
+dDataStorage = lens _dDataStorage (\ s a -> s{_dDataStorage = a});
+
+-- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+dDatasetName :: Lens' Dataset (Maybe Text)
+dDatasetName = lens _dDatasetName (\ s a -> s{_dDatasetName = a});
+
+-- | Date on which the dataset was created.
+dCreationDate :: Lens' Dataset (Maybe UTCTime)
+dCreationDate = lens _dCreationDate (\ s a -> s{_dCreationDate = a}) . mapping _Time;
+
+-- | The device that made the last change to this dataset.
+dLastModifiedBy :: Lens' Dataset (Maybe Text)
+dLastModifiedBy = lens _dLastModifiedBy (\ s a -> s{_dLastModifiedBy = a});
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+dIdentityId :: Lens' Dataset (Maybe Text)
+dIdentityId = lens _dIdentityId (\ s a -> s{_dIdentityId = a});
+
+instance FromJSON Dataset where
+        parseJSON
+          = withObject "Dataset"
+              (\ x ->
+                 Dataset' <$>
+                   (x .:? "LastModifiedDate") <*> (x .:? "NumRecords")
+                     <*> (x .:? "DataStorage")
+                     <*> (x .:? "DatasetName")
+                     <*> (x .:? "CreationDate")
+                     <*> (x .:? "LastModifiedBy")
+                     <*> (x .:? "IdentityId"))
+
+-- | Usage information for the identity pool.
+--
+-- /See:/ 'identityPoolUsage' smart constructor.
+data IdentityPoolUsage = IdentityPoolUsage'
+    { _ipuLastModifiedDate  :: !(Maybe POSIX)
+    , _ipuIdentityPoolId    :: !(Maybe Text)
+    , _ipuDataStorage       :: !(Maybe Integer)
+    , _ipuSyncSessionsCount :: !(Maybe Integer)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IdentityPoolUsage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ipuLastModifiedDate'
+--
+-- * 'ipuIdentityPoolId'
+--
+-- * 'ipuDataStorage'
+--
+-- * 'ipuSyncSessionsCount'
+identityPoolUsage
+    :: IdentityPoolUsage
+identityPoolUsage =
+    IdentityPoolUsage'
+    { _ipuLastModifiedDate = Nothing
+    , _ipuIdentityPoolId = Nothing
+    , _ipuDataStorage = Nothing
+    , _ipuSyncSessionsCount = Nothing
+    }
+
+-- | Date on which the identity pool was last modified.
+ipuLastModifiedDate :: Lens' IdentityPoolUsage (Maybe UTCTime)
+ipuLastModifiedDate = lens _ipuLastModifiedDate (\ s a -> s{_ipuLastModifiedDate = a}) . mapping _Time;
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+ipuIdentityPoolId :: Lens' IdentityPoolUsage (Maybe Text)
+ipuIdentityPoolId = lens _ipuIdentityPoolId (\ s a -> s{_ipuIdentityPoolId = a});
+
+-- | Data storage information for the identity pool.
+ipuDataStorage :: Lens' IdentityPoolUsage (Maybe Integer)
+ipuDataStorage = lens _ipuDataStorage (\ s a -> s{_ipuDataStorage = a});
+
+-- | Number of sync sessions for the identity pool.
+ipuSyncSessionsCount :: Lens' IdentityPoolUsage (Maybe Integer)
+ipuSyncSessionsCount = lens _ipuSyncSessionsCount (\ s a -> s{_ipuSyncSessionsCount = a});
+
+instance FromJSON IdentityPoolUsage where
+        parseJSON
+          = withObject "IdentityPoolUsage"
+              (\ x ->
+                 IdentityPoolUsage' <$>
+                   (x .:? "LastModifiedDate") <*>
+                     (x .:? "IdentityPoolId")
+                     <*> (x .:? "DataStorage")
+                     <*> (x .:? "SyncSessionsCount"))
+
+-- | Usage information for the identity.
+--
+-- /See:/ 'identityUsage' smart constructor.
+data IdentityUsage = IdentityUsage'
+    { _iuLastModifiedDate :: !(Maybe POSIX)
+    , _iuIdentityPoolId   :: !(Maybe Text)
+    , _iuDatasetCount     :: !(Maybe Int)
+    , _iuDataStorage      :: !(Maybe Integer)
+    , _iuIdentityId       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IdentityUsage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iuLastModifiedDate'
+--
+-- * 'iuIdentityPoolId'
+--
+-- * 'iuDatasetCount'
+--
+-- * 'iuDataStorage'
+--
+-- * 'iuIdentityId'
+identityUsage
+    :: IdentityUsage
+identityUsage =
+    IdentityUsage'
+    { _iuLastModifiedDate = Nothing
+    , _iuIdentityPoolId = Nothing
+    , _iuDatasetCount = Nothing
+    , _iuDataStorage = Nothing
+    , _iuIdentityId = Nothing
+    }
+
+-- | Date on which the identity was last modified.
+iuLastModifiedDate :: Lens' IdentityUsage (Maybe UTCTime)
+iuLastModifiedDate = lens _iuLastModifiedDate (\ s a -> s{_iuLastModifiedDate = a}) . mapping _Time;
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+iuIdentityPoolId :: Lens' IdentityUsage (Maybe Text)
+iuIdentityPoolId = lens _iuIdentityPoolId (\ s a -> s{_iuIdentityPoolId = a});
+
+-- | Number of datasets for the identity.
+iuDatasetCount :: Lens' IdentityUsage (Maybe Int)
+iuDatasetCount = lens _iuDatasetCount (\ s a -> s{_iuDatasetCount = a});
+
+-- | Total data storage for this identity.
+iuDataStorage :: Lens' IdentityUsage (Maybe Integer)
+iuDataStorage = lens _iuDataStorage (\ s a -> s{_iuDataStorage = a});
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+iuIdentityId :: Lens' IdentityUsage (Maybe Text)
+iuIdentityId = lens _iuIdentityId (\ s a -> s{_iuIdentityId = a});
+
+instance FromJSON IdentityUsage where
+        parseJSON
+          = withObject "IdentityUsage"
+              (\ x ->
+                 IdentityUsage' <$>
+                   (x .:? "LastModifiedDate") <*>
+                     (x .:? "IdentityPoolId")
+                     <*> (x .:? "DatasetCount")
+                     <*> (x .:? "DataStorage")
+                     <*> (x .:? "IdentityId"))
+
+-- | Configuration options to be applied to the identity pool.
+--
+-- /See:/ 'pushSync' smart constructor.
+data PushSync = PushSync'
+    { _psApplicationARNs :: !(Maybe [Text])
+    , _psRoleARN         :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PushSync' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psApplicationARNs'
+--
+-- * 'psRoleARN'
+pushSync
+    :: PushSync
+pushSync =
+    PushSync'
+    { _psApplicationARNs = Nothing
+    , _psRoleARN = Nothing
+    }
+
+-- | List of SNS platform application ARNs that could be used by clients.
+psApplicationARNs :: Lens' PushSync [Text]
+psApplicationARNs = lens _psApplicationARNs (\ s a -> s{_psApplicationARNs = a}) . _Default . _Coerce;
+
+-- | A role configured to allow Cognito to call SNS on behalf of the
+-- developer.
+psRoleARN :: Lens' PushSync (Maybe Text)
+psRoleARN = lens _psRoleARN (\ s a -> s{_psRoleARN = a});
+
+instance FromJSON PushSync where
+        parseJSON
+          = withObject "PushSync"
+              (\ x ->
+                 PushSync' <$>
+                   (x .:? "ApplicationArns" .!= mempty) <*>
+                     (x .:? "RoleArn"))
+
+instance ToJSON PushSync where
+        toJSON PushSync'{..}
+          = object
+              ["ApplicationArns" .= _psApplicationARNs,
+               "RoleArn" .= _psRoleARN]
+
+-- | The basic data structure of a dataset.
+--
+-- /See:/ 'record' smart constructor.
+data Record = Record'
+    { _rSyncCount              :: !(Maybe Integer)
+    , _rLastModifiedDate       :: !(Maybe POSIX)
+    , _rDeviceLastModifiedDate :: !(Maybe POSIX)
+    , _rValue                  :: !(Maybe Text)
+    , _rKey                    :: !(Maybe Text)
+    , _rLastModifiedBy         :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Record' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rSyncCount'
+--
+-- * 'rLastModifiedDate'
+--
+-- * 'rDeviceLastModifiedDate'
+--
+-- * 'rValue'
+--
+-- * 'rKey'
+--
+-- * 'rLastModifiedBy'
+record
+    :: Record
+record =
+    Record'
+    { _rSyncCount = Nothing
+    , _rLastModifiedDate = Nothing
+    , _rDeviceLastModifiedDate = Nothing
+    , _rValue = Nothing
+    , _rKey = Nothing
+    , _rLastModifiedBy = Nothing
+    }
+
+-- | The server sync count for this record.
+rSyncCount :: Lens' Record (Maybe Integer)
+rSyncCount = lens _rSyncCount (\ s a -> s{_rSyncCount = a});
+
+-- | The date on which the record was last modified.
+rLastModifiedDate :: Lens' Record (Maybe UTCTime)
+rLastModifiedDate = lens _rLastModifiedDate (\ s a -> s{_rLastModifiedDate = a}) . mapping _Time;
+
+-- | The last modified date of the client device.
+rDeviceLastModifiedDate :: Lens' Record (Maybe UTCTime)
+rDeviceLastModifiedDate = lens _rDeviceLastModifiedDate (\ s a -> s{_rDeviceLastModifiedDate = a}) . mapping _Time;
+
+-- | The value for the record.
+rValue :: Lens' Record (Maybe Text)
+rValue = lens _rValue (\ s a -> s{_rValue = a});
+
+-- | The key for the record.
+rKey :: Lens' Record (Maybe Text)
+rKey = lens _rKey (\ s a -> s{_rKey = a});
+
+-- | The user\/device that made the last change to this record.
+rLastModifiedBy :: Lens' Record (Maybe Text)
+rLastModifiedBy = lens _rLastModifiedBy (\ s a -> s{_rLastModifiedBy = a});
+
+instance FromJSON Record where
+        parseJSON
+          = withObject "Record"
+              (\ x ->
+                 Record' <$>
+                   (x .:? "SyncCount") <*> (x .:? "LastModifiedDate")
+                     <*> (x .:? "DeviceLastModifiedDate")
+                     <*> (x .:? "Value")
+                     <*> (x .:? "Key")
+                     <*> (x .:? "LastModifiedBy"))
+
+-- | An update operation for a record.
+--
+-- /See:/ 'recordPatch' smart constructor.
+data RecordPatch = RecordPatch'
+    { _rpDeviceLastModifiedDate :: !(Maybe POSIX)
+    , _rpValue                  :: !(Maybe Text)
+    , _rpOp                     :: !Operation
+    , _rpKey                    :: !Text
+    , _rpSyncCount              :: !Integer
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RecordPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rpDeviceLastModifiedDate'
+--
+-- * 'rpValue'
+--
+-- * 'rpOp'
+--
+-- * 'rpKey'
+--
+-- * 'rpSyncCount'
+recordPatch
+    :: Operation -- ^ 'rpOp'
+    -> Text -- ^ 'rpKey'
+    -> Integer -- ^ 'rpSyncCount'
+    -> RecordPatch
+recordPatch pOp_ pKey_ pSyncCount_ =
+    RecordPatch'
+    { _rpDeviceLastModifiedDate = Nothing
+    , _rpValue = Nothing
+    , _rpOp = pOp_
+    , _rpKey = pKey_
+    , _rpSyncCount = pSyncCount_
+    }
+
+-- | The last modified date of the client device.
+rpDeviceLastModifiedDate :: Lens' RecordPatch (Maybe UTCTime)
+rpDeviceLastModifiedDate = lens _rpDeviceLastModifiedDate (\ s a -> s{_rpDeviceLastModifiedDate = a}) . mapping _Time;
+
+-- | The value associated with the record patch.
+rpValue :: Lens' RecordPatch (Maybe Text)
+rpValue = lens _rpValue (\ s a -> s{_rpValue = a});
+
+-- | An operation, either replace or remove.
+rpOp :: Lens' RecordPatch Operation
+rpOp = lens _rpOp (\ s a -> s{_rpOp = a});
+
+-- | The key associated with the record patch.
+rpKey :: Lens' RecordPatch Text
+rpKey = lens _rpKey (\ s a -> s{_rpKey = a});
+
+-- | Last known server sync count for this record. Set to 0 if unknown.
+rpSyncCount :: Lens' RecordPatch Integer
+rpSyncCount = lens _rpSyncCount (\ s a -> s{_rpSyncCount = a});
+
+instance ToJSON RecordPatch where
+        toJSON RecordPatch'{..}
+          = object
+              ["DeviceLastModifiedDate" .=
+                 _rpDeviceLastModifiedDate,
+               "Value" .= _rpValue, "Op" .= _rpOp, "Key" .= _rpKey,
+               "SyncCount" .= _rpSyncCount]
diff --git a/gen/Network/AWS/CognitoSync/Types/Sum.hs b/gen/Network/AWS/CognitoSync/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CognitoSync/Types/Sum.hs
@@ -0,0 +1,135 @@
+{-# 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.CognitoSync.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.CognitoSync.Types.Sum where
+
+import           Network.AWS.Prelude
+
+data BulkPublishStatus
+    = Failed
+    | InProgress
+    | NotStarted
+    | Succeeded
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText BulkPublishStatus where
+    parser = takeLowerText >>= \case
+        "failed" -> pure Failed
+        "in_progress" -> pure InProgress
+        "not_started" -> pure NotStarted
+        "succeeded" -> pure Succeeded
+        e -> fromTextError $ "Failure parsing BulkPublishStatus from value: '" <> e
+           <> "'. Accepted values: failed, in_progress, not_started, succeeded"
+
+instance ToText BulkPublishStatus where
+    toText = \case
+        Failed -> "failed"
+        InProgress -> "in_progress"
+        NotStarted -> "not_started"
+        Succeeded -> "succeeded"
+
+instance Hashable     BulkPublishStatus
+instance ToByteString BulkPublishStatus
+instance ToQuery      BulkPublishStatus
+instance ToHeader     BulkPublishStatus
+
+instance FromJSON BulkPublishStatus where
+    parseJSON = parseJSONText "BulkPublishStatus"
+
+data Operation
+    = Remove
+    | Replace
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText Operation where
+    parser = takeLowerText >>= \case
+        "remove" -> pure Remove
+        "replace" -> pure Replace
+        e -> fromTextError $ "Failure parsing Operation from value: '" <> e
+           <> "'. Accepted values: remove, replace"
+
+instance ToText Operation where
+    toText = \case
+        Remove -> "remove"
+        Replace -> "replace"
+
+instance Hashable     Operation
+instance ToByteString Operation
+instance ToQuery      Operation
+instance ToHeader     Operation
+
+instance ToJSON Operation where
+    toJSON = toJSONText
+
+data Platform
+    = ADM
+    | APNS
+    | APNSSandbox
+    | GCM
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText Platform where
+    parser = takeLowerText >>= \case
+        "adm" -> pure ADM
+        "apns" -> pure APNS
+        "apns_sandbox" -> pure APNSSandbox
+        "gcm" -> pure GCM
+        e -> fromTextError $ "Failure parsing Platform from value: '" <> e
+           <> "'. Accepted values: adm, apns, apns_sandbox, gcm"
+
+instance ToText Platform where
+    toText = \case
+        ADM -> "adm"
+        APNS -> "apns"
+        APNSSandbox -> "apns_sandbox"
+        GCM -> "gcm"
+
+instance Hashable     Platform
+instance ToByteString Platform
+instance ToQuery      Platform
+instance ToHeader     Platform
+
+instance ToJSON Platform where
+    toJSON = toJSONText
+
+data StreamingStatus
+    = Disabled
+    | Enabled
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText StreamingStatus where
+    parser = takeLowerText >>= \case
+        "disabled" -> pure Disabled
+        "enabled" -> pure Enabled
+        e -> fromTextError $ "Failure parsing StreamingStatus from value: '" <> e
+           <> "'. Accepted values: disabled, enabled"
+
+instance ToText StreamingStatus where
+    toText = \case
+        Disabled -> "disabled"
+        Enabled -> "enabled"
+
+instance Hashable     StreamingStatus
+instance ToByteString StreamingStatus
+instance ToQuery      StreamingStatus
+instance ToHeader     StreamingStatus
+
+instance ToJSON StreamingStatus where
+    toJSON = toJSONText
+
+instance FromJSON StreamingStatus where
+    parseJSON = parseJSONText "StreamingStatus"
diff --git a/gen/Network/AWS/CognitoSync/UnsubscribeFromDataset.hs b/gen/Network/AWS/CognitoSync/UnsubscribeFromDataset.hs
--- a/gen/Network/AWS/CognitoSync/UnsubscribeFromDataset.hs
+++ b/gen/Network/AWS/CognitoSync/UnsubscribeFromDataset.hs
@@ -1,135 +1,156 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CognitoSync.UnsubscribeFromDataset
--- 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.
-
--- | Unsubscribes from receiving notifications when a dataset is modified by
+-- Unsubscribes from receiving notifications when a dataset is modified by
 -- another device.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_UnsubscribeFromDataset.html>
+-- This API can only be called with temporary credentials provided by
+-- Cognito Identity. You cannot call this API with developer credentials.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_UnsubscribeFromDataset.html AWS API Reference> for UnsubscribeFromDataset.
 module Network.AWS.CognitoSync.UnsubscribeFromDataset
     (
-    -- * Request
-      UnsubscribeFromDataset
-    -- ** Request constructor
-    , unsubscribeFromDataset
-    -- ** Request lenses
+    -- * Creating a Request
+      unsubscribeFromDataset
+    , UnsubscribeFromDataset
+    -- * Request Lenses
+    , ufdIdentityPoolId
+    , ufdIdentityId
     , ufdDatasetName
     , ufdDeviceId
-    , ufdIdentityId
-    , ufdIdentityPoolId
 
-    -- * Response
-    , UnsubscribeFromDatasetResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , unsubscribeFromDatasetResponse
+    , UnsubscribeFromDatasetResponse
+    -- * Response Lenses
+    , ufdrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
-
-data UnsubscribeFromDataset = UnsubscribeFromDataset
-    { _ufdDatasetName    :: Text
-    , _ufdDeviceId       :: Text
-    , _ufdIdentityId     :: Text
-    , _ufdIdentityPoolId :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'UnsubscribeFromDataset' constructor.
+-- | A request to UnsubscribeFromDataset.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'unsubscribeFromDataset' smart constructor.
+data UnsubscribeFromDataset = UnsubscribeFromDataset'
+    { _ufdIdentityPoolId :: !Text
+    , _ufdIdentityId     :: !Text
+    , _ufdDatasetName    :: !Text
+    , _ufdDeviceId       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UnsubscribeFromDataset' with the minimum fields required to make a request.
 --
--- * 'ufdDatasetName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ufdDeviceId' @::@ 'Text'
+-- * 'ufdIdentityPoolId'
 --
--- * 'ufdIdentityId' @::@ 'Text'
+-- * 'ufdIdentityId'
 --
--- * 'ufdIdentityPoolId' @::@ 'Text'
+-- * 'ufdDatasetName'
 --
-unsubscribeFromDataset :: Text -- ^ 'ufdIdentityPoolId'
-                       -> Text -- ^ 'ufdIdentityId'
-                       -> Text -- ^ 'ufdDatasetName'
-                       -> Text -- ^ 'ufdDeviceId'
-                       -> UnsubscribeFromDataset
-unsubscribeFromDataset p1 p2 p3 p4 = UnsubscribeFromDataset
-    { _ufdIdentityPoolId = p1
-    , _ufdIdentityId     = p2
-    , _ufdDatasetName    = p3
-    , _ufdDeviceId       = p4
+-- * 'ufdDeviceId'
+unsubscribeFromDataset
+    :: Text -- ^ 'ufdIdentityPoolId'
+    -> Text -- ^ 'ufdIdentityId'
+    -> Text -- ^ 'ufdDatasetName'
+    -> Text -- ^ 'ufdDeviceId'
+    -> UnsubscribeFromDataset
+unsubscribeFromDataset pIdentityPoolId_ pIdentityId_ pDatasetName_ pDeviceId_ =
+    UnsubscribeFromDataset'
+    { _ufdIdentityPoolId = pIdentityPoolId_
+    , _ufdIdentityId = pIdentityId_
+    , _ufdDatasetName = pDatasetName_
+    , _ufdDeviceId = pDeviceId_
     }
 
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. The ID of the pool to which this identity belongs.
+ufdIdentityPoolId :: Lens' UnsubscribeFromDataset Text
+ufdIdentityPoolId = lens _ufdIdentityPoolId (\ s a -> s{_ufdIdentityPoolId = a});
+
+-- | Unique ID for this identity.
+ufdIdentityId :: Lens' UnsubscribeFromDataset Text
+ufdIdentityId = lens _ufdIdentityId (\ s a -> s{_ufdIdentityId = a});
+
 -- | The name of the dataset from which to unsubcribe.
 ufdDatasetName :: Lens' UnsubscribeFromDataset Text
-ufdDatasetName = lens _ufdDatasetName (\s a -> s { _ufdDatasetName = a })
+ufdDatasetName = lens _ufdDatasetName (\ s a -> s{_ufdDatasetName = a});
 
 -- | The unique ID generated for this device by Cognito.
 ufdDeviceId :: Lens' UnsubscribeFromDataset Text
-ufdDeviceId = lens _ufdDeviceId (\s a -> s { _ufdDeviceId = a })
-
--- | Unique ID for this identity.
-ufdIdentityId :: Lens' UnsubscribeFromDataset Text
-ufdIdentityId = lens _ufdIdentityId (\s a -> s { _ufdIdentityId = a })
-
--- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- The ID of the pool to which this identity belongs.
-ufdIdentityPoolId :: Lens' UnsubscribeFromDataset Text
-ufdIdentityPoolId =
-    lens _ufdIdentityPoolId (\s a -> s { _ufdIdentityPoolId = a })
+ufdDeviceId = lens _ufdDeviceId (\ s a -> s{_ufdDeviceId = a});
 
-data UnsubscribeFromDatasetResponse = UnsubscribeFromDatasetResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest UnsubscribeFromDataset where
+        type Sv UnsubscribeFromDataset = CognitoSync
+        type Rs UnsubscribeFromDataset =
+             UnsubscribeFromDatasetResponse
+        request = delete
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 UnsubscribeFromDatasetResponse' <$>
+                   (pure (fromEnum s)))
 
--- | 'UnsubscribeFromDatasetResponse' constructor.
-unsubscribeFromDatasetResponse :: UnsubscribeFromDatasetResponse
-unsubscribeFromDatasetResponse = UnsubscribeFromDatasetResponse
+instance ToHeaders UnsubscribeFromDataset where
+        toHeaders
+          = const
+              (mconcat
+                 ["Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToPath UnsubscribeFromDataset where
-    toPath UnsubscribeFromDataset{..} = mconcat
-        [ "/identitypools/"
-        , toText _ufdIdentityPoolId
-        , "/identities/"
-        , toText _ufdIdentityId
-        , "/datasets/"
-        , toText _ufdDatasetName
-        , "/subscriptions/"
-        , toText _ufdDeviceId
-        ]
+        toPath UnsubscribeFromDataset'{..}
+          = mconcat
+              ["/identitypools/", toBS _ufdIdentityPoolId,
+               "/identities/", toBS _ufdIdentityId, "/datasets/",
+               toBS _ufdDatasetName, "/subscriptions/",
+               toBS _ufdDeviceId]
 
 instance ToQuery UnsubscribeFromDataset where
-    toQuery = const mempty
-
-instance ToHeaders UnsubscribeFromDataset
+        toQuery = const mempty
 
-instance ToJSON UnsubscribeFromDataset where
-    toJSON = const (toJSON Empty)
+-- | Response to an UnsubscribeFromDataset request.
+--
+-- /See:/ 'unsubscribeFromDatasetResponse' smart constructor.
+newtype UnsubscribeFromDatasetResponse = UnsubscribeFromDatasetResponse'
+    { _ufdrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest UnsubscribeFromDataset where
-    type Sv UnsubscribeFromDataset = CognitoSync
-    type Rs UnsubscribeFromDataset = UnsubscribeFromDatasetResponse
+-- | Creates a value of 'UnsubscribeFromDatasetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ufdrsStatus'
+unsubscribeFromDatasetResponse
+    :: Int -- ^ 'ufdrsStatus'
+    -> UnsubscribeFromDatasetResponse
+unsubscribeFromDatasetResponse pStatus_ =
+    UnsubscribeFromDatasetResponse'
+    { _ufdrsStatus = pStatus_
+    }
 
-    request  = delete
-    response = nullResponse UnsubscribeFromDatasetResponse
+-- | The response status code.
+ufdrsStatus :: Lens' UnsubscribeFromDatasetResponse Int
+ufdrsStatus = lens _ufdrsStatus (\ s a -> s{_ufdrsStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/UpdateRecords.hs b/gen/Network/AWS/CognitoSync/UpdateRecords.hs
--- a/gen/Network/AWS/CognitoSync/UpdateRecords.hs
+++ b/gen/Network/AWS/CognitoSync/UpdateRecords.hs
@@ -1,198 +1,217 @@
-{-# 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.CognitoSync.UpdateRecords
--- 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.
-
--- | Posts updates to records and adds and deletes records for a dataset and user.
+-- Posts updates to records and adds and deletes records for a dataset and
+-- user.
 --
--- UpdateRecords can only be called with temporary user credentials provided by
--- Cognito Identity. You cannot make this API call with developer credentials.
+-- The sync count in the record patch is your last known sync count for
+-- that record. The server will reject an UpdateRecords request with a
+-- ResourceConflictException if you try to patch a record with a new value
+-- but a stale sync count.
 --
--- <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_UpdateRecords.html>
+-- For example, if the sync count on the server is 5 for a key called
+-- highScore and you try and submit a new highScore with sync count of 4,
+-- the request will be rejected. To obtain the current sync count for a
+-- record, call ListRecords. On a successful update of the record, the
+-- response returns the new sync count for that record. You should present
+-- that sync count the next time you try to update that same record. When
+-- the record does not exist, specify the sync count as 0.
+--
+-- This API can be called with temporary user credentials provided by
+-- Cognito Identity or with developer credentials.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitosync/latest/APIReference/API_UpdateRecords.html AWS API Reference> for UpdateRecords.
 module Network.AWS.CognitoSync.UpdateRecords
     (
-    -- * Request
-      UpdateRecords
-    -- ** Request constructor
-    , updateRecords
-    -- ** Request lenses
-    , urClientContext
-    , urDatasetName
+    -- * Creating a Request
+      updateRecords
+    , UpdateRecords
+    -- * Request Lenses
+    , urRecordPatches
     , urDeviceId
-    , urIdentityId
+    , urClientContext
     , urIdentityPoolId
-    , urRecordPatches
+    , urIdentityId
+    , urDatasetName
     , urSyncSessionToken
 
-    -- * Response
-    , UpdateRecordsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateRecordsResponse
-    -- ** Response lenses
-    , urrRecords
+    , UpdateRecordsResponse
+    -- * Response Lenses
+    , urrsRecords
+    , urrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.RestJSON
-import Network.AWS.CognitoSync.Types
-import qualified GHC.Exts
-
-data UpdateRecords = UpdateRecords
-    { _urClientContext    :: Maybe Text
-    , _urDatasetName      :: Text
-    , _urDeviceId         :: Maybe Text
-    , _urIdentityId       :: Text
-    , _urIdentityPoolId   :: Text
-    , _urRecordPatches    :: List "RecordPatches" RecordPatch
-    , _urSyncSessionToken :: Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.CognitoSync.Types
+import           Network.AWS.CognitoSync.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'UpdateRecords' constructor.
+-- | A request to post updates to records or add and delete records for a
+-- dataset and user.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'updateRecords' smart constructor.
+data UpdateRecords = UpdateRecords'
+    { _urRecordPatches    :: !(Maybe [RecordPatch])
+    , _urDeviceId         :: !(Maybe Text)
+    , _urClientContext    :: !(Maybe Text)
+    , _urIdentityPoolId   :: !Text
+    , _urIdentityId       :: !Text
+    , _urDatasetName      :: !Text
+    , _urSyncSessionToken :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateRecords' with the minimum fields required to make a request.
 --
--- * 'urClientContext' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'urDatasetName' @::@ 'Text'
+-- * 'urRecordPatches'
 --
--- * 'urDeviceId' @::@ 'Maybe' 'Text'
+-- * 'urDeviceId'
 --
--- * 'urIdentityId' @::@ 'Text'
+-- * 'urClientContext'
 --
--- * 'urIdentityPoolId' @::@ 'Text'
+-- * 'urIdentityPoolId'
 --
--- * 'urRecordPatches' @::@ ['RecordPatch']
+-- * 'urIdentityId'
 --
--- * 'urSyncSessionToken' @::@ 'Text'
+-- * 'urDatasetName'
 --
-updateRecords :: Text -- ^ 'urIdentityPoolId'
-              -> Text -- ^ 'urIdentityId'
-              -> Text -- ^ 'urDatasetName'
-              -> Text -- ^ 'urSyncSessionToken'
-              -> UpdateRecords
-updateRecords p1 p2 p3 p4 = UpdateRecords
-    { _urIdentityPoolId   = p1
-    , _urIdentityId       = p2
-    , _urDatasetName      = p3
-    , _urSyncSessionToken = p4
-    , _urDeviceId         = Nothing
-    , _urRecordPatches    = mempty
-    , _urClientContext    = Nothing
+-- * 'urSyncSessionToken'
+updateRecords
+    :: Text -- ^ 'urIdentityPoolId'
+    -> Text -- ^ 'urIdentityId'
+    -> Text -- ^ 'urDatasetName'
+    -> Text -- ^ 'urSyncSessionToken'
+    -> UpdateRecords
+updateRecords pIdentityPoolId_ pIdentityId_ pDatasetName_ pSyncSessionToken_ =
+    UpdateRecords'
+    { _urRecordPatches = Nothing
+    , _urDeviceId = Nothing
+    , _urClientContext = Nothing
+    , _urIdentityPoolId = pIdentityPoolId_
+    , _urIdentityId = pIdentityId_
+    , _urDatasetName = pDatasetName_
+    , _urSyncSessionToken = pSyncSessionToken_
     }
 
--- | Intended to supply a device ID that will populate the lastModifiedBy field
--- referenced in other methods. The ClientContext field is not yet implemented.
-urClientContext :: Lens' UpdateRecords (Maybe Text)
-urClientContext = lens _urClientContext (\s a -> s { _urClientContext = a })
-
--- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_'
--- (underscore), '-' (dash), and '.' (dot).
-urDatasetName :: Lens' UpdateRecords Text
-urDatasetName = lens _urDatasetName (\s a -> s { _urDatasetName = a })
+-- | A list of patch operations.
+urRecordPatches :: Lens' UpdateRecords [RecordPatch]
+urRecordPatches = lens _urRecordPatches (\ s a -> s{_urRecordPatches = a}) . _Default . _Coerce;
 
 -- | The unique ID generated for this device by Cognito.
 urDeviceId :: Lens' UpdateRecords (Maybe Text)
-urDeviceId = lens _urDeviceId (\s a -> s { _urDeviceId = a })
+urDeviceId = lens _urDeviceId (\ s a -> s{_urDeviceId = a});
 
--- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
-urIdentityId :: Lens' UpdateRecords Text
-urIdentityId = lens _urIdentityId (\s a -> s { _urIdentityId = a })
+-- | Intended to supply a device ID that will populate the lastModifiedBy
+-- field referenced in other methods. The ClientContext field is not yet
+-- implemented.
+urClientContext :: Lens' UpdateRecords (Maybe Text)
+urClientContext = lens _urClientContext (\ s a -> s{_urClientContext = a});
 
 -- | A name-spaced GUID (for example,
--- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
--- GUID generation is unique within a region.
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
 urIdentityPoolId :: Lens' UpdateRecords Text
-urIdentityPoolId = lens _urIdentityPoolId (\s a -> s { _urIdentityPoolId = a })
+urIdentityPoolId = lens _urIdentityPoolId (\ s a -> s{_urIdentityPoolId = a});
 
--- | A list of patch operations.
-urRecordPatches :: Lens' UpdateRecords [RecordPatch]
-urRecordPatches = lens _urRecordPatches (\s a -> s { _urRecordPatches = a }) . _List
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+urIdentityId :: Lens' UpdateRecords Text
+urIdentityId = lens _urIdentityId (\ s a -> s{_urIdentityId = a});
 
+-- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+urDatasetName :: Lens' UpdateRecords Text
+urDatasetName = lens _urDatasetName (\ s a -> s{_urDatasetName = a});
+
 -- | The SyncSessionToken returned by a previous call to ListRecords for this
 -- dataset and identity.
 urSyncSessionToken :: Lens' UpdateRecords Text
-urSyncSessionToken =
-    lens _urSyncSessionToken (\s a -> s { _urSyncSessionToken = a })
-
-newtype UpdateRecordsResponse = UpdateRecordsResponse
-    { _urrRecords :: List "Records" Record
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList UpdateRecordsResponse where
-    type Item UpdateRecordsResponse = Record
+urSyncSessionToken = lens _urSyncSessionToken (\ s a -> s{_urSyncSessionToken = a});
 
-    fromList = UpdateRecordsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _urrRecords
+instance AWSRequest UpdateRecords where
+        type Sv UpdateRecords = CognitoSync
+        type Rs UpdateRecords = UpdateRecordsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateRecordsResponse' <$>
+                   (x .?> "Records" .!@ mempty) <*> (pure (fromEnum s)))
 
--- | 'UpdateRecordsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'urrRecords' @::@ ['Record']
---
-updateRecordsResponse :: UpdateRecordsResponse
-updateRecordsResponse = UpdateRecordsResponse
-    { _urrRecords = mempty
-    }
+instance ToHeaders UpdateRecords where
+        toHeaders UpdateRecords'{..}
+          = mconcat
+              ["x-amz-Client-Context" =# _urClientContext,
+               "Content-Type" =#
+                 ("application/x-amz-json-1.1" :: ByteString)]
 
--- | A list of records that have been updated.
-urrRecords :: Lens' UpdateRecordsResponse [Record]
-urrRecords = lens _urrRecords (\s a -> s { _urrRecords = a }) . _List
+instance ToJSON UpdateRecords where
+        toJSON UpdateRecords'{..}
+          = object
+              ["RecordPatches" .= _urRecordPatches,
+               "DeviceId" .= _urDeviceId,
+               "SyncSessionToken" .= _urSyncSessionToken]
 
 instance ToPath UpdateRecords where
-    toPath UpdateRecords{..} = mconcat
-        [ "/identitypools/"
-        , toText _urIdentityPoolId
-        , "/identities/"
-        , toText _urIdentityId
-        , "/datasets/"
-        , toText _urDatasetName
-        ]
+        toPath UpdateRecords'{..}
+          = mconcat
+              ["/identitypools/", toBS _urIdentityPoolId,
+               "/identities/", toBS _urIdentityId, "/datasets/",
+               toBS _urDatasetName]
 
 instance ToQuery UpdateRecords where
-    toQuery = const mempty
-
-instance ToHeaders UpdateRecords where
-    toHeaders UpdateRecords{..} = mconcat
-        [ "x-amz-Client-Context" =: _urClientContext
-        ]
+        toQuery = const mempty
 
-instance ToJSON UpdateRecords where
-    toJSON UpdateRecords{..} = object
-        [ "DeviceId"         .= _urDeviceId
-        , "RecordPatches"    .= _urRecordPatches
-        , "SyncSessionToken" .= _urSyncSessionToken
-        ]
+-- | Returned for a successful UpdateRecordsRequest.
+--
+-- /See:/ 'updateRecordsResponse' smart constructor.
+data UpdateRecordsResponse = UpdateRecordsResponse'
+    { _urrsRecords :: !(Maybe [Record])
+    , _urrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest UpdateRecords where
-    type Sv UpdateRecords = CognitoSync
-    type Rs UpdateRecords = UpdateRecordsResponse
+-- | Creates a value of 'UpdateRecordsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urrsRecords'
+--
+-- * 'urrsStatus'
+updateRecordsResponse
+    :: Int -- ^ 'urrsStatus'
+    -> UpdateRecordsResponse
+updateRecordsResponse pStatus_ =
+    UpdateRecordsResponse'
+    { _urrsRecords = Nothing
+    , _urrsStatus = pStatus_
+    }
 
-    request  = post
-    response = jsonResponse
+-- | A list of records that have been updated.
+urrsRecords :: Lens' UpdateRecordsResponse [Record]
+urrsRecords = lens _urrsRecords (\ s a -> s{_urrsRecords = a}) . _Default . _Coerce;
 
-instance FromJSON UpdateRecordsResponse where
-    parseJSON = withObject "UpdateRecordsResponse" $ \o -> UpdateRecordsResponse
-        <$> o .:? "Records" .!= mempty
+-- | The response status code.
+urrsStatus :: Lens' UpdateRecordsResponse Int
+urrsStatus = lens _urrsStatus (\ s a -> s{_urrsStatus = a});
diff --git a/gen/Network/AWS/CognitoSync/Waiters.hs b/gen/Network/AWS/CognitoSync/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CognitoSync/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.CognitoSync.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.CognitoSync.Waiters where
+
+import           Network.AWS.CognitoSync.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.CognitoSync
+import Test.AWS.CognitoSync.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "CognitoSync"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/CognitoSync.hs b/test/Test/AWS/CognitoSync.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/CognitoSync.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.CognitoSync
+-- 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.CognitoSync
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.CognitoSync
+import           Test.AWS.Gen.CognitoSync
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/CognitoSync/Internal.hs b/test/Test/AWS/CognitoSync/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/CognitoSync/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.CognitoSync.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.CognitoSync.Internal where
+
+import Test.AWS.Prelude
diff --git a/test/Test/AWS/Gen/CognitoSync.hs b/test/Test/AWS/Gen/CognitoSync.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/CognitoSync.hs
@@ -0,0 +1,328 @@
+{-# 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.CognitoSync
+-- 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.CognitoSync where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.CognitoSync
+import Test.AWS.CognitoSync.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"
+--         [ testDescribeDataset $
+--             describeDataset
+--
+--         , testDescribeIdentityPoolUsage $
+--             describeIdentityPoolUsage
+--
+--         , testSetCognitoEvents $
+--             setCognitoEvents
+--
+--         , testListIdentityPoolUsage $
+--             listIdentityPoolUsage
+--
+--         , testGetBulkPublishDetails $
+--             getBulkPublishDetails
+--
+--         , testSetIdentityPoolConfiguration $
+--             setIdentityPoolConfiguration
+--
+--         , testDeleteDataset $
+--             deleteDataset
+--
+--         , testDescribeIdentityUsage $
+--             describeIdentityUsage
+--
+--         , testGetCognitoEvents $
+--             getCognitoEvents
+--
+--         , testRegisterDevice $
+--             registerDevice
+--
+--         , testSubscribeToDataset $
+--             subscribeToDataset
+--
+--         , testGetIdentityPoolConfiguration $
+--             getIdentityPoolConfiguration
+--
+--         , testListRecords $
+--             listRecords
+--
+--         , testUnsubscribeFromDataset $
+--             unsubscribeFromDataset
+--
+--         , testUpdateRecords $
+--             updateRecords
+--
+--         , testListDatasets $
+--             listDatasets
+--
+--         , testBulkPublish $
+--             bulkPublish
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testDescribeDatasetResponse $
+--             describeDatasetResponse
+--
+--         , testDescribeIdentityPoolUsageResponse $
+--             describeIdentityPoolUsageResponse
+--
+--         , testSetCognitoEventsResponse $
+--             setCognitoEventsResponse
+--
+--         , testListIdentityPoolUsageResponse $
+--             listIdentityPoolUsageResponse
+--
+--         , testGetBulkPublishDetailsResponse $
+--             getBulkPublishDetailsResponse
+--
+--         , testSetIdentityPoolConfigurationResponse $
+--             setIdentityPoolConfigurationResponse
+--
+--         , testDeleteDatasetResponse $
+--             deleteDatasetResponse
+--
+--         , testDescribeIdentityUsageResponse $
+--             describeIdentityUsageResponse
+--
+--         , testGetCognitoEventsResponse $
+--             getCognitoEventsResponse
+--
+--         , testRegisterDeviceResponse $
+--             registerDeviceResponse
+--
+--         , testSubscribeToDatasetResponse $
+--             subscribeToDatasetResponse
+--
+--         , testGetIdentityPoolConfigurationResponse $
+--             getIdentityPoolConfigurationResponse
+--
+--         , testListRecordsResponse $
+--             listRecordsResponse
+--
+--         , testUnsubscribeFromDatasetResponse $
+--             unsubscribeFromDatasetResponse
+--
+--         , testUpdateRecordsResponse $
+--             updateRecordsResponse
+--
+--         , testListDatasetsResponse $
+--             listDatasetsResponse
+--
+--         , testBulkPublishResponse $
+--             bulkPublishResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testDescribeDataset :: DescribeDataset -> TestTree
+testDescribeDataset = req
+    "DescribeDataset"
+    "fixture/DescribeDataset"
+
+testDescribeIdentityPoolUsage :: DescribeIdentityPoolUsage -> TestTree
+testDescribeIdentityPoolUsage = req
+    "DescribeIdentityPoolUsage"
+    "fixture/DescribeIdentityPoolUsage"
+
+testSetCognitoEvents :: SetCognitoEvents -> TestTree
+testSetCognitoEvents = req
+    "SetCognitoEvents"
+    "fixture/SetCognitoEvents"
+
+testListIdentityPoolUsage :: ListIdentityPoolUsage -> TestTree
+testListIdentityPoolUsage = req
+    "ListIdentityPoolUsage"
+    "fixture/ListIdentityPoolUsage"
+
+testGetBulkPublishDetails :: GetBulkPublishDetails -> TestTree
+testGetBulkPublishDetails = req
+    "GetBulkPublishDetails"
+    "fixture/GetBulkPublishDetails"
+
+testSetIdentityPoolConfiguration :: SetIdentityPoolConfiguration -> TestTree
+testSetIdentityPoolConfiguration = req
+    "SetIdentityPoolConfiguration"
+    "fixture/SetIdentityPoolConfiguration"
+
+testDeleteDataset :: DeleteDataset -> TestTree
+testDeleteDataset = req
+    "DeleteDataset"
+    "fixture/DeleteDataset"
+
+testDescribeIdentityUsage :: DescribeIdentityUsage -> TestTree
+testDescribeIdentityUsage = req
+    "DescribeIdentityUsage"
+    "fixture/DescribeIdentityUsage"
+
+testGetCognitoEvents :: GetCognitoEvents -> TestTree
+testGetCognitoEvents = req
+    "GetCognitoEvents"
+    "fixture/GetCognitoEvents"
+
+testRegisterDevice :: RegisterDevice -> TestTree
+testRegisterDevice = req
+    "RegisterDevice"
+    "fixture/RegisterDevice"
+
+testSubscribeToDataset :: SubscribeToDataset -> TestTree
+testSubscribeToDataset = req
+    "SubscribeToDataset"
+    "fixture/SubscribeToDataset"
+
+testGetIdentityPoolConfiguration :: GetIdentityPoolConfiguration -> TestTree
+testGetIdentityPoolConfiguration = req
+    "GetIdentityPoolConfiguration"
+    "fixture/GetIdentityPoolConfiguration"
+
+testListRecords :: ListRecords -> TestTree
+testListRecords = req
+    "ListRecords"
+    "fixture/ListRecords"
+
+testUnsubscribeFromDataset :: UnsubscribeFromDataset -> TestTree
+testUnsubscribeFromDataset = req
+    "UnsubscribeFromDataset"
+    "fixture/UnsubscribeFromDataset"
+
+testUpdateRecords :: UpdateRecords -> TestTree
+testUpdateRecords = req
+    "UpdateRecords"
+    "fixture/UpdateRecords"
+
+testListDatasets :: ListDatasets -> TestTree
+testListDatasets = req
+    "ListDatasets"
+    "fixture/ListDatasets"
+
+testBulkPublish :: BulkPublish -> TestTree
+testBulkPublish = req
+    "BulkPublish"
+    "fixture/BulkPublish"
+
+-- Responses
+
+testDescribeDatasetResponse :: DescribeDatasetResponse -> TestTree
+testDescribeDatasetResponse = res
+    "DescribeDatasetResponse"
+    "fixture/DescribeDatasetResponse"
+    (Proxy :: Proxy DescribeDataset)
+
+testDescribeIdentityPoolUsageResponse :: DescribeIdentityPoolUsageResponse -> TestTree
+testDescribeIdentityPoolUsageResponse = res
+    "DescribeIdentityPoolUsageResponse"
+    "fixture/DescribeIdentityPoolUsageResponse"
+    (Proxy :: Proxy DescribeIdentityPoolUsage)
+
+testSetCognitoEventsResponse :: SetCognitoEventsResponse -> TestTree
+testSetCognitoEventsResponse = res
+    "SetCognitoEventsResponse"
+    "fixture/SetCognitoEventsResponse"
+    (Proxy :: Proxy SetCognitoEvents)
+
+testListIdentityPoolUsageResponse :: ListIdentityPoolUsageResponse -> TestTree
+testListIdentityPoolUsageResponse = res
+    "ListIdentityPoolUsageResponse"
+    "fixture/ListIdentityPoolUsageResponse"
+    (Proxy :: Proxy ListIdentityPoolUsage)
+
+testGetBulkPublishDetailsResponse :: GetBulkPublishDetailsResponse -> TestTree
+testGetBulkPublishDetailsResponse = res
+    "GetBulkPublishDetailsResponse"
+    "fixture/GetBulkPublishDetailsResponse"
+    (Proxy :: Proxy GetBulkPublishDetails)
+
+testSetIdentityPoolConfigurationResponse :: SetIdentityPoolConfigurationResponse -> TestTree
+testSetIdentityPoolConfigurationResponse = res
+    "SetIdentityPoolConfigurationResponse"
+    "fixture/SetIdentityPoolConfigurationResponse"
+    (Proxy :: Proxy SetIdentityPoolConfiguration)
+
+testDeleteDatasetResponse :: DeleteDatasetResponse -> TestTree
+testDeleteDatasetResponse = res
+    "DeleteDatasetResponse"
+    "fixture/DeleteDatasetResponse"
+    (Proxy :: Proxy DeleteDataset)
+
+testDescribeIdentityUsageResponse :: DescribeIdentityUsageResponse -> TestTree
+testDescribeIdentityUsageResponse = res
+    "DescribeIdentityUsageResponse"
+    "fixture/DescribeIdentityUsageResponse"
+    (Proxy :: Proxy DescribeIdentityUsage)
+
+testGetCognitoEventsResponse :: GetCognitoEventsResponse -> TestTree
+testGetCognitoEventsResponse = res
+    "GetCognitoEventsResponse"
+    "fixture/GetCognitoEventsResponse"
+    (Proxy :: Proxy GetCognitoEvents)
+
+testRegisterDeviceResponse :: RegisterDeviceResponse -> TestTree
+testRegisterDeviceResponse = res
+    "RegisterDeviceResponse"
+    "fixture/RegisterDeviceResponse"
+    (Proxy :: Proxy RegisterDevice)
+
+testSubscribeToDatasetResponse :: SubscribeToDatasetResponse -> TestTree
+testSubscribeToDatasetResponse = res
+    "SubscribeToDatasetResponse"
+    "fixture/SubscribeToDatasetResponse"
+    (Proxy :: Proxy SubscribeToDataset)
+
+testGetIdentityPoolConfigurationResponse :: GetIdentityPoolConfigurationResponse -> TestTree
+testGetIdentityPoolConfigurationResponse = res
+    "GetIdentityPoolConfigurationResponse"
+    "fixture/GetIdentityPoolConfigurationResponse"
+    (Proxy :: Proxy GetIdentityPoolConfiguration)
+
+testListRecordsResponse :: ListRecordsResponse -> TestTree
+testListRecordsResponse = res
+    "ListRecordsResponse"
+    "fixture/ListRecordsResponse"
+    (Proxy :: Proxy ListRecords)
+
+testUnsubscribeFromDatasetResponse :: UnsubscribeFromDatasetResponse -> TestTree
+testUnsubscribeFromDatasetResponse = res
+    "UnsubscribeFromDatasetResponse"
+    "fixture/UnsubscribeFromDatasetResponse"
+    (Proxy :: Proxy UnsubscribeFromDataset)
+
+testUpdateRecordsResponse :: UpdateRecordsResponse -> TestTree
+testUpdateRecordsResponse = res
+    "UpdateRecordsResponse"
+    "fixture/UpdateRecordsResponse"
+    (Proxy :: Proxy UpdateRecords)
+
+testListDatasetsResponse :: ListDatasetsResponse -> TestTree
+testListDatasetsResponse = res
+    "ListDatasetsResponse"
+    "fixture/ListDatasetsResponse"
+    (Proxy :: Proxy ListDatasets)
+
+testBulkPublishResponse :: BulkPublishResponse -> TestTree
+testBulkPublishResponse = res
+    "BulkPublishResponse"
+    "fixture/BulkPublishResponse"
+    (Proxy :: Proxy BulkPublish)
