diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,27 +1,67 @@
 # Amazon Cognito Identity 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 is a web service that facilitates the delivery of scoped,
-temporary credentials to mobile devices or other untrusted environments.
-Amazon Cognito uniquely identifies a device or user and supplies the user
-with a consistent identity throughout the lifetime of an application. Amazon
-Cognito lets users authenticate with third-party identity providers
-(Facebook, Google, or Login with Amazon). As a developer, you decide which
-identity providers to trust. You can also choose to support unauthenticated
-access from your application. Your users are provided with Cognito tokens
-that uniquely identify their device and any information provided about
-third-party logins.
+Amazon Cognito
 
+Amazon Cognito is a web service that delivers scoped temporary
+credentials to mobile devices and other untrusted environments. Amazon
+Cognito uniquely identifies a device and supplies the user with a
+consistent identity over the lifetime of an application.
+
+Using Amazon Cognito, you can enable authentication with one or more
+third-party identity providers (Facebook, Google, or Login with Amazon),
+and you can also choose to support unauthenticated access from your app.
+Cognito delivers a unique identifier for each user and acts as an OpenID
+token provider trusted by AWS Security Token Service (STS) to access
+temporary, limited-privilege AWS credentials.
+
+To provide end-user credentials, first make an unsigned call to GetId.
+If the end user is authenticated with one of the supported identity
+providers, set the @Logins@ map with the identity provider token.
+@GetId@ returns a unique identifier for the user.
+
+Next, make an unsigned call to GetCredentialsForIdentity. This call
+expects the same @Logins@ map as the @GetId@ call, as well as the
+@IdentityID@ originally returned by @GetId@. Assuming your identity pool
+has been configured via the SetIdentityPoolRoles operation,
+@GetCredentialsForIdentity@ will return AWS credentials for your use. If
+your pool has not been configured with @SetIdentityPoolRoles@, or if you
+want to follow legacy flow, make an unsigned call to GetOpenIdToken,
+which returns the OpenID token necessary to call STS and retrieve AWS
+credentials. This call expects the same @Logins@ map as the @GetId@
+call, as well as the @IdentityID@ originally returned by @GetId@. The
+token returned by @GetOpenIdToken@ can be passed to the STS operation
+<http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html AssumeRoleWithWebIdentity>
+to retrieve AWS credentials.
+
+If you want to use Amazon Cognito in an Android, iOS, or Unity
+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/index.html AWS Mobile SDK Developer Guide>.
+
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-cognito-identity)
 and the [AWS API Reference](http://docs.aws.amazon.com/cognitoidentity/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-identity.cabal b/amazonka-cognito-identity.cabal
--- a/amazonka-cognito-identity.cabal
+++ b/amazonka-cognito-identity.cabal
@@ -1,34 +1,69 @@
 name:                  amazonka-cognito-identity
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon Cognito Identity 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 is a web service that facilitates the delivery of scoped,
-    temporary credentials to mobile devices or other untrusted environments.
-    Amazon Cognito uniquely identifies a device or user and supplies the user
-    with a consistent identity throughout the lifetime of an application. Amazon
-    Cognito lets users authenticate with third-party identity providers
-    (Facebook, Google, or Login with Amazon). As a developer, you decide which
-    identity providers to trust. You can also choose to support unauthenticated
-    access from your application. Your users are provided with Cognito tokens
-    that uniquely identify their device and any information provided about
-    third-party logins.
+    Amazon Cognito
 
+    Amazon Cognito is a web service that delivers scoped temporary
+    credentials to mobile devices and other untrusted environments. Amazon
+    Cognito uniquely identifies a device and supplies the user with a
+    consistent identity over the lifetime of an application.
+
+    Using Amazon Cognito, you can enable authentication with one or more
+    third-party identity providers (Facebook, Google, or Login with Amazon),
+    and you can also choose to support unauthenticated access from your app.
+    Cognito delivers a unique identifier for each user and acts as an OpenID
+    token provider trusted by AWS Security Token Service (STS) to access
+    temporary, limited-privilege AWS credentials.
+
+    To provide end-user credentials, first make an unsigned call to GetId.
+    If the end user is authenticated with one of the supported identity
+    providers, set the @Logins@ map with the identity provider token.
+    @GetId@ returns a unique identifier for the user.
+
+    Next, make an unsigned call to GetCredentialsForIdentity. This call
+    expects the same @Logins@ map as the @GetId@ call, as well as the
+    @IdentityID@ originally returned by @GetId@. Assuming your identity pool
+    has been configured via the SetIdentityPoolRoles operation,
+    @GetCredentialsForIdentity@ will return AWS credentials for your use. If
+    your pool has not been configured with @SetIdentityPoolRoles@, or if you
+    want to follow legacy flow, make an unsigned call to GetOpenIdToken,
+    which returns the OpenID token necessary to call STS and retrieve AWS
+    credentials. This call expects the same @Logins@ map as the @GetId@
+    call, as well as the @IdentityID@ originally returned by @GetId@. The
+    token returned by @GetOpenIdToken@ can be passed to the STS operation
+    <http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html AssumeRoleWithWebIdentity>
+    to retrieve AWS credentials.
+
+    If you want to use Amazon Cognito in an Android, iOS, or Unity
+    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/index.html AWS Mobile SDK Developer Guide>.
     .
-    /See:/ <http://docs.aws.amazon.com/cognitoidentity/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.CognitoIdentity" and the <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/Welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -43,6 +78,7 @@
     exposed-modules:
           Network.AWS.CognitoIdentity
         , Network.AWS.CognitoIdentity.CreateIdentityPool
+        , Network.AWS.CognitoIdentity.DeleteIdentities
         , Network.AWS.CognitoIdentity.DeleteIdentityPool
         , Network.AWS.CognitoIdentity.DescribeIdentity
         , Network.AWS.CognitoIdentity.DescribeIdentityPool
@@ -60,9 +96,40 @@
         , Network.AWS.CognitoIdentity.UnlinkDeveloperIdentity
         , Network.AWS.CognitoIdentity.UnlinkIdentity
         , Network.AWS.CognitoIdentity.UpdateIdentityPool
+        , Network.AWS.CognitoIdentity.Waiters
 
     other-modules:
+          Network.AWS.CognitoIdentity.Types.Product
+        , Network.AWS.CognitoIdentity.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-cognito-identity-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.CognitoIdentity
+        , Test.AWS.Gen.CognitoIdentity
+        , Test.AWS.CognitoIdentity.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-cognito-identity == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/gen/Network/AWS/CognitoIdentity.hs b/gen/Network/AWS/CognitoIdentity.hs
--- a/gen/Network/AWS/CognitoIdentity.hs
+++ b/gen/Network/AWS/CognitoIdentity.hs
@@ -1,61 +1,247 @@
+{-# 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.CognitoIdentity
--- 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 is a web service that facilitates the delivery of scoped,
--- temporary credentials to mobile devices or other untrusted environments.
--- Amazon Cognito uniquely identifies a device or user and supplies the user
--- with a consistent identity throughout the lifetime of an application. Amazon
--- Cognito lets users authenticate with third-party identity providers
--- (Facebook, Google, or Login with Amazon). As a developer, you decide which
--- identity providers to trust. You can also choose to support unauthenticated
--- access from your application. Your users are provided with Cognito tokens
--- that uniquely identify their device and any information provided about
--- third-party logins.
+-- Amazon Cognito
+--
+-- Amazon Cognito is a web service that delivers scoped temporary
+-- credentials to mobile devices and other untrusted environments. Amazon
+-- Cognito uniquely identifies a device and supplies the user with a
+-- consistent identity over the lifetime of an application.
+--
+-- Using Amazon Cognito, you can enable authentication with one or more
+-- third-party identity providers (Facebook, Google, or Login with Amazon),
+-- and you can also choose to support unauthenticated access from your app.
+-- Cognito delivers a unique identifier for each user and acts as an OpenID
+-- token provider trusted by AWS Security Token Service (STS) to access
+-- temporary, limited-privilege AWS credentials.
+--
+-- To provide end-user credentials, first make an unsigned call to GetId.
+-- If the end user is authenticated with one of the supported identity
+-- providers, set the 'Logins' map with the identity provider token.
+-- 'GetId' returns a unique identifier for the user.
+--
+-- Next, make an unsigned call to GetCredentialsForIdentity. This call
+-- expects the same 'Logins' map as the 'GetId' call, as well as the
+-- 'IdentityID' originally returned by 'GetId'. Assuming your identity pool
+-- has been configured via the SetIdentityPoolRoles operation,
+-- 'GetCredentialsForIdentity' will return AWS credentials for your use. If
+-- your pool has not been configured with 'SetIdentityPoolRoles', or if you
+-- want to follow legacy flow, make an unsigned call to GetOpenIdToken,
+-- which returns the OpenID token necessary to call STS and retrieve AWS
+-- credentials. This call expects the same 'Logins' map as the 'GetId'
+-- call, as well as the 'IdentityID' originally returned by 'GetId'. The
+-- token returned by 'GetOpenIdToken' can be passed to the STS operation
+-- <http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html AssumeRoleWithWebIdentity>
+-- to retrieve AWS credentials.
+--
+-- If you want to use Amazon Cognito in an Android, iOS, or Unity
+-- 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/index.html AWS Mobile SDK Developer Guide>.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.CognitoIdentity
-    ( module Network.AWS.CognitoIdentity.CreateIdentityPool
-    , module Network.AWS.CognitoIdentity.DeleteIdentityPool
-    , module Network.AWS.CognitoIdentity.DescribeIdentity
+    (
+    -- * Service
+      CognitoIdentity
+
+    -- * Errors
+    -- $errors
+
+    -- ** InvalidIdentityPoolConfigurationException
+    , _InvalidIdentityPoolConfigurationException
+
+    -- ** InvalidParameterException
+    , _InvalidParameterException
+
+    -- ** NotAuthorizedException
+    , _NotAuthorizedException
+
+    -- ** InternalErrorException
+    , _InternalErrorException
+
+    -- ** ExternalServiceException
+    , _ExternalServiceException
+
+    -- ** ConcurrentModificationException
+    , _ConcurrentModificationException
+
+    -- ** TooManyRequestsException
+    , _TooManyRequestsException
+
+    -- ** ResourceConflictException
+    , _ResourceConflictException
+
+    -- ** DeveloperUserAlreadyRegisteredException
+    , _DeveloperUserAlreadyRegisteredException
+
+    -- ** ResourceNotFoundException
+    , _ResourceNotFoundException
+
+    -- ** LimitExceededException
+    , _LimitExceededException
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** GetOpenIdToken
+    , module Network.AWS.CognitoIdentity.GetOpenIdToken
+
+    -- ** DescribeIdentityPool
     , module Network.AWS.CognitoIdentity.DescribeIdentityPool
+
+    -- ** GetOpenIdTokenForDeveloperIdentity
+    , module Network.AWS.CognitoIdentity.GetOpenIdTokenForDeveloperIdentity
+
+    -- ** UnlinkDeveloperIdentity
+    , module Network.AWS.CognitoIdentity.UnlinkDeveloperIdentity
+
+    -- ** GetCredentialsForIdentity
     , module Network.AWS.CognitoIdentity.GetCredentialsForIdentity
-    , module Network.AWS.CognitoIdentity.GetId
+
+    -- ** ListIdentityPools
+    , module Network.AWS.CognitoIdentity.ListIdentityPools
+
+    -- ** GetIdentityPoolRoles
     , module Network.AWS.CognitoIdentity.GetIdentityPoolRoles
-    , module Network.AWS.CognitoIdentity.GetOpenIdToken
-    , module Network.AWS.CognitoIdentity.GetOpenIdTokenForDeveloperIdentity
+
+    -- ** DeleteIdentityPool
+    , module Network.AWS.CognitoIdentity.DeleteIdentityPool
+
+    -- ** UpdateIdentityPool
+    , module Network.AWS.CognitoIdentity.UpdateIdentityPool
+
+    -- ** GetId
+    , module Network.AWS.CognitoIdentity.GetId
+
+    -- ** DeleteIdentities
+    , module Network.AWS.CognitoIdentity.DeleteIdentities
+
+    -- ** SetIdentityPoolRoles
+    , module Network.AWS.CognitoIdentity.SetIdentityPoolRoles
+
+    -- ** ListIdentities
     , module Network.AWS.CognitoIdentity.ListIdentities
-    , module Network.AWS.CognitoIdentity.ListIdentityPools
+
+    -- ** LookupDeveloperIdentity
     , module Network.AWS.CognitoIdentity.LookupDeveloperIdentity
-    , module Network.AWS.CognitoIdentity.MergeDeveloperIdentities
-    , module Network.AWS.CognitoIdentity.SetIdentityPoolRoles
-    , module Network.AWS.CognitoIdentity.Types
-    , module Network.AWS.CognitoIdentity.UnlinkDeveloperIdentity
+
+    -- ** UnlinkIdentity
     , module Network.AWS.CognitoIdentity.UnlinkIdentity
-    , module Network.AWS.CognitoIdentity.UpdateIdentityPool
+
+    -- ** DescribeIdentity
+    , module Network.AWS.CognitoIdentity.DescribeIdentity
+
+    -- ** CreateIdentityPool
+    , module Network.AWS.CognitoIdentity.CreateIdentityPool
+
+    -- ** MergeDeveloperIdentities
+    , module Network.AWS.CognitoIdentity.MergeDeveloperIdentities
+
+    -- * Types
+
+    -- ** CognitoErrorCode
+    , CognitoErrorCode (..)
+
+    -- ** Credentials
+    , Credentials
+    , credentials
+    , cSessionToken
+    , cExpiration
+    , cSecretKey
+    , cAccessKeyId
+
+    -- ** IdentityDescription
+    , IdentityDescription
+    , identityDescription
+    , idLastModifiedDate
+    , idCreationDate
+    , idLogins
+    , idIdentityId
+
+    -- ** IdentityPool
+    , IdentityPool
+    , identityPool
+    , ipSupportedLoginProviders
+    , ipDeveloperProviderName
+    , ipOpenIdConnectProviderARNs
+    , ipIdentityPoolId
+    , ipIdentityPoolName
+    , ipAllowUnauthenticatedIdentities
+
+    -- ** IdentityPoolShortDescription
+    , IdentityPoolShortDescription
+    , identityPoolShortDescription
+    , ipsdIdentityPoolId
+    , ipsdIdentityPoolName
+
+    -- ** UnprocessedIdentityId
+    , UnprocessedIdentityId
+    , unprocessedIdentityId
+    , uiiErrorCode
+    , uiiIdentityId
     ) where
 
-import Network.AWS.CognitoIdentity.CreateIdentityPool
-import Network.AWS.CognitoIdentity.DeleteIdentityPool
-import Network.AWS.CognitoIdentity.DescribeIdentity
-import Network.AWS.CognitoIdentity.DescribeIdentityPool
-import Network.AWS.CognitoIdentity.GetCredentialsForIdentity
-import Network.AWS.CognitoIdentity.GetId
-import Network.AWS.CognitoIdentity.GetIdentityPoolRoles
-import Network.AWS.CognitoIdentity.GetOpenIdToken
-import Network.AWS.CognitoIdentity.GetOpenIdTokenForDeveloperIdentity
-import Network.AWS.CognitoIdentity.ListIdentities
-import Network.AWS.CognitoIdentity.ListIdentityPools
-import Network.AWS.CognitoIdentity.LookupDeveloperIdentity
-import Network.AWS.CognitoIdentity.MergeDeveloperIdentities
-import Network.AWS.CognitoIdentity.SetIdentityPoolRoles
-import Network.AWS.CognitoIdentity.Types
-import Network.AWS.CognitoIdentity.UnlinkDeveloperIdentity
-import Network.AWS.CognitoIdentity.UnlinkIdentity
-import Network.AWS.CognitoIdentity.UpdateIdentityPool
+import           Network.AWS.CognitoIdentity.CreateIdentityPool
+import           Network.AWS.CognitoIdentity.DeleteIdentities
+import           Network.AWS.CognitoIdentity.DeleteIdentityPool
+import           Network.AWS.CognitoIdentity.DescribeIdentity
+import           Network.AWS.CognitoIdentity.DescribeIdentityPool
+import           Network.AWS.CognitoIdentity.GetCredentialsForIdentity
+import           Network.AWS.CognitoIdentity.GetId
+import           Network.AWS.CognitoIdentity.GetIdentityPoolRoles
+import           Network.AWS.CognitoIdentity.GetOpenIdToken
+import           Network.AWS.CognitoIdentity.GetOpenIdTokenForDeveloperIdentity
+import           Network.AWS.CognitoIdentity.ListIdentities
+import           Network.AWS.CognitoIdentity.ListIdentityPools
+import           Network.AWS.CognitoIdentity.LookupDeveloperIdentity
+import           Network.AWS.CognitoIdentity.MergeDeveloperIdentities
+import           Network.AWS.CognitoIdentity.SetIdentityPoolRoles
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.UnlinkDeveloperIdentity
+import           Network.AWS.CognitoIdentity.UnlinkIdentity
+import           Network.AWS.CognitoIdentity.UpdateIdentityPool
+import           Network.AWS.CognitoIdentity.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 'CognitoIdentity'.
+-}
+
+{- $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/CognitoIdentity/CreateIdentityPool.hs b/gen/Network/AWS/CognitoIdentity/CreateIdentityPool.hs
--- a/gen/Network/AWS/CognitoIdentity/CreateIdentityPool.hs
+++ b/gen/Network/AWS/CognitoIdentity/CreateIdentityPool.hs
@@ -1,237 +1,153 @@
-{-# 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.CognitoIdentity.CreateIdentityPool
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a new identity pool. The identity pool is a store of user identity
--- information that is specific to your AWS account. The limit on identity pools
--- is 60 per account.
+-- Creates a new identity pool. The identity pool is a store of user
+-- identity information that is specific to your AWS account. The limit on
+-- identity pools is 60 per account. You must use AWS Developer credentials
+-- to call this API.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_CreateIdentityPool.html>
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_CreateIdentityPool.html AWS API Reference> for CreateIdentityPool.
 module Network.AWS.CognitoIdentity.CreateIdentityPool
     (
-    -- * Request
-      CreateIdentityPool
-    -- ** Request constructor
-    , createIdentityPool
-    -- ** Request lenses
-    , cipAllowUnauthenticatedIdentities
+    -- * Creating a Request
+      createIdentityPool
+    , CreateIdentityPool
+    -- * Request Lenses
+    , cipSupportedLoginProviders
     , cipDeveloperProviderName
-    , cipIdentityPoolName
     , cipOpenIdConnectProviderARNs
-    , cipSupportedLoginProviders
+    , cipIdentityPoolName
+    , cipAllowUnauthenticatedIdentities
 
-    -- * Response
-    , CreateIdentityPoolResponse
-    -- ** Response constructor
-    , createIdentityPoolResponse
-    -- ** Response lenses
-    , ciprAllowUnauthenticatedIdentities
-    , ciprDeveloperProviderName
-    , ciprIdentityPoolId
-    , ciprIdentityPoolName
-    , ciprOpenIdConnectProviderARNs
-    , ciprSupportedLoginProviders
+    -- * Destructuring the Response
+    , identityPool
+    , IdentityPool
+    -- * Response Lenses
+    , ipSupportedLoginProviders
+    , ipDeveloperProviderName
+    , ipOpenIdConnectProviderARNs
+    , ipIdentityPoolId
+    , ipIdentityPoolName
+    , ipAllowUnauthenticatedIdentities
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-data CreateIdentityPool = CreateIdentityPool
-    { _cipAllowUnauthenticatedIdentities :: Bool
-    , _cipDeveloperProviderName          :: Maybe Text
-    , _cipIdentityPoolName               :: Text
-    , _cipOpenIdConnectProviderARNs      :: List "OpenIdConnectProviderARNs" Text
-    , _cipSupportedLoginProviders        :: Map Text Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreateIdentityPool' constructor.
+-- | Input to the CreateIdentityPool action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createIdentityPool' smart constructor.
+data CreateIdentityPool = CreateIdentityPool'
+    { _cipSupportedLoginProviders        :: !(Maybe (Map Text Text))
+    , _cipDeveloperProviderName          :: !(Maybe Text)
+    , _cipOpenIdConnectProviderARNs      :: !(Maybe [Text])
+    , _cipIdentityPoolName               :: !Text
+    , _cipAllowUnauthenticatedIdentities :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateIdentityPool' with the minimum fields required to make a request.
 --
--- * 'cipAllowUnauthenticatedIdentities' @::@ 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cipDeveloperProviderName' @::@ 'Maybe' 'Text'
+-- * 'cipSupportedLoginProviders'
 --
--- * 'cipIdentityPoolName' @::@ 'Text'
+-- * 'cipDeveloperProviderName'
 --
--- * 'cipOpenIdConnectProviderARNs' @::@ ['Text']
+-- * 'cipOpenIdConnectProviderARNs'
 --
--- * 'cipSupportedLoginProviders' @::@ 'HashMap' 'Text' 'Text'
+-- * 'cipIdentityPoolName'
 --
-createIdentityPool :: Text -- ^ 'cipIdentityPoolName'
-                   -> Bool -- ^ 'cipAllowUnauthenticatedIdentities'
-                   -> CreateIdentityPool
-createIdentityPool p1 p2 = CreateIdentityPool
-    { _cipIdentityPoolName               = p1
-    , _cipAllowUnauthenticatedIdentities = p2
-    , _cipSupportedLoginProviders        = mempty
-    , _cipDeveloperProviderName          = Nothing
-    , _cipOpenIdConnectProviderARNs      = mempty
+-- * 'cipAllowUnauthenticatedIdentities'
+createIdentityPool
+    :: Text -- ^ 'cipIdentityPoolName'
+    -> Bool -- ^ 'cipAllowUnauthenticatedIdentities'
+    -> CreateIdentityPool
+createIdentityPool pIdentityPoolName_ pAllowUnauthenticatedIdentities_ =
+    CreateIdentityPool'
+    { _cipSupportedLoginProviders = Nothing
+    , _cipDeveloperProviderName = Nothing
+    , _cipOpenIdConnectProviderARNs = Nothing
+    , _cipIdentityPoolName = pIdentityPoolName_
+    , _cipAllowUnauthenticatedIdentities = pAllowUnauthenticatedIdentities_
     }
 
--- | TRUE if the identity pool supports unauthenticated logins.
-cipAllowUnauthenticatedIdentities :: Lens' CreateIdentityPool Bool
-cipAllowUnauthenticatedIdentities =
-    lens _cipAllowUnauthenticatedIdentities
-        (\s a -> s { _cipAllowUnauthenticatedIdentities = a })
+-- | Optional key:value pairs mapping provider names to provider app IDs.
+cipSupportedLoginProviders :: Lens' CreateIdentityPool (HashMap Text Text)
+cipSupportedLoginProviders = lens _cipSupportedLoginProviders (\ s a -> s{_cipSupportedLoginProviders = a}) . _Default . _Map;
 
--- | The "domain" by which Cognito will refer to your users. This name acts as a
--- placeholder that allows your backend and the Cognito service to communicate
--- about the developer provider. For the 'DeveloperProviderName', you can use
--- letters as well as period ('.'), underscore ('_'), and dash ('-').
+-- | The \"domain\" by which Cognito will refer to your users. This name acts
+-- as a placeholder that allows your backend and the Cognito service to
+-- communicate about the developer provider. For the
+-- 'DeveloperProviderName', you can use letters as well as period ('.'),
+-- underscore ('_'), and dash ('-').
 --
--- Once you have set a developer provider name, you cannot change it. Please
--- take care in setting this parameter.
+-- Once you have set a developer provider name, you cannot change it.
+-- Please take care in setting this parameter.
 cipDeveloperProviderName :: Lens' CreateIdentityPool (Maybe Text)
-cipDeveloperProviderName =
-    lens _cipDeveloperProviderName
-        (\s a -> s { _cipDeveloperProviderName = a })
-
--- | A string that you provide.
-cipIdentityPoolName :: Lens' CreateIdentityPool Text
-cipIdentityPoolName =
-    lens _cipIdentityPoolName (\s a -> s { _cipIdentityPoolName = a })
+cipDeveloperProviderName = lens _cipDeveloperProviderName (\ s a -> s{_cipDeveloperProviderName = a});
 
 -- | A list of OpendID Connect provider ARNs.
 cipOpenIdConnectProviderARNs :: Lens' CreateIdentityPool [Text]
-cipOpenIdConnectProviderARNs =
-    lens _cipOpenIdConnectProviderARNs
-        (\s a -> s { _cipOpenIdConnectProviderARNs = a })
-            . _List
-
--- | Optional key:value pairs mapping provider names to provider app IDs.
-cipSupportedLoginProviders :: Lens' CreateIdentityPool (HashMap Text Text)
-cipSupportedLoginProviders =
-    lens _cipSupportedLoginProviders
-        (\s a -> s { _cipSupportedLoginProviders = a })
-            . _Map
-
-data CreateIdentityPoolResponse = CreateIdentityPoolResponse
-    { _ciprAllowUnauthenticatedIdentities :: Bool
-    , _ciprDeveloperProviderName          :: Maybe Text
-    , _ciprIdentityPoolId                 :: Text
-    , _ciprIdentityPoolName               :: Text
-    , _ciprOpenIdConnectProviderARNs      :: List "OpenIdConnectProviderARNs" Text
-    , _ciprSupportedLoginProviders        :: Map Text Text
-    } deriving (Eq, Read, Show)
+cipOpenIdConnectProviderARNs = lens _cipOpenIdConnectProviderARNs (\ s a -> s{_cipOpenIdConnectProviderARNs = a}) . _Default . _Coerce;
 
--- | 'CreateIdentityPoolResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ciprAllowUnauthenticatedIdentities' @::@ 'Bool'
---
--- * 'ciprDeveloperProviderName' @::@ 'Maybe' 'Text'
---
--- * 'ciprIdentityPoolId' @::@ 'Text'
---
--- * 'ciprIdentityPoolName' @::@ 'Text'
---
--- * 'ciprOpenIdConnectProviderARNs' @::@ ['Text']
---
--- * 'ciprSupportedLoginProviders' @::@ 'HashMap' 'Text' 'Text'
---
-createIdentityPoolResponse :: Text -- ^ 'ciprIdentityPoolId'
-                           -> Text -- ^ 'ciprIdentityPoolName'
-                           -> Bool -- ^ 'ciprAllowUnauthenticatedIdentities'
-                           -> CreateIdentityPoolResponse
-createIdentityPoolResponse p1 p2 p3 = CreateIdentityPoolResponse
-    { _ciprIdentityPoolId                 = p1
-    , _ciprIdentityPoolName               = p2
-    , _ciprAllowUnauthenticatedIdentities = p3
-    , _ciprSupportedLoginProviders        = mempty
-    , _ciprDeveloperProviderName          = Nothing
-    , _ciprOpenIdConnectProviderARNs      = mempty
-    }
+-- | A string that you provide.
+cipIdentityPoolName :: Lens' CreateIdentityPool Text
+cipIdentityPoolName = lens _cipIdentityPoolName (\ s a -> s{_cipIdentityPoolName = a});
 
 -- | TRUE if the identity pool supports unauthenticated logins.
-ciprAllowUnauthenticatedIdentities :: Lens' CreateIdentityPoolResponse Bool
-ciprAllowUnauthenticatedIdentities =
-    lens _ciprAllowUnauthenticatedIdentities
-        (\s a -> s { _ciprAllowUnauthenticatedIdentities = a })
-
--- | The "domain" by which Cognito will refer to your users.
-ciprDeveloperProviderName :: Lens' CreateIdentityPoolResponse (Maybe Text)
-ciprDeveloperProviderName =
-    lens _ciprDeveloperProviderName
-        (\s a -> s { _ciprDeveloperProviderName = a })
-
--- | An identity pool ID in the format REGION:GUID.
-ciprIdentityPoolId :: Lens' CreateIdentityPoolResponse Text
-ciprIdentityPoolId =
-    lens _ciprIdentityPoolId (\s a -> s { _ciprIdentityPoolId = a })
+cipAllowUnauthenticatedIdentities :: Lens' CreateIdentityPool Bool
+cipAllowUnauthenticatedIdentities = lens _cipAllowUnauthenticatedIdentities (\ s a -> s{_cipAllowUnauthenticatedIdentities = a});
 
--- | A string that you provide.
-ciprIdentityPoolName :: Lens' CreateIdentityPoolResponse Text
-ciprIdentityPoolName =
-    lens _ciprIdentityPoolName (\s a -> s { _ciprIdentityPoolName = a })
+instance AWSRequest CreateIdentityPool where
+        type Sv CreateIdentityPool = CognitoIdentity
+        type Rs CreateIdentityPool = IdentityPool
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
--- | A list of OpendID Connect provider ARNs.
-ciprOpenIdConnectProviderARNs :: Lens' CreateIdentityPoolResponse [Text]
-ciprOpenIdConnectProviderARNs =
-    lens _ciprOpenIdConnectProviderARNs
-        (\s a -> s { _ciprOpenIdConnectProviderARNs = a })
-            . _List
+instance ToHeaders CreateIdentityPool where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.CreateIdentityPool" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | Optional key:value pairs mapping provider names to provider app IDs.
-ciprSupportedLoginProviders :: Lens' CreateIdentityPoolResponse (HashMap Text Text)
-ciprSupportedLoginProviders =
-    lens _ciprSupportedLoginProviders
-        (\s a -> s { _ciprSupportedLoginProviders = a })
-            . _Map
+instance ToJSON CreateIdentityPool where
+        toJSON CreateIdentityPool'{..}
+          = object
+              ["SupportedLoginProviders" .=
+                 _cipSupportedLoginProviders,
+               "DeveloperProviderName" .= _cipDeveloperProviderName,
+               "OpenIdConnectProviderARNs" .=
+                 _cipOpenIdConnectProviderARNs,
+               "IdentityPoolName" .= _cipIdentityPoolName,
+               "AllowUnauthenticatedIdentities" .=
+                 _cipAllowUnauthenticatedIdentities]
 
 instance ToPath CreateIdentityPool where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateIdentityPool where
-    toQuery = const mempty
-
-instance ToHeaders CreateIdentityPool
-
-instance ToJSON CreateIdentityPool where
-    toJSON CreateIdentityPool{..} = object
-        [ "IdentityPoolName"               .= _cipIdentityPoolName
-        , "AllowUnauthenticatedIdentities" .= _cipAllowUnauthenticatedIdentities
-        , "SupportedLoginProviders"        .= _cipSupportedLoginProviders
-        , "DeveloperProviderName"          .= _cipDeveloperProviderName
-        , "OpenIdConnectProviderARNs"      .= _cipOpenIdConnectProviderARNs
-        ]
-
-instance AWSRequest CreateIdentityPool where
-    type Sv CreateIdentityPool = CognitoIdentity
-    type Rs CreateIdentityPool = CreateIdentityPoolResponse
-
-    request  = post "CreateIdentityPool"
-    response = jsonResponse
-
-instance FromJSON CreateIdentityPoolResponse where
-    parseJSON = withObject "CreateIdentityPoolResponse" $ \o -> CreateIdentityPoolResponse
-        <$> o .:  "AllowUnauthenticatedIdentities"
-        <*> o .:? "DeveloperProviderName"
-        <*> o .:  "IdentityPoolId"
-        <*> o .:  "IdentityPoolName"
-        <*> o .:? "OpenIdConnectProviderARNs" .!= mempty
-        <*> o .:? "SupportedLoginProviders" .!= mempty
+        toQuery = const mempty
diff --git a/gen/Network/AWS/CognitoIdentity/DeleteIdentities.hs b/gen/Network/AWS/CognitoIdentity/DeleteIdentities.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CognitoIdentity/DeleteIdentities.hs
@@ -0,0 +1,136 @@
+{-# 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.CognitoIdentity.DeleteIdentities
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes identities from an identity pool. You can specify a list of 1-60
+-- identities that you want to delete.
+--
+-- You must use AWS Developer credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_DeleteIdentities.html AWS API Reference> for DeleteIdentities.
+module Network.AWS.CognitoIdentity.DeleteIdentities
+    (
+    -- * Creating a Request
+      deleteIdentities
+    , DeleteIdentities
+    -- * Request Lenses
+    , diIdentityIdsToDelete
+
+    -- * Destructuring the Response
+    , deleteIdentitiesResponse
+    , DeleteIdentitiesResponse
+    -- * Response Lenses
+    , dirsUnprocessedIdentityIds
+    , dirsStatus
+    ) where
+
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Input to the 'DeleteIdentities' action.
+--
+-- /See:/ 'deleteIdentities' smart constructor.
+newtype DeleteIdentities = DeleteIdentities'
+    { _diIdentityIdsToDelete :: List1 Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteIdentities' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'diIdentityIdsToDelete'
+deleteIdentities
+    :: NonEmpty Text -- ^ 'diIdentityIdsToDelete'
+    -> DeleteIdentities
+deleteIdentities pIdentityIdsToDelete_ =
+    DeleteIdentities'
+    { _diIdentityIdsToDelete = _List1 # pIdentityIdsToDelete_
+    }
+
+-- | A list of 1-60 identities that you want to delete.
+diIdentityIdsToDelete :: Lens' DeleteIdentities (NonEmpty Text)
+diIdentityIdsToDelete = lens _diIdentityIdsToDelete (\ s a -> s{_diIdentityIdsToDelete = a}) . _List1;
+
+instance AWSRequest DeleteIdentities where
+        type Sv DeleteIdentities = CognitoIdentity
+        type Rs DeleteIdentities = DeleteIdentitiesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteIdentitiesResponse' <$>
+                   (x .?> "UnprocessedIdentityIds" .!@ mempty) <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders DeleteIdentities where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.DeleteIdentities" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteIdentities where
+        toJSON DeleteIdentities'{..}
+          = object
+              ["IdentityIdsToDelete" .= _diIdentityIdsToDelete]
+
+instance ToPath DeleteIdentities where
+        toPath = const "/"
+
+instance ToQuery DeleteIdentities where
+        toQuery = const mempty
+
+-- | Returned in response to a successful 'DeleteIdentities' operation.
+--
+-- /See:/ 'deleteIdentitiesResponse' smart constructor.
+data DeleteIdentitiesResponse = DeleteIdentitiesResponse'
+    { _dirsUnprocessedIdentityIds :: !(Maybe [UnprocessedIdentityId])
+    , _dirsStatus                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteIdentitiesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dirsUnprocessedIdentityIds'
+--
+-- * 'dirsStatus'
+deleteIdentitiesResponse
+    :: Int -- ^ 'dirsStatus'
+    -> DeleteIdentitiesResponse
+deleteIdentitiesResponse pStatus_ =
+    DeleteIdentitiesResponse'
+    { _dirsUnprocessedIdentityIds = Nothing
+    , _dirsStatus = pStatus_
+    }
+
+-- | An array of UnprocessedIdentityId objects, each of which contains an
+-- ErrorCode and IdentityId.
+dirsUnprocessedIdentityIds :: Lens' DeleteIdentitiesResponse [UnprocessedIdentityId]
+dirsUnprocessedIdentityIds = lens _dirsUnprocessedIdentityIds (\ s a -> s{_dirsUnprocessedIdentityIds = a}) . _Default . _Coerce;
+
+-- | The response status code.
+dirsStatus :: Lens' DeleteIdentitiesResponse Int
+dirsStatus = lens _dirsStatus (\ s a -> s{_dirsStatus = a});
diff --git a/gen/Network/AWS/CognitoIdentity/DeleteIdentityPool.hs b/gen/Network/AWS/CognitoIdentity/DeleteIdentityPool.hs
--- a/gen/Network/AWS/CognitoIdentity/DeleteIdentityPool.hs
+++ b/gen/Network/AWS/CognitoIdentity/DeleteIdentityPool.hs
@@ -1,96 +1,106 @@
-{-# 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.CognitoIdentity.DeleteIdentityPool
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a user pool. Once a pool is deleted, users will not be able to
+-- Deletes a user pool. Once a pool is deleted, users will not be able to
 -- authenticate with the pool.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_DeleteIdentityPool.html>
+-- You must use AWS Developer credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_DeleteIdentityPool.html AWS API Reference> for DeleteIdentityPool.
 module Network.AWS.CognitoIdentity.DeleteIdentityPool
     (
-    -- * Request
-      DeleteIdentityPool
-    -- ** Request constructor
-    , deleteIdentityPool
-    -- ** Request lenses
-    , dip1IdentityPoolId
+    -- * Creating a Request
+      deleteIdentityPool
+    , DeleteIdentityPool
+    -- * Request Lenses
+    , dIdentityPoolId
 
-    -- * Response
-    , DeleteIdentityPoolResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteIdentityPoolResponse
+    , DeleteIdentityPoolResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-newtype DeleteIdentityPool = DeleteIdentityPool
-    { _dip1IdentityPoolId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeleteIdentityPool' constructor.
+-- | Input to the DeleteIdentityPool action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deleteIdentityPool' smart constructor.
+newtype DeleteIdentityPool = DeleteIdentityPool'
+    { _dIdentityPoolId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteIdentityPool' with the minimum fields required to make a request.
 --
--- * 'dip1IdentityPoolId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteIdentityPool :: Text -- ^ 'dip1IdentityPoolId'
-                   -> DeleteIdentityPool
-deleteIdentityPool p1 = DeleteIdentityPool
-    { _dip1IdentityPoolId = p1
+-- * 'dIdentityPoolId'
+deleteIdentityPool
+    :: Text -- ^ 'dIdentityPoolId'
+    -> DeleteIdentityPool
+deleteIdentityPool pIdentityPoolId_ =
+    DeleteIdentityPool'
+    { _dIdentityPoolId = pIdentityPoolId_
     }
 
 -- | An identity pool ID in the format REGION:GUID.
-dip1IdentityPoolId :: Lens' DeleteIdentityPool Text
-dip1IdentityPoolId =
-    lens _dip1IdentityPoolId (\s a -> s { _dip1IdentityPoolId = a })
+dIdentityPoolId :: Lens' DeleteIdentityPool Text
+dIdentityPoolId = lens _dIdentityPoolId (\ s a -> s{_dIdentityPoolId = a});
 
-data DeleteIdentityPoolResponse = DeleteIdentityPoolResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteIdentityPool where
+        type Sv DeleteIdentityPool = CognitoIdentity
+        type Rs DeleteIdentityPool =
+             DeleteIdentityPoolResponse
+        request = postJSON
+        response = receiveNull DeleteIdentityPoolResponse'
 
--- | 'DeleteIdentityPoolResponse' constructor.
-deleteIdentityPoolResponse :: DeleteIdentityPoolResponse
-deleteIdentityPoolResponse = DeleteIdentityPoolResponse
+instance ToHeaders DeleteIdentityPool where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.DeleteIdentityPool" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DeleteIdentityPool where
+        toJSON DeleteIdentityPool'{..}
+          = object ["IdentityPoolId" .= _dIdentityPoolId]
+
 instance ToPath DeleteIdentityPool where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteIdentityPool where
-    toQuery = const mempty
-
-instance ToHeaders DeleteIdentityPool
-
-instance ToJSON DeleteIdentityPool where
-    toJSON DeleteIdentityPool{..} = object
-        [ "IdentityPoolId" .= _dip1IdentityPoolId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest DeleteIdentityPool where
-    type Sv DeleteIdentityPool = CognitoIdentity
-    type Rs DeleteIdentityPool = DeleteIdentityPoolResponse
+-- | /See:/ 'deleteIdentityPoolResponse' smart constructor.
+data DeleteIdentityPoolResponse =
+    DeleteIdentityPoolResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteIdentityPool"
-    response = nullResponse DeleteIdentityPoolResponse
+-- | Creates a value of 'DeleteIdentityPoolResponse' with the minimum fields required to make a request.
+--
+deleteIdentityPoolResponse
+    :: DeleteIdentityPoolResponse
+deleteIdentityPoolResponse = DeleteIdentityPoolResponse'
diff --git a/gen/Network/AWS/CognitoIdentity/DescribeIdentity.hs b/gen/Network/AWS/CognitoIdentity/DescribeIdentity.hs
--- a/gen/Network/AWS/CognitoIdentity/DescribeIdentity.hs
+++ b/gen/Network/AWS/CognitoIdentity/DescribeIdentity.hs
@@ -1,145 +1,99 @@
-{-# 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.CognitoIdentity.DescribeIdentity
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns metadata related to the given identity, including when the identity
--- was created and any associated linked logins.
+-- Returns metadata related to the given identity, including when the
+-- identity was created and any associated linked logins.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_DescribeIdentity.html>
+-- You must use AWS Developer credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_DescribeIdentity.html AWS API Reference> for DescribeIdentity.
 module Network.AWS.CognitoIdentity.DescribeIdentity
     (
-    -- * Request
-      DescribeIdentity
-    -- ** Request constructor
-    , describeIdentity
-    -- ** Request lenses
+    -- * Creating a Request
+      describeIdentity
+    , DescribeIdentity
+    -- * Request Lenses
     , diIdentityId
 
-    -- * Response
-    , DescribeIdentityResponse
-    -- ** Response constructor
-    , describeIdentityResponse
-    -- ** Response lenses
-    , dirCreationDate
-    , dirIdentityId
-    , dirLastModifiedDate
-    , dirLogins
+    -- * Destructuring the Response
+    , identityDescription
+    , IdentityDescription
+    -- * Response Lenses
+    , idLastModifiedDate
+    , idCreationDate
+    , idLogins
+    , idIdentityId
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DescribeIdentity = DescribeIdentity
+-- | Input to the 'DescribeIdentity' action.
+--
+-- /See:/ 'describeIdentity' smart constructor.
+newtype DescribeIdentity = DescribeIdentity'
     { _diIdentityId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeIdentity' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeIdentity' with the minimum fields required to make a request.
 --
--- * 'diIdentityId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeIdentity :: Text -- ^ 'diIdentityId'
-                 -> DescribeIdentity
-describeIdentity p1 = DescribeIdentity
-    { _diIdentityId = p1
+-- * 'diIdentityId'
+describeIdentity
+    :: Text -- ^ 'diIdentityId'
+    -> DescribeIdentity
+describeIdentity pIdentityId_ =
+    DescribeIdentity'
+    { _diIdentityId = pIdentityId_
     }
 
 -- | A unique identifier in the format REGION:GUID.
 diIdentityId :: Lens' DescribeIdentity Text
-diIdentityId = lens _diIdentityId (\s a -> s { _diIdentityId = a })
-
-data DescribeIdentityResponse = DescribeIdentityResponse
-    { _dirCreationDate     :: Maybe POSIX
-    , _dirIdentityId       :: Maybe Text
-    , _dirLastModifiedDate :: Maybe POSIX
-    , _dirLogins           :: List "Logins" Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DescribeIdentityResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dirCreationDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'dirIdentityId' @::@ 'Maybe' 'Text'
---
--- * 'dirLastModifiedDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'dirLogins' @::@ ['Text']
---
-describeIdentityResponse :: DescribeIdentityResponse
-describeIdentityResponse = DescribeIdentityResponse
-    { _dirIdentityId       = Nothing
-    , _dirLogins           = mempty
-    , _dirCreationDate     = Nothing
-    , _dirLastModifiedDate = Nothing
-    }
-
--- | Date on which the identity was created.
-dirCreationDate :: Lens' DescribeIdentityResponse (Maybe UTCTime)
-dirCreationDate = lens _dirCreationDate (\s a -> s { _dirCreationDate = a }) . mapping _Time
+diIdentityId = lens _diIdentityId (\ s a -> s{_diIdentityId = a});
 
--- | A unique identifier in the format REGION:GUID.
-dirIdentityId :: Lens' DescribeIdentityResponse (Maybe Text)
-dirIdentityId = lens _dirIdentityId (\s a -> s { _dirIdentityId = a })
+instance AWSRequest DescribeIdentity where
+        type Sv DescribeIdentity = CognitoIdentity
+        type Rs DescribeIdentity = IdentityDescription
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
--- | Date on which the identity was last modified.
-dirLastModifiedDate :: Lens' DescribeIdentityResponse (Maybe UTCTime)
-dirLastModifiedDate =
-    lens _dirLastModifiedDate (\s a -> s { _dirLastModifiedDate = a })
-        . mapping _Time
+instance ToHeaders DescribeIdentity where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.DescribeIdentity" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A set of optional name-value pairs that map provider names to provider tokens.
-dirLogins :: Lens' DescribeIdentityResponse [Text]
-dirLogins = lens _dirLogins (\s a -> s { _dirLogins = a }) . _List
+instance ToJSON DescribeIdentity where
+        toJSON DescribeIdentity'{..}
+          = object ["IdentityId" .= _diIdentityId]
 
 instance ToPath DescribeIdentity where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeIdentity where
-    toQuery = const mempty
-
-instance ToHeaders DescribeIdentity
-
-instance ToJSON DescribeIdentity where
-    toJSON DescribeIdentity{..} = object
-        [ "IdentityId" .= _diIdentityId
-        ]
-
-instance AWSRequest DescribeIdentity where
-    type Sv DescribeIdentity = CognitoIdentity
-    type Rs DescribeIdentity = DescribeIdentityResponse
-
-    request  = post "DescribeIdentity"
-    response = jsonResponse
-
-instance FromJSON DescribeIdentityResponse where
-    parseJSON = withObject "DescribeIdentityResponse" $ \o -> DescribeIdentityResponse
-        <$> o .:? "CreationDate"
-        <*> o .:? "IdentityId"
-        <*> o .:? "LastModifiedDate"
-        <*> o .:? "Logins" .!= mempty
+        toQuery = const mempty
diff --git a/gen/Network/AWS/CognitoIdentity/DescribeIdentityPool.hs b/gen/Network/AWS/CognitoIdentity/DescribeIdentityPool.hs
--- a/gen/Network/AWS/CognitoIdentity/DescribeIdentityPool.hs
+++ b/gen/Network/AWS/CognitoIdentity/DescribeIdentityPool.hs
@@ -1,179 +1,101 @@
-{-# 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.CognitoIdentity.DescribeIdentityPool
--- 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 details about a particular identity pool, including the pool name, ID
--- description, creation date, and current number of users.
+-- Gets details about a particular identity pool, including the pool name,
+-- ID description, creation date, and current number of users.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_DescribeIdentityPool.html>
+-- You must use AWS Developer credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_DescribeIdentityPool.html AWS API Reference> for DescribeIdentityPool.
 module Network.AWS.CognitoIdentity.DescribeIdentityPool
     (
-    -- * Request
-      DescribeIdentityPool
-    -- ** Request constructor
-    , describeIdentityPool
-    -- ** Request lenses
+    -- * Creating a Request
+      describeIdentityPool
+    , DescribeIdentityPool
+    -- * Request Lenses
     , dipIdentityPoolId
 
-    -- * Response
-    , DescribeIdentityPoolResponse
-    -- ** Response constructor
-    , describeIdentityPoolResponse
-    -- ** Response lenses
-    , diprAllowUnauthenticatedIdentities
-    , diprDeveloperProviderName
-    , diprIdentityPoolId
-    , diprIdentityPoolName
-    , diprOpenIdConnectProviderARNs
-    , diprSupportedLoginProviders
+    -- * Destructuring the Response
+    , identityPool
+    , IdentityPool
+    -- * Response Lenses
+    , ipSupportedLoginProviders
+    , ipDeveloperProviderName
+    , ipOpenIdConnectProviderARNs
+    , ipIdentityPoolId
+    , ipIdentityPoolName
+    , ipAllowUnauthenticatedIdentities
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DescribeIdentityPool = DescribeIdentityPool
+-- | Input to the DescribeIdentityPool action.
+--
+-- /See:/ 'describeIdentityPool' smart constructor.
+newtype DescribeIdentityPool = DescribeIdentityPool'
     { _dipIdentityPoolId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeIdentityPool' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeIdentityPool' with the minimum fields required to make a request.
 --
--- * 'dipIdentityPoolId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeIdentityPool :: Text -- ^ 'dipIdentityPoolId'
-                     -> DescribeIdentityPool
-describeIdentityPool p1 = DescribeIdentityPool
-    { _dipIdentityPoolId = p1
+-- * 'dipIdentityPoolId'
+describeIdentityPool
+    :: Text -- ^ 'dipIdentityPoolId'
+    -> DescribeIdentityPool
+describeIdentityPool pIdentityPoolId_ =
+    DescribeIdentityPool'
+    { _dipIdentityPoolId = pIdentityPoolId_
     }
 
 -- | An identity pool ID in the format REGION:GUID.
 dipIdentityPoolId :: Lens' DescribeIdentityPool Text
-dipIdentityPoolId =
-    lens _dipIdentityPoolId (\s a -> s { _dipIdentityPoolId = a })
-
-data DescribeIdentityPoolResponse = DescribeIdentityPoolResponse
-    { _diprAllowUnauthenticatedIdentities :: Bool
-    , _diprDeveloperProviderName          :: Maybe Text
-    , _diprIdentityPoolId                 :: Text
-    , _diprIdentityPoolName               :: Text
-    , _diprOpenIdConnectProviderARNs      :: List "OpenIdConnectProviderARNs" Text
-    , _diprSupportedLoginProviders        :: Map Text Text
-    } deriving (Eq, Read, Show)
-
--- | 'DescribeIdentityPoolResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'diprAllowUnauthenticatedIdentities' @::@ 'Bool'
---
--- * 'diprDeveloperProviderName' @::@ 'Maybe' 'Text'
---
--- * 'diprIdentityPoolId' @::@ 'Text'
---
--- * 'diprIdentityPoolName' @::@ 'Text'
---
--- * 'diprOpenIdConnectProviderARNs' @::@ ['Text']
---
--- * 'diprSupportedLoginProviders' @::@ 'HashMap' 'Text' 'Text'
---
-describeIdentityPoolResponse :: Text -- ^ 'diprIdentityPoolId'
-                             -> Text -- ^ 'diprIdentityPoolName'
-                             -> Bool -- ^ 'diprAllowUnauthenticatedIdentities'
-                             -> DescribeIdentityPoolResponse
-describeIdentityPoolResponse p1 p2 p3 = DescribeIdentityPoolResponse
-    { _diprIdentityPoolId                 = p1
-    , _diprIdentityPoolName               = p2
-    , _diprAllowUnauthenticatedIdentities = p3
-    , _diprSupportedLoginProviders        = mempty
-    , _diprDeveloperProviderName          = Nothing
-    , _diprOpenIdConnectProviderARNs      = mempty
-    }
-
--- | TRUE if the identity pool supports unauthenticated logins.
-diprAllowUnauthenticatedIdentities :: Lens' DescribeIdentityPoolResponse Bool
-diprAllowUnauthenticatedIdentities =
-    lens _diprAllowUnauthenticatedIdentities
-        (\s a -> s { _diprAllowUnauthenticatedIdentities = a })
-
--- | The "domain" by which Cognito will refer to your users.
-diprDeveloperProviderName :: Lens' DescribeIdentityPoolResponse (Maybe Text)
-diprDeveloperProviderName =
-    lens _diprDeveloperProviderName
-        (\s a -> s { _diprDeveloperProviderName = a })
-
--- | An identity pool ID in the format REGION:GUID.
-diprIdentityPoolId :: Lens' DescribeIdentityPoolResponse Text
-diprIdentityPoolId =
-    lens _diprIdentityPoolId (\s a -> s { _diprIdentityPoolId = a })
+dipIdentityPoolId = lens _dipIdentityPoolId (\ s a -> s{_dipIdentityPoolId = a});
 
--- | A string that you provide.
-diprIdentityPoolName :: Lens' DescribeIdentityPoolResponse Text
-diprIdentityPoolName =
-    lens _diprIdentityPoolName (\s a -> s { _diprIdentityPoolName = a })
+instance AWSRequest DescribeIdentityPool where
+        type Sv DescribeIdentityPool = CognitoIdentity
+        type Rs DescribeIdentityPool = IdentityPool
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
--- | A list of OpendID Connect provider ARNs.
-diprOpenIdConnectProviderARNs :: Lens' DescribeIdentityPoolResponse [Text]
-diprOpenIdConnectProviderARNs =
-    lens _diprOpenIdConnectProviderARNs
-        (\s a -> s { _diprOpenIdConnectProviderARNs = a })
-            . _List
+instance ToHeaders DescribeIdentityPool where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.DescribeIdentityPool" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | Optional key:value pairs mapping provider names to provider app IDs.
-diprSupportedLoginProviders :: Lens' DescribeIdentityPoolResponse (HashMap Text Text)
-diprSupportedLoginProviders =
-    lens _diprSupportedLoginProviders
-        (\s a -> s { _diprSupportedLoginProviders = a })
-            . _Map
+instance ToJSON DescribeIdentityPool where
+        toJSON DescribeIdentityPool'{..}
+          = object ["IdentityPoolId" .= _dipIdentityPoolId]
 
 instance ToPath DescribeIdentityPool where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeIdentityPool where
-    toQuery = const mempty
-
-instance ToHeaders DescribeIdentityPool
-
-instance ToJSON DescribeIdentityPool where
-    toJSON DescribeIdentityPool{..} = object
-        [ "IdentityPoolId" .= _dipIdentityPoolId
-        ]
-
-instance AWSRequest DescribeIdentityPool where
-    type Sv DescribeIdentityPool = CognitoIdentity
-    type Rs DescribeIdentityPool = DescribeIdentityPoolResponse
-
-    request  = post "DescribeIdentityPool"
-    response = jsonResponse
-
-instance FromJSON DescribeIdentityPoolResponse where
-    parseJSON = withObject "DescribeIdentityPoolResponse" $ \o -> DescribeIdentityPoolResponse
-        <$> o .:  "AllowUnauthenticatedIdentities"
-        <*> o .:? "DeveloperProviderName"
-        <*> o .:  "IdentityPoolId"
-        <*> o .:  "IdentityPoolName"
-        <*> o .:? "OpenIdConnectProviderARNs" .!= mempty
-        <*> o .:? "SupportedLoginProviders" .!= mempty
+        toQuery = const mempty
diff --git a/gen/Network/AWS/CognitoIdentity/GetCredentialsForIdentity.hs b/gen/Network/AWS/CognitoIdentity/GetCredentialsForIdentity.hs
--- a/gen/Network/AWS/CognitoIdentity/GetCredentialsForIdentity.hs
+++ b/gen/Network/AWS/CognitoIdentity/GetCredentialsForIdentity.hs
@@ -1,135 +1,159 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CognitoIdentity.GetCredentialsForIdentity
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns credentials for the the provided identity ID. Any provided logins
--- will be validated against supported login providers. If the token is for
--- cognito-identity.amazonaws.com, it will be passed through to AWS Security
--- Token Service with the appropriate role for the token.
+-- Returns credentials for the the provided identity ID. Any provided
+-- logins will be validated against supported login providers. If the token
+-- is for cognito-identity.amazonaws.com, it will be passed through to AWS
+-- Security Token Service with the appropriate role for the token.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html>
+-- This is a public API. You do not need any credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html AWS API Reference> for GetCredentialsForIdentity.
 module Network.AWS.CognitoIdentity.GetCredentialsForIdentity
     (
-    -- * Request
-      GetCredentialsForIdentity
-    -- ** Request constructor
-    , getCredentialsForIdentity
-    -- ** Request lenses
-    , gcfiIdentityId
+    -- * Creating a Request
+      getCredentialsForIdentity
+    , GetCredentialsForIdentity
+    -- * Request Lenses
     , gcfiLogins
+    , gcfiIdentityId
 
-    -- * Response
-    , GetCredentialsForIdentityResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getCredentialsForIdentityResponse
-    -- ** Response lenses
-    , gcfirCredentials
-    , gcfirIdentityId
+    , GetCredentialsForIdentityResponse
+    -- * Response Lenses
+    , gcfirsCredentials
+    , gcfirsIdentityId
+    , gcfirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-data GetCredentialsForIdentity = GetCredentialsForIdentity
-    { _gcfiIdentityId :: Text
-    , _gcfiLogins     :: Map Text Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'GetCredentialsForIdentity' constructor.
+-- | Input to the 'GetCredentialsForIdentity' action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getCredentialsForIdentity' smart constructor.
+data GetCredentialsForIdentity = GetCredentialsForIdentity'
+    { _gcfiLogins     :: !(Maybe (Map Text Text))
+    , _gcfiIdentityId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetCredentialsForIdentity' with the minimum fields required to make a request.
 --
--- * 'gcfiIdentityId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gcfiLogins' @::@ 'HashMap' 'Text' 'Text'
+-- * 'gcfiLogins'
 --
-getCredentialsForIdentity :: Text -- ^ 'gcfiIdentityId'
-                          -> GetCredentialsForIdentity
-getCredentialsForIdentity p1 = GetCredentialsForIdentity
-    { _gcfiIdentityId = p1
-    , _gcfiLogins     = mempty
+-- * 'gcfiIdentityId'
+getCredentialsForIdentity
+    :: Text -- ^ 'gcfiIdentityId'
+    -> GetCredentialsForIdentity
+getCredentialsForIdentity pIdentityId_ =
+    GetCredentialsForIdentity'
+    { _gcfiLogins = Nothing
+    , _gcfiIdentityId = pIdentityId_
     }
 
+-- | A set of optional name-value pairs that map provider names to provider
+-- tokens.
+gcfiLogins :: Lens' GetCredentialsForIdentity (HashMap Text Text)
+gcfiLogins = lens _gcfiLogins (\ s a -> s{_gcfiLogins = a}) . _Default . _Map;
+
 -- | A unique identifier in the format REGION:GUID.
 gcfiIdentityId :: Lens' GetCredentialsForIdentity Text
-gcfiIdentityId = lens _gcfiIdentityId (\s a -> s { _gcfiIdentityId = a })
+gcfiIdentityId = lens _gcfiIdentityId (\ s a -> s{_gcfiIdentityId = a});
 
--- | A set of optional name-value pairs that map provider names to provider tokens.
-gcfiLogins :: Lens' GetCredentialsForIdentity (HashMap Text Text)
-gcfiLogins = lens _gcfiLogins (\s a -> s { _gcfiLogins = a }) . _Map
+instance AWSRequest GetCredentialsForIdentity where
+        type Sv GetCredentialsForIdentity = CognitoIdentity
+        type Rs GetCredentialsForIdentity =
+             GetCredentialsForIdentityResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetCredentialsForIdentityResponse' <$>
+                   (x .?> "Credentials") <*> (x .?> "IdentityId") <*>
+                     (pure (fromEnum s)))
 
-data GetCredentialsForIdentityResponse = GetCredentialsForIdentityResponse
-    { _gcfirCredentials :: Maybe Credentials
-    , _gcfirIdentityId  :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance ToHeaders GetCredentialsForIdentity where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.GetCredentialsForIdentity"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'GetCredentialsForIdentityResponse' constructor.
+instance ToJSON GetCredentialsForIdentity where
+        toJSON GetCredentialsForIdentity'{..}
+          = object
+              ["Logins" .= _gcfiLogins,
+               "IdentityId" .= _gcfiIdentityId]
+
+instance ToPath GetCredentialsForIdentity where
+        toPath = const "/"
+
+instance ToQuery GetCredentialsForIdentity where
+        toQuery = const mempty
+
+-- | Returned in response to a successful 'GetCredentialsForIdentity'
+-- operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getCredentialsForIdentityResponse' smart constructor.
+data GetCredentialsForIdentityResponse = GetCredentialsForIdentityResponse'
+    { _gcfirsCredentials :: !(Maybe Credentials)
+    , _gcfirsIdentityId  :: !(Maybe Text)
+    , _gcfirsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetCredentialsForIdentityResponse' with the minimum fields required to make a request.
 --
--- * 'gcfirCredentials' @::@ 'Maybe' 'Credentials'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gcfirIdentityId' @::@ 'Maybe' 'Text'
+-- * 'gcfirsCredentials'
 --
-getCredentialsForIdentityResponse :: GetCredentialsForIdentityResponse
-getCredentialsForIdentityResponse = GetCredentialsForIdentityResponse
-    { _gcfirIdentityId  = Nothing
-    , _gcfirCredentials = Nothing
+-- * 'gcfirsIdentityId'
+--
+-- * 'gcfirsStatus'
+getCredentialsForIdentityResponse
+    :: Int -- ^ 'gcfirsStatus'
+    -> GetCredentialsForIdentityResponse
+getCredentialsForIdentityResponse pStatus_ =
+    GetCredentialsForIdentityResponse'
+    { _gcfirsCredentials = Nothing
+    , _gcfirsIdentityId = Nothing
+    , _gcfirsStatus = pStatus_
     }
 
 -- | Credentials for the the provided identity ID.
-gcfirCredentials :: Lens' GetCredentialsForIdentityResponse (Maybe Credentials)
-gcfirCredentials = lens _gcfirCredentials (\s a -> s { _gcfirCredentials = a })
+gcfirsCredentials :: Lens' GetCredentialsForIdentityResponse (Maybe Credentials)
+gcfirsCredentials = lens _gcfirsCredentials (\ s a -> s{_gcfirsCredentials = a});
 
 -- | A unique identifier in the format REGION:GUID.
-gcfirIdentityId :: Lens' GetCredentialsForIdentityResponse (Maybe Text)
-gcfirIdentityId = lens _gcfirIdentityId (\s a -> s { _gcfirIdentityId = a })
-
-instance ToPath GetCredentialsForIdentity where
-    toPath = const "/"
-
-instance ToQuery GetCredentialsForIdentity where
-    toQuery = const mempty
-
-instance ToHeaders GetCredentialsForIdentity
-
-instance ToJSON GetCredentialsForIdentity where
-    toJSON GetCredentialsForIdentity{..} = object
-        [ "IdentityId" .= _gcfiIdentityId
-        , "Logins"     .= _gcfiLogins
-        ]
-
-instance AWSRequest GetCredentialsForIdentity where
-    type Sv GetCredentialsForIdentity = CognitoIdentity
-    type Rs GetCredentialsForIdentity = GetCredentialsForIdentityResponse
-
-    request  = post "GetCredentialsForIdentity"
-    response = jsonResponse
+gcfirsIdentityId :: Lens' GetCredentialsForIdentityResponse (Maybe Text)
+gcfirsIdentityId = lens _gcfirsIdentityId (\ s a -> s{_gcfirsIdentityId = a});
 
-instance FromJSON GetCredentialsForIdentityResponse where
-    parseJSON = withObject "GetCredentialsForIdentityResponse" $ \o -> GetCredentialsForIdentityResponse
-        <$> o .:? "Credentials"
-        <*> o .:? "IdentityId"
+-- | The response status code.
+gcfirsStatus :: Lens' GetCredentialsForIdentityResponse Int
+gcfirsStatus = lens _gcfirsStatus (\ s a -> s{_gcfirsStatus = a});
diff --git a/gen/Network/AWS/CognitoIdentity/GetId.hs b/gen/Network/AWS/CognitoIdentity/GetId.hs
--- a/gen/Network/AWS/CognitoIdentity/GetId.hs
+++ b/gen/Network/AWS/CognitoIdentity/GetId.hs
@@ -1,135 +1,163 @@
-{-# 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.CognitoIdentity.GetId
--- 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.
-
--- | Generates (or retrieves) a Cognito ID. Supplying multiple logins will create
--- an implicit linked account.
+-- Generates (or retrieves) a Cognito ID. Supplying multiple logins will
+-- create an implicit linked account.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetId.html>
+-- token+\";\"+tokenSecret.
+--
+-- This is a public API. You do not need any credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetId.html AWS API Reference> for GetId.
 module Network.AWS.CognitoIdentity.GetId
     (
-    -- * Request
-      GetId
-    -- ** Request constructor
-    , getId
-    -- ** Request lenses
+    -- * Creating a Request
+      getId
+    , GetId
+    -- * Request Lenses
     , giAccountId
-    , giIdentityPoolId
     , giLogins
+    , giIdentityPoolId
 
-    -- * Response
-    , GetIdResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getIdResponse
-    -- ** Response lenses
-    , girIdentityId
+    , GetIdResponse
+    -- * Response Lenses
+    , girsIdentityId
+    , girsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-data GetId = GetId
-    { _giAccountId      :: Maybe Text
-    , _giIdentityPoolId :: Text
-    , _giLogins         :: Map Text Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'GetId' constructor.
+-- | Input to the GetId action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getId' smart constructor.
+data GetId = GetId'
+    { _giAccountId      :: !(Maybe Text)
+    , _giLogins         :: !(Maybe (Map Text Text))
+    , _giIdentityPoolId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetId' with the minimum fields required to make a request.
 --
--- * 'giAccountId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'giIdentityPoolId' @::@ 'Text'
+-- * 'giAccountId'
 --
--- * 'giLogins' @::@ 'HashMap' 'Text' 'Text'
+-- * 'giLogins'
 --
-getId :: Text -- ^ 'giIdentityPoolId'
-      -> GetId
-getId p1 = GetId
-    { _giIdentityPoolId = p1
-    , _giAccountId      = Nothing
-    , _giLogins         = mempty
+-- * 'giIdentityPoolId'
+getId
+    :: Text -- ^ 'giIdentityPoolId'
+    -> GetId
+getId pIdentityPoolId_ =
+    GetId'
+    { _giAccountId = Nothing
+    , _giLogins = Nothing
+    , _giIdentityPoolId = pIdentityPoolId_
     }
 
 -- | A standard AWS account ID (9+ digits).
 giAccountId :: Lens' GetId (Maybe Text)
-giAccountId = lens _giAccountId (\s a -> s { _giAccountId = a })
-
--- | An identity pool ID in the format REGION:GUID.
-giIdentityPoolId :: Lens' GetId Text
-giIdentityPoolId = lens _giIdentityPoolId (\s a -> s { _giIdentityPoolId = a })
+giAccountId = lens _giAccountId (\ s a -> s{_giAccountId = a});
 
--- | A set of optional name-value pairs that map provider names to provider tokens.
+-- | A set of optional name-value pairs that map provider names to provider
+-- tokens.
 --
--- The available provider names for 'Logins' are as follows:  Facebook: 'graph.facebook.com'  Google: 'accounts.google.com'  Amazon: 'www.amazon.com'
+-- The available provider names for 'Logins' are as follows:
+--
+-- -   Facebook: 'graph.facebook.com'
+-- -   Google: 'accounts.google.com'
+-- -   Amazon: 'www.amazon.com'
+-- -   Twitter: 'www.twitter.com'
+-- -   Digits: 'www.digits.com'
 giLogins :: Lens' GetId (HashMap Text Text)
-giLogins = lens _giLogins (\s a -> s { _giLogins = a }) . _Map
+giLogins = lens _giLogins (\ s a -> s{_giLogins = a}) . _Default . _Map;
 
-newtype GetIdResponse = GetIdResponse
-    { _girIdentityId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | An identity pool ID in the format REGION:GUID.
+giIdentityPoolId :: Lens' GetId Text
+giIdentityPoolId = lens _giIdentityPoolId (\ s a -> s{_giIdentityPoolId = a});
 
--- | 'GetIdResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'girIdentityId' @::@ 'Maybe' 'Text'
---
-getIdResponse :: GetIdResponse
-getIdResponse = GetIdResponse
-    { _girIdentityId = Nothing
-    }
+instance AWSRequest GetId where
+        type Sv GetId = CognitoIdentity
+        type Rs GetId = GetIdResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetIdResponse' <$>
+                   (x .?> "IdentityId") <*> (pure (fromEnum s)))
 
--- | A unique identifier in the format REGION:GUID.
-girIdentityId :: Lens' GetIdResponse (Maybe Text)
-girIdentityId = lens _girIdentityId (\s a -> s { _girIdentityId = a })
+instance ToHeaders GetId where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.GetId" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON GetId where
+        toJSON GetId'{..}
+          = object
+              ["AccountId" .= _giAccountId, "Logins" .= _giLogins,
+               "IdentityPoolId" .= _giIdentityPoolId]
+
 instance ToPath GetId where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery GetId where
-    toQuery = const mempty
-
-instance ToHeaders GetId
+        toQuery = const mempty
 
-instance ToJSON GetId where
-    toJSON GetId{..} = object
-        [ "AccountId"      .= _giAccountId
-        , "IdentityPoolId" .= _giIdentityPoolId
-        , "Logins"         .= _giLogins
-        ]
+-- | Returned in response to a GetId request.
+--
+-- /See:/ 'getIdResponse' smart constructor.
+data GetIdResponse = GetIdResponse'
+    { _girsIdentityId :: !(Maybe Text)
+    , _girsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest GetId where
-    type Sv GetId = CognitoIdentity
-    type Rs GetId = GetIdResponse
+-- | Creates a value of 'GetIdResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'girsIdentityId'
+--
+-- * 'girsStatus'
+getIdResponse
+    :: Int -- ^ 'girsStatus'
+    -> GetIdResponse
+getIdResponse pStatus_ =
+    GetIdResponse'
+    { _girsIdentityId = Nothing
+    , _girsStatus = pStatus_
+    }
 
-    request  = post "GetId"
-    response = jsonResponse
+-- | A unique identifier in the format REGION:GUID.
+girsIdentityId :: Lens' GetIdResponse (Maybe Text)
+girsIdentityId = lens _girsIdentityId (\ s a -> s{_girsIdentityId = a});
 
-instance FromJSON GetIdResponse where
-    parseJSON = withObject "GetIdResponse" $ \o -> GetIdResponse
-        <$> o .:? "IdentityId"
+-- | The response status code.
+girsStatus :: Lens' GetIdResponse Int
+girsStatus = lens _girsStatus (\ s a -> s{_girsStatus = a});
diff --git a/gen/Network/AWS/CognitoIdentity/GetIdentityPoolRoles.hs b/gen/Network/AWS/CognitoIdentity/GetIdentityPoolRoles.hs
--- a/gen/Network/AWS/CognitoIdentity/GetIdentityPoolRoles.hs
+++ b/gen/Network/AWS/CognitoIdentity/GetIdentityPoolRoles.hs
@@ -1,124 +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.CognitoIdentity.GetIdentityPoolRoles
--- 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 roles for an identity pool.
+-- Gets the roles for an identity pool.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetIdentityPoolRoles.html>
+-- You must use AWS Developer credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetIdentityPoolRoles.html AWS API Reference> for GetIdentityPoolRoles.
 module Network.AWS.CognitoIdentity.GetIdentityPoolRoles
     (
-    -- * Request
-      GetIdentityPoolRoles
-    -- ** Request constructor
-    , getIdentityPoolRoles
-    -- ** Request lenses
+    -- * Creating a Request
+      getIdentityPoolRoles
+    , GetIdentityPoolRoles
+    -- * Request Lenses
     , giprIdentityPoolId
 
-    -- * Response
-    , GetIdentityPoolRolesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getIdentityPoolRolesResponse
-    -- ** Response lenses
-    , giprrIdentityPoolId
-    , giprrRoles
+    , GetIdentityPoolRolesResponse
+    -- * Response Lenses
+    , giprrsRoles
+    , giprrsIdentityPoolId
+    , giprrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-newtype GetIdentityPoolRoles = GetIdentityPoolRoles
-    { _giprIdentityPoolId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'GetIdentityPoolRoles' constructor.
+-- | Input to the 'GetIdentityPoolRoles' action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getIdentityPoolRoles' smart constructor.
+newtype GetIdentityPoolRoles = GetIdentityPoolRoles'
+    { _giprIdentityPoolId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIdentityPoolRoles' with the minimum fields required to make a request.
 --
--- * 'giprIdentityPoolId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-getIdentityPoolRoles :: GetIdentityPoolRoles
-getIdentityPoolRoles = GetIdentityPoolRoles
-    { _giprIdentityPoolId = Nothing
+-- * 'giprIdentityPoolId'
+getIdentityPoolRoles
+    :: Text -- ^ 'giprIdentityPoolId'
+    -> GetIdentityPoolRoles
+getIdentityPoolRoles pIdentityPoolId_ =
+    GetIdentityPoolRoles'
+    { _giprIdentityPoolId = pIdentityPoolId_
     }
 
 -- | An identity pool ID in the format REGION:GUID.
-giprIdentityPoolId :: Lens' GetIdentityPoolRoles (Maybe Text)
-giprIdentityPoolId =
-    lens _giprIdentityPoolId (\s a -> s { _giprIdentityPoolId = a })
-
-data GetIdentityPoolRolesResponse = GetIdentityPoolRolesResponse
-    { _giprrIdentityPoolId :: Maybe Text
-    , _giprrRoles          :: Map Text Text
-    } deriving (Eq, Read, Show)
+giprIdentityPoolId :: Lens' GetIdentityPoolRoles Text
+giprIdentityPoolId = lens _giprIdentityPoolId (\ s a -> s{_giprIdentityPoolId = a});
 
--- | 'GetIdentityPoolRolesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'giprrIdentityPoolId' @::@ 'Maybe' 'Text'
---
--- * 'giprrRoles' @::@ 'HashMap' 'Text' 'Text'
---
-getIdentityPoolRolesResponse :: GetIdentityPoolRolesResponse
-getIdentityPoolRolesResponse = GetIdentityPoolRolesResponse
-    { _giprrIdentityPoolId = Nothing
-    , _giprrRoles          = mempty
-    }
+instance AWSRequest GetIdentityPoolRoles where
+        type Sv GetIdentityPoolRoles = CognitoIdentity
+        type Rs GetIdentityPoolRoles =
+             GetIdentityPoolRolesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetIdentityPoolRolesResponse' <$>
+                   (x .?> "Roles" .!@ mempty) <*>
+                     (x .?> "IdentityPoolId")
+                     <*> (pure (fromEnum s)))
 
--- | An identity pool ID in the format REGION:GUID.
-giprrIdentityPoolId :: Lens' GetIdentityPoolRolesResponse (Maybe Text)
-giprrIdentityPoolId =
-    lens _giprrIdentityPoolId (\s a -> s { _giprrIdentityPoolId = a })
+instance ToHeaders GetIdentityPoolRoles where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.GetIdentityPoolRoles" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The map of roles associated with this pool. Currently only authenticated and
--- unauthenticated roles are supported.
-giprrRoles :: Lens' GetIdentityPoolRolesResponse (HashMap Text Text)
-giprrRoles = lens _giprrRoles (\s a -> s { _giprrRoles = a }) . _Map
+instance ToJSON GetIdentityPoolRoles where
+        toJSON GetIdentityPoolRoles'{..}
+          = object ["IdentityPoolId" .= _giprIdentityPoolId]
 
 instance ToPath GetIdentityPoolRoles where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery GetIdentityPoolRoles where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders GetIdentityPoolRoles
+-- | Returned in response to a successful 'GetIdentityPoolRoles' operation.
+--
+-- /See:/ 'getIdentityPoolRolesResponse' smart constructor.
+data GetIdentityPoolRolesResponse = GetIdentityPoolRolesResponse'
+    { _giprrsRoles          :: !(Maybe (Map Text Text))
+    , _giprrsIdentityPoolId :: !(Maybe Text)
+    , _giprrsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON GetIdentityPoolRoles where
-    toJSON GetIdentityPoolRoles{..} = object
-        [ "IdentityPoolId" .= _giprIdentityPoolId
-        ]
+-- | Creates a value of 'GetIdentityPoolRolesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'giprrsRoles'
+--
+-- * 'giprrsIdentityPoolId'
+--
+-- * 'giprrsStatus'
+getIdentityPoolRolesResponse
+    :: Int -- ^ 'giprrsStatus'
+    -> GetIdentityPoolRolesResponse
+getIdentityPoolRolesResponse pStatus_ =
+    GetIdentityPoolRolesResponse'
+    { _giprrsRoles = Nothing
+    , _giprrsIdentityPoolId = Nothing
+    , _giprrsStatus = pStatus_
+    }
 
-instance AWSRequest GetIdentityPoolRoles where
-    type Sv GetIdentityPoolRoles = CognitoIdentity
-    type Rs GetIdentityPoolRoles = GetIdentityPoolRolesResponse
+-- | The map of roles associated with this pool. Currently only authenticated
+-- and unauthenticated roles are supported.
+giprrsRoles :: Lens' GetIdentityPoolRolesResponse (HashMap Text Text)
+giprrsRoles = lens _giprrsRoles (\ s a -> s{_giprrsRoles = a}) . _Default . _Map;
 
-    request  = post "GetIdentityPoolRoles"
-    response = jsonResponse
+-- | An identity pool ID in the format REGION:GUID.
+giprrsIdentityPoolId :: Lens' GetIdentityPoolRolesResponse (Maybe Text)
+giprrsIdentityPoolId = lens _giprrsIdentityPoolId (\ s a -> s{_giprrsIdentityPoolId = a});
 
-instance FromJSON GetIdentityPoolRolesResponse where
-    parseJSON = withObject "GetIdentityPoolRolesResponse" $ \o -> GetIdentityPoolRolesResponse
-        <$> o .:? "IdentityPoolId"
-        <*> o .:? "Roles" .!= mempty
+-- | The response status code.
+giprrsStatus :: Lens' GetIdentityPoolRolesResponse Int
+giprrsStatus = lens _giprrsStatus (\ s a -> s{_giprrsStatus = a});
diff --git a/gen/Network/AWS/CognitoIdentity/GetOpenIdToken.hs b/gen/Network/AWS/CognitoIdentity/GetOpenIdToken.hs
--- a/gen/Network/AWS/CognitoIdentity/GetOpenIdToken.hs
+++ b/gen/Network/AWS/CognitoIdentity/GetOpenIdToken.hs
@@ -1,137 +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.CognitoIdentity.GetOpenIdToken
--- 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 an OpenID token, using a known Cognito ID. This known Cognito ID is
--- returned by 'GetId'. You can optionally add additional logins for the identity.
--- Supplying multiple logins creates an implicit link.
+-- Gets an OpenID token, using a known Cognito ID. This known Cognito ID is
+-- returned by GetId. You can optionally add additional logins for the
+-- identity. Supplying multiple logins creates an implicit link.
 --
 -- The OpenId token is valid for 15 minutes.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetOpenIdToken.html>
+-- This is a public API. You do not need any credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetOpenIdToken.html AWS API Reference> for GetOpenIdToken.
 module Network.AWS.CognitoIdentity.GetOpenIdToken
     (
-    -- * Request
-      GetOpenIdToken
-    -- ** Request constructor
-    , getOpenIdToken
-    -- ** Request lenses
-    , goitIdentityId
+    -- * Creating a Request
+      getOpenIdToken
+    , GetOpenIdToken
+    -- * Request Lenses
     , goitLogins
+    , goitIdentityId
 
-    -- * Response
-    , GetOpenIdTokenResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getOpenIdTokenResponse
-    -- ** Response lenses
-    , goitrIdentityId
-    , goitrToken
+    , GetOpenIdTokenResponse
+    -- * Response Lenses
+    , goitrsToken
+    , goitrsIdentityId
+    , goitrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-data GetOpenIdToken = GetOpenIdToken
-    { _goitIdentityId :: Text
-    , _goitLogins     :: Map Text Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'GetOpenIdToken' constructor.
+-- | Input to the GetOpenIdToken action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getOpenIdToken' smart constructor.
+data GetOpenIdToken = GetOpenIdToken'
+    { _goitLogins     :: !(Maybe (Map Text Text))
+    , _goitIdentityId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetOpenIdToken' with the minimum fields required to make a request.
 --
--- * 'goitIdentityId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'goitLogins' @::@ 'HashMap' 'Text' 'Text'
+-- * 'goitLogins'
 --
-getOpenIdToken :: Text -- ^ 'goitIdentityId'
-               -> GetOpenIdToken
-getOpenIdToken p1 = GetOpenIdToken
-    { _goitIdentityId = p1
-    , _goitLogins     = mempty
+-- * 'goitIdentityId'
+getOpenIdToken
+    :: Text -- ^ 'goitIdentityId'
+    -> GetOpenIdToken
+getOpenIdToken pIdentityId_ =
+    GetOpenIdToken'
+    { _goitLogins = Nothing
+    , _goitIdentityId = pIdentityId_
     }
 
--- | A unique identifier in the format REGION:GUID.
-goitIdentityId :: Lens' GetOpenIdToken Text
-goitIdentityId = lens _goitIdentityId (\s a -> s { _goitIdentityId = a })
-
--- | A set of optional name-value pairs that map provider names to provider tokens.
+-- | A set of optional name-value pairs that map provider names to provider
+-- tokens. When using graph.facebook.com and www.amazon.com, supply the
+-- access_token returned from the provider\'s authflow. For
+-- accounts.google.com or any other OpenId Connect provider, always include
+-- the id_token.
 goitLogins :: Lens' GetOpenIdToken (HashMap Text Text)
-goitLogins = lens _goitLogins (\s a -> s { _goitLogins = a }) . _Map
+goitLogins = lens _goitLogins (\ s a -> s{_goitLogins = a}) . _Default . _Map;
 
-data GetOpenIdTokenResponse = GetOpenIdTokenResponse
-    { _goitrIdentityId :: Maybe Text
-    , _goitrToken      :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | A unique identifier in the format REGION:GUID.
+goitIdentityId :: Lens' GetOpenIdToken Text
+goitIdentityId = lens _goitIdentityId (\ s a -> s{_goitIdentityId = a});
 
--- | 'GetOpenIdTokenResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'goitrIdentityId' @::@ 'Maybe' 'Text'
---
--- * 'goitrToken' @::@ 'Maybe' 'Text'
---
-getOpenIdTokenResponse :: GetOpenIdTokenResponse
-getOpenIdTokenResponse = GetOpenIdTokenResponse
-    { _goitrIdentityId = Nothing
-    , _goitrToken      = Nothing
-    }
+instance AWSRequest GetOpenIdToken where
+        type Sv GetOpenIdToken = CognitoIdentity
+        type Rs GetOpenIdToken = GetOpenIdTokenResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetOpenIdTokenResponse' <$>
+                   (x .?> "Token") <*> (x .?> "IdentityId") <*>
+                     (pure (fromEnum s)))
 
--- | A unique identifier in the format REGION:GUID. Note that the IdentityId
--- returned may not match the one passed on input.
-goitrIdentityId :: Lens' GetOpenIdTokenResponse (Maybe Text)
-goitrIdentityId = lens _goitrIdentityId (\s a -> s { _goitrIdentityId = a })
+instance ToHeaders GetOpenIdToken where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.GetOpenIdToken" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An OpenID token, valid for 15 minutes.
-goitrToken :: Lens' GetOpenIdTokenResponse (Maybe Text)
-goitrToken = lens _goitrToken (\s a -> s { _goitrToken = a })
+instance ToJSON GetOpenIdToken where
+        toJSON GetOpenIdToken'{..}
+          = object
+              ["Logins" .= _goitLogins,
+               "IdentityId" .= _goitIdentityId]
 
 instance ToPath GetOpenIdToken where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery GetOpenIdToken where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders GetOpenIdToken
+-- | Returned in response to a successful GetOpenIdToken request.
+--
+-- /See:/ 'getOpenIdTokenResponse' smart constructor.
+data GetOpenIdTokenResponse = GetOpenIdTokenResponse'
+    { _goitrsToken      :: !(Maybe Text)
+    , _goitrsIdentityId :: !(Maybe Text)
+    , _goitrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON GetOpenIdToken where
-    toJSON GetOpenIdToken{..} = object
-        [ "IdentityId" .= _goitIdentityId
-        , "Logins"     .= _goitLogins
-        ]
+-- | Creates a value of 'GetOpenIdTokenResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'goitrsToken'
+--
+-- * 'goitrsIdentityId'
+--
+-- * 'goitrsStatus'
+getOpenIdTokenResponse
+    :: Int -- ^ 'goitrsStatus'
+    -> GetOpenIdTokenResponse
+getOpenIdTokenResponse pStatus_ =
+    GetOpenIdTokenResponse'
+    { _goitrsToken = Nothing
+    , _goitrsIdentityId = Nothing
+    , _goitrsStatus = pStatus_
+    }
 
-instance AWSRequest GetOpenIdToken where
-    type Sv GetOpenIdToken = CognitoIdentity
-    type Rs GetOpenIdToken = GetOpenIdTokenResponse
+-- | An OpenID token, valid for 15 minutes.
+goitrsToken :: Lens' GetOpenIdTokenResponse (Maybe Text)
+goitrsToken = lens _goitrsToken (\ s a -> s{_goitrsToken = a});
 
-    request  = post "GetOpenIdToken"
-    response = jsonResponse
+-- | A unique identifier in the format REGION:GUID. Note that the IdentityId
+-- returned may not match the one passed on input.
+goitrsIdentityId :: Lens' GetOpenIdTokenResponse (Maybe Text)
+goitrsIdentityId = lens _goitrsIdentityId (\ s a -> s{_goitrsIdentityId = a});
 
-instance FromJSON GetOpenIdTokenResponse where
-    parseJSON = withObject "GetOpenIdTokenResponse" $ \o -> GetOpenIdTokenResponse
-        <$> o .:? "IdentityId"
-        <*> o .:? "Token"
+-- | The response status code.
+goitrsStatus :: Lens' GetOpenIdTokenResponse Int
+goitrsStatus = lens _goitrsStatus (\ s a -> s{_goitrsStatus = a});
diff --git a/gen/Network/AWS/CognitoIdentity/GetOpenIdTokenForDeveloperIdentity.hs b/gen/Network/AWS/CognitoIdentity/GetOpenIdTokenForDeveloperIdentity.hs
--- a/gen/Network/AWS/CognitoIdentity/GetOpenIdTokenForDeveloperIdentity.hs
+++ b/gen/Network/AWS/CognitoIdentity/GetOpenIdTokenForDeveloperIdentity.hs
@@ -1,184 +1,212 @@
-{-# 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.CognitoIdentity.GetOpenIdTokenForDeveloperIdentity
--- 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 (or retrieves) a Cognito 'IdentityId' and an OpenID Connect token for
--- a user authenticated by your backend authentication process. Supplying
--- multiple logins will create an implicit linked account. You can only specify
--- one developer provider as part of the 'Logins' map, which is linked to the
--- identity pool. The developer provider is the "domain" by which Cognito will
--- refer to your users.
+-- Registers (or retrieves) a Cognito 'IdentityId' and an OpenID Connect
+-- token for a user authenticated by your backend authentication process.
+-- Supplying multiple logins will create an implicit linked account. You
+-- can only specify one developer provider as part of the 'Logins' map,
+-- which is linked to the identity pool. The developer provider is the
+-- \"domain\" by which Cognito will refer to your users.
 --
--- You can use 'GetOpenIdTokenForDeveloperIdentity' to create a new identity and
--- to link new logins (that is, user credentials issued by a public provider or
--- developer provider) to an existing identity. When you want to create a new
--- identity, the 'IdentityId' should be null. When you want to associate a new
--- login with an existing authenticated/unauthenticated identity, you can do so
--- by providing the existing 'IdentityId'. This API will create the identity in
--- the specified 'IdentityPoolId'.
+-- You can use 'GetOpenIdTokenForDeveloperIdentity' to create a new
+-- identity and to link new logins (that is, user credentials issued by a
+-- public provider or developer provider) to an existing identity. When you
+-- want to create a new identity, the 'IdentityId' should be null. When you
+-- want to associate a new login with an existing
+-- authenticated\/unauthenticated identity, you can do so by providing the
+-- existing 'IdentityId'. This API will create the identity in the
+-- specified 'IdentityPoolId'.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetOpenIdTokenForDeveloperIdentity.html>
+-- You must use AWS Developer credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetOpenIdTokenForDeveloperIdentity.html AWS API Reference> for GetOpenIdTokenForDeveloperIdentity.
 module Network.AWS.CognitoIdentity.GetOpenIdTokenForDeveloperIdentity
     (
-    -- * Request
-      GetOpenIdTokenForDeveloperIdentity
-    -- ** Request constructor
-    , getOpenIdTokenForDeveloperIdentity
-    -- ** Request lenses
+    -- * Creating a Request
+      getOpenIdTokenForDeveloperIdentity
+    , GetOpenIdTokenForDeveloperIdentity
+    -- * Request Lenses
+    , goitfdiTokenDuration
     , goitfdiIdentityId
     , goitfdiIdentityPoolId
     , goitfdiLogins
-    , goitfdiTokenDuration
 
-    -- * Response
-    , GetOpenIdTokenForDeveloperIdentityResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getOpenIdTokenForDeveloperIdentityResponse
-    -- ** Response lenses
-    , goitfdirIdentityId
-    , goitfdirToken
+    , GetOpenIdTokenForDeveloperIdentityResponse
+    -- * Response Lenses
+    , goitfdirsToken
+    , goitfdirsIdentityId
+    , goitfdirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-data GetOpenIdTokenForDeveloperIdentity = GetOpenIdTokenForDeveloperIdentity
-    { _goitfdiIdentityId     :: Maybe Text
-    , _goitfdiIdentityPoolId :: Text
-    , _goitfdiLogins         :: Map Text Text
-    , _goitfdiTokenDuration  :: Maybe Nat
-    } deriving (Eq, Read, Show)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'GetOpenIdTokenForDeveloperIdentity' constructor.
+-- | Input to the 'GetOpenIdTokenForDeveloperIdentity' action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getOpenIdTokenForDeveloperIdentity' smart constructor.
+data GetOpenIdTokenForDeveloperIdentity = GetOpenIdTokenForDeveloperIdentity'
+    { _goitfdiTokenDuration  :: !(Maybe Nat)
+    , _goitfdiIdentityId     :: !(Maybe Text)
+    , _goitfdiIdentityPoolId :: !Text
+    , _goitfdiLogins         :: !(Map Text Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetOpenIdTokenForDeveloperIdentity' with the minimum fields required to make a request.
 --
--- * 'goitfdiIdentityId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'goitfdiIdentityPoolId' @::@ 'Text'
+-- * 'goitfdiTokenDuration'
 --
--- * 'goitfdiLogins' @::@ 'HashMap' 'Text' 'Text'
+-- * 'goitfdiIdentityId'
 --
--- * 'goitfdiTokenDuration' @::@ 'Maybe' 'Natural'
+-- * 'goitfdiIdentityPoolId'
 --
-getOpenIdTokenForDeveloperIdentity :: Text -- ^ 'goitfdiIdentityPoolId'
-                                   -> GetOpenIdTokenForDeveloperIdentity
-getOpenIdTokenForDeveloperIdentity p1 = GetOpenIdTokenForDeveloperIdentity
-    { _goitfdiIdentityPoolId = p1
-    , _goitfdiIdentityId     = Nothing
-    , _goitfdiLogins         = mempty
-    , _goitfdiTokenDuration  = Nothing
+-- * 'goitfdiLogins'
+getOpenIdTokenForDeveloperIdentity
+    :: Text -- ^ 'goitfdiIdentityPoolId'
+    -> GetOpenIdTokenForDeveloperIdentity
+getOpenIdTokenForDeveloperIdentity pIdentityPoolId_ =
+    GetOpenIdTokenForDeveloperIdentity'
+    { _goitfdiTokenDuration = Nothing
+    , _goitfdiIdentityId = Nothing
+    , _goitfdiIdentityPoolId = pIdentityPoolId_
+    , _goitfdiLogins = mempty
     }
 
+-- | The expiration time of the token, in seconds. You can specify a custom
+-- expiration time for the token so that you can cache it. If you don\'t
+-- provide an expiration time, the token is valid for 15 minutes. You can
+-- exchange the token with Amazon STS for temporary AWS credentials, which
+-- are valid for a maximum of one hour. The maximum token duration you can
+-- set is 24 hours. You should take care in setting the expiration time for
+-- a token, as there are significant security implications: an attacker
+-- could use a leaked token to access your AWS resources for the token\'s
+-- duration.
+goitfdiTokenDuration :: Lens' GetOpenIdTokenForDeveloperIdentity (Maybe Natural)
+goitfdiTokenDuration = lens _goitfdiTokenDuration (\ s a -> s{_goitfdiTokenDuration = a}) . mapping _Nat;
+
 -- | A unique identifier in the format REGION:GUID.
 goitfdiIdentityId :: Lens' GetOpenIdTokenForDeveloperIdentity (Maybe Text)
-goitfdiIdentityId =
-    lens _goitfdiIdentityId (\s a -> s { _goitfdiIdentityId = a })
+goitfdiIdentityId = lens _goitfdiIdentityId (\ s a -> s{_goitfdiIdentityId = a});
 
 -- | An identity pool ID in the format REGION:GUID.
 goitfdiIdentityPoolId :: Lens' GetOpenIdTokenForDeveloperIdentity Text
-goitfdiIdentityPoolId =
-    lens _goitfdiIdentityPoolId (\s a -> s { _goitfdiIdentityPoolId = a })
+goitfdiIdentityPoolId = lens _goitfdiIdentityPoolId (\ s a -> s{_goitfdiIdentityPoolId = a});
 
 -- | A set of optional name-value pairs that map provider names to provider
 -- tokens. Each name-value pair represents a user from a public provider or
--- developer provider. If the user is from a developer provider, the name-value
--- pair will follow the syntax '"developer_provider_name":"developer_user_identifier"'. The developer provider is the "domain" by which
--- Cognito will refer to your users; you provided this domain while
--- creating/updating the identity pool. The developer user identifier is an
--- identifier from your backend that uniquely identifies a user. When you create
--- an identity pool, you can specify the supported logins.
+-- developer provider. If the user is from a developer provider, the
+-- name-value pair will follow the syntax
+-- '\"developer_provider_name\": \"developer_user_identifier\"'. The
+-- developer provider is the \"domain\" by which Cognito will refer to your
+-- users; you provided this domain while creating\/updating the identity
+-- pool. The developer user identifier is an identifier from your backend
+-- that uniquely identifies a user. When you create an identity pool, you
+-- can specify the supported logins.
 goitfdiLogins :: Lens' GetOpenIdTokenForDeveloperIdentity (HashMap Text Text)
-goitfdiLogins = lens _goitfdiLogins (\s a -> s { _goitfdiLogins = a }) . _Map
+goitfdiLogins = lens _goitfdiLogins (\ s a -> s{_goitfdiLogins = a}) . _Map;
 
--- | The expiration time of the token, in seconds. You can specify a custom
--- expiration time for the token so that you can cache it. If you don't provide
--- an expiration time, the token is valid for 15 minutes. You can exchange the
--- token with Amazon STS for temporary AWS credentials, which are valid for a
--- maximum of one hour. The maximum token duration you can set is 24 hours. You
--- should take care in setting the expiration time for a token, as there are
--- significant security implications: an attacker could use a leaked token to
--- access your AWS resources for the token's duration.
-goitfdiTokenDuration :: Lens' GetOpenIdTokenForDeveloperIdentity (Maybe Natural)
-goitfdiTokenDuration =
-    lens _goitfdiTokenDuration (\s a -> s { _goitfdiTokenDuration = a })
-        . mapping _Nat
+instance AWSRequest
+         GetOpenIdTokenForDeveloperIdentity where
+        type Sv GetOpenIdTokenForDeveloperIdentity =
+             CognitoIdentity
+        type Rs GetOpenIdTokenForDeveloperIdentity =
+             GetOpenIdTokenForDeveloperIdentityResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetOpenIdTokenForDeveloperIdentityResponse' <$>
+                   (x .?> "Token") <*> (x .?> "IdentityId") <*>
+                     (pure (fromEnum s)))
 
-data GetOpenIdTokenForDeveloperIdentityResponse = GetOpenIdTokenForDeveloperIdentityResponse
-    { _goitfdirIdentityId :: Maybe Text
-    , _goitfdirToken      :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+instance ToHeaders GetOpenIdTokenForDeveloperIdentity
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.GetOpenIdTokenForDeveloperIdentity"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'GetOpenIdTokenForDeveloperIdentityResponse' constructor.
+instance ToJSON GetOpenIdTokenForDeveloperIdentity
+         where
+        toJSON GetOpenIdTokenForDeveloperIdentity'{..}
+          = object
+              ["TokenDuration" .= _goitfdiTokenDuration,
+               "IdentityId" .= _goitfdiIdentityId,
+               "IdentityPoolId" .= _goitfdiIdentityPoolId,
+               "Logins" .= _goitfdiLogins]
+
+instance ToPath GetOpenIdTokenForDeveloperIdentity
+         where
+        toPath = const "/"
+
+instance ToQuery GetOpenIdTokenForDeveloperIdentity
+         where
+        toQuery = const mempty
+
+-- | Returned in response to a successful
+-- 'GetOpenIdTokenForDeveloperIdentity' request.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getOpenIdTokenForDeveloperIdentityResponse' smart constructor.
+data GetOpenIdTokenForDeveloperIdentityResponse = GetOpenIdTokenForDeveloperIdentityResponse'
+    { _goitfdirsToken      :: !(Maybe Text)
+    , _goitfdirsIdentityId :: !(Maybe Text)
+    , _goitfdirsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetOpenIdTokenForDeveloperIdentityResponse' with the minimum fields required to make a request.
 --
--- * 'goitfdirIdentityId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'goitfdirToken' @::@ 'Maybe' 'Text'
+-- * 'goitfdirsToken'
 --
-getOpenIdTokenForDeveloperIdentityResponse :: GetOpenIdTokenForDeveloperIdentityResponse
-getOpenIdTokenForDeveloperIdentityResponse = GetOpenIdTokenForDeveloperIdentityResponse
-    { _goitfdirIdentityId = Nothing
-    , _goitfdirToken      = Nothing
+-- * 'goitfdirsIdentityId'
+--
+-- * 'goitfdirsStatus'
+getOpenIdTokenForDeveloperIdentityResponse
+    :: Int -- ^ 'goitfdirsStatus'
+    -> GetOpenIdTokenForDeveloperIdentityResponse
+getOpenIdTokenForDeveloperIdentityResponse pStatus_ =
+    GetOpenIdTokenForDeveloperIdentityResponse'
+    { _goitfdirsToken = Nothing
+    , _goitfdirsIdentityId = Nothing
+    , _goitfdirsStatus = pStatus_
     }
 
--- | A unique identifier in the format REGION:GUID.
-goitfdirIdentityId :: Lens' GetOpenIdTokenForDeveloperIdentityResponse (Maybe Text)
-goitfdirIdentityId =
-    lens _goitfdirIdentityId (\s a -> s { _goitfdirIdentityId = a })
-
 -- | An OpenID token.
-goitfdirToken :: Lens' GetOpenIdTokenForDeveloperIdentityResponse (Maybe Text)
-goitfdirToken = lens _goitfdirToken (\s a -> s { _goitfdirToken = a })
-
-instance ToPath GetOpenIdTokenForDeveloperIdentity where
-    toPath = const "/"
-
-instance ToQuery GetOpenIdTokenForDeveloperIdentity where
-    toQuery = const mempty
-
-instance ToHeaders GetOpenIdTokenForDeveloperIdentity
-
-instance ToJSON GetOpenIdTokenForDeveloperIdentity where
-    toJSON GetOpenIdTokenForDeveloperIdentity{..} = object
-        [ "IdentityPoolId" .= _goitfdiIdentityPoolId
-        , "IdentityId"     .= _goitfdiIdentityId
-        , "Logins"         .= _goitfdiLogins
-        , "TokenDuration"  .= _goitfdiTokenDuration
-        ]
-
-instance AWSRequest GetOpenIdTokenForDeveloperIdentity where
-    type Sv GetOpenIdTokenForDeveloperIdentity = CognitoIdentity
-    type Rs GetOpenIdTokenForDeveloperIdentity = GetOpenIdTokenForDeveloperIdentityResponse
+goitfdirsToken :: Lens' GetOpenIdTokenForDeveloperIdentityResponse (Maybe Text)
+goitfdirsToken = lens _goitfdirsToken (\ s a -> s{_goitfdirsToken = a});
 
-    request  = post "GetOpenIdTokenForDeveloperIdentity"
-    response = jsonResponse
+-- | A unique identifier in the format REGION:GUID.
+goitfdirsIdentityId :: Lens' GetOpenIdTokenForDeveloperIdentityResponse (Maybe Text)
+goitfdirsIdentityId = lens _goitfdirsIdentityId (\ s a -> s{_goitfdirsIdentityId = a});
 
-instance FromJSON GetOpenIdTokenForDeveloperIdentityResponse where
-    parseJSON = withObject "GetOpenIdTokenForDeveloperIdentityResponse" $ \o -> GetOpenIdTokenForDeveloperIdentityResponse
-        <$> o .:? "IdentityId"
-        <*> o .:? "Token"
+-- | The response status code.
+goitfdirsStatus :: Lens' GetOpenIdTokenForDeveloperIdentityResponse Int
+goitfdirsStatus = lens _goitfdirsStatus (\ s a -> s{_goitfdirsStatus = a});
diff --git a/gen/Network/AWS/CognitoIdentity/ListIdentities.hs b/gen/Network/AWS/CognitoIdentity/ListIdentities.hs
--- a/gen/Network/AWS/CognitoIdentity/ListIdentities.hs
+++ b/gen/Network/AWS/CognitoIdentity/ListIdentities.hs
@@ -1,154 +1,186 @@
-{-# 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.CognitoIdentity.ListIdentities
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Lists the identities in a pool.
+-- Lists the identities in a pool.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_ListIdentities.html>
+-- You must use AWS Developer credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_ListIdentities.html AWS API Reference> for ListIdentities.
 module Network.AWS.CognitoIdentity.ListIdentities
     (
-    -- * Request
-      ListIdentities
-    -- ** Request constructor
-    , listIdentities
-    -- ** Request lenses
+    -- * Creating a Request
+      listIdentities
+    , ListIdentities
+    -- * Request Lenses
+    , liHideDisabled
+    , liNextToken
     , liIdentityPoolId
     , liMaxResults
-    , liNextToken
 
-    -- * Response
-    , ListIdentitiesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listIdentitiesResponse
-    -- ** Response lenses
-    , lirIdentities
-    , lirIdentityPoolId
-    , lirNextToken
+    , ListIdentitiesResponse
+    -- * Response Lenses
+    , lirsIdentityPoolId
+    , lirsNextToken
+    , lirsIdentities
+    , lirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data ListIdentities = ListIdentities
-    { _liIdentityPoolId :: Text
-    , _liMaxResults     :: Nat
-    , _liNextToken      :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | Input to the ListIdentities action.
+--
+-- /See:/ 'listIdentities' smart constructor.
+data ListIdentities = ListIdentities'
+    { _liHideDisabled   :: !(Maybe Bool)
+    , _liNextToken      :: !(Maybe Text)
+    , _liIdentityPoolId :: !Text
+    , _liMaxResults     :: !Nat
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ListIdentities' constructor.
+-- | Creates a value of 'ListIdentities' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'liIdentityPoolId' @::@ 'Text'
+-- * 'liHideDisabled'
 --
--- * 'liMaxResults' @::@ 'Natural'
+-- * 'liNextToken'
 --
--- * 'liNextToken' @::@ 'Maybe' 'Text'
+-- * 'liIdentityPoolId'
 --
-listIdentities :: Text -- ^ 'liIdentityPoolId'
-               -> Natural -- ^ 'liMaxResults'
-               -> ListIdentities
-listIdentities p1 p2 = ListIdentities
-    { _liIdentityPoolId = p1
-    , _liMaxResults     = withIso _Nat (const id) p2
-    , _liNextToken      = Nothing
+-- * 'liMaxResults'
+listIdentities
+    :: Text -- ^ 'liIdentityPoolId'
+    -> Natural -- ^ 'liMaxResults'
+    -> ListIdentities
+listIdentities pIdentityPoolId_ pMaxResults_ =
+    ListIdentities'
+    { _liHideDisabled = Nothing
+    , _liNextToken = Nothing
+    , _liIdentityPoolId = pIdentityPoolId_
+    , _liMaxResults = _Nat # pMaxResults_
     }
 
+-- | An optional boolean parameter that allows you to hide disabled
+-- identities. If omitted, the ListIdentities API will include disabled
+-- identities in the response.
+liHideDisabled :: Lens' ListIdentities (Maybe Bool)
+liHideDisabled = lens _liHideDisabled (\ s a -> s{_liHideDisabled = a});
+
+-- | A pagination token.
+liNextToken :: Lens' ListIdentities (Maybe Text)
+liNextToken = lens _liNextToken (\ s a -> s{_liNextToken = a});
+
 -- | An identity pool ID in the format REGION:GUID.
 liIdentityPoolId :: Lens' ListIdentities Text
-liIdentityPoolId = lens _liIdentityPoolId (\s a -> s { _liIdentityPoolId = a })
+liIdentityPoolId = lens _liIdentityPoolId (\ s a -> s{_liIdentityPoolId = a});
 
 -- | The maximum number of identities to return.
 liMaxResults :: Lens' ListIdentities Natural
-liMaxResults = lens _liMaxResults (\s a -> s { _liMaxResults = a }) . _Nat
+liMaxResults = lens _liMaxResults (\ s a -> s{_liMaxResults = a}) . _Nat;
 
--- | A pagination token.
-liNextToken :: Lens' ListIdentities (Maybe Text)
-liNextToken = lens _liNextToken (\s a -> s { _liNextToken = a })
+instance AWSRequest ListIdentities where
+        type Sv ListIdentities = CognitoIdentity
+        type Rs ListIdentities = ListIdentitiesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListIdentitiesResponse' <$>
+                   (x .?> "IdentityPoolId") <*> (x .?> "NextToken") <*>
+                     (x .?> "Identities" .!@ mempty)
+                     <*> (pure (fromEnum s)))
 
-data ListIdentitiesResponse = ListIdentitiesResponse
-    { _lirIdentities     :: List "Identities" IdentityDescription
-    , _lirIdentityPoolId :: Maybe Text
-    , _lirNextToken      :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance ToHeaders ListIdentities where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.ListIdentities" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'ListIdentitiesResponse' constructor.
+instance ToJSON ListIdentities where
+        toJSON ListIdentities'{..}
+          = object
+              ["HideDisabled" .= _liHideDisabled,
+               "NextToken" .= _liNextToken,
+               "IdentityPoolId" .= _liIdentityPoolId,
+               "MaxResults" .= _liMaxResults]
+
+instance ToPath ListIdentities where
+        toPath = const "/"
+
+instance ToQuery ListIdentities where
+        toQuery = const mempty
+
+-- | The response to a ListIdentities request.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listIdentitiesResponse' smart constructor.
+data ListIdentitiesResponse = ListIdentitiesResponse'
+    { _lirsIdentityPoolId :: !(Maybe Text)
+    , _lirsNextToken      :: !(Maybe Text)
+    , _lirsIdentities     :: !(Maybe [IdentityDescription])
+    , _lirsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListIdentitiesResponse' with the minimum fields required to make a request.
 --
--- * 'lirIdentities' @::@ ['IdentityDescription']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lirIdentityPoolId' @::@ 'Maybe' 'Text'
+-- * 'lirsIdentityPoolId'
 --
--- * 'lirNextToken' @::@ 'Maybe' 'Text'
+-- * 'lirsNextToken'
 --
-listIdentitiesResponse :: ListIdentitiesResponse
-listIdentitiesResponse = ListIdentitiesResponse
-    { _lirIdentityPoolId = Nothing
-    , _lirIdentities     = mempty
-    , _lirNextToken      = Nothing
+-- * 'lirsIdentities'
+--
+-- * 'lirsStatus'
+listIdentitiesResponse
+    :: Int -- ^ 'lirsStatus'
+    -> ListIdentitiesResponse
+listIdentitiesResponse pStatus_ =
+    ListIdentitiesResponse'
+    { _lirsIdentityPoolId = Nothing
+    , _lirsNextToken = Nothing
+    , _lirsIdentities = Nothing
+    , _lirsStatus = pStatus_
     }
 
--- | An object containing a set of identities and associated mappings.
-lirIdentities :: Lens' ListIdentitiesResponse [IdentityDescription]
-lirIdentities = lens _lirIdentities (\s a -> s { _lirIdentities = a }) . _List
-
 -- | An identity pool ID in the format REGION:GUID.
-lirIdentityPoolId :: Lens' ListIdentitiesResponse (Maybe Text)
-lirIdentityPoolId =
-    lens _lirIdentityPoolId (\s a -> s { _lirIdentityPoolId = a })
+lirsIdentityPoolId :: Lens' ListIdentitiesResponse (Maybe Text)
+lirsIdentityPoolId = lens _lirsIdentityPoolId (\ s a -> s{_lirsIdentityPoolId = a});
 
 -- | A pagination token.
-lirNextToken :: Lens' ListIdentitiesResponse (Maybe Text)
-lirNextToken = lens _lirNextToken (\s a -> s { _lirNextToken = a })
-
-instance ToPath ListIdentities where
-    toPath = const "/"
-
-instance ToQuery ListIdentities where
-    toQuery = const mempty
-
-instance ToHeaders ListIdentities
-
-instance ToJSON ListIdentities where
-    toJSON ListIdentities{..} = object
-        [ "IdentityPoolId" .= _liIdentityPoolId
-        , "MaxResults"     .= _liMaxResults
-        , "NextToken"      .= _liNextToken
-        ]
-
-instance AWSRequest ListIdentities where
-    type Sv ListIdentities = CognitoIdentity
-    type Rs ListIdentities = ListIdentitiesResponse
+lirsNextToken :: Lens' ListIdentitiesResponse (Maybe Text)
+lirsNextToken = lens _lirsNextToken (\ s a -> s{_lirsNextToken = a});
 
-    request  = post "ListIdentities"
-    response = jsonResponse
+-- | An object containing a set of identities and associated mappings.
+lirsIdentities :: Lens' ListIdentitiesResponse [IdentityDescription]
+lirsIdentities = lens _lirsIdentities (\ s a -> s{_lirsIdentities = a}) . _Default . _Coerce;
 
-instance FromJSON ListIdentitiesResponse where
-    parseJSON = withObject "ListIdentitiesResponse" $ \o -> ListIdentitiesResponse
-        <$> o .:? "Identities" .!= mempty
-        <*> o .:? "IdentityPoolId"
-        <*> o .:? "NextToken"
+-- | The response status code.
+lirsStatus :: Lens' ListIdentitiesResponse Int
+lirsStatus = lens _lirsStatus (\ s a -> s{_lirsStatus = a});
diff --git a/gen/Network/AWS/CognitoIdentity/ListIdentityPools.hs b/gen/Network/AWS/CognitoIdentity/ListIdentityPools.hs
--- a/gen/Network/AWS/CognitoIdentity/ListIdentityPools.hs
+++ b/gen/Network/AWS/CognitoIdentity/ListIdentityPools.hs
@@ -1,134 +1,154 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CognitoIdentity.ListIdentityPools
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Lists all of the Cognito identity pools registered for your account.
+-- Lists all of the Cognito identity pools registered for your account.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_ListIdentityPools.html>
+-- This is a public API. You do not need any credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_ListIdentityPools.html AWS API Reference> for ListIdentityPools.
 module Network.AWS.CognitoIdentity.ListIdentityPools
     (
-    -- * Request
-      ListIdentityPools
-    -- ** Request constructor
-    , listIdentityPools
-    -- ** Request lenses
-    , lipMaxResults
+    -- * Creating a Request
+      listIdentityPools
+    , ListIdentityPools
+    -- * Request Lenses
     , lipNextToken
+    , lipMaxResults
 
-    -- * Response
-    , ListIdentityPoolsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listIdentityPoolsResponse
-    -- ** Response lenses
-    , liprIdentityPools
-    , liprNextToken
+    , ListIdentityPoolsResponse
+    -- * Response Lenses
+    , liprsIdentityPools
+    , liprsNextToken
+    , liprsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-data ListIdentityPools = ListIdentityPools
-    { _lipMaxResults :: Nat
-    , _lipNextToken  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ListIdentityPools' constructor.
+-- | Input to the ListIdentityPools action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listIdentityPools' smart constructor.
+data ListIdentityPools = ListIdentityPools'
+    { _lipNextToken  :: !(Maybe Text)
+    , _lipMaxResults :: !Nat
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListIdentityPools' with the minimum fields required to make a request.
 --
--- * 'lipMaxResults' @::@ 'Natural'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lipNextToken' @::@ 'Maybe' 'Text'
+-- * 'lipNextToken'
 --
-listIdentityPools :: Natural -- ^ 'lipMaxResults'
-                  -> ListIdentityPools
-listIdentityPools p1 = ListIdentityPools
-    { _lipMaxResults = withIso _Nat (const id) p1
-    , _lipNextToken  = Nothing
+-- * 'lipMaxResults'
+listIdentityPools
+    :: Natural -- ^ 'lipMaxResults'
+    -> ListIdentityPools
+listIdentityPools pMaxResults_ =
+    ListIdentityPools'
+    { _lipNextToken = Nothing
+    , _lipMaxResults = _Nat # pMaxResults_
     }
 
--- | The maximum number of identities to return.
-lipMaxResults :: Lens' ListIdentityPools Natural
-lipMaxResults = lens _lipMaxResults (\s a -> s { _lipMaxResults = a }) . _Nat
-
 -- | A pagination token.
 lipNextToken :: Lens' ListIdentityPools (Maybe Text)
-lipNextToken = lens _lipNextToken (\s a -> s { _lipNextToken = a })
+lipNextToken = lens _lipNextToken (\ s a -> s{_lipNextToken = a});
 
-data ListIdentityPoolsResponse = ListIdentityPoolsResponse
-    { _liprIdentityPools :: List "IdentityPools" IdentityPoolShortDescription
-    , _liprNextToken     :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | The maximum number of identities to return.
+lipMaxResults :: Lens' ListIdentityPools Natural
+lipMaxResults = lens _lipMaxResults (\ s a -> s{_lipMaxResults = a}) . _Nat;
 
--- | 'ListIdentityPoolsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'liprIdentityPools' @::@ ['IdentityPoolShortDescription']
---
--- * 'liprNextToken' @::@ 'Maybe' 'Text'
---
-listIdentityPoolsResponse :: ListIdentityPoolsResponse
-listIdentityPoolsResponse = ListIdentityPoolsResponse
-    { _liprIdentityPools = mempty
-    , _liprNextToken     = Nothing
-    }
+instance AWSRequest ListIdentityPools where
+        type Sv ListIdentityPools = CognitoIdentity
+        type Rs ListIdentityPools = ListIdentityPoolsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListIdentityPoolsResponse' <$>
+                   (x .?> "IdentityPools" .!@ mempty) <*>
+                     (x .?> "NextToken")
+                     <*> (pure (fromEnum s)))
 
--- | The identity pools returned by the ListIdentityPools action.
-liprIdentityPools :: Lens' ListIdentityPoolsResponse [IdentityPoolShortDescription]
-liprIdentityPools =
-    lens _liprIdentityPools (\s a -> s { _liprIdentityPools = a })
-        . _List
+instance ToHeaders ListIdentityPools where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.ListIdentityPools" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A pagination token.
-liprNextToken :: Lens' ListIdentityPoolsResponse (Maybe Text)
-liprNextToken = lens _liprNextToken (\s a -> s { _liprNextToken = a })
+instance ToJSON ListIdentityPools where
+        toJSON ListIdentityPools'{..}
+          = object
+              ["NextToken" .= _lipNextToken,
+               "MaxResults" .= _lipMaxResults]
 
 instance ToPath ListIdentityPools where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ListIdentityPools where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders ListIdentityPools
+-- | The result of a successful ListIdentityPools action.
+--
+-- /See:/ 'listIdentityPoolsResponse' smart constructor.
+data ListIdentityPoolsResponse = ListIdentityPoolsResponse'
+    { _liprsIdentityPools :: !(Maybe [IdentityPoolShortDescription])
+    , _liprsNextToken     :: !(Maybe Text)
+    , _liprsStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON ListIdentityPools where
-    toJSON ListIdentityPools{..} = object
-        [ "MaxResults" .= _lipMaxResults
-        , "NextToken"  .= _lipNextToken
-        ]
+-- | Creates a value of 'ListIdentityPoolsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'liprsIdentityPools'
+--
+-- * 'liprsNextToken'
+--
+-- * 'liprsStatus'
+listIdentityPoolsResponse
+    :: Int -- ^ 'liprsStatus'
+    -> ListIdentityPoolsResponse
+listIdentityPoolsResponse pStatus_ =
+    ListIdentityPoolsResponse'
+    { _liprsIdentityPools = Nothing
+    , _liprsNextToken = Nothing
+    , _liprsStatus = pStatus_
+    }
 
-instance AWSRequest ListIdentityPools where
-    type Sv ListIdentityPools = CognitoIdentity
-    type Rs ListIdentityPools = ListIdentityPoolsResponse
+-- | The identity pools returned by the ListIdentityPools action.
+liprsIdentityPools :: Lens' ListIdentityPoolsResponse [IdentityPoolShortDescription]
+liprsIdentityPools = lens _liprsIdentityPools (\ s a -> s{_liprsIdentityPools = a}) . _Default . _Coerce;
 
-    request  = post "ListIdentityPools"
-    response = jsonResponse
+-- | A pagination token.
+liprsNextToken :: Lens' ListIdentityPoolsResponse (Maybe Text)
+liprsNextToken = lens _liprsNextToken (\ s a -> s{_liprsNextToken = a});
 
-instance FromJSON ListIdentityPoolsResponse where
-    parseJSON = withObject "ListIdentityPoolsResponse" $ \o -> ListIdentityPoolsResponse
-        <$> o .:? "IdentityPools" .!= mempty
-        <*> o .:? "NextToken"
+-- | The response status code.
+liprsStatus :: Lens' ListIdentityPoolsResponse Int
+liprsStatus = lens _liprsStatus (\ s a -> s{_liprsStatus = a});
diff --git a/gen/Network/AWS/CognitoIdentity/LookupDeveloperIdentity.hs b/gen/Network/AWS/CognitoIdentity/LookupDeveloperIdentity.hs
--- a/gen/Network/AWS/CognitoIdentity/LookupDeveloperIdentity.hs
+++ b/gen/Network/AWS/CognitoIdentity/LookupDeveloperIdentity.hs
@@ -1,200 +1,218 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CognitoIdentity.LookupDeveloperIdentity
--- 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.
-
--- | Retrieves the 'IdentityID' associated with a 'DeveloperUserIdentifier' or the
--- list of 'DeveloperUserIdentifier's associated with an 'IdentityId' for an
--- existing identity. Either 'IdentityID' or 'DeveloperUserIdentifier' must not be
--- null. If you supply only one of these values, the other value will be
--- searched in the database and returned as a part of the response. If you
--- supply both, 'DeveloperUserIdentifier' will be matched against 'IdentityID'. If
--- the values are verified against the database, the response returns both
--- values and is the same as the request. Otherwise a 'ResourceConflictException'
--- is thrown.
+-- Retrieves the 'IdentityID' associated with a 'DeveloperUserIdentifier'
+-- or the list of 'DeveloperUserIdentifier's associated with an
+-- 'IdentityId' for an existing identity. Either 'IdentityID' or
+-- 'DeveloperUserIdentifier' must not be null. If you supply only one of
+-- these values, the other value will be searched in the database and
+-- returned as a part of the response. If you supply both,
+-- 'DeveloperUserIdentifier' will be matched against 'IdentityID'. If the
+-- values are verified against the database, the response returns both
+-- values and is the same as the request. Otherwise a
+-- 'ResourceConflictException' is thrown.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_LookupDeveloperIdentity.html>
+-- You must use AWS Developer credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_LookupDeveloperIdentity.html AWS API Reference> for LookupDeveloperIdentity.
 module Network.AWS.CognitoIdentity.LookupDeveloperIdentity
     (
-    -- * Request
-      LookupDeveloperIdentity
-    -- ** Request constructor
-    , lookupDeveloperIdentity
-    -- ** Request lenses
+    -- * Creating a Request
+      lookupDeveloperIdentity
+    , LookupDeveloperIdentity
+    -- * Request Lenses
     , ldiDeveloperUserIdentifier
+    , ldiNextToken
     , ldiIdentityId
-    , ldiIdentityPoolId
     , ldiMaxResults
-    , ldiNextToken
+    , ldiIdentityPoolId
 
-    -- * Response
-    , LookupDeveloperIdentityResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , lookupDeveloperIdentityResponse
-    -- ** Response lenses
-    , ldirDeveloperUserIdentifierList
-    , ldirIdentityId
-    , ldirNextToken
+    , LookupDeveloperIdentityResponse
+    -- * Response Lenses
+    , ldirsNextToken
+    , ldirsIdentityId
+    , ldirsDeveloperUserIdentifierList
+    , ldirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-data LookupDeveloperIdentity = LookupDeveloperIdentity
-    { _ldiDeveloperUserIdentifier :: Maybe Text
-    , _ldiIdentityId              :: Maybe Text
-    , _ldiIdentityPoolId          :: Text
-    , _ldiMaxResults              :: Maybe Nat
-    , _ldiNextToken               :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'LookupDeveloperIdentity' constructor.
+-- | Input to the 'LookupDeveloperIdentityInput' action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'lookupDeveloperIdentity' smart constructor.
+data LookupDeveloperIdentity = LookupDeveloperIdentity'
+    { _ldiDeveloperUserIdentifier :: !(Maybe Text)
+    , _ldiNextToken               :: !(Maybe Text)
+    , _ldiIdentityId              :: !(Maybe Text)
+    , _ldiMaxResults              :: !(Maybe Nat)
+    , _ldiIdentityPoolId          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LookupDeveloperIdentity' with the minimum fields required to make a request.
 --
--- * 'ldiDeveloperUserIdentifier' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ldiIdentityId' @::@ 'Maybe' 'Text'
+-- * 'ldiDeveloperUserIdentifier'
 --
--- * 'ldiIdentityPoolId' @::@ 'Text'
+-- * 'ldiNextToken'
 --
--- * 'ldiMaxResults' @::@ 'Maybe' 'Natural'
+-- * 'ldiIdentityId'
 --
--- * 'ldiNextToken' @::@ 'Maybe' 'Text'
+-- * 'ldiMaxResults'
 --
-lookupDeveloperIdentity :: Text -- ^ 'ldiIdentityPoolId'
-                        -> LookupDeveloperIdentity
-lookupDeveloperIdentity p1 = LookupDeveloperIdentity
-    { _ldiIdentityPoolId          = p1
-    , _ldiIdentityId              = Nothing
-    , _ldiDeveloperUserIdentifier = Nothing
-    , _ldiMaxResults              = Nothing
-    , _ldiNextToken               = Nothing
+-- * 'ldiIdentityPoolId'
+lookupDeveloperIdentity
+    :: Text -- ^ 'ldiIdentityPoolId'
+    -> LookupDeveloperIdentity
+lookupDeveloperIdentity pIdentityPoolId_ =
+    LookupDeveloperIdentity'
+    { _ldiDeveloperUserIdentifier = Nothing
+    , _ldiNextToken = Nothing
+    , _ldiIdentityId = Nothing
+    , _ldiMaxResults = Nothing
+    , _ldiIdentityPoolId = pIdentityPoolId_
     }
 
--- | A unique ID used by your backend authentication process to identify a user.
--- Typically, a developer identity provider would issue many developer user
--- identifiers, in keeping with the number of users.
+-- | A unique ID used by your backend authentication process to identify a
+-- user. Typically, a developer identity provider would issue many
+-- developer user identifiers, in keeping with the number of users.
 ldiDeveloperUserIdentifier :: Lens' LookupDeveloperIdentity (Maybe Text)
-ldiDeveloperUserIdentifier =
-    lens _ldiDeveloperUserIdentifier
-        (\s a -> s { _ldiDeveloperUserIdentifier = a })
+ldiDeveloperUserIdentifier = lens _ldiDeveloperUserIdentifier (\ s a -> s{_ldiDeveloperUserIdentifier = a});
 
+-- | A pagination token. The first call you make will have 'NextToken' set to
+-- null. After that the service will return 'NextToken' values as needed.
+-- For example, let\'s say you make a request with 'MaxResults' set to 10,
+-- and there are 20 matches in the database. The service will return a
+-- pagination token as a part of the response. This token can be used to
+-- call the API again and get results starting from the 11th match.
+ldiNextToken :: Lens' LookupDeveloperIdentity (Maybe Text)
+ldiNextToken = lens _ldiNextToken (\ s a -> s{_ldiNextToken = a});
+
 -- | A unique identifier in the format REGION:GUID.
 ldiIdentityId :: Lens' LookupDeveloperIdentity (Maybe Text)
-ldiIdentityId = lens _ldiIdentityId (\s a -> s { _ldiIdentityId = a })
+ldiIdentityId = lens _ldiIdentityId (\ s a -> s{_ldiIdentityId = a});
 
+-- | The maximum number of identities to return.
+ldiMaxResults :: Lens' LookupDeveloperIdentity (Maybe Natural)
+ldiMaxResults = lens _ldiMaxResults (\ s a -> s{_ldiMaxResults = a}) . mapping _Nat;
+
 -- | An identity pool ID in the format REGION:GUID.
 ldiIdentityPoolId :: Lens' LookupDeveloperIdentity Text
-ldiIdentityPoolId =
-    lens _ldiIdentityPoolId (\s a -> s { _ldiIdentityPoolId = a })
+ldiIdentityPoolId = lens _ldiIdentityPoolId (\ s a -> s{_ldiIdentityPoolId = a});
 
--- | The maximum number of identities to return.
-ldiMaxResults :: Lens' LookupDeveloperIdentity (Maybe Natural)
-ldiMaxResults = lens _ldiMaxResults (\s a -> s { _ldiMaxResults = a }) . mapping _Nat
+instance AWSRequest LookupDeveloperIdentity where
+        type Sv LookupDeveloperIdentity = CognitoIdentity
+        type Rs LookupDeveloperIdentity =
+             LookupDeveloperIdentityResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 LookupDeveloperIdentityResponse' <$>
+                   (x .?> "NextToken") <*> (x .?> "IdentityId") <*>
+                     (x .?> "DeveloperUserIdentifierList" .!@ mempty)
+                     <*> (pure (fromEnum s)))
 
--- | A pagination token. The first call you make will have 'NextToken' set to null.
--- After that the service will return 'NextToken' values as needed. For example,
--- let's say you make a request with 'MaxResults' set to 10, and there are 20
--- matches in the database. The service will return a pagination token as a part
--- of the response. This token can be used to call the API again and get results
--- starting from the 11th match.
-ldiNextToken :: Lens' LookupDeveloperIdentity (Maybe Text)
-ldiNextToken = lens _ldiNextToken (\s a -> s { _ldiNextToken = a })
+instance ToHeaders LookupDeveloperIdentity where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.LookupDeveloperIdentity"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-data LookupDeveloperIdentityResponse = LookupDeveloperIdentityResponse
-    { _ldirDeveloperUserIdentifierList :: List "DeveloperUserIdentifierList" Text
-    , _ldirIdentityId                  :: Maybe Text
-    , _ldirNextToken                   :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+instance ToJSON LookupDeveloperIdentity where
+        toJSON LookupDeveloperIdentity'{..}
+          = object
+              ["DeveloperUserIdentifier" .=
+                 _ldiDeveloperUserIdentifier,
+               "NextToken" .= _ldiNextToken,
+               "IdentityId" .= _ldiIdentityId,
+               "MaxResults" .= _ldiMaxResults,
+               "IdentityPoolId" .= _ldiIdentityPoolId]
 
--- | 'LookupDeveloperIdentityResponse' constructor.
+instance ToPath LookupDeveloperIdentity where
+        toPath = const "/"
+
+instance ToQuery LookupDeveloperIdentity where
+        toQuery = const mempty
+
+-- | Returned in response to a successful 'LookupDeveloperIdentity' action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'lookupDeveloperIdentityResponse' smart constructor.
+data LookupDeveloperIdentityResponse = LookupDeveloperIdentityResponse'
+    { _ldirsNextToken                   :: !(Maybe Text)
+    , _ldirsIdentityId                  :: !(Maybe Text)
+    , _ldirsDeveloperUserIdentifierList :: !(Maybe [Text])
+    , _ldirsStatus                      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LookupDeveloperIdentityResponse' with the minimum fields required to make a request.
 --
--- * 'ldirDeveloperUserIdentifierList' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ldirIdentityId' @::@ 'Maybe' 'Text'
+-- * 'ldirsNextToken'
 --
--- * 'ldirNextToken' @::@ 'Maybe' 'Text'
+-- * 'ldirsIdentityId'
 --
-lookupDeveloperIdentityResponse :: LookupDeveloperIdentityResponse
-lookupDeveloperIdentityResponse = LookupDeveloperIdentityResponse
-    { _ldirIdentityId                  = Nothing
-    , _ldirDeveloperUserIdentifierList = mempty
-    , _ldirNextToken                   = Nothing
+-- * 'ldirsDeveloperUserIdentifierList'
+--
+-- * 'ldirsStatus'
+lookupDeveloperIdentityResponse
+    :: Int -- ^ 'ldirsStatus'
+    -> LookupDeveloperIdentityResponse
+lookupDeveloperIdentityResponse pStatus_ =
+    LookupDeveloperIdentityResponse'
+    { _ldirsNextToken = Nothing
+    , _ldirsIdentityId = Nothing
+    , _ldirsDeveloperUserIdentifierList = Nothing
+    , _ldirsStatus = pStatus_
     }
 
--- | This is the list of developer user identifiers associated with an identity
--- ID. Cognito supports the association of multiple developer user identifiers
--- with an identity ID.
-ldirDeveloperUserIdentifierList :: Lens' LookupDeveloperIdentityResponse [Text]
-ldirDeveloperUserIdentifierList =
-    lens _ldirDeveloperUserIdentifierList
-        (\s a -> s { _ldirDeveloperUserIdentifierList = a })
-            . _List
+-- | A pagination token. The first call you make will have 'NextToken' set to
+-- null. After that the service will return 'NextToken' values as needed.
+-- For example, let\'s say you make a request with 'MaxResults' set to 10,
+-- and there are 20 matches in the database. The service will return a
+-- pagination token as a part of the response. This token can be used to
+-- call the API again and get results starting from the 11th match.
+ldirsNextToken :: Lens' LookupDeveloperIdentityResponse (Maybe Text)
+ldirsNextToken = lens _ldirsNextToken (\ s a -> s{_ldirsNextToken = a});
 
 -- | A unique identifier in the format REGION:GUID.
-ldirIdentityId :: Lens' LookupDeveloperIdentityResponse (Maybe Text)
-ldirIdentityId = lens _ldirIdentityId (\s a -> s { _ldirIdentityId = a })
-
--- | A pagination token. The first call you make will have 'NextToken' set to null.
--- After that the service will return 'NextToken' values as needed. For example,
--- let's say you make a request with 'MaxResults' set to 10, and there are 20
--- matches in the database. The service will return a pagination token as a part
--- of the response. This token can be used to call the API again and get results
--- starting from the 11th match.
-ldirNextToken :: Lens' LookupDeveloperIdentityResponse (Maybe Text)
-ldirNextToken = lens _ldirNextToken (\s a -> s { _ldirNextToken = a })
-
-instance ToPath LookupDeveloperIdentity where
-    toPath = const "/"
-
-instance ToQuery LookupDeveloperIdentity where
-    toQuery = const mempty
-
-instance ToHeaders LookupDeveloperIdentity
-
-instance ToJSON LookupDeveloperIdentity where
-    toJSON LookupDeveloperIdentity{..} = object
-        [ "IdentityPoolId"          .= _ldiIdentityPoolId
-        , "IdentityId"              .= _ldiIdentityId
-        , "DeveloperUserIdentifier" .= _ldiDeveloperUserIdentifier
-        , "MaxResults"              .= _ldiMaxResults
-        , "NextToken"               .= _ldiNextToken
-        ]
-
-instance AWSRequest LookupDeveloperIdentity where
-    type Sv LookupDeveloperIdentity = CognitoIdentity
-    type Rs LookupDeveloperIdentity = LookupDeveloperIdentityResponse
+ldirsIdentityId :: Lens' LookupDeveloperIdentityResponse (Maybe Text)
+ldirsIdentityId = lens _ldirsIdentityId (\ s a -> s{_ldirsIdentityId = a});
 
-    request  = post "LookupDeveloperIdentity"
-    response = jsonResponse
+-- | This is the list of developer user identifiers associated with an
+-- identity ID. Cognito supports the association of multiple developer user
+-- identifiers with an identity ID.
+ldirsDeveloperUserIdentifierList :: Lens' LookupDeveloperIdentityResponse [Text]
+ldirsDeveloperUserIdentifierList = lens _ldirsDeveloperUserIdentifierList (\ s a -> s{_ldirsDeveloperUserIdentifierList = a}) . _Default . _Coerce;
 
-instance FromJSON LookupDeveloperIdentityResponse where
-    parseJSON = withObject "LookupDeveloperIdentityResponse" $ \o -> LookupDeveloperIdentityResponse
-        <$> o .:? "DeveloperUserIdentifierList" .!= mempty
-        <*> o .:? "IdentityId"
-        <*> o .:? "NextToken"
+-- | The response status code.
+ldirsStatus :: Lens' LookupDeveloperIdentityResponse Int
+ldirsStatus = lens _ldirsStatus (\ s a -> s{_ldirsStatus = a});
diff --git a/gen/Network/AWS/CognitoIdentity/MergeDeveloperIdentities.hs b/gen/Network/AWS/CognitoIdentity/MergeDeveloperIdentities.hs
--- a/gen/Network/AWS/CognitoIdentity/MergeDeveloperIdentities.hs
+++ b/gen/Network/AWS/CognitoIdentity/MergeDeveloperIdentities.hs
@@ -1,161 +1,182 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CognitoIdentity.MergeDeveloperIdentities
--- 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.
-
--- | Merges two users having different 'IdentityId's, existing in the same identity
--- pool, and identified by the same developer provider. You can use this action
--- to request that discrete users be merged and identified as a single user in
--- the Cognito environment. Cognito associates the given source user ('SourceUserIdentifier') with the 'IdentityId' of the 'DestinationUserIdentifier'. Only
--- developer-authenticated users can be merged. If the users to be merged are
--- associated with the same public provider, but as two different users, an
--- exception will be thrown.
+-- Merges two users having different 'IdentityId's, existing in the same
+-- identity pool, and identified by the same developer provider. You can
+-- use this action to request that discrete users be merged and identified
+-- as a single user in the Cognito environment. Cognito associates the
+-- given source user ('SourceUserIdentifier') with the 'IdentityId' of the
+-- 'DestinationUserIdentifier'. Only developer-authenticated users can be
+-- merged. If the users to be merged are associated with the same public
+-- provider, but as two different users, an exception will be thrown.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_MergeDeveloperIdentities.html>
+-- You must use AWS Developer credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_MergeDeveloperIdentities.html AWS API Reference> for MergeDeveloperIdentities.
 module Network.AWS.CognitoIdentity.MergeDeveloperIdentities
     (
-    -- * Request
-      MergeDeveloperIdentities
-    -- ** Request constructor
-    , mergeDeveloperIdentities
-    -- ** Request lenses
+    -- * Creating a Request
+      mergeDeveloperIdentities
+    , MergeDeveloperIdentities
+    -- * Request Lenses
+    , mdiSourceUserIdentifier
     , mdiDestinationUserIdentifier
     , mdiDeveloperProviderName
     , mdiIdentityPoolId
-    , mdiSourceUserIdentifier
 
-    -- * Response
-    , MergeDeveloperIdentitiesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , mergeDeveloperIdentitiesResponse
-    -- ** Response lenses
-    , mdirIdentityId
+    , MergeDeveloperIdentitiesResponse
+    -- * Response Lenses
+    , mdirsIdentityId
+    , mdirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-data MergeDeveloperIdentities = MergeDeveloperIdentities
-    { _mdiDestinationUserIdentifier :: Text
-    , _mdiDeveloperProviderName     :: Text
-    , _mdiIdentityPoolId            :: Text
-    , _mdiSourceUserIdentifier      :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'MergeDeveloperIdentities' constructor.
+-- | Input to the 'MergeDeveloperIdentities' action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'mergeDeveloperIdentities' smart constructor.
+data MergeDeveloperIdentities = MergeDeveloperIdentities'
+    { _mdiSourceUserIdentifier      :: !Text
+    , _mdiDestinationUserIdentifier :: !Text
+    , _mdiDeveloperProviderName     :: !Text
+    , _mdiIdentityPoolId            :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MergeDeveloperIdentities' with the minimum fields required to make a request.
 --
--- * 'mdiDestinationUserIdentifier' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mdiDeveloperProviderName' @::@ 'Text'
+-- * 'mdiSourceUserIdentifier'
 --
--- * 'mdiIdentityPoolId' @::@ 'Text'
+-- * 'mdiDestinationUserIdentifier'
 --
--- * 'mdiSourceUserIdentifier' @::@ 'Text'
+-- * 'mdiDeveloperProviderName'
 --
-mergeDeveloperIdentities :: Text -- ^ 'mdiSourceUserIdentifier'
-                         -> Text -- ^ 'mdiDestinationUserIdentifier'
-                         -> Text -- ^ 'mdiDeveloperProviderName'
-                         -> Text -- ^ 'mdiIdentityPoolId'
-                         -> MergeDeveloperIdentities
-mergeDeveloperIdentities p1 p2 p3 p4 = MergeDeveloperIdentities
-    { _mdiSourceUserIdentifier      = p1
-    , _mdiDestinationUserIdentifier = p2
-    , _mdiDeveloperProviderName     = p3
-    , _mdiIdentityPoolId            = p4
+-- * 'mdiIdentityPoolId'
+mergeDeveloperIdentities
+    :: Text -- ^ 'mdiSourceUserIdentifier'
+    -> Text -- ^ 'mdiDestinationUserIdentifier'
+    -> Text -- ^ 'mdiDeveloperProviderName'
+    -> Text -- ^ 'mdiIdentityPoolId'
+    -> MergeDeveloperIdentities
+mergeDeveloperIdentities pSourceUserIdentifier_ pDestinationUserIdentifier_ pDeveloperProviderName_ pIdentityPoolId_ =
+    MergeDeveloperIdentities'
+    { _mdiSourceUserIdentifier = pSourceUserIdentifier_
+    , _mdiDestinationUserIdentifier = pDestinationUserIdentifier_
+    , _mdiDeveloperProviderName = pDeveloperProviderName_
+    , _mdiIdentityPoolId = pIdentityPoolId_
     }
 
--- | User identifier for the destination user. The value should be a 'DeveloperUserIdentifier'.
+-- | User identifier for the source user. The value should be a
+-- 'DeveloperUserIdentifier'.
+mdiSourceUserIdentifier :: Lens' MergeDeveloperIdentities Text
+mdiSourceUserIdentifier = lens _mdiSourceUserIdentifier (\ s a -> s{_mdiSourceUserIdentifier = a});
+
+-- | User identifier for the destination user. The value should be a
+-- 'DeveloperUserIdentifier'.
 mdiDestinationUserIdentifier :: Lens' MergeDeveloperIdentities Text
-mdiDestinationUserIdentifier =
-    lens _mdiDestinationUserIdentifier
-        (\s a -> s { _mdiDestinationUserIdentifier = a })
+mdiDestinationUserIdentifier = lens _mdiDestinationUserIdentifier (\ s a -> s{_mdiDestinationUserIdentifier = a});
 
--- | The "domain" by which Cognito will refer to your users. This is a (pseudo)
--- domain name that you provide while creating an identity pool. This name acts
--- as a placeholder that allows your backend and the Cognito service to
--- communicate about the developer provider. For the 'DeveloperProviderName', you
--- can use letters as well as period (.), underscore (_), and dash (-).
+-- | The \"domain\" by which Cognito will refer to your users. This is a
+-- (pseudo) domain name that you provide while creating an identity pool.
+-- This name acts as a placeholder that allows your backend and the Cognito
+-- service to communicate about the developer provider. For the
+-- 'DeveloperProviderName', you can use letters as well as period (.),
+-- underscore (_), and dash (-).
 mdiDeveloperProviderName :: Lens' MergeDeveloperIdentities Text
-mdiDeveloperProviderName =
-    lens _mdiDeveloperProviderName
-        (\s a -> s { _mdiDeveloperProviderName = a })
+mdiDeveloperProviderName = lens _mdiDeveloperProviderName (\ s a -> s{_mdiDeveloperProviderName = a});
 
 -- | An identity pool ID in the format REGION:GUID.
 mdiIdentityPoolId :: Lens' MergeDeveloperIdentities Text
-mdiIdentityPoolId =
-    lens _mdiIdentityPoolId (\s a -> s { _mdiIdentityPoolId = a })
-
--- | User identifier for the source user. The value should be a 'DeveloperUserIdentifier'.
-mdiSourceUserIdentifier :: Lens' MergeDeveloperIdentities Text
-mdiSourceUserIdentifier =
-    lens _mdiSourceUserIdentifier (\s a -> s { _mdiSourceUserIdentifier = a })
+mdiIdentityPoolId = lens _mdiIdentityPoolId (\ s a -> s{_mdiIdentityPoolId = a});
 
-newtype MergeDeveloperIdentitiesResponse = MergeDeveloperIdentitiesResponse
-    { _mdirIdentityId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest MergeDeveloperIdentities where
+        type Sv MergeDeveloperIdentities = CognitoIdentity
+        type Rs MergeDeveloperIdentities =
+             MergeDeveloperIdentitiesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 MergeDeveloperIdentitiesResponse' <$>
+                   (x .?> "IdentityId") <*> (pure (fromEnum s)))
 
--- | 'MergeDeveloperIdentitiesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mdirIdentityId' @::@ 'Maybe' 'Text'
---
-mergeDeveloperIdentitiesResponse :: MergeDeveloperIdentitiesResponse
-mergeDeveloperIdentitiesResponse = MergeDeveloperIdentitiesResponse
-    { _mdirIdentityId = Nothing
-    }
+instance ToHeaders MergeDeveloperIdentities where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.MergeDeveloperIdentities"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A unique identifier in the format REGION:GUID.
-mdirIdentityId :: Lens' MergeDeveloperIdentitiesResponse (Maybe Text)
-mdirIdentityId = lens _mdirIdentityId (\s a -> s { _mdirIdentityId = a })
+instance ToJSON MergeDeveloperIdentities where
+        toJSON MergeDeveloperIdentities'{..}
+          = object
+              ["SourceUserIdentifier" .= _mdiSourceUserIdentifier,
+               "DestinationUserIdentifier" .=
+                 _mdiDestinationUserIdentifier,
+               "DeveloperProviderName" .= _mdiDeveloperProviderName,
+               "IdentityPoolId" .= _mdiIdentityPoolId]
 
 instance ToPath MergeDeveloperIdentities where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery MergeDeveloperIdentities where
-    toQuery = const mempty
-
-instance ToHeaders MergeDeveloperIdentities
+        toQuery = const mempty
 
-instance ToJSON MergeDeveloperIdentities where
-    toJSON MergeDeveloperIdentities{..} = object
-        [ "SourceUserIdentifier"      .= _mdiSourceUserIdentifier
-        , "DestinationUserIdentifier" .= _mdiDestinationUserIdentifier
-        , "DeveloperProviderName"     .= _mdiDeveloperProviderName
-        , "IdentityPoolId"            .= _mdiIdentityPoolId
-        ]
+-- | Returned in response to a successful 'MergeDeveloperIdentities' action.
+--
+-- /See:/ 'mergeDeveloperIdentitiesResponse' smart constructor.
+data MergeDeveloperIdentitiesResponse = MergeDeveloperIdentitiesResponse'
+    { _mdirsIdentityId :: !(Maybe Text)
+    , _mdirsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest MergeDeveloperIdentities where
-    type Sv MergeDeveloperIdentities = CognitoIdentity
-    type Rs MergeDeveloperIdentities = MergeDeveloperIdentitiesResponse
+-- | Creates a value of 'MergeDeveloperIdentitiesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdirsIdentityId'
+--
+-- * 'mdirsStatus'
+mergeDeveloperIdentitiesResponse
+    :: Int -- ^ 'mdirsStatus'
+    -> MergeDeveloperIdentitiesResponse
+mergeDeveloperIdentitiesResponse pStatus_ =
+    MergeDeveloperIdentitiesResponse'
+    { _mdirsIdentityId = Nothing
+    , _mdirsStatus = pStatus_
+    }
 
-    request  = post "MergeDeveloperIdentities"
-    response = jsonResponse
+-- | A unique identifier in the format REGION:GUID.
+mdirsIdentityId :: Lens' MergeDeveloperIdentitiesResponse (Maybe Text)
+mdirsIdentityId = lens _mdirsIdentityId (\ s a -> s{_mdirsIdentityId = a});
 
-instance FromJSON MergeDeveloperIdentitiesResponse where
-    parseJSON = withObject "MergeDeveloperIdentitiesResponse" $ \o -> MergeDeveloperIdentitiesResponse
-        <$> o .:? "IdentityId"
+-- | The response status code.
+mdirsStatus :: Lens' MergeDeveloperIdentitiesResponse Int
+mdirsStatus = lens _mdirsStatus (\ s a -> s{_mdirsStatus = a});
diff --git a/gen/Network/AWS/CognitoIdentity/SetIdentityPoolRoles.hs b/gen/Network/AWS/CognitoIdentity/SetIdentityPoolRoles.hs
--- a/gen/Network/AWS/CognitoIdentity/SetIdentityPoolRoles.hs
+++ b/gen/Network/AWS/CognitoIdentity/SetIdentityPoolRoles.hs
@@ -1,107 +1,119 @@
-{-# 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.CognitoIdentity.SetIdentityPoolRoles
--- 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 roles for an identity pool. These roles are used when making calls
--- to 'GetCredentialsForIdentity' action.
+-- Sets the roles for an identity pool. These roles are used when making
+-- calls to 'GetCredentialsForIdentity' action.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_SetIdentityPoolRoles.html>
+-- You must use AWS Developer credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_SetIdentityPoolRoles.html AWS API Reference> for SetIdentityPoolRoles.
 module Network.AWS.CognitoIdentity.SetIdentityPoolRoles
     (
-    -- * Request
-      SetIdentityPoolRoles
-    -- ** Request constructor
-    , setIdentityPoolRoles
-    -- ** Request lenses
+    -- * Creating a Request
+      setIdentityPoolRoles
+    , SetIdentityPoolRoles
+    -- * Request Lenses
     , siprIdentityPoolId
     , siprRoles
 
-    -- * Response
-    , SetIdentityPoolRolesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setIdentityPoolRolesResponse
+    , SetIdentityPoolRolesResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-data SetIdentityPoolRoles = SetIdentityPoolRoles
-    { _siprIdentityPoolId :: Text
-    , _siprRoles          :: Map Text Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'SetIdentityPoolRoles' constructor.
+-- | Input to the 'SetIdentityPoolRoles' action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'setIdentityPoolRoles' smart constructor.
+data SetIdentityPoolRoles = SetIdentityPoolRoles'
+    { _siprIdentityPoolId :: !Text
+    , _siprRoles          :: !(Map Text Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetIdentityPoolRoles' with the minimum fields required to make a request.
 --
--- * 'siprIdentityPoolId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'siprRoles' @::@ 'HashMap' 'Text' 'Text'
+-- * 'siprIdentityPoolId'
 --
-setIdentityPoolRoles :: Text -- ^ 'siprIdentityPoolId'
-                     -> SetIdentityPoolRoles
-setIdentityPoolRoles p1 = SetIdentityPoolRoles
-    { _siprIdentityPoolId = p1
-    , _siprRoles          = mempty
+-- * 'siprRoles'
+setIdentityPoolRoles
+    :: Text -- ^ 'siprIdentityPoolId'
+    -> SetIdentityPoolRoles
+setIdentityPoolRoles pIdentityPoolId_ =
+    SetIdentityPoolRoles'
+    { _siprIdentityPoolId = pIdentityPoolId_
+    , _siprRoles = mempty
     }
 
 -- | An identity pool ID in the format REGION:GUID.
 siprIdentityPoolId :: Lens' SetIdentityPoolRoles Text
-siprIdentityPoolId =
-    lens _siprIdentityPoolId (\s a -> s { _siprIdentityPoolId = a })
+siprIdentityPoolId = lens _siprIdentityPoolId (\ s a -> s{_siprIdentityPoolId = a});
 
--- | The map of roles associated with this pool. Currently only authenticated and
--- unauthenticated roles are supported.
+-- | The map of roles associated with this pool. For a given role, the key
+-- will be either \"authenticated\" or \"unauthenticated\" and the value
+-- will be the Role ARN.
 siprRoles :: Lens' SetIdentityPoolRoles (HashMap Text Text)
-siprRoles = lens _siprRoles (\s a -> s { _siprRoles = a }) . _Map
+siprRoles = lens _siprRoles (\ s a -> s{_siprRoles = a}) . _Map;
 
-data SetIdentityPoolRolesResponse = SetIdentityPoolRolesResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest SetIdentityPoolRoles where
+        type Sv SetIdentityPoolRoles = CognitoIdentity
+        type Rs SetIdentityPoolRoles =
+             SetIdentityPoolRolesResponse
+        request = postJSON
+        response = receiveNull SetIdentityPoolRolesResponse'
 
--- | 'SetIdentityPoolRolesResponse' constructor.
-setIdentityPoolRolesResponse :: SetIdentityPoolRolesResponse
-setIdentityPoolRolesResponse = SetIdentityPoolRolesResponse
+instance ToHeaders SetIdentityPoolRoles where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.SetIdentityPoolRoles" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON SetIdentityPoolRoles where
+        toJSON SetIdentityPoolRoles'{..}
+          = object
+              ["IdentityPoolId" .= _siprIdentityPoolId,
+               "Roles" .= _siprRoles]
+
 instance ToPath SetIdentityPoolRoles where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery SetIdentityPoolRoles where
-    toQuery = const mempty
-
-instance ToHeaders SetIdentityPoolRoles
-
-instance ToJSON SetIdentityPoolRoles where
-    toJSON SetIdentityPoolRoles{..} = object
-        [ "IdentityPoolId" .= _siprIdentityPoolId
-        , "Roles"          .= _siprRoles
-        ]
+        toQuery = const mempty
 
-instance AWSRequest SetIdentityPoolRoles where
-    type Sv SetIdentityPoolRoles = CognitoIdentity
-    type Rs SetIdentityPoolRoles = SetIdentityPoolRolesResponse
+-- | /See:/ 'setIdentityPoolRolesResponse' smart constructor.
+data SetIdentityPoolRolesResponse =
+    SetIdentityPoolRolesResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "SetIdentityPoolRoles"
-    response = nullResponse SetIdentityPoolRolesResponse
+-- | Creates a value of 'SetIdentityPoolRolesResponse' with the minimum fields required to make a request.
+--
+setIdentityPoolRolesResponse
+    :: SetIdentityPoolRolesResponse
+setIdentityPoolRolesResponse = SetIdentityPoolRolesResponse'
diff --git a/gen/Network/AWS/CognitoIdentity/Types.hs b/gen/Network/AWS/CognitoIdentity/Types.hs
--- a/gen/Network/AWS/CognitoIdentity/Types.hs
+++ b/gen/Network/AWS/CognitoIdentity/Types.hs
@@ -1,358 +1,173 @@
-{-# 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.CognitoIdentity.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.CognitoIdentity.Types
     (
     -- * Service
       CognitoIdentity
-    -- ** Error
-    , JSONError
 
+    -- * Errors
+    , _InvalidIdentityPoolConfigurationException
+    , _InvalidParameterException
+    , _NotAuthorizedException
+    , _InternalErrorException
+    , _ExternalServiceException
+    , _ConcurrentModificationException
+    , _TooManyRequestsException
+    , _ResourceConflictException
+    , _DeveloperUserAlreadyRegisteredException
+    , _ResourceNotFoundException
+    , _LimitExceededException
+
+    -- * CognitoErrorCode
+    , CognitoErrorCode (..)
+
     -- * Credentials
     , Credentials
     , credentials
-    , cAccessKeyId
+    , cSessionToken
     , cExpiration
     , cSecretKey
-    , cSessionToken
+    , cAccessKeyId
 
     -- * IdentityDescription
     , IdentityDescription
     , identityDescription
-    , idCreationDate
-    , idIdentityId
     , idLastModifiedDate
+    , idCreationDate
     , idLogins
+    , idIdentityId
 
     -- * IdentityPool
     , IdentityPool
     , identityPool
-    , ipAllowUnauthenticatedIdentities
+    , ipSupportedLoginProviders
     , ipDeveloperProviderName
+    , ipOpenIdConnectProviderARNs
     , ipIdentityPoolId
     , ipIdentityPoolName
-    , ipOpenIdConnectProviderARNs
-    , ipSupportedLoginProviders
+    , ipAllowUnauthenticatedIdentities
 
     -- * IdentityPoolShortDescription
     , IdentityPoolShortDescription
     , identityPoolShortDescription
     , ipsdIdentityPoolId
     , ipsdIdentityPoolName
+
+    -- * UnprocessedIdentityId
+    , UnprocessedIdentityId
+    , unprocessedIdentityId
+    , uiiErrorCode
+    , uiiIdentityId
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.CognitoIdentity.Types.Sum
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
 
--- | Version @2014-06-30@ of the Amazon Cognito Identity service.
+-- | Version @2014-06-30@ of the Amazon Cognito Identity SDK.
 data CognitoIdentity
 
 instance AWSService CognitoIdentity where
     type Sg CognitoIdentity = V4
-    type Er CognitoIdentity = JSONError
-
-    service = service'
+    service = const svc
       where
-        service' :: Service CognitoIdentity
-        service' = Service
-            { _svcAbbrev       = "CognitoIdentity"
-            , _svcPrefix       = "cognito-identity"
-            , _svcVersion      = "2014-06-30"
-            , _svcTargetPrefix = Just "AWSCognitoIdentityService"
-            , _svcJSONVersion  = Just "1.1"
-            , _svcHandle       = handle
-            , _svcRetry        = retry
+        svc =
+            Service
+            { _svcAbbrev = "CognitoIdentity"
+            , _svcPrefix = "cognito-identity"
+            , _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 CognitoIdentity
-        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 Credentials = Credentials
-    { _cAccessKeyId  :: Maybe Text
-    , _cExpiration   :: Maybe POSIX
-    , _cSecretKey    :: Maybe Text
-    , _cSessionToken :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Credentials' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cAccessKeyId' @::@ 'Maybe' 'Text'
---
--- * 'cExpiration' @::@ 'Maybe' 'UTCTime'
---
--- * 'cSecretKey' @::@ 'Maybe' 'Text'
---
--- * 'cSessionToken' @::@ 'Maybe' 'Text'
---
-credentials :: Credentials
-credentials = Credentials
-    { _cAccessKeyId  = Nothing
-    , _cSecretKey    = Nothing
-    , _cSessionToken = Nothing
-    , _cExpiration   = Nothing
-    }
-
--- | The Access Key portion of the credentials.
-cAccessKeyId :: Lens' Credentials (Maybe Text)
-cAccessKeyId = lens _cAccessKeyId (\s a -> s { _cAccessKeyId = a })
-
--- | The date at which these credentials will expire.
-cExpiration :: Lens' Credentials (Maybe UTCTime)
-cExpiration = lens _cExpiration (\s a -> s { _cExpiration = a }) . mapping _Time
-
--- | The Secret Access Key portion of the credentials
-cSecretKey :: Lens' Credentials (Maybe Text)
-cSecretKey = lens _cSecretKey (\s a -> s { _cSecretKey = a })
-
--- | The Session Token portion of the credentials
-cSessionToken :: Lens' Credentials (Maybe Text)
-cSessionToken = lens _cSessionToken (\s a -> s { _cSessionToken = a })
-
-instance FromJSON Credentials where
-    parseJSON = withObject "Credentials" $ \o -> Credentials
-        <$> o .:? "AccessKeyId"
-        <*> o .:? "Expiration"
-        <*> o .:? "SecretKey"
-        <*> o .:? "SessionToken"
-
-instance ToJSON Credentials where
-    toJSON Credentials{..} = object
-        [ "AccessKeyId"  .= _cAccessKeyId
-        , "SecretKey"    .= _cSecretKey
-        , "SessionToken" .= _cSessionToken
-        , "Expiration"   .= _cExpiration
-        ]
-
-data IdentityDescription = IdentityDescription
-    { _idCreationDate     :: Maybe POSIX
-    , _idIdentityId       :: Maybe Text
-    , _idLastModifiedDate :: Maybe POSIX
-    , _idLogins           :: List "Logins" Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'IdentityDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'idCreationDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'idIdentityId' @::@ 'Maybe' 'Text'
---
--- * 'idLastModifiedDate' @::@ 'Maybe' 'UTCTime'
---
--- * 'idLogins' @::@ ['Text']
---
-identityDescription :: IdentityDescription
-identityDescription = IdentityDescription
-    { _idIdentityId       = Nothing
-    , _idLogins           = mempty
-    , _idCreationDate     = Nothing
-    , _idLastModifiedDate = Nothing
-    }
-
--- | Date on which the identity was created.
-idCreationDate :: Lens' IdentityDescription (Maybe UTCTime)
-idCreationDate = lens _idCreationDate (\s a -> s { _idCreationDate = a }) . mapping _Time
-
--- | A unique identifier in the format REGION:GUID.
-idIdentityId :: Lens' IdentityDescription (Maybe Text)
-idIdentityId = lens _idIdentityId (\s a -> s { _idIdentityId = a })
-
--- | Date on which the identity was last modified.
-idLastModifiedDate :: Lens' IdentityDescription (Maybe UTCTime)
-idLastModifiedDate =
-    lens _idLastModifiedDate (\s a -> s { _idLastModifiedDate = a })
-        . mapping _Time
-
--- | A set of optional name-value pairs that map provider names to provider tokens.
-idLogins :: Lens' IdentityDescription [Text]
-idLogins = lens _idLogins (\s a -> s { _idLogins = a }) . _List
-
-instance FromJSON IdentityDescription where
-    parseJSON = withObject "IdentityDescription" $ \o -> IdentityDescription
-        <$> o .:? "CreationDate"
-        <*> o .:? "IdentityId"
-        <*> o .:? "LastModifiedDate"
-        <*> o .:? "Logins" .!= mempty
-
-instance ToJSON IdentityDescription where
-    toJSON IdentityDescription{..} = object
-        [ "IdentityId"       .= _idIdentityId
-        , "Logins"           .= _idLogins
-        , "CreationDate"     .= _idCreationDate
-        , "LastModifiedDate" .= _idLastModifiedDate
-        ]
-
-data IdentityPool = IdentityPool
-    { _ipAllowUnauthenticatedIdentities :: Bool
-    , _ipDeveloperProviderName          :: Maybe Text
-    , _ipIdentityPoolId                 :: Text
-    , _ipIdentityPoolName               :: Text
-    , _ipOpenIdConnectProviderARNs      :: List "OpenIdConnectProviderARNs" Text
-    , _ipSupportedLoginProviders        :: Map Text Text
-    } deriving (Eq, Read, Show)
-
--- | 'IdentityPool' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ipAllowUnauthenticatedIdentities' @::@ 'Bool'
---
--- * 'ipDeveloperProviderName' @::@ 'Maybe' 'Text'
---
--- * 'ipIdentityPoolId' @::@ 'Text'
---
--- * 'ipIdentityPoolName' @::@ 'Text'
---
--- * 'ipOpenIdConnectProviderARNs' @::@ ['Text']
---
--- * 'ipSupportedLoginProviders' @::@ 'HashMap' 'Text' 'Text'
---
-identityPool :: Text -- ^ 'ipIdentityPoolId'
-             -> Text -- ^ 'ipIdentityPoolName'
-             -> Bool -- ^ 'ipAllowUnauthenticatedIdentities'
-             -> IdentityPool
-identityPool p1 p2 p3 = IdentityPool
-    { _ipIdentityPoolId                 = p1
-    , _ipIdentityPoolName               = p2
-    , _ipAllowUnauthenticatedIdentities = p3
-    , _ipSupportedLoginProviders        = mempty
-    , _ipDeveloperProviderName          = Nothing
-    , _ipOpenIdConnectProviderARNs      = mempty
-    }
-
--- | TRUE if the identity pool supports unauthenticated logins.
-ipAllowUnauthenticatedIdentities :: Lens' IdentityPool Bool
-ipAllowUnauthenticatedIdentities =
-    lens _ipAllowUnauthenticatedIdentities
-        (\s a -> s { _ipAllowUnauthenticatedIdentities = a })
-
--- | The "domain" by which Cognito will refer to your users.
-ipDeveloperProviderName :: Lens' IdentityPool (Maybe Text)
-ipDeveloperProviderName =
-    lens _ipDeveloperProviderName (\s a -> s { _ipDeveloperProviderName = a })
-
--- | An identity pool ID in the format REGION:GUID.
-ipIdentityPoolId :: Lens' IdentityPool Text
-ipIdentityPoolId = lens _ipIdentityPoolId (\s a -> s { _ipIdentityPoolId = a })
+        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
 
--- | A string that you provide.
-ipIdentityPoolName :: Lens' IdentityPool Text
-ipIdentityPoolName =
-    lens _ipIdentityPoolName (\s a -> s { _ipIdentityPoolName = a })
+-- | Thrown if the identity pool has no role associated for the given auth
+-- type (auth\/unauth) or if the AssumeRole fails.
+_InvalidIdentityPoolConfigurationException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidIdentityPoolConfigurationException =
+    _ServiceError .
+    hasStatus 400 . hasCode "InvalidIdentityPoolConfigurationException"
 
--- | A list of OpendID Connect provider ARNs.
-ipOpenIdConnectProviderARNs :: Lens' IdentityPool [Text]
-ipOpenIdConnectProviderARNs =
-    lens _ipOpenIdConnectProviderARNs
-        (\s a -> s { _ipOpenIdConnectProviderARNs = a })
-            . _List
+-- | Thrown for missing or bad input parameter(s).
+_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidParameterException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidParameterException"
 
--- | Optional key:value pairs mapping provider names to provider app IDs.
-ipSupportedLoginProviders :: Lens' IdentityPool (HashMap Text Text)
-ipSupportedLoginProviders =
-    lens _ipSupportedLoginProviders
-        (\s a -> s { _ipSupportedLoginProviders = a })
-            . _Map
+-- | 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 "NotAuthorizedException"
 
-instance FromJSON IdentityPool where
-    parseJSON = withObject "IdentityPool" $ \o -> IdentityPool
-        <$> o .:  "AllowUnauthenticatedIdentities"
-        <*> o .:? "DeveloperProviderName"
-        <*> o .:  "IdentityPoolId"
-        <*> o .:  "IdentityPoolName"
-        <*> o .:? "OpenIdConnectProviderARNs" .!= mempty
-        <*> o .:? "SupportedLoginProviders" .!= mempty
+-- | Thrown when the service encounters an error during processing the
+-- request.
+_InternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError
+_InternalErrorException = _ServiceError . hasCode "InternalErrorException"
 
-instance ToJSON IdentityPool where
-    toJSON IdentityPool{..} = object
-        [ "IdentityPoolId"                 .= _ipIdentityPoolId
-        , "IdentityPoolName"               .= _ipIdentityPoolName
-        , "AllowUnauthenticatedIdentities" .= _ipAllowUnauthenticatedIdentities
-        , "SupportedLoginProviders"        .= _ipSupportedLoginProviders
-        , "DeveloperProviderName"          .= _ipDeveloperProviderName
-        , "OpenIdConnectProviderARNs"      .= _ipOpenIdConnectProviderARNs
-        ]
+-- | An exception thrown when a dependent service such as Facebook or Twitter
+-- is not responding
+_ExternalServiceException :: AsError a => Getting (First ServiceError) a ServiceError
+_ExternalServiceException =
+    _ServiceError . hasStatus 400 . hasCode "ExternalServiceException"
 
-data IdentityPoolShortDescription = IdentityPoolShortDescription
-    { _ipsdIdentityPoolId   :: Maybe Text
-    , _ipsdIdentityPoolName :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | Thrown if there are parallel requests to modify a resource.
+_ConcurrentModificationException :: AsError a => Getting (First ServiceError) a ServiceError
+_ConcurrentModificationException =
+    _ServiceError . hasStatus 400 . hasCode "ConcurrentModificationException"
 
--- | 'IdentityPoolShortDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ipsdIdentityPoolId' @::@ 'Maybe' 'Text'
---
--- * 'ipsdIdentityPoolName' @::@ 'Maybe' 'Text'
---
-identityPoolShortDescription :: IdentityPoolShortDescription
-identityPoolShortDescription = IdentityPoolShortDescription
-    { _ipsdIdentityPoolId   = Nothing
-    , _ipsdIdentityPoolName = Nothing
-    }
+-- | Thrown when a request is throttled.
+_TooManyRequestsException :: AsError a => Getting (First ServiceError) a ServiceError
+_TooManyRequestsException =
+    _ServiceError . hasStatus 429 . hasCode "TooManyRequestsException"
 
--- | An identity pool ID in the format REGION:GUID.
-ipsdIdentityPoolId :: Lens' IdentityPoolShortDescription (Maybe Text)
-ipsdIdentityPoolId =
-    lens _ipsdIdentityPoolId (\s a -> s { _ipsdIdentityPoolId = a })
+-- | Thrown when a user tries to use a login which is already linked to
+-- another account.
+_ResourceConflictException :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceConflictException =
+    _ServiceError . hasStatus 409 . hasCode "ResourceConflictException"
 
--- | A string that you provide.
-ipsdIdentityPoolName :: Lens' IdentityPoolShortDescription (Maybe Text)
-ipsdIdentityPoolName =
-    lens _ipsdIdentityPoolName (\s a -> s { _ipsdIdentityPoolName = a })
+-- | The provided developer user identifier is already registered with
+-- Cognito under a different identity ID.
+_DeveloperUserAlreadyRegisteredException :: AsError a => Getting (First ServiceError) a ServiceError
+_DeveloperUserAlreadyRegisteredException =
+    _ServiceError .
+    hasStatus 400 . hasCode "DeveloperUserAlreadyRegisteredException"
 
-instance FromJSON IdentityPoolShortDescription where
-    parseJSON = withObject "IdentityPoolShortDescription" $ \o -> IdentityPoolShortDescription
-        <$> o .:? "IdentityPoolId"
-        <*> o .:? "IdentityPoolName"
+-- | Thrown when the requested resource (for example, a dataset or record)
+-- does not exist.
+_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceNotFoundException =
+    _ServiceError . hasStatus 404 . hasCode "ResourceNotFoundException"
 
-instance ToJSON IdentityPoolShortDescription where
-    toJSON IdentityPoolShortDescription{..} = object
-        [ "IdentityPoolId"   .= _ipsdIdentityPoolId
-        , "IdentityPoolName" .= _ipsdIdentityPoolName
-        ]
+-- | Thrown when the total number of user pools has exceeded a preset limit.
+_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_LimitExceededException =
+    _ServiceError . hasStatus 400 . hasCode "LimitExceededException"
diff --git a/gen/Network/AWS/CognitoIdentity/Types/Product.hs b/gen/Network/AWS/CognitoIdentity/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CognitoIdentity/Types/Product.hs
@@ -0,0 +1,304 @@
+{-# 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.CognitoIdentity.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.CognitoIdentity.Types.Product where
+
+import           Network.AWS.CognitoIdentity.Types.Sum
+import           Network.AWS.Prelude
+
+-- | Credentials for the the provided identity ID.
+--
+-- /See:/ 'credentials' smart constructor.
+data Credentials = Credentials'
+    { _cSessionToken :: !(Maybe Text)
+    , _cExpiration   :: !(Maybe POSIX)
+    , _cSecretKey    :: !(Maybe Text)
+    , _cAccessKeyId  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Credentials' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cSessionToken'
+--
+-- * 'cExpiration'
+--
+-- * 'cSecretKey'
+--
+-- * 'cAccessKeyId'
+credentials
+    :: Credentials
+credentials =
+    Credentials'
+    { _cSessionToken = Nothing
+    , _cExpiration = Nothing
+    , _cSecretKey = Nothing
+    , _cAccessKeyId = Nothing
+    }
+
+-- | The Session Token portion of the credentials
+cSessionToken :: Lens' Credentials (Maybe Text)
+cSessionToken = lens _cSessionToken (\ s a -> s{_cSessionToken = a});
+
+-- | The date at which these credentials will expire.
+cExpiration :: Lens' Credentials (Maybe UTCTime)
+cExpiration = lens _cExpiration (\ s a -> s{_cExpiration = a}) . mapping _Time;
+
+-- | The Secret Access Key portion of the credentials
+cSecretKey :: Lens' Credentials (Maybe Text)
+cSecretKey = lens _cSecretKey (\ s a -> s{_cSecretKey = a});
+
+-- | The Access Key portion of the credentials.
+cAccessKeyId :: Lens' Credentials (Maybe Text)
+cAccessKeyId = lens _cAccessKeyId (\ s a -> s{_cAccessKeyId = a});
+
+instance FromJSON Credentials where
+        parseJSON
+          = withObject "Credentials"
+              (\ x ->
+                 Credentials' <$>
+                   (x .:? "SessionToken") <*> (x .:? "Expiration") <*>
+                     (x .:? "SecretKey")
+                     <*> (x .:? "AccessKeyId"))
+
+-- | A description of the identity.
+--
+-- /See:/ 'identityDescription' smart constructor.
+data IdentityDescription = IdentityDescription'
+    { _idLastModifiedDate :: !(Maybe POSIX)
+    , _idCreationDate     :: !(Maybe POSIX)
+    , _idLogins           :: !(Maybe [Text])
+    , _idIdentityId       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IdentityDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idLastModifiedDate'
+--
+-- * 'idCreationDate'
+--
+-- * 'idLogins'
+--
+-- * 'idIdentityId'
+identityDescription
+    :: IdentityDescription
+identityDescription =
+    IdentityDescription'
+    { _idLastModifiedDate = Nothing
+    , _idCreationDate = Nothing
+    , _idLogins = Nothing
+    , _idIdentityId = Nothing
+    }
+
+-- | Date on which the identity was last modified.
+idLastModifiedDate :: Lens' IdentityDescription (Maybe UTCTime)
+idLastModifiedDate = lens _idLastModifiedDate (\ s a -> s{_idLastModifiedDate = a}) . mapping _Time;
+
+-- | Date on which the identity was created.
+idCreationDate :: Lens' IdentityDescription (Maybe UTCTime)
+idCreationDate = lens _idCreationDate (\ s a -> s{_idCreationDate = a}) . mapping _Time;
+
+-- | A set of optional name-value pairs that map provider names to provider
+-- tokens.
+idLogins :: Lens' IdentityDescription [Text]
+idLogins = lens _idLogins (\ s a -> s{_idLogins = a}) . _Default . _Coerce;
+
+-- | A unique identifier in the format REGION:GUID.
+idIdentityId :: Lens' IdentityDescription (Maybe Text)
+idIdentityId = lens _idIdentityId (\ s a -> s{_idIdentityId = a});
+
+instance FromJSON IdentityDescription where
+        parseJSON
+          = withObject "IdentityDescription"
+              (\ x ->
+                 IdentityDescription' <$>
+                   (x .:? "LastModifiedDate") <*> (x .:? "CreationDate")
+                     <*> (x .:? "Logins" .!= mempty)
+                     <*> (x .:? "IdentityId"))
+
+-- | An object representing a Cognito identity pool.
+--
+-- /See:/ 'identityPool' smart constructor.
+data IdentityPool = IdentityPool'
+    { _ipSupportedLoginProviders        :: !(Maybe (Map Text Text))
+    , _ipDeveloperProviderName          :: !(Maybe Text)
+    , _ipOpenIdConnectProviderARNs      :: !(Maybe [Text])
+    , _ipIdentityPoolId                 :: !Text
+    , _ipIdentityPoolName               :: !Text
+    , _ipAllowUnauthenticatedIdentities :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IdentityPool' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ipSupportedLoginProviders'
+--
+-- * 'ipDeveloperProviderName'
+--
+-- * 'ipOpenIdConnectProviderARNs'
+--
+-- * 'ipIdentityPoolId'
+--
+-- * 'ipIdentityPoolName'
+--
+-- * 'ipAllowUnauthenticatedIdentities'
+identityPool
+    :: Text -- ^ 'ipIdentityPoolId'
+    -> Text -- ^ 'ipIdentityPoolName'
+    -> Bool -- ^ 'ipAllowUnauthenticatedIdentities'
+    -> IdentityPool
+identityPool pIdentityPoolId_ pIdentityPoolName_ pAllowUnauthenticatedIdentities_ =
+    IdentityPool'
+    { _ipSupportedLoginProviders = Nothing
+    , _ipDeveloperProviderName = Nothing
+    , _ipOpenIdConnectProviderARNs = Nothing
+    , _ipIdentityPoolId = pIdentityPoolId_
+    , _ipIdentityPoolName = pIdentityPoolName_
+    , _ipAllowUnauthenticatedIdentities = pAllowUnauthenticatedIdentities_
+    }
+
+-- | Optional key:value pairs mapping provider names to provider app IDs.
+ipSupportedLoginProviders :: Lens' IdentityPool (HashMap Text Text)
+ipSupportedLoginProviders = lens _ipSupportedLoginProviders (\ s a -> s{_ipSupportedLoginProviders = a}) . _Default . _Map;
+
+-- | The \"domain\" by which Cognito will refer to your users.
+ipDeveloperProviderName :: Lens' IdentityPool (Maybe Text)
+ipDeveloperProviderName = lens _ipDeveloperProviderName (\ s a -> s{_ipDeveloperProviderName = a});
+
+-- | A list of OpendID Connect provider ARNs.
+ipOpenIdConnectProviderARNs :: Lens' IdentityPool [Text]
+ipOpenIdConnectProviderARNs = lens _ipOpenIdConnectProviderARNs (\ s a -> s{_ipOpenIdConnectProviderARNs = a}) . _Default . _Coerce;
+
+-- | An identity pool ID in the format REGION:GUID.
+ipIdentityPoolId :: Lens' IdentityPool Text
+ipIdentityPoolId = lens _ipIdentityPoolId (\ s a -> s{_ipIdentityPoolId = a});
+
+-- | A string that you provide.
+ipIdentityPoolName :: Lens' IdentityPool Text
+ipIdentityPoolName = lens _ipIdentityPoolName (\ s a -> s{_ipIdentityPoolName = a});
+
+-- | TRUE if the identity pool supports unauthenticated logins.
+ipAllowUnauthenticatedIdentities :: Lens' IdentityPool Bool
+ipAllowUnauthenticatedIdentities = lens _ipAllowUnauthenticatedIdentities (\ s a -> s{_ipAllowUnauthenticatedIdentities = a});
+
+instance FromJSON IdentityPool where
+        parseJSON
+          = withObject "IdentityPool"
+              (\ x ->
+                 IdentityPool' <$>
+                   (x .:? "SupportedLoginProviders" .!= mempty) <*>
+                     (x .:? "DeveloperProviderName")
+                     <*> (x .:? "OpenIdConnectProviderARNs" .!= mempty)
+                     <*> (x .: "IdentityPoolId")
+                     <*> (x .: "IdentityPoolName")
+                     <*> (x .: "AllowUnauthenticatedIdentities"))
+
+instance ToJSON IdentityPool where
+        toJSON IdentityPool'{..}
+          = object
+              ["SupportedLoginProviders" .=
+                 _ipSupportedLoginProviders,
+               "DeveloperProviderName" .= _ipDeveloperProviderName,
+               "OpenIdConnectProviderARNs" .=
+                 _ipOpenIdConnectProviderARNs,
+               "IdentityPoolId" .= _ipIdentityPoolId,
+               "IdentityPoolName" .= _ipIdentityPoolName,
+               "AllowUnauthenticatedIdentities" .=
+                 _ipAllowUnauthenticatedIdentities]
+
+-- | A description of the identity pool.
+--
+-- /See:/ 'identityPoolShortDescription' smart constructor.
+data IdentityPoolShortDescription = IdentityPoolShortDescription'
+    { _ipsdIdentityPoolId   :: !(Maybe Text)
+    , _ipsdIdentityPoolName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IdentityPoolShortDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ipsdIdentityPoolId'
+--
+-- * 'ipsdIdentityPoolName'
+identityPoolShortDescription
+    :: IdentityPoolShortDescription
+identityPoolShortDescription =
+    IdentityPoolShortDescription'
+    { _ipsdIdentityPoolId = Nothing
+    , _ipsdIdentityPoolName = Nothing
+    }
+
+-- | An identity pool ID in the format REGION:GUID.
+ipsdIdentityPoolId :: Lens' IdentityPoolShortDescription (Maybe Text)
+ipsdIdentityPoolId = lens _ipsdIdentityPoolId (\ s a -> s{_ipsdIdentityPoolId = a});
+
+-- | A string that you provide.
+ipsdIdentityPoolName :: Lens' IdentityPoolShortDescription (Maybe Text)
+ipsdIdentityPoolName = lens _ipsdIdentityPoolName (\ s a -> s{_ipsdIdentityPoolName = a});
+
+instance FromJSON IdentityPoolShortDescription where
+        parseJSON
+          = withObject "IdentityPoolShortDescription"
+              (\ x ->
+                 IdentityPoolShortDescription' <$>
+                   (x .:? "IdentityPoolId") <*>
+                     (x .:? "IdentityPoolName"))
+
+-- | An array of UnprocessedIdentityId objects, each of which contains an
+-- ErrorCode and IdentityId.
+--
+-- /See:/ 'unprocessedIdentityId' smart constructor.
+data UnprocessedIdentityId = UnprocessedIdentityId'
+    { _uiiErrorCode  :: !(Maybe CognitoErrorCode)
+    , _uiiIdentityId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UnprocessedIdentityId' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uiiErrorCode'
+--
+-- * 'uiiIdentityId'
+unprocessedIdentityId
+    :: UnprocessedIdentityId
+unprocessedIdentityId =
+    UnprocessedIdentityId'
+    { _uiiErrorCode = Nothing
+    , _uiiIdentityId = Nothing
+    }
+
+-- | The error code indicating the type of error that occurred.
+uiiErrorCode :: Lens' UnprocessedIdentityId (Maybe CognitoErrorCode)
+uiiErrorCode = lens _uiiErrorCode (\ s a -> s{_uiiErrorCode = a});
+
+-- | A unique identifier in the format REGION:GUID.
+uiiIdentityId :: Lens' UnprocessedIdentityId (Maybe Text)
+uiiIdentityId = lens _uiiIdentityId (\ s a -> s{_uiiIdentityId = a});
+
+instance FromJSON UnprocessedIdentityId where
+        parseJSON
+          = withObject "UnprocessedIdentityId"
+              (\ x ->
+                 UnprocessedIdentityId' <$>
+                   (x .:? "ErrorCode") <*> (x .:? "IdentityId"))
diff --git a/gen/Network/AWS/CognitoIdentity/Types/Sum.hs b/gen/Network/AWS/CognitoIdentity/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CognitoIdentity/Types/Sum.hs
@@ -0,0 +1,45 @@
+{-# 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.CognitoIdentity.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.CognitoIdentity.Types.Sum where
+
+import           Network.AWS.Prelude
+
+data CognitoErrorCode
+    = AccessDenied
+    | InternalServerError
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText CognitoErrorCode where
+    parser = takeLowerText >>= \case
+        "accessdenied" -> pure AccessDenied
+        "internalservererror" -> pure InternalServerError
+        e -> fromTextError $ "Failure parsing CognitoErrorCode from value: '" <> e
+           <> "'. Accepted values: accessdenied, internalservererror"
+
+instance ToText CognitoErrorCode where
+    toText = \case
+        AccessDenied -> "accessdenied"
+        InternalServerError -> "internalservererror"
+
+instance Hashable     CognitoErrorCode
+instance ToByteString CognitoErrorCode
+instance ToQuery      CognitoErrorCode
+instance ToHeader     CognitoErrorCode
+
+instance FromJSON CognitoErrorCode where
+    parseJSON = parseJSONText "CognitoErrorCode"
diff --git a/gen/Network/AWS/CognitoIdentity/UnlinkDeveloperIdentity.hs b/gen/Network/AWS/CognitoIdentity/UnlinkDeveloperIdentity.hs
--- a/gen/Network/AWS/CognitoIdentity/UnlinkDeveloperIdentity.hs
+++ b/gen/Network/AWS/CognitoIdentity/UnlinkDeveloperIdentity.hs
@@ -1,135 +1,146 @@
-{-# 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.CognitoIdentity.UnlinkDeveloperIdentity
--- 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.
-
--- | Unlinks a 'DeveloperUserIdentifier' from an existing identity. Unlinked
--- developer users will be considered new identities next time they are seen.
--- If, for a given Cognito identity, you remove all federated identities as well
--- as the developer user identifier, the Cognito identity becomes inaccessible.
+-- Unlinks a 'DeveloperUserIdentifier' from an existing identity. Unlinked
+-- developer users will be considered new identities next time they are
+-- seen. If, for a given Cognito identity, you remove all federated
+-- identities as well as the developer user identifier, the Cognito
+-- identity becomes inaccessible.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_UnlinkDeveloperIdentity.html>
+-- This is a public API. You do not need any credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_UnlinkDeveloperIdentity.html AWS API Reference> for UnlinkDeveloperIdentity.
 module Network.AWS.CognitoIdentity.UnlinkDeveloperIdentity
     (
-    -- * Request
-      UnlinkDeveloperIdentity
-    -- ** Request constructor
-    , unlinkDeveloperIdentity
-    -- ** Request lenses
-    , udiDeveloperProviderName
-    , udiDeveloperUserIdentifier
+    -- * Creating a Request
+      unlinkDeveloperIdentity
+    , UnlinkDeveloperIdentity
+    -- * Request Lenses
     , udiIdentityId
     , udiIdentityPoolId
+    , udiDeveloperProviderName
+    , udiDeveloperUserIdentifier
 
-    -- * Response
-    , UnlinkDeveloperIdentityResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , unlinkDeveloperIdentityResponse
+    , UnlinkDeveloperIdentityResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-data UnlinkDeveloperIdentity = UnlinkDeveloperIdentity
-    { _udiDeveloperProviderName   :: Text
-    , _udiDeveloperUserIdentifier :: Text
-    , _udiIdentityId              :: Text
-    , _udiIdentityPoolId          :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'UnlinkDeveloperIdentity' constructor.
+-- | Input to the 'UnlinkDeveloperIdentity' action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'unlinkDeveloperIdentity' smart constructor.
+data UnlinkDeveloperIdentity = UnlinkDeveloperIdentity'
+    { _udiIdentityId              :: !Text
+    , _udiIdentityPoolId          :: !Text
+    , _udiDeveloperProviderName   :: !Text
+    , _udiDeveloperUserIdentifier :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UnlinkDeveloperIdentity' with the minimum fields required to make a request.
 --
--- * 'udiDeveloperProviderName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'udiDeveloperUserIdentifier' @::@ 'Text'
+-- * 'udiIdentityId'
 --
--- * 'udiIdentityId' @::@ 'Text'
+-- * 'udiIdentityPoolId'
 --
--- * 'udiIdentityPoolId' @::@ 'Text'
+-- * 'udiDeveloperProviderName'
 --
-unlinkDeveloperIdentity :: Text -- ^ 'udiIdentityId'
-                        -> Text -- ^ 'udiIdentityPoolId'
-                        -> Text -- ^ 'udiDeveloperProviderName'
-                        -> Text -- ^ 'udiDeveloperUserIdentifier'
-                        -> UnlinkDeveloperIdentity
-unlinkDeveloperIdentity p1 p2 p3 p4 = UnlinkDeveloperIdentity
-    { _udiIdentityId              = p1
-    , _udiIdentityPoolId          = p2
-    , _udiDeveloperProviderName   = p3
-    , _udiDeveloperUserIdentifier = p4
+-- * 'udiDeveloperUserIdentifier'
+unlinkDeveloperIdentity
+    :: Text -- ^ 'udiIdentityId'
+    -> Text -- ^ 'udiIdentityPoolId'
+    -> Text -- ^ 'udiDeveloperProviderName'
+    -> Text -- ^ 'udiDeveloperUserIdentifier'
+    -> UnlinkDeveloperIdentity
+unlinkDeveloperIdentity pIdentityId_ pIdentityPoolId_ pDeveloperProviderName_ pDeveloperUserIdentifier_ =
+    UnlinkDeveloperIdentity'
+    { _udiIdentityId = pIdentityId_
+    , _udiIdentityPoolId = pIdentityPoolId_
+    , _udiDeveloperProviderName = pDeveloperProviderName_
+    , _udiDeveloperUserIdentifier = pDeveloperUserIdentifier_
     }
 
--- | The "domain" by which Cognito will refer to your users.
-udiDeveloperProviderName :: Lens' UnlinkDeveloperIdentity Text
-udiDeveloperProviderName =
-    lens _udiDeveloperProviderName
-        (\s a -> s { _udiDeveloperProviderName = a })
-
--- | A unique ID used by your backend authentication process to identify a user.
-udiDeveloperUserIdentifier :: Lens' UnlinkDeveloperIdentity Text
-udiDeveloperUserIdentifier =
-    lens _udiDeveloperUserIdentifier
-        (\s a -> s { _udiDeveloperUserIdentifier = a })
-
 -- | A unique identifier in the format REGION:GUID.
 udiIdentityId :: Lens' UnlinkDeveloperIdentity Text
-udiIdentityId = lens _udiIdentityId (\s a -> s { _udiIdentityId = a })
+udiIdentityId = lens _udiIdentityId (\ s a -> s{_udiIdentityId = a});
 
 -- | An identity pool ID in the format REGION:GUID.
 udiIdentityPoolId :: Lens' UnlinkDeveloperIdentity Text
-udiIdentityPoolId =
-    lens _udiIdentityPoolId (\s a -> s { _udiIdentityPoolId = a })
-
-data UnlinkDeveloperIdentityResponse = UnlinkDeveloperIdentityResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+udiIdentityPoolId = lens _udiIdentityPoolId (\ s a -> s{_udiIdentityPoolId = a});
 
--- | 'UnlinkDeveloperIdentityResponse' constructor.
-unlinkDeveloperIdentityResponse :: UnlinkDeveloperIdentityResponse
-unlinkDeveloperIdentityResponse = UnlinkDeveloperIdentityResponse
+-- | The \"domain\" by which Cognito will refer to your users.
+udiDeveloperProviderName :: Lens' UnlinkDeveloperIdentity Text
+udiDeveloperProviderName = lens _udiDeveloperProviderName (\ s a -> s{_udiDeveloperProviderName = a});
 
-instance ToPath UnlinkDeveloperIdentity where
-    toPath = const "/"
+-- | A unique ID used by your backend authentication process to identify a
+-- user.
+udiDeveloperUserIdentifier :: Lens' UnlinkDeveloperIdentity Text
+udiDeveloperUserIdentifier = lens _udiDeveloperUserIdentifier (\ s a -> s{_udiDeveloperUserIdentifier = a});
 
-instance ToQuery UnlinkDeveloperIdentity where
-    toQuery = const mempty
+instance AWSRequest UnlinkDeveloperIdentity where
+        type Sv UnlinkDeveloperIdentity = CognitoIdentity
+        type Rs UnlinkDeveloperIdentity =
+             UnlinkDeveloperIdentityResponse
+        request = postJSON
+        response
+          = receiveNull UnlinkDeveloperIdentityResponse'
 
-instance ToHeaders UnlinkDeveloperIdentity
+instance ToHeaders UnlinkDeveloperIdentity where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.UnlinkDeveloperIdentity"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON UnlinkDeveloperIdentity where
-    toJSON UnlinkDeveloperIdentity{..} = object
-        [ "IdentityId"              .= _udiIdentityId
-        , "IdentityPoolId"          .= _udiIdentityPoolId
-        , "DeveloperProviderName"   .= _udiDeveloperProviderName
-        , "DeveloperUserIdentifier" .= _udiDeveloperUserIdentifier
-        ]
+        toJSON UnlinkDeveloperIdentity'{..}
+          = object
+              ["IdentityId" .= _udiIdentityId,
+               "IdentityPoolId" .= _udiIdentityPoolId,
+               "DeveloperProviderName" .= _udiDeveloperProviderName,
+               "DeveloperUserIdentifier" .=
+                 _udiDeveloperUserIdentifier]
 
-instance AWSRequest UnlinkDeveloperIdentity where
-    type Sv UnlinkDeveloperIdentity = CognitoIdentity
-    type Rs UnlinkDeveloperIdentity = UnlinkDeveloperIdentityResponse
+instance ToPath UnlinkDeveloperIdentity where
+        toPath = const "/"
 
-    request  = post "UnlinkDeveloperIdentity"
-    response = nullResponse UnlinkDeveloperIdentityResponse
+instance ToQuery UnlinkDeveloperIdentity where
+        toQuery = const mempty
+
+-- | /See:/ 'unlinkDeveloperIdentityResponse' smart constructor.
+data UnlinkDeveloperIdentityResponse =
+    UnlinkDeveloperIdentityResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UnlinkDeveloperIdentityResponse' with the minimum fields required to make a request.
+--
+unlinkDeveloperIdentityResponse
+    :: UnlinkDeveloperIdentityResponse
+unlinkDeveloperIdentityResponse = UnlinkDeveloperIdentityResponse'
diff --git a/gen/Network/AWS/CognitoIdentity/UnlinkIdentity.hs b/gen/Network/AWS/CognitoIdentity/UnlinkIdentity.hs
--- a/gen/Network/AWS/CognitoIdentity/UnlinkIdentity.hs
+++ b/gen/Network/AWS/CognitoIdentity/UnlinkIdentity.hs
@@ -1,116 +1,128 @@
-{-# 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.CognitoIdentity.UnlinkIdentity
--- 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.
-
--- | Unlinks a federated identity from an existing account. Unlinked logins will
--- be considered new identities next time they are seen. Removing the last
--- linked login will make this identity inaccessible.
+-- Unlinks a federated identity from an existing account. Unlinked logins
+-- will be considered new identities next time they are seen. Removing the
+-- last linked login will make this identity inaccessible.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_UnlinkIdentity.html>
+-- This is a public API. You do not need any credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_UnlinkIdentity.html AWS API Reference> for UnlinkIdentity.
 module Network.AWS.CognitoIdentity.UnlinkIdentity
     (
-    -- * Request
-      UnlinkIdentity
-    -- ** Request constructor
-    , unlinkIdentity
-    -- ** Request lenses
+    -- * Creating a Request
+      unlinkIdentity
+    , UnlinkIdentity
+    -- * Request Lenses
     , uiIdentityId
     , uiLogins
     , uiLoginsToRemove
 
-    -- * Response
-    , UnlinkIdentityResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , unlinkIdentityResponse
+    , UnlinkIdentityResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-data UnlinkIdentity = UnlinkIdentity
-    { _uiIdentityId     :: Text
-    , _uiLogins         :: Map Text Text
-    , _uiLoginsToRemove :: List "LoginsToRemove" Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'UnlinkIdentity' constructor.
+-- | Input to the UnlinkIdentity action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'unlinkIdentity' smart constructor.
+data UnlinkIdentity = UnlinkIdentity'
+    { _uiIdentityId     :: !Text
+    , _uiLogins         :: !(Map Text Text)
+    , _uiLoginsToRemove :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UnlinkIdentity' with the minimum fields required to make a request.
 --
--- * 'uiIdentityId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uiLogins' @::@ 'HashMap' 'Text' 'Text'
+-- * 'uiIdentityId'
 --
--- * 'uiLoginsToRemove' @::@ ['Text']
+-- * 'uiLogins'
 --
-unlinkIdentity :: Text -- ^ 'uiIdentityId'
-               -> UnlinkIdentity
-unlinkIdentity p1 = UnlinkIdentity
-    { _uiIdentityId     = p1
-    , _uiLogins         = mempty
+-- * 'uiLoginsToRemove'
+unlinkIdentity
+    :: Text -- ^ 'uiIdentityId'
+    -> UnlinkIdentity
+unlinkIdentity pIdentityId_ =
+    UnlinkIdentity'
+    { _uiIdentityId = pIdentityId_
+    , _uiLogins = mempty
     , _uiLoginsToRemove = mempty
     }
 
 -- | A unique identifier in the format REGION:GUID.
 uiIdentityId :: Lens' UnlinkIdentity Text
-uiIdentityId = lens _uiIdentityId (\s a -> s { _uiIdentityId = a })
+uiIdentityId = lens _uiIdentityId (\ s a -> s{_uiIdentityId = a});
 
--- | A set of optional name-value pairs that map provider names to provider tokens.
+-- | A set of optional name-value pairs that map provider names to provider
+-- tokens.
 uiLogins :: Lens' UnlinkIdentity (HashMap Text Text)
-uiLogins = lens _uiLogins (\s a -> s { _uiLogins = a }) . _Map
+uiLogins = lens _uiLogins (\ s a -> s{_uiLogins = a}) . _Map;
 
 -- | Provider names to unlink from this identity.
 uiLoginsToRemove :: Lens' UnlinkIdentity [Text]
-uiLoginsToRemove = lens _uiLoginsToRemove (\s a -> s { _uiLoginsToRemove = a }) . _List
+uiLoginsToRemove = lens _uiLoginsToRemove (\ s a -> s{_uiLoginsToRemove = a}) . _Coerce;
 
-data UnlinkIdentityResponse = UnlinkIdentityResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest UnlinkIdentity where
+        type Sv UnlinkIdentity = CognitoIdentity
+        type Rs UnlinkIdentity = UnlinkIdentityResponse
+        request = postJSON
+        response = receiveNull UnlinkIdentityResponse'
 
--- | 'UnlinkIdentityResponse' constructor.
-unlinkIdentityResponse :: UnlinkIdentityResponse
-unlinkIdentityResponse = UnlinkIdentityResponse
+instance ToHeaders UnlinkIdentity where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.UnlinkIdentity" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON UnlinkIdentity where
+        toJSON UnlinkIdentity'{..}
+          = object
+              ["IdentityId" .= _uiIdentityId,
+               "Logins" .= _uiLogins,
+               "LoginsToRemove" .= _uiLoginsToRemove]
+
 instance ToPath UnlinkIdentity where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UnlinkIdentity where
-    toQuery = const mempty
-
-instance ToHeaders UnlinkIdentity
-
-instance ToJSON UnlinkIdentity where
-    toJSON UnlinkIdentity{..} = object
-        [ "IdentityId"     .= _uiIdentityId
-        , "Logins"         .= _uiLogins
-        , "LoginsToRemove" .= _uiLoginsToRemove
-        ]
+        toQuery = const mempty
 
-instance AWSRequest UnlinkIdentity where
-    type Sv UnlinkIdentity = CognitoIdentity
-    type Rs UnlinkIdentity = UnlinkIdentityResponse
+-- | /See:/ 'unlinkIdentityResponse' smart constructor.
+data UnlinkIdentityResponse =
+    UnlinkIdentityResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "UnlinkIdentity"
-    response = nullResponse UnlinkIdentityResponse
+-- | Creates a value of 'UnlinkIdentityResponse' with the minimum fields required to make a request.
+--
+unlinkIdentityResponse
+    :: UnlinkIdentityResponse
+unlinkIdentityResponse = UnlinkIdentityResponse'
diff --git a/gen/Network/AWS/CognitoIdentity/UpdateIdentityPool.hs b/gen/Network/AWS/CognitoIdentity/UpdateIdentityPool.hs
--- a/gen/Network/AWS/CognitoIdentity/UpdateIdentityPool.hs
+++ b/gen/Network/AWS/CognitoIdentity/UpdateIdentityPool.hs
@@ -1,241 +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.CognitoIdentity.UpdateIdentityPool
--- 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.
-
--- | Updates a user pool.
+-- Updates a user pool.
 --
--- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_UpdateIdentityPool.html>
+-- You must use AWS Developer credentials to call this API.
+--
+-- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_UpdateIdentityPool.html AWS API Reference> for UpdateIdentityPool.
 module Network.AWS.CognitoIdentity.UpdateIdentityPool
     (
-    -- * Request
-      UpdateIdentityPool
-    -- ** Request constructor
-    , updateIdentityPool
-    -- ** Request lenses
-    , uipAllowUnauthenticatedIdentities
+    -- * Creating a Request
+      updateIdentityPool
+    , UpdateIdentityPool
+    -- * Request Lenses
+    , uipSupportedLoginProviders
     , uipDeveloperProviderName
+    , uipOpenIdConnectProviderARNs
     , uipIdentityPoolId
     , uipIdentityPoolName
-    , uipOpenIdConnectProviderARNs
-    , uipSupportedLoginProviders
+    , uipAllowUnauthenticatedIdentities
 
-    -- * Response
-    , UpdateIdentityPoolResponse
-    -- ** Response constructor
-    , updateIdentityPoolResponse
-    -- ** Response lenses
-    , uiprAllowUnauthenticatedIdentities
-    , uiprDeveloperProviderName
-    , uiprIdentityPoolId
-    , uiprIdentityPoolName
-    , uiprOpenIdConnectProviderARNs
-    , uiprSupportedLoginProviders
+    -- * Destructuring the Response
+    , identityPool
+    , IdentityPool
+    -- * Response Lenses
+    , ipSupportedLoginProviders
+    , ipDeveloperProviderName
+    , ipOpenIdConnectProviderARNs
+    , ipIdentityPoolId
+    , ipIdentityPoolName
+    , ipAllowUnauthenticatedIdentities
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CognitoIdentity.Types
-import qualified GHC.Exts
-
-data UpdateIdentityPool = UpdateIdentityPool
-    { _uipAllowUnauthenticatedIdentities :: Bool
-    , _uipDeveloperProviderName          :: Maybe Text
-    , _uipIdentityPoolId                 :: Text
-    , _uipIdentityPoolName               :: Text
-    , _uipOpenIdConnectProviderARNs      :: List "OpenIdConnectProviderARNs" Text
-    , _uipSupportedLoginProviders        :: Map Text Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.CognitoIdentity.Types
+import           Network.AWS.CognitoIdentity.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'UpdateIdentityPool' constructor.
+-- | An object representing a Cognito identity pool.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'updateIdentityPool' smart constructor.
+data UpdateIdentityPool = UpdateIdentityPool'
+    { _uipSupportedLoginProviders        :: !(Maybe (Map Text Text))
+    , _uipDeveloperProviderName          :: !(Maybe Text)
+    , _uipOpenIdConnectProviderARNs      :: !(Maybe [Text])
+    , _uipIdentityPoolId                 :: !Text
+    , _uipIdentityPoolName               :: !Text
+    , _uipAllowUnauthenticatedIdentities :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateIdentityPool' with the minimum fields required to make a request.
 --
--- * 'uipAllowUnauthenticatedIdentities' @::@ 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uipDeveloperProviderName' @::@ 'Maybe' 'Text'
+-- * 'uipSupportedLoginProviders'
 --
--- * 'uipIdentityPoolId' @::@ 'Text'
+-- * 'uipDeveloperProviderName'
 --
--- * 'uipIdentityPoolName' @::@ 'Text'
+-- * 'uipOpenIdConnectProviderARNs'
 --
--- * 'uipOpenIdConnectProviderARNs' @::@ ['Text']
+-- * 'uipIdentityPoolId'
 --
--- * 'uipSupportedLoginProviders' @::@ 'HashMap' 'Text' 'Text'
+-- * 'uipIdentityPoolName'
 --
-updateIdentityPool :: Text -- ^ 'uipIdentityPoolId'
-                   -> Text -- ^ 'uipIdentityPoolName'
-                   -> Bool -- ^ 'uipAllowUnauthenticatedIdentities'
-                   -> UpdateIdentityPool
-updateIdentityPool p1 p2 p3 = UpdateIdentityPool
-    { _uipIdentityPoolId                 = p1
-    , _uipIdentityPoolName               = p2
-    , _uipAllowUnauthenticatedIdentities = p3
-    , _uipSupportedLoginProviders        = mempty
-    , _uipDeveloperProviderName          = Nothing
-    , _uipOpenIdConnectProviderARNs      = mempty
+-- * 'uipAllowUnauthenticatedIdentities'
+updateIdentityPool
+    :: Text -- ^ 'uipIdentityPoolId'
+    -> Text -- ^ 'uipIdentityPoolName'
+    -> Bool -- ^ 'uipAllowUnauthenticatedIdentities'
+    -> UpdateIdentityPool
+updateIdentityPool pIdentityPoolId_ pIdentityPoolName_ pAllowUnauthenticatedIdentities_ =
+    UpdateIdentityPool'
+    { _uipSupportedLoginProviders = Nothing
+    , _uipDeveloperProviderName = Nothing
+    , _uipOpenIdConnectProviderARNs = Nothing
+    , _uipIdentityPoolId = pIdentityPoolId_
+    , _uipIdentityPoolName = pIdentityPoolName_
+    , _uipAllowUnauthenticatedIdentities = pAllowUnauthenticatedIdentities_
     }
 
--- | TRUE if the identity pool supports unauthenticated logins.
-uipAllowUnauthenticatedIdentities :: Lens' UpdateIdentityPool Bool
-uipAllowUnauthenticatedIdentities =
-    lens _uipAllowUnauthenticatedIdentities
-        (\s a -> s { _uipAllowUnauthenticatedIdentities = a })
+-- | Optional key:value pairs mapping provider names to provider app IDs.
+uipSupportedLoginProviders :: Lens' UpdateIdentityPool (HashMap Text Text)
+uipSupportedLoginProviders = lens _uipSupportedLoginProviders (\ s a -> s{_uipSupportedLoginProviders = a}) . _Default . _Map;
 
--- | The "domain" by which Cognito will refer to your users.
+-- | The \"domain\" by which Cognito will refer to your users.
 uipDeveloperProviderName :: Lens' UpdateIdentityPool (Maybe Text)
-uipDeveloperProviderName =
-    lens _uipDeveloperProviderName
-        (\s a -> s { _uipDeveloperProviderName = a })
+uipDeveloperProviderName = lens _uipDeveloperProviderName (\ s a -> s{_uipDeveloperProviderName = a});
 
+-- | A list of OpendID Connect provider ARNs.
+uipOpenIdConnectProviderARNs :: Lens' UpdateIdentityPool [Text]
+uipOpenIdConnectProviderARNs = lens _uipOpenIdConnectProviderARNs (\ s a -> s{_uipOpenIdConnectProviderARNs = a}) . _Default . _Coerce;
+
 -- | An identity pool ID in the format REGION:GUID.
 uipIdentityPoolId :: Lens' UpdateIdentityPool Text
-uipIdentityPoolId =
-    lens _uipIdentityPoolId (\s a -> s { _uipIdentityPoolId = a })
+uipIdentityPoolId = lens _uipIdentityPoolId (\ s a -> s{_uipIdentityPoolId = a});
 
 -- | A string that you provide.
 uipIdentityPoolName :: Lens' UpdateIdentityPool Text
-uipIdentityPoolName =
-    lens _uipIdentityPoolName (\s a -> s { _uipIdentityPoolName = a })
-
--- | A list of OpendID Connect provider ARNs.
-uipOpenIdConnectProviderARNs :: Lens' UpdateIdentityPool [Text]
-uipOpenIdConnectProviderARNs =
-    lens _uipOpenIdConnectProviderARNs
-        (\s a -> s { _uipOpenIdConnectProviderARNs = a })
-            . _List
-
--- | Optional key:value pairs mapping provider names to provider app IDs.
-uipSupportedLoginProviders :: Lens' UpdateIdentityPool (HashMap Text Text)
-uipSupportedLoginProviders =
-    lens _uipSupportedLoginProviders
-        (\s a -> s { _uipSupportedLoginProviders = a })
-            . _Map
-
-data UpdateIdentityPoolResponse = UpdateIdentityPoolResponse
-    { _uiprAllowUnauthenticatedIdentities :: Bool
-    , _uiprDeveloperProviderName          :: Maybe Text
-    , _uiprIdentityPoolId                 :: Text
-    , _uiprIdentityPoolName               :: Text
-    , _uiprOpenIdConnectProviderARNs      :: List "OpenIdConnectProviderARNs" Text
-    , _uiprSupportedLoginProviders        :: Map Text Text
-    } deriving (Eq, Read, Show)
-
--- | 'UpdateIdentityPoolResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'uiprAllowUnauthenticatedIdentities' @::@ 'Bool'
---
--- * 'uiprDeveloperProviderName' @::@ 'Maybe' 'Text'
---
--- * 'uiprIdentityPoolId' @::@ 'Text'
---
--- * 'uiprIdentityPoolName' @::@ 'Text'
---
--- * 'uiprOpenIdConnectProviderARNs' @::@ ['Text']
---
--- * 'uiprSupportedLoginProviders' @::@ 'HashMap' 'Text' 'Text'
---
-updateIdentityPoolResponse :: Text -- ^ 'uiprIdentityPoolId'
-                           -> Text -- ^ 'uiprIdentityPoolName'
-                           -> Bool -- ^ 'uiprAllowUnauthenticatedIdentities'
-                           -> UpdateIdentityPoolResponse
-updateIdentityPoolResponse p1 p2 p3 = UpdateIdentityPoolResponse
-    { _uiprIdentityPoolId                 = p1
-    , _uiprIdentityPoolName               = p2
-    , _uiprAllowUnauthenticatedIdentities = p3
-    , _uiprSupportedLoginProviders        = mempty
-    , _uiprDeveloperProviderName          = Nothing
-    , _uiprOpenIdConnectProviderARNs      = mempty
-    }
+uipIdentityPoolName = lens _uipIdentityPoolName (\ s a -> s{_uipIdentityPoolName = a});
 
 -- | TRUE if the identity pool supports unauthenticated logins.
-uiprAllowUnauthenticatedIdentities :: Lens' UpdateIdentityPoolResponse Bool
-uiprAllowUnauthenticatedIdentities =
-    lens _uiprAllowUnauthenticatedIdentities
-        (\s a -> s { _uiprAllowUnauthenticatedIdentities = a })
-
--- | The "domain" by which Cognito will refer to your users.
-uiprDeveloperProviderName :: Lens' UpdateIdentityPoolResponse (Maybe Text)
-uiprDeveloperProviderName =
-    lens _uiprDeveloperProviderName
-        (\s a -> s { _uiprDeveloperProviderName = a })
-
--- | An identity pool ID in the format REGION:GUID.
-uiprIdentityPoolId :: Lens' UpdateIdentityPoolResponse Text
-uiprIdentityPoolId =
-    lens _uiprIdentityPoolId (\s a -> s { _uiprIdentityPoolId = a })
+uipAllowUnauthenticatedIdentities :: Lens' UpdateIdentityPool Bool
+uipAllowUnauthenticatedIdentities = lens _uipAllowUnauthenticatedIdentities (\ s a -> s{_uipAllowUnauthenticatedIdentities = a});
 
--- | A string that you provide.
-uiprIdentityPoolName :: Lens' UpdateIdentityPoolResponse Text
-uiprIdentityPoolName =
-    lens _uiprIdentityPoolName (\s a -> s { _uiprIdentityPoolName = a })
+instance AWSRequest UpdateIdentityPool where
+        type Sv UpdateIdentityPool = CognitoIdentity
+        type Rs UpdateIdentityPool = IdentityPool
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
--- | A list of OpendID Connect provider ARNs.
-uiprOpenIdConnectProviderARNs :: Lens' UpdateIdentityPoolResponse [Text]
-uiprOpenIdConnectProviderARNs =
-    lens _uiprOpenIdConnectProviderARNs
-        (\s a -> s { _uiprOpenIdConnectProviderARNs = a })
-            . _List
+instance ToHeaders UpdateIdentityPool where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSCognitoIdentityService.UpdateIdentityPool" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | Optional key:value pairs mapping provider names to provider app IDs.
-uiprSupportedLoginProviders :: Lens' UpdateIdentityPoolResponse (HashMap Text Text)
-uiprSupportedLoginProviders =
-    lens _uiprSupportedLoginProviders
-        (\s a -> s { _uiprSupportedLoginProviders = a })
-            . _Map
+instance ToJSON UpdateIdentityPool where
+        toJSON UpdateIdentityPool'{..}
+          = object
+              ["SupportedLoginProviders" .=
+                 _uipSupportedLoginProviders,
+               "DeveloperProviderName" .= _uipDeveloperProviderName,
+               "OpenIdConnectProviderARNs" .=
+                 _uipOpenIdConnectProviderARNs,
+               "IdentityPoolId" .= _uipIdentityPoolId,
+               "IdentityPoolName" .= _uipIdentityPoolName,
+               "AllowUnauthenticatedIdentities" .=
+                 _uipAllowUnauthenticatedIdentities]
 
 instance ToPath UpdateIdentityPool where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UpdateIdentityPool where
-    toQuery = const mempty
-
-instance ToHeaders UpdateIdentityPool
-
-instance ToJSON UpdateIdentityPool where
-    toJSON UpdateIdentityPool{..} = object
-        [ "IdentityPoolId"                 .= _uipIdentityPoolId
-        , "IdentityPoolName"               .= _uipIdentityPoolName
-        , "AllowUnauthenticatedIdentities" .= _uipAllowUnauthenticatedIdentities
-        , "SupportedLoginProviders"        .= _uipSupportedLoginProviders
-        , "DeveloperProviderName"          .= _uipDeveloperProviderName
-        , "OpenIdConnectProviderARNs"      .= _uipOpenIdConnectProviderARNs
-        ]
-
-instance AWSRequest UpdateIdentityPool where
-    type Sv UpdateIdentityPool = CognitoIdentity
-    type Rs UpdateIdentityPool = UpdateIdentityPoolResponse
-
-    request  = post "UpdateIdentityPool"
-    response = jsonResponse
-
-instance FromJSON UpdateIdentityPoolResponse where
-    parseJSON = withObject "UpdateIdentityPoolResponse" $ \o -> UpdateIdentityPoolResponse
-        <$> o .:  "AllowUnauthenticatedIdentities"
-        <*> o .:? "DeveloperProviderName"
-        <*> o .:  "IdentityPoolId"
-        <*> o .:  "IdentityPoolName"
-        <*> o .:? "OpenIdConnectProviderARNs" .!= mempty
-        <*> o .:? "SupportedLoginProviders" .!= mempty
+        toQuery = const mempty
diff --git a/gen/Network/AWS/CognitoIdentity/Waiters.hs b/gen/Network/AWS/CognitoIdentity/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CognitoIdentity/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.CognitoIdentity.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.CognitoIdentity.Waiters where
+
+import           Network.AWS.CognitoIdentity.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.CognitoIdentity
+import Test.AWS.CognitoIdentity.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "CognitoIdentity"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/CognitoIdentity.hs b/test/Test/AWS/CognitoIdentity.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/CognitoIdentity.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.CognitoIdentity
+-- 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.CognitoIdentity
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.CognitoIdentity
+import           Test.AWS.Gen.CognitoIdentity
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/CognitoIdentity/Internal.hs b/test/Test/AWS/CognitoIdentity/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/CognitoIdentity/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.CognitoIdentity.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.CognitoIdentity.Internal where
+
+import Test.AWS.Prelude
diff --git a/test/Test/AWS/Gen/CognitoIdentity.hs b/test/Test/AWS/Gen/CognitoIdentity.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/CognitoIdentity.hs
@@ -0,0 +1,345 @@
+{-# 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.CognitoIdentity
+-- 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.CognitoIdentity where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.CognitoIdentity
+import Test.AWS.CognitoIdentity.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"
+--         [ testGetOpenIdToken $
+--             getOpenIdToken
+--
+--         , testDescribeIdentityPool $
+--             describeIdentityPool
+--
+--         , testGetOpenIdTokenForDeveloperIdentity $
+--             getOpenIdTokenForDeveloperIdentity
+--
+--         , testUnlinkDeveloperIdentity $
+--             unlinkDeveloperIdentity
+--
+--         , testGetCredentialsForIdentity $
+--             getCredentialsForIdentity
+--
+--         , testListIdentityPools $
+--             listIdentityPools
+--
+--         , testGetIdentityPoolRoles $
+--             getIdentityPoolRoles
+--
+--         , testDeleteIdentityPool $
+--             deleteIdentityPool
+--
+--         , testUpdateIdentityPool $
+--             updateIdentityPool
+--
+--         , testGetId $
+--             getId
+--
+--         , testDeleteIdentities $
+--             deleteIdentities
+--
+--         , testSetIdentityPoolRoles $
+--             setIdentityPoolRoles
+--
+--         , testListIdentities $
+--             listIdentities
+--
+--         , testLookupDeveloperIdentity $
+--             lookupDeveloperIdentity
+--
+--         , testUnlinkIdentity $
+--             unlinkIdentity
+--
+--         , testDescribeIdentity $
+--             describeIdentity
+--
+--         , testCreateIdentityPool $
+--             createIdentityPool
+--
+--         , testMergeDeveloperIdentities $
+--             mergeDeveloperIdentities
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testGetOpenIdTokenResponse $
+--             getOpenIdTokenResponse
+--
+--         , testDescribeIdentityPoolResponse $
+--             identityPool
+--
+--         , testGetOpenIdTokenForDeveloperIdentityResponse $
+--             getOpenIdTokenForDeveloperIdentityResponse
+--
+--         , testUnlinkDeveloperIdentityResponse $
+--             unlinkDeveloperIdentityResponse
+--
+--         , testGetCredentialsForIdentityResponse $
+--             getCredentialsForIdentityResponse
+--
+--         , testListIdentityPoolsResponse $
+--             listIdentityPoolsResponse
+--
+--         , testGetIdentityPoolRolesResponse $
+--             getIdentityPoolRolesResponse
+--
+--         , testDeleteIdentityPoolResponse $
+--             deleteIdentityPoolResponse
+--
+--         , testUpdateIdentityPoolResponse $
+--             identityPool
+--
+--         , testGetIdResponse $
+--             getIdResponse
+--
+--         , testDeleteIdentitiesResponse $
+--             deleteIdentitiesResponse
+--
+--         , testSetIdentityPoolRolesResponse $
+--             setIdentityPoolRolesResponse
+--
+--         , testListIdentitiesResponse $
+--             listIdentitiesResponse
+--
+--         , testLookupDeveloperIdentityResponse $
+--             lookupDeveloperIdentityResponse
+--
+--         , testUnlinkIdentityResponse $
+--             unlinkIdentityResponse
+--
+--         , testDescribeIdentityResponse $
+--             identityDescription
+--
+--         , testCreateIdentityPoolResponse $
+--             identityPool
+--
+--         , testMergeDeveloperIdentitiesResponse $
+--             mergeDeveloperIdentitiesResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testGetOpenIdToken :: GetOpenIdToken -> TestTree
+testGetOpenIdToken = req
+    "GetOpenIdToken"
+    "fixture/GetOpenIdToken"
+
+testDescribeIdentityPool :: DescribeIdentityPool -> TestTree
+testDescribeIdentityPool = req
+    "DescribeIdentityPool"
+    "fixture/DescribeIdentityPool"
+
+testGetOpenIdTokenForDeveloperIdentity :: GetOpenIdTokenForDeveloperIdentity -> TestTree
+testGetOpenIdTokenForDeveloperIdentity = req
+    "GetOpenIdTokenForDeveloperIdentity"
+    "fixture/GetOpenIdTokenForDeveloperIdentity"
+
+testUnlinkDeveloperIdentity :: UnlinkDeveloperIdentity -> TestTree
+testUnlinkDeveloperIdentity = req
+    "UnlinkDeveloperIdentity"
+    "fixture/UnlinkDeveloperIdentity"
+
+testGetCredentialsForIdentity :: GetCredentialsForIdentity -> TestTree
+testGetCredentialsForIdentity = req
+    "GetCredentialsForIdentity"
+    "fixture/GetCredentialsForIdentity"
+
+testListIdentityPools :: ListIdentityPools -> TestTree
+testListIdentityPools = req
+    "ListIdentityPools"
+    "fixture/ListIdentityPools"
+
+testGetIdentityPoolRoles :: GetIdentityPoolRoles -> TestTree
+testGetIdentityPoolRoles = req
+    "GetIdentityPoolRoles"
+    "fixture/GetIdentityPoolRoles"
+
+testDeleteIdentityPool :: DeleteIdentityPool -> TestTree
+testDeleteIdentityPool = req
+    "DeleteIdentityPool"
+    "fixture/DeleteIdentityPool"
+
+testUpdateIdentityPool :: UpdateIdentityPool -> TestTree
+testUpdateIdentityPool = req
+    "UpdateIdentityPool"
+    "fixture/UpdateIdentityPool"
+
+testGetId :: GetId -> TestTree
+testGetId = req
+    "GetId"
+    "fixture/GetId"
+
+testDeleteIdentities :: DeleteIdentities -> TestTree
+testDeleteIdentities = req
+    "DeleteIdentities"
+    "fixture/DeleteIdentities"
+
+testSetIdentityPoolRoles :: SetIdentityPoolRoles -> TestTree
+testSetIdentityPoolRoles = req
+    "SetIdentityPoolRoles"
+    "fixture/SetIdentityPoolRoles"
+
+testListIdentities :: ListIdentities -> TestTree
+testListIdentities = req
+    "ListIdentities"
+    "fixture/ListIdentities"
+
+testLookupDeveloperIdentity :: LookupDeveloperIdentity -> TestTree
+testLookupDeveloperIdentity = req
+    "LookupDeveloperIdentity"
+    "fixture/LookupDeveloperIdentity"
+
+testUnlinkIdentity :: UnlinkIdentity -> TestTree
+testUnlinkIdentity = req
+    "UnlinkIdentity"
+    "fixture/UnlinkIdentity"
+
+testDescribeIdentity :: DescribeIdentity -> TestTree
+testDescribeIdentity = req
+    "DescribeIdentity"
+    "fixture/DescribeIdentity"
+
+testCreateIdentityPool :: CreateIdentityPool -> TestTree
+testCreateIdentityPool = req
+    "CreateIdentityPool"
+    "fixture/CreateIdentityPool"
+
+testMergeDeveloperIdentities :: MergeDeveloperIdentities -> TestTree
+testMergeDeveloperIdentities = req
+    "MergeDeveloperIdentities"
+    "fixture/MergeDeveloperIdentities"
+
+-- Responses
+
+testGetOpenIdTokenResponse :: GetOpenIdTokenResponse -> TestTree
+testGetOpenIdTokenResponse = res
+    "GetOpenIdTokenResponse"
+    "fixture/GetOpenIdTokenResponse"
+    (Proxy :: Proxy GetOpenIdToken)
+
+testDescribeIdentityPoolResponse :: IdentityPool -> TestTree
+testDescribeIdentityPoolResponse = res
+    "DescribeIdentityPoolResponse"
+    "fixture/DescribeIdentityPoolResponse"
+    (Proxy :: Proxy DescribeIdentityPool)
+
+testGetOpenIdTokenForDeveloperIdentityResponse :: GetOpenIdTokenForDeveloperIdentityResponse -> TestTree
+testGetOpenIdTokenForDeveloperIdentityResponse = res
+    "GetOpenIdTokenForDeveloperIdentityResponse"
+    "fixture/GetOpenIdTokenForDeveloperIdentityResponse"
+    (Proxy :: Proxy GetOpenIdTokenForDeveloperIdentity)
+
+testUnlinkDeveloperIdentityResponse :: UnlinkDeveloperIdentityResponse -> TestTree
+testUnlinkDeveloperIdentityResponse = res
+    "UnlinkDeveloperIdentityResponse"
+    "fixture/UnlinkDeveloperIdentityResponse"
+    (Proxy :: Proxy UnlinkDeveloperIdentity)
+
+testGetCredentialsForIdentityResponse :: GetCredentialsForIdentityResponse -> TestTree
+testGetCredentialsForIdentityResponse = res
+    "GetCredentialsForIdentityResponse"
+    "fixture/GetCredentialsForIdentityResponse"
+    (Proxy :: Proxy GetCredentialsForIdentity)
+
+testListIdentityPoolsResponse :: ListIdentityPoolsResponse -> TestTree
+testListIdentityPoolsResponse = res
+    "ListIdentityPoolsResponse"
+    "fixture/ListIdentityPoolsResponse"
+    (Proxy :: Proxy ListIdentityPools)
+
+testGetIdentityPoolRolesResponse :: GetIdentityPoolRolesResponse -> TestTree
+testGetIdentityPoolRolesResponse = res
+    "GetIdentityPoolRolesResponse"
+    "fixture/GetIdentityPoolRolesResponse"
+    (Proxy :: Proxy GetIdentityPoolRoles)
+
+testDeleteIdentityPoolResponse :: DeleteIdentityPoolResponse -> TestTree
+testDeleteIdentityPoolResponse = res
+    "DeleteIdentityPoolResponse"
+    "fixture/DeleteIdentityPoolResponse"
+    (Proxy :: Proxy DeleteIdentityPool)
+
+testUpdateIdentityPoolResponse :: IdentityPool -> TestTree
+testUpdateIdentityPoolResponse = res
+    "UpdateIdentityPoolResponse"
+    "fixture/UpdateIdentityPoolResponse"
+    (Proxy :: Proxy UpdateIdentityPool)
+
+testGetIdResponse :: GetIdResponse -> TestTree
+testGetIdResponse = res
+    "GetIdResponse"
+    "fixture/GetIdResponse"
+    (Proxy :: Proxy GetId)
+
+testDeleteIdentitiesResponse :: DeleteIdentitiesResponse -> TestTree
+testDeleteIdentitiesResponse = res
+    "DeleteIdentitiesResponse"
+    "fixture/DeleteIdentitiesResponse"
+    (Proxy :: Proxy DeleteIdentities)
+
+testSetIdentityPoolRolesResponse :: SetIdentityPoolRolesResponse -> TestTree
+testSetIdentityPoolRolesResponse = res
+    "SetIdentityPoolRolesResponse"
+    "fixture/SetIdentityPoolRolesResponse"
+    (Proxy :: Proxy SetIdentityPoolRoles)
+
+testListIdentitiesResponse :: ListIdentitiesResponse -> TestTree
+testListIdentitiesResponse = res
+    "ListIdentitiesResponse"
+    "fixture/ListIdentitiesResponse"
+    (Proxy :: Proxy ListIdentities)
+
+testLookupDeveloperIdentityResponse :: LookupDeveloperIdentityResponse -> TestTree
+testLookupDeveloperIdentityResponse = res
+    "LookupDeveloperIdentityResponse"
+    "fixture/LookupDeveloperIdentityResponse"
+    (Proxy :: Proxy LookupDeveloperIdentity)
+
+testUnlinkIdentityResponse :: UnlinkIdentityResponse -> TestTree
+testUnlinkIdentityResponse = res
+    "UnlinkIdentityResponse"
+    "fixture/UnlinkIdentityResponse"
+    (Proxy :: Proxy UnlinkIdentity)
+
+testDescribeIdentityResponse :: IdentityDescription -> TestTree
+testDescribeIdentityResponse = res
+    "DescribeIdentityResponse"
+    "fixture/DescribeIdentityResponse"
+    (Proxy :: Proxy DescribeIdentity)
+
+testCreateIdentityPoolResponse :: IdentityPool -> TestTree
+testCreateIdentityPoolResponse = res
+    "CreateIdentityPoolResponse"
+    "fixture/CreateIdentityPoolResponse"
+    (Proxy :: Proxy CreateIdentityPool)
+
+testMergeDeveloperIdentitiesResponse :: MergeDeveloperIdentitiesResponse -> TestTree
+testMergeDeveloperIdentitiesResponse = res
+    "MergeDeveloperIdentitiesResponse"
+    "fixture/MergeDeveloperIdentitiesResponse"
+    (Proxy :: Proxy MergeDeveloperIdentities)
