diff --git a/amazonka-cognito-identity.cabal b/amazonka-cognito-identity.cabal
--- a/amazonka-cognito-identity.cabal
+++ b/amazonka-cognito-identity.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-cognito-identity
-version:               0.2.1
+version:               0.2.2
 synopsis:              Amazon Cognito Identity SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -44,14 +44,18 @@
           Network.AWS.CognitoIdentity
         , Network.AWS.CognitoIdentity.CreateIdentityPool
         , Network.AWS.CognitoIdentity.DeleteIdentityPool
+        , Network.AWS.CognitoIdentity.DescribeIdentity
         , Network.AWS.CognitoIdentity.DescribeIdentityPool
+        , Network.AWS.CognitoIdentity.GetCredentialsForIdentity
         , Network.AWS.CognitoIdentity.GetId
+        , Network.AWS.CognitoIdentity.GetIdentityPoolRoles
         , Network.AWS.CognitoIdentity.GetOpenIdToken
         , Network.AWS.CognitoIdentity.GetOpenIdTokenForDeveloperIdentity
         , Network.AWS.CognitoIdentity.ListIdentities
         , Network.AWS.CognitoIdentity.ListIdentityPools
         , Network.AWS.CognitoIdentity.LookupDeveloperIdentity
         , Network.AWS.CognitoIdentity.MergeDeveloperIdentities
+        , Network.AWS.CognitoIdentity.SetIdentityPoolRoles
         , Network.AWS.CognitoIdentity.Types
         , Network.AWS.CognitoIdentity.UnlinkDeveloperIdentity
         , Network.AWS.CognitoIdentity.UnlinkIdentity
@@ -60,5 +64,5 @@
     other-modules:
 
     build-depends:
-          amazonka-core == 0.2.1.*
+          amazonka-core == 0.2.2.*
         , base          >= 4.7     && < 5
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
@@ -23,14 +23,18 @@
 module Network.AWS.CognitoIdentity
     ( module Network.AWS.CognitoIdentity.CreateIdentityPool
     , module Network.AWS.CognitoIdentity.DeleteIdentityPool
+    , module Network.AWS.CognitoIdentity.DescribeIdentity
     , module Network.AWS.CognitoIdentity.DescribeIdentityPool
+    , module Network.AWS.CognitoIdentity.GetCredentialsForIdentity
     , module Network.AWS.CognitoIdentity.GetId
+    , module Network.AWS.CognitoIdentity.GetIdentityPoolRoles
     , module Network.AWS.CognitoIdentity.GetOpenIdToken
     , module Network.AWS.CognitoIdentity.GetOpenIdTokenForDeveloperIdentity
     , module Network.AWS.CognitoIdentity.ListIdentities
     , module Network.AWS.CognitoIdentity.ListIdentityPools
     , 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
     , module Network.AWS.CognitoIdentity.UnlinkIdentity
@@ -39,14 +43,18 @@
 
 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
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
@@ -64,7 +64,7 @@
     , _cipIdentityPoolName               :: Text
     , _cipOpenIdConnectProviderARNs      :: List "OpenIdConnectProviderARNs" Text
     , _cipSupportedLoginProviders        :: Map Text Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'CreateIdentityPool' constructor.
 --
@@ -114,6 +114,7 @@
 cipIdentityPoolName =
     lens _cipIdentityPoolName (\s a -> s { _cipIdentityPoolName = a })
 
+-- | A list of OpendID Connect provider ARNs.
 cipOpenIdConnectProviderARNs :: Lens' CreateIdentityPool [Text]
 cipOpenIdConnectProviderARNs =
     lens _cipOpenIdConnectProviderARNs
@@ -134,7 +135,7 @@
     , _ciprIdentityPoolName               :: Text
     , _ciprOpenIdConnectProviderARNs      :: List "OpenIdConnectProviderARNs" Text
     , _ciprSupportedLoginProviders        :: Map Text Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'CreateIdentityPoolResponse' constructor.
 --
@@ -187,6 +188,7 @@
 ciprIdentityPoolName =
     lens _ciprIdentityPoolName (\s a -> s { _ciprIdentityPoolName = a })
 
+-- | A list of OpendID Connect provider ARNs.
 ciprOpenIdConnectProviderARNs :: Lens' CreateIdentityPoolResponse [Text]
 ciprOpenIdConnectProviderARNs =
     lens _ciprOpenIdConnectProviderARNs
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
@@ -48,7 +48,7 @@
 
 newtype DeleteIdentityPool = DeleteIdentityPool
     { _dip1IdentityPoolId :: Text
-    } deriving (Eq, Ord, Show, Monoid, IsString)
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
 
 -- | 'DeleteIdentityPool' constructor.
 --
@@ -68,7 +68,7 @@
     lens _dip1IdentityPoolId (\s a -> s { _dip1IdentityPoolId = a })
 
 data DeleteIdentityPoolResponse = DeleteIdentityPoolResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'DeleteIdentityPoolResponse' constructor.
 deleteIdentityPoolResponse :: DeleteIdentityPoolResponse
diff --git a/gen/Network/AWS/CognitoIdentity/DescribeIdentity.hs b/gen/Network/AWS/CognitoIdentity/DescribeIdentity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CognitoIdentity/DescribeIdentity.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.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/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | 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>
+module Network.AWS.CognitoIdentity.DescribeIdentity
+    (
+    -- * Request
+      DescribeIdentity
+    -- ** Request constructor
+    , describeIdentity
+    -- ** Request lenses
+    , diIdentityId
+
+    -- * Response
+    , DescribeIdentityResponse
+    -- ** Response constructor
+    , describeIdentityResponse
+    -- ** Response lenses
+    , dirCreationDate
+    , dirIdentityId
+    , dirLastModifiedDate
+    , dirLogins
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.JSON
+import Network.AWS.CognitoIdentity.Types
+import qualified GHC.Exts
+
+newtype DescribeIdentity = DescribeIdentity
+    { _diIdentityId :: Text
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+
+-- | 'DescribeIdentity' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'diIdentityId' @::@ 'Text'
+--
+describeIdentity :: Text -- ^ 'diIdentityId'
+                 -> DescribeIdentity
+describeIdentity p1 = DescribeIdentity
+    { _diIdentityId = p1
+    }
+
+-- | 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
+
+-- | A unique identifier in the format REGION:GUID.
+dirIdentityId :: Lens' DescribeIdentityResponse (Maybe Text)
+dirIdentityId = lens _dirIdentityId (\s a -> s { _dirIdentityId = a })
+
+-- | Date on which the identity was last modified.
+dirLastModifiedDate :: Lens' DescribeIdentityResponse (Maybe UTCTime)
+dirLastModifiedDate =
+    lens _dirLastModifiedDate (\s a -> s { _dirLastModifiedDate = a })
+        . mapping _Time
+
+-- | 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 ToPath DescribeIdentity where
+    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
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
@@ -55,7 +55,7 @@
 
 newtype DescribeIdentityPool = DescribeIdentityPool
     { _dipIdentityPoolId :: Text
-    } deriving (Eq, Ord, Show, Monoid, IsString)
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
 
 -- | 'DescribeIdentityPool' constructor.
 --
@@ -81,7 +81,7 @@
     , _diprIdentityPoolName               :: Text
     , _diprOpenIdConnectProviderARNs      :: List "OpenIdConnectProviderARNs" Text
     , _diprSupportedLoginProviders        :: Map Text Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'DescribeIdentityPoolResponse' constructor.
 --
@@ -134,6 +134,7 @@
 diprIdentityPoolName =
     lens _diprIdentityPoolName (\s a -> s { _diprIdentityPoolName = a })
 
+-- | A list of OpendID Connect provider ARNs.
 diprOpenIdConnectProviderARNs :: Lens' DescribeIdentityPoolResponse [Text]
 diprOpenIdConnectProviderARNs =
     lens _diprOpenIdConnectProviderARNs
diff --git a/gen/Network/AWS/CognitoIdentity/GetCredentialsForIdentity.hs b/gen/Network/AWS/CognitoIdentity/GetCredentialsForIdentity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CognitoIdentity/GetCredentialsForIdentity.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.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/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | 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>
+module Network.AWS.CognitoIdentity.GetCredentialsForIdentity
+    (
+    -- * Request
+      GetCredentialsForIdentity
+    -- ** Request constructor
+    , getCredentialsForIdentity
+    -- ** Request lenses
+    , gcfiIdentityId
+    , gcfiLogins
+
+    -- * Response
+    , GetCredentialsForIdentityResponse
+    -- ** Response constructor
+    , getCredentialsForIdentityResponse
+    -- ** Response lenses
+    , gcfirCredentials
+    , gcfirIdentityId
+    ) where
+
+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)
+
+-- | 'GetCredentialsForIdentity' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'gcfiIdentityId' @::@ 'Text'
+--
+-- * 'gcfiLogins' @::@ 'HashMap' 'Text' 'Text'
+--
+getCredentialsForIdentity :: Text -- ^ 'gcfiIdentityId'
+                          -> GetCredentialsForIdentity
+getCredentialsForIdentity p1 = GetCredentialsForIdentity
+    { _gcfiIdentityId = p1
+    , _gcfiLogins     = mempty
+    }
+
+-- | A unique identifier in the format REGION:GUID.
+gcfiIdentityId :: Lens' GetCredentialsForIdentity Text
+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
+
+data GetCredentialsForIdentityResponse = GetCredentialsForIdentityResponse
+    { _gcfirCredentials :: Maybe Credentials
+    , _gcfirIdentityId  :: Maybe Text
+    } deriving (Eq, Read, Show)
+
+-- | 'GetCredentialsForIdentityResponse' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'gcfirCredentials' @::@ 'Maybe' 'Credentials'
+--
+-- * 'gcfirIdentityId' @::@ 'Maybe' 'Text'
+--
+getCredentialsForIdentityResponse :: GetCredentialsForIdentityResponse
+getCredentialsForIdentityResponse = GetCredentialsForIdentityResponse
+    { _gcfirIdentityId  = Nothing
+    , _gcfirCredentials = Nothing
+    }
+
+-- | Credentials for the the provided identity ID.
+gcfirCredentials :: Lens' GetCredentialsForIdentityResponse (Maybe Credentials)
+gcfirCredentials = lens _gcfirCredentials (\s a -> s { _gcfirCredentials = 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
+
+instance FromJSON GetCredentialsForIdentityResponse where
+    parseJSON = withObject "GetCredentialsForIdentityResponse" $ \o -> GetCredentialsForIdentityResponse
+        <$> o .:? "Credentials"
+        <*> o .:? "IdentityId"
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
@@ -51,32 +51,31 @@
 import qualified GHC.Exts
 
 data GetId = GetId
-    { _giAccountId      :: Text
+    { _giAccountId      :: Maybe Text
     , _giIdentityPoolId :: Text
     , _giLogins         :: Map Text Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'GetId' constructor.
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'giAccountId' @::@ 'Text'
+-- * 'giAccountId' @::@ 'Maybe' 'Text'
 --
 -- * 'giIdentityPoolId' @::@ 'Text'
 --
 -- * 'giLogins' @::@ 'HashMap' 'Text' 'Text'
 --
-getId :: Text -- ^ 'giAccountId'
-      -> Text -- ^ 'giIdentityPoolId'
+getId :: Text -- ^ 'giIdentityPoolId'
       -> GetId
-getId p1 p2 = GetId
-    { _giAccountId      = p1
-    , _giIdentityPoolId = p2
+getId p1 = GetId
+    { _giIdentityPoolId = p1
+    , _giAccountId      = Nothing
     , _giLogins         = mempty
     }
 
 -- | A standard AWS account ID (9+ digits).
-giAccountId :: Lens' GetId Text
+giAccountId :: Lens' GetId (Maybe Text)
 giAccountId = lens _giAccountId (\s a -> s { _giAccountId = a })
 
 -- | An identity pool ID in the format REGION:GUID.
@@ -91,7 +90,7 @@
 
 newtype GetIdResponse = GetIdResponse
     { _girIdentityId :: Maybe Text
-    } deriving (Eq, Ord, Show, Monoid)
+    } deriving (Eq, Ord, Read, Show, Monoid)
 
 -- | 'GetIdResponse' constructor.
 --
diff --git a/gen/Network/AWS/CognitoIdentity/GetIdentityPoolRoles.hs b/gen/Network/AWS/CognitoIdentity/GetIdentityPoolRoles.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CognitoIdentity/GetIdentityPoolRoles.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.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/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | Gets the roles for an identity pool.
+--
+-- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetIdentityPoolRoles.html>
+module Network.AWS.CognitoIdentity.GetIdentityPoolRoles
+    (
+    -- * Request
+      GetIdentityPoolRoles
+    -- ** Request constructor
+    , getIdentityPoolRoles
+    -- ** Request lenses
+    , giprIdentityPoolId
+
+    -- * Response
+    , GetIdentityPoolRolesResponse
+    -- ** Response constructor
+    , getIdentityPoolRolesResponse
+    -- ** Response lenses
+    , giprrIdentityPoolId
+    , giprrRoles
+    ) where
+
+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)
+
+-- | 'GetIdentityPoolRoles' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'giprIdentityPoolId' @::@ 'Maybe' 'Text'
+--
+getIdentityPoolRoles :: GetIdentityPoolRoles
+getIdentityPoolRoles = GetIdentityPoolRoles
+    { _giprIdentityPoolId = Nothing
+    }
+
+-- | 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)
+
+-- | 'GetIdentityPoolRolesResponse' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'giprrIdentityPoolId' @::@ 'Maybe' 'Text'
+--
+-- * 'giprrRoles' @::@ 'HashMap' 'Text' 'Text'
+--
+getIdentityPoolRolesResponse :: GetIdentityPoolRolesResponse
+getIdentityPoolRolesResponse = GetIdentityPoolRolesResponse
+    { _giprrIdentityPoolId = Nothing
+    , _giprrRoles          = mempty
+    }
+
+-- | An identity pool ID in the format REGION:GUID.
+giprrIdentityPoolId :: Lens' GetIdentityPoolRolesResponse (Maybe Text)
+giprrIdentityPoolId =
+    lens _giprrIdentityPoolId (\s a -> s { _giprrIdentityPoolId = a })
+
+-- | 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 ToPath GetIdentityPoolRoles where
+    toPath = const "/"
+
+instance ToQuery GetIdentityPoolRoles where
+    toQuery = const mempty
+
+instance ToHeaders GetIdentityPoolRoles
+
+instance ToJSON GetIdentityPoolRoles where
+    toJSON GetIdentityPoolRoles{..} = object
+        [ "IdentityPoolId" .= _giprIdentityPoolId
+        ]
+
+instance AWSRequest GetIdentityPoolRoles where
+    type Sv GetIdentityPoolRoles = CognitoIdentity
+    type Rs GetIdentityPoolRoles = GetIdentityPoolRolesResponse
+
+    request  = post "GetIdentityPoolRoles"
+    response = jsonResponse
+
+instance FromJSON GetIdentityPoolRolesResponse where
+    parseJSON = withObject "GetIdentityPoolRolesResponse" $ \o -> GetIdentityPoolRolesResponse
+        <$> o .:? "IdentityPoolId"
+        <*> o .:? "Roles" .!= mempty
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
@@ -56,7 +56,7 @@
 data GetOpenIdToken = GetOpenIdToken
     { _goitIdentityId :: Text
     , _goitLogins     :: Map Text Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'GetOpenIdToken' constructor.
 --
@@ -84,7 +84,7 @@
 data GetOpenIdTokenResponse = GetOpenIdTokenResponse
     { _goitrIdentityId :: Maybe Text
     , _goitrToken      :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'GetOpenIdTokenResponse' constructor.
 --
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
@@ -69,7 +69,7 @@
     , _goitfdiIdentityPoolId :: Text
     , _goitfdiLogins         :: Map Text Text
     , _goitfdiTokenDuration  :: Maybe Nat
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'GetOpenIdTokenForDeveloperIdentity' constructor.
 --
@@ -129,7 +129,7 @@
 data GetOpenIdTokenForDeveloperIdentityResponse = GetOpenIdTokenForDeveloperIdentityResponse
     { _goitfdirIdentityId :: Maybe Text
     , _goitfdirToken      :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'GetOpenIdTokenForDeveloperIdentityResponse' constructor.
 --
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
@@ -55,7 +55,7 @@
     { _liIdentityPoolId :: Text
     , _liMaxResults     :: Nat
     , _liNextToken      :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'ListIdentities' constructor.
 --
@@ -92,7 +92,7 @@
     { _lirIdentities     :: List "Identities" IdentityDescription
     , _lirIdentityPoolId :: Maybe Text
     , _lirNextToken      :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListIdentitiesResponse' constructor.
 --
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
@@ -52,7 +52,7 @@
 data ListIdentityPools = ListIdentityPools
     { _lipMaxResults :: Nat
     , _lipNextToken  :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'ListIdentityPools' constructor.
 --
@@ -80,7 +80,7 @@
 data ListIdentityPoolsResponse = ListIdentityPoolsResponse
     { _liprIdentityPools :: List "IdentityPools" IdentityPoolShortDescription
     , _liprNextToken     :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListIdentityPoolsResponse' constructor.
 --
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
@@ -67,7 +67,7 @@
     , _ldiIdentityPoolId          :: Text
     , _ldiMaxResults              :: Maybe Nat
     , _ldiNextToken               :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'LookupDeveloperIdentity' constructor.
 --
@@ -127,7 +127,7 @@
     { _ldirDeveloperUserIdentifierList :: List "DeveloperUserIdentifierList" Text
     , _ldirIdentityId                  :: Maybe Text
     , _ldirNextToken                   :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'LookupDeveloperIdentityResponse' constructor.
 --
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
@@ -61,7 +61,7 @@
     , _mdiDeveloperProviderName     :: Text
     , _mdiIdentityPoolId            :: Text
     , _mdiSourceUserIdentifier      :: Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'MergeDeveloperIdentities' constructor.
 --
@@ -115,7 +115,7 @@
 
 newtype MergeDeveloperIdentitiesResponse = MergeDeveloperIdentitiesResponse
     { _mdirIdentityId :: Maybe Text
-    } deriving (Eq, Ord, Show, Monoid)
+    } deriving (Eq, Ord, Read, Show, Monoid)
 
 -- | 'MergeDeveloperIdentitiesResponse' constructor.
 --
diff --git a/gen/Network/AWS/CognitoIdentity/SetIdentityPoolRoles.hs b/gen/Network/AWS/CognitoIdentity/SetIdentityPoolRoles.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CognitoIdentity/SetIdentityPoolRoles.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.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/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | 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>
+module Network.AWS.CognitoIdentity.SetIdentityPoolRoles
+    (
+    -- * Request
+      SetIdentityPoolRoles
+    -- ** Request constructor
+    , setIdentityPoolRoles
+    -- ** Request lenses
+    , siprIdentityPoolId
+    , siprRoles
+
+    -- * Response
+    , SetIdentityPoolRolesResponse
+    -- ** Response constructor
+    , setIdentityPoolRolesResponse
+    ) where
+
+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)
+
+-- | 'SetIdentityPoolRoles' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'siprIdentityPoolId' @::@ 'Text'
+--
+-- * 'siprRoles' @::@ 'HashMap' 'Text' 'Text'
+--
+setIdentityPoolRoles :: Text -- ^ 'siprIdentityPoolId'
+                     -> SetIdentityPoolRoles
+setIdentityPoolRoles p1 = SetIdentityPoolRoles
+    { _siprIdentityPoolId = p1
+    , _siprRoles          = mempty
+    }
+
+-- | An identity pool ID in the format REGION:GUID.
+siprIdentityPoolId :: Lens' SetIdentityPoolRoles Text
+siprIdentityPoolId =
+    lens _siprIdentityPoolId (\s a -> s { _siprIdentityPoolId = a })
+
+-- | The map of roles associated with this pool. Currently only authenticated and
+-- unauthenticated roles are supported.
+siprRoles :: Lens' SetIdentityPoolRoles (HashMap Text Text)
+siprRoles = lens _siprRoles (\s a -> s { _siprRoles = a }) . _Map
+
+data SetIdentityPoolRolesResponse = SetIdentityPoolRolesResponse
+    deriving (Eq, Ord, Read, Show, Generic)
+
+-- | 'SetIdentityPoolRolesResponse' constructor.
+setIdentityPoolRolesResponse :: SetIdentityPoolRolesResponse
+setIdentityPoolRolesResponse = SetIdentityPoolRolesResponse
+
+instance ToPath SetIdentityPoolRoles where
+    toPath = const "/"
+
+instance ToQuery SetIdentityPoolRoles where
+    toQuery = const mempty
+
+instance ToHeaders SetIdentityPoolRoles
+
+instance ToJSON SetIdentityPoolRoles where
+    toJSON SetIdentityPoolRoles{..} = object
+        [ "IdentityPoolId" .= _siprIdentityPoolId
+        , "Roles"          .= _siprRoles
+        ]
+
+instance AWSRequest SetIdentityPoolRoles where
+    type Sv SetIdentityPoolRoles = CognitoIdentity
+    type Rs SetIdentityPoolRoles = SetIdentityPoolRolesResponse
+
+    request  = post "SetIdentityPoolRoles"
+    response = nullResponse 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
@@ -30,10 +30,20 @@
     -- ** Error
     , JSONError
 
+    -- * Credentials
+    , Credentials
+    , credentials
+    , cAccessKeyId
+    , cExpiration
+    , cSecretKey
+    , cSessionToken
+
     -- * IdentityDescription
     , IdentityDescription
     , identityDescription
+    , idCreationDate
     , idIdentityId
+    , idLastModifiedDate
     , idLogins
 
     -- * IdentityPool
@@ -98,42 +108,122 @@
             | 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
-    { _idIdentityId :: Maybe Text
-    , _idLogins     :: List "Logins" Text
-    } deriving (Eq, Ord, Show)
+    { _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
+    { _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 .:? "IdentityId"
+        <$> o .:? "CreationDate"
+        <*> o .:? "IdentityId"
+        <*> o .:? "LastModifiedDate"
         <*> o .:? "Logins" .!= mempty
 
 instance ToJSON IdentityDescription where
     toJSON IdentityDescription{..} = object
-        [ "IdentityId" .= _idIdentityId
-        , "Logins"     .= _idLogins
+        [ "IdentityId"       .= _idIdentityId
+        , "Logins"           .= _idLogins
+        , "CreationDate"     .= _idCreationDate
+        , "LastModifiedDate" .= _idLastModifiedDate
         ]
 
 data IdentityPool = IdentityPool
@@ -143,7 +233,7 @@
     , _ipIdentityPoolName               :: Text
     , _ipOpenIdConnectProviderARNs      :: List "OpenIdConnectProviderARNs" Text
     , _ipSupportedLoginProviders        :: Map Text Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'IdentityPool' constructor.
 --
@@ -194,6 +284,7 @@
 ipIdentityPoolName =
     lens _ipIdentityPoolName (\s a -> s { _ipIdentityPoolName = a })
 
+-- | A list of OpendID Connect provider ARNs.
 ipOpenIdConnectProviderARNs :: Lens' IdentityPool [Text]
 ipOpenIdConnectProviderARNs =
     lens _ipOpenIdConnectProviderARNs
@@ -229,7 +320,7 @@
 data IdentityPoolShortDescription = IdentityPoolShortDescription
     { _ipsdIdentityPoolId   :: Maybe Text
     , _ipsdIdentityPoolName :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'IdentityPoolShortDescription' constructor.
 --
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
@@ -56,7 +56,7 @@
     , _udiDeveloperUserIdentifier :: Text
     , _udiIdentityId              :: Text
     , _udiIdentityPoolId          :: Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'UnlinkDeveloperIdentity' constructor.
 --
@@ -104,7 +104,7 @@
     lens _udiIdentityPoolId (\s a -> s { _udiIdentityPoolId = a })
 
 data UnlinkDeveloperIdentityResponse = UnlinkDeveloperIdentityResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'UnlinkDeveloperIdentityResponse' constructor.
 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
@@ -53,7 +53,7 @@
     { _uiIdentityId     :: Text
     , _uiLogins         :: Map Text Text
     , _uiLoginsToRemove :: List "LoginsToRemove" Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'UnlinkIdentity' constructor.
 --
@@ -86,7 +86,7 @@
 uiLoginsToRemove = lens _uiLoginsToRemove (\s a -> s { _uiLoginsToRemove = a }) . _List
 
 data UnlinkIdentityResponse = UnlinkIdentityResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'UnlinkIdentityResponse' constructor.
 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
@@ -64,7 +64,7 @@
     , _uipIdentityPoolName               :: Text
     , _uipOpenIdConnectProviderARNs      :: List "OpenIdConnectProviderARNs" Text
     , _uipSupportedLoginProviders        :: Map Text Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'UpdateIdentityPool' constructor.
 --
@@ -117,6 +117,7 @@
 uipIdentityPoolName =
     lens _uipIdentityPoolName (\s a -> s { _uipIdentityPoolName = a })
 
+-- | A list of OpendID Connect provider ARNs.
 uipOpenIdConnectProviderARNs :: Lens' UpdateIdentityPool [Text]
 uipOpenIdConnectProviderARNs =
     lens _uipOpenIdConnectProviderARNs
@@ -137,7 +138,7 @@
     , _uiprIdentityPoolName               :: Text
     , _uiprOpenIdConnectProviderARNs      :: List "OpenIdConnectProviderARNs" Text
     , _uiprSupportedLoginProviders        :: Map Text Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'UpdateIdentityPoolResponse' constructor.
 --
@@ -190,6 +191,7 @@
 uiprIdentityPoolName =
     lens _uiprIdentityPoolName (\s a -> s { _uiprIdentityPoolName = a })
 
+-- | A list of OpendID Connect provider ARNs.
 uiprOpenIdConnectProviderARNs :: Lens' UpdateIdentityPoolResponse [Text]
 uiprOpenIdConnectProviderARNs =
     lens _uiprOpenIdConnectProviderARNs
