diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.1.0`
+`1.2.0`
 
 
 ## Description
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:               1.1.0
+version:               1.2.0
 synopsis:              Amazon Cognito Identity SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -103,7 +103,7 @@
         , Network.AWS.CognitoIdentity.Types.Sum
 
     build-depends:
-          amazonka-core == 1.1.0.*
+          amazonka-core == 1.2.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-cognito-identity-test
@@ -122,9 +122,9 @@
         , Test.AWS.CognitoIdentity.Internal
 
     build-depends:
-          amazonka-core == 1.1.0
-        , amazonka-test == 1.1.0
-        , amazonka-cognito-identity == 1.1.0
+          amazonka-core == 1.2.0
+        , amazonka-test == 1.2.0
+        , amazonka-cognito-identity == 1.2.0
         , base
         , bytestring
         , lens
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
@@ -52,8 +52,8 @@
 -- /See:/ <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.CognitoIdentity
     (
-    -- * Service
-      CognitoIdentity
+    -- * Service Configuration
+      cognitoIdentity
 
     -- * Errors
     -- $errors
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
@@ -119,9 +119,8 @@
 cipAllowUnauthenticatedIdentities = lens _cipAllowUnauthenticatedIdentities (\ s a -> s{_cipAllowUnauthenticatedIdentities = a});
 
 instance AWSRequest CreateIdentityPool where
-        type Sv CreateIdentityPool = CognitoIdentity
         type Rs CreateIdentityPool = IdentityPool
-        request = postJSON
+        request = postJSON cognitoIdentity
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders CreateIdentityPool where
@@ -137,14 +136,17 @@
 instance ToJSON CreateIdentityPool where
         toJSON CreateIdentityPool'{..}
           = object
-              ["SupportedLoginProviders" .=
-                 _cipSupportedLoginProviders,
-               "DeveloperProviderName" .= _cipDeveloperProviderName,
-               "OpenIdConnectProviderARNs" .=
-                 _cipOpenIdConnectProviderARNs,
-               "IdentityPoolName" .= _cipIdentityPoolName,
-               "AllowUnauthenticatedIdentities" .=
-                 _cipAllowUnauthenticatedIdentities]
+              (catMaybes
+                 [("SupportedLoginProviders" .=) <$>
+                    _cipSupportedLoginProviders,
+                  ("DeveloperProviderName" .=) <$>
+                    _cipDeveloperProviderName,
+                  ("OpenIdConnectProviderARNs" .=) <$>
+                    _cipOpenIdConnectProviderARNs,
+                  Just ("IdentityPoolName" .= _cipIdentityPoolName),
+                  Just
+                    ("AllowUnauthenticatedIdentities" .=
+                       _cipAllowUnauthenticatedIdentities)])
 
 instance ToPath CreateIdentityPool where
         toPath = const "/"
diff --git a/gen/Network/AWS/CognitoIdentity/DeleteIdentities.hs b/gen/Network/AWS/CognitoIdentity/DeleteIdentities.hs
--- a/gen/Network/AWS/CognitoIdentity/DeleteIdentities.hs
+++ b/gen/Network/AWS/CognitoIdentity/DeleteIdentities.hs
@@ -71,9 +71,8 @@
 diIdentityIdsToDelete = lens _diIdentityIdsToDelete (\ s a -> s{_diIdentityIdsToDelete = a}) . _List1;
 
 instance AWSRequest DeleteIdentities where
-        type Sv DeleteIdentities = CognitoIdentity
         type Rs DeleteIdentities = DeleteIdentitiesResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response
           = receiveJSON
               (\ s h x ->
@@ -94,7 +93,9 @@
 instance ToJSON DeleteIdentities where
         toJSON DeleteIdentities'{..}
           = object
-              ["IdentityIdsToDelete" .= _diIdentityIdsToDelete]
+              (catMaybes
+                 [Just
+                    ("IdentityIdsToDelete" .= _diIdentityIdsToDelete)])
 
 instance ToPath DeleteIdentities where
         toPath = const "/"
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
@@ -68,10 +68,9 @@
 dIdentityPoolId = lens _dIdentityPoolId (\ s a -> s{_dIdentityPoolId = a});
 
 instance AWSRequest DeleteIdentityPool where
-        type Sv DeleteIdentityPool = CognitoIdentity
         type Rs DeleteIdentityPool =
              DeleteIdentityPoolResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response = receiveNull DeleteIdentityPoolResponse'
 
 instance ToHeaders DeleteIdentityPool where
@@ -86,7 +85,9 @@
 
 instance ToJSON DeleteIdentityPool where
         toJSON DeleteIdentityPool'{..}
-          = object ["IdentityPoolId" .= _dIdentityPoolId]
+          = object
+              (catMaybes
+                 [Just ("IdentityPoolId" .= _dIdentityPoolId)])
 
 instance ToPath DeleteIdentityPool where
         toPath = const "/"
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
@@ -73,9 +73,8 @@
 diIdentityId = lens _diIdentityId (\ s a -> s{_diIdentityId = a});
 
 instance AWSRequest DescribeIdentity where
-        type Sv DescribeIdentity = CognitoIdentity
         type Rs DescribeIdentity = IdentityDescription
-        request = postJSON
+        request = postJSON cognitoIdentity
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders DescribeIdentity where
@@ -90,7 +89,8 @@
 
 instance ToJSON DescribeIdentity where
         toJSON DescribeIdentity'{..}
-          = object ["IdentityId" .= _diIdentityId]
+          = object
+              (catMaybes [Just ("IdentityId" .= _diIdentityId)])
 
 instance ToPath DescribeIdentity where
         toPath = const "/"
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
@@ -75,9 +75,8 @@
 dipIdentityPoolId = lens _dipIdentityPoolId (\ s a -> s{_dipIdentityPoolId = a});
 
 instance AWSRequest DescribeIdentityPool where
-        type Sv DescribeIdentityPool = CognitoIdentity
         type Rs DescribeIdentityPool = IdentityPool
-        request = postJSON
+        request = postJSON cognitoIdentity
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders DescribeIdentityPool where
@@ -92,7 +91,9 @@
 
 instance ToJSON DescribeIdentityPool where
         toJSON DescribeIdentityPool'{..}
-          = object ["IdentityPoolId" .= _dipIdentityPoolId]
+          = object
+              (catMaybes
+                 [Just ("IdentityPoolId" .= _dipIdentityPoolId)])
 
 instance ToPath DescribeIdentityPool where
         toPath = const "/"
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
@@ -84,10 +84,9 @@
 gcfiIdentityId = lens _gcfiIdentityId (\ s a -> s{_gcfiIdentityId = a});
 
 instance AWSRequest GetCredentialsForIdentity where
-        type Sv GetCredentialsForIdentity = CognitoIdentity
         type Rs GetCredentialsForIdentity =
              GetCredentialsForIdentityResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response
           = receiveJSON
               (\ s h x ->
@@ -108,8 +107,9 @@
 instance ToJSON GetCredentialsForIdentity where
         toJSON GetCredentialsForIdentity'{..}
           = object
-              ["Logins" .= _gcfiLogins,
-               "IdentityId" .= _gcfiIdentityId]
+              (catMaybes
+                 [("Logins" .=) <$> _gcfiLogins,
+                  Just ("IdentityId" .= _gcfiIdentityId)])
 
 instance ToPath GetCredentialsForIdentity where
         toPath = const "/"
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
@@ -100,9 +100,8 @@
 giIdentityPoolId = lens _giIdentityPoolId (\ s a -> s{_giIdentityPoolId = a});
 
 instance AWSRequest GetId where
-        type Sv GetId = CognitoIdentity
         type Rs GetId = GetIdResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response
           = receiveJSON
               (\ s h x ->
@@ -121,8 +120,10 @@
 instance ToJSON GetId where
         toJSON GetId'{..}
           = object
-              ["AccountId" .= _giAccountId, "Logins" .= _giLogins,
-               "IdentityPoolId" .= _giIdentityPoolId]
+              (catMaybes
+                 [("AccountId" .=) <$> _giAccountId,
+                  ("Logins" .=) <$> _giLogins,
+                  Just ("IdentityPoolId" .= _giIdentityPoolId)])
 
 instance ToPath GetId where
         toPath = const "/"
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
@@ -71,10 +71,9 @@
 giprIdentityPoolId = lens _giprIdentityPoolId (\ s a -> s{_giprIdentityPoolId = a});
 
 instance AWSRequest GetIdentityPoolRoles where
-        type Sv GetIdentityPoolRoles = CognitoIdentity
         type Rs GetIdentityPoolRoles =
              GetIdentityPoolRolesResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response
           = receiveJSON
               (\ s h x ->
@@ -95,7 +94,9 @@
 
 instance ToJSON GetIdentityPoolRoles where
         toJSON GetIdentityPoolRoles'{..}
-          = object ["IdentityPoolId" .= _giprIdentityPoolId]
+          = object
+              (catMaybes
+                 [Just ("IdentityPoolId" .= _giprIdentityPoolId)])
 
 instance ToPath GetIdentityPoolRoles where
         toPath = const "/"
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
@@ -88,9 +88,8 @@
 goitIdentityId = lens _goitIdentityId (\ s a -> s{_goitIdentityId = a});
 
 instance AWSRequest GetOpenIdToken where
-        type Sv GetOpenIdToken = CognitoIdentity
         type Rs GetOpenIdToken = GetOpenIdTokenResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response
           = receiveJSON
               (\ s h x ->
@@ -111,8 +110,9 @@
 instance ToJSON GetOpenIdToken where
         toJSON GetOpenIdToken'{..}
           = object
-              ["Logins" .= _goitLogins,
-               "IdentityId" .= _goitIdentityId]
+              (catMaybes
+                 [("Logins" .=) <$> _goitLogins,
+                  Just ("IdentityId" .= _goitIdentityId)])
 
 instance ToPath GetOpenIdToken where
         toPath = const "/"
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
@@ -130,11 +130,9 @@
 
 instance AWSRequest
          GetOpenIdTokenForDeveloperIdentity where
-        type Sv GetOpenIdTokenForDeveloperIdentity =
-             CognitoIdentity
         type Rs GetOpenIdTokenForDeveloperIdentity =
              GetOpenIdTokenForDeveloperIdentityResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response
           = receiveJSON
               (\ s h x ->
@@ -157,10 +155,11 @@
          where
         toJSON GetOpenIdTokenForDeveloperIdentity'{..}
           = object
-              ["TokenDuration" .= _goitfdiTokenDuration,
-               "IdentityId" .= _goitfdiIdentityId,
-               "IdentityPoolId" .= _goitfdiIdentityPoolId,
-               "Logins" .= _goitfdiLogins]
+              (catMaybes
+                 [("TokenDuration" .=) <$> _goitfdiTokenDuration,
+                  ("IdentityId" .=) <$> _goitfdiIdentityId,
+                  Just ("IdentityPoolId" .= _goitfdiIdentityPoolId),
+                  Just ("Logins" .= _goitfdiLogins)])
 
 instance ToPath GetOpenIdTokenForDeveloperIdentity
          where
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
@@ -102,9 +102,8 @@
 liMaxResults = lens _liMaxResults (\ s a -> s{_liMaxResults = a}) . _Nat;
 
 instance AWSRequest ListIdentities where
-        type Sv ListIdentities = CognitoIdentity
         type Rs ListIdentities = ListIdentitiesResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response
           = receiveJSON
               (\ s h x ->
@@ -126,10 +125,11 @@
 instance ToJSON ListIdentities where
         toJSON ListIdentities'{..}
           = object
-              ["HideDisabled" .= _liHideDisabled,
-               "NextToken" .= _liNextToken,
-               "IdentityPoolId" .= _liIdentityPoolId,
-               "MaxResults" .= _liMaxResults]
+              (catMaybes
+                 [("HideDisabled" .=) <$> _liHideDisabled,
+                  ("NextToken" .=) <$> _liNextToken,
+                  Just ("IdentityPoolId" .= _liIdentityPoolId),
+                  Just ("MaxResults" .= _liMaxResults)])
 
 instance ToPath ListIdentities where
         toPath = const "/"
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
@@ -80,9 +80,8 @@
 lipMaxResults = lens _lipMaxResults (\ s a -> s{_lipMaxResults = a}) . _Nat;
 
 instance AWSRequest ListIdentityPools where
-        type Sv ListIdentityPools = CognitoIdentity
         type Rs ListIdentityPools = ListIdentityPoolsResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response
           = receiveJSON
               (\ s h x ->
@@ -104,8 +103,9 @@
 instance ToJSON ListIdentityPools where
         toJSON ListIdentityPools'{..}
           = object
-              ["NextToken" .= _lipNextToken,
-               "MaxResults" .= _lipMaxResults]
+              (catMaybes
+                 [("NextToken" .=) <$> _lipNextToken,
+                  Just ("MaxResults" .= _lipMaxResults)])
 
 instance ToPath ListIdentityPools where
         toPath = const "/"
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
@@ -124,10 +124,9 @@
 ldiIdentityPoolId = lens _ldiIdentityPoolId (\ s a -> s{_ldiIdentityPoolId = a});
 
 instance AWSRequest LookupDeveloperIdentity where
-        type Sv LookupDeveloperIdentity = CognitoIdentity
         type Rs LookupDeveloperIdentity =
              LookupDeveloperIdentityResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response
           = receiveJSON
               (\ s h x ->
@@ -149,12 +148,13 @@
 instance ToJSON LookupDeveloperIdentity where
         toJSON LookupDeveloperIdentity'{..}
           = object
-              ["DeveloperUserIdentifier" .=
-                 _ldiDeveloperUserIdentifier,
-               "NextToken" .= _ldiNextToken,
-               "IdentityId" .= _ldiIdentityId,
-               "MaxResults" .= _ldiMaxResults,
-               "IdentityPoolId" .= _ldiIdentityPoolId]
+              (catMaybes
+                 [("DeveloperUserIdentifier" .=) <$>
+                    _ldiDeveloperUserIdentifier,
+                  ("NextToken" .=) <$> _ldiNextToken,
+                  ("IdentityId" .=) <$> _ldiIdentityId,
+                  ("MaxResults" .=) <$> _ldiMaxResults,
+                  Just ("IdentityPoolId" .= _ldiIdentityPoolId)])
 
 instance ToPath LookupDeveloperIdentity where
         toPath = const "/"
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
@@ -114,10 +114,9 @@
 mdiIdentityPoolId = lens _mdiIdentityPoolId (\ s a -> s{_mdiIdentityPoolId = a});
 
 instance AWSRequest MergeDeveloperIdentities where
-        type Sv MergeDeveloperIdentities = CognitoIdentity
         type Rs MergeDeveloperIdentities =
              MergeDeveloperIdentitiesResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response
           = receiveJSON
               (\ s h x ->
@@ -137,11 +136,16 @@
 instance ToJSON MergeDeveloperIdentities where
         toJSON MergeDeveloperIdentities'{..}
           = object
-              ["SourceUserIdentifier" .= _mdiSourceUserIdentifier,
-               "DestinationUserIdentifier" .=
-                 _mdiDestinationUserIdentifier,
-               "DeveloperProviderName" .= _mdiDeveloperProviderName,
-               "IdentityPoolId" .= _mdiIdentityPoolId]
+              (catMaybes
+                 [Just
+                    ("SourceUserIdentifier" .= _mdiSourceUserIdentifier),
+                  Just
+                    ("DestinationUserIdentifier" .=
+                       _mdiDestinationUserIdentifier),
+                  Just
+                    ("DeveloperProviderName" .=
+                       _mdiDeveloperProviderName),
+                  Just ("IdentityPoolId" .= _mdiIdentityPoolId)])
 
 instance ToPath MergeDeveloperIdentities where
         toPath = const "/"
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
@@ -79,10 +79,9 @@
 siprRoles = lens _siprRoles (\ s a -> s{_siprRoles = a}) . _Map;
 
 instance AWSRequest SetIdentityPoolRoles where
-        type Sv SetIdentityPoolRoles = CognitoIdentity
         type Rs SetIdentityPoolRoles =
              SetIdentityPoolRolesResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response = receiveNull SetIdentityPoolRolesResponse'
 
 instance ToHeaders SetIdentityPoolRoles where
@@ -98,8 +97,9 @@
 instance ToJSON SetIdentityPoolRoles where
         toJSON SetIdentityPoolRoles'{..}
           = object
-              ["IdentityPoolId" .= _siprIdentityPoolId,
-               "Roles" .= _siprRoles]
+              (catMaybes
+                 [Just ("IdentityPoolId" .= _siprIdentityPoolId),
+                  Just ("Roles" .= _siprRoles)])
 
 instance ToPath SetIdentityPoolRoles where
         toPath = const "/"
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,5 +1,4 @@
 {-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TypeFamilies      #-}
 
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
@@ -13,8 +12,8 @@
 --
 module Network.AWS.CognitoIdentity.Types
     (
-    -- * Service
-      CognitoIdentity
+    -- * Service Configuration
+      cognitoIdentity
 
     -- * Errors
     , _InvalidIdentityPoolConfigurationException
@@ -76,39 +75,36 @@
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
--- | Version @2014-06-30@ of the Amazon Cognito Identity SDK.
-data CognitoIdentity
-
-instance AWSService CognitoIdentity where
-    type Sg CognitoIdentity = V4
-    service = const svc
-      where
-        svc =
-            Service
-            { _svcAbbrev = "CognitoIdentity"
-            , _svcPrefix = "cognito-identity"
-            , _svcVersion = "2014-06-30"
-            , _svcEndpoint = defaultEndpoint svc
-            , _svcTimeout = Just 70
-            , _svcStatus = statusSuccess
-            , _svcError = parseJSONError
-            , _svcRetry = retry
-            }
-        retry =
-            Exponential
-            { _retryBase = 5.0e-2
-            , _retryGrowth = 2
-            , _retryAttempts = 5
-            , _retryCheck = check
-            }
-        check e
-          | has (hasCode "ThrottlingException" . hasStatus 400) e =
-              Just "throttling_exception"
-          | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
-          | has (hasStatus 503) e = Just "service_unavailable"
-          | has (hasStatus 500) e = Just "general_server_error"
-          | has (hasStatus 509) e = Just "limit_exceeded"
-          | otherwise = Nothing
+-- | API version '2014-06-30' of the Amazon Cognito Identity SDK configuration.
+cognitoIdentity :: Service
+cognitoIdentity =
+    Service
+    { _svcAbbrev = "CognitoIdentity"
+    , _svcSigner = v4
+    , _svcPrefix = "cognito-identity"
+    , _svcVersion = "2014-06-30"
+    , _svcEndpoint = defaultEndpoint cognitoIdentity
+    , _svcTimeout = Just 70
+    , _svcCheck = statusSuccess
+    , _svcError = parseJSONError
+    , _svcRetry = retry
+    }
+  where
+    retry =
+        Exponential
+        { _retryBase = 5.0e-2
+        , _retryGrowth = 2
+        , _retryAttempts = 5
+        , _retryCheck = check
+        }
+    check e
+      | has (hasCode "ThrottlingException" . hasStatus 400) e =
+          Just "throttling_exception"
+      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+      | has (hasStatus 503) e = Just "service_unavailable"
+      | has (hasStatus 500) e = Just "general_server_error"
+      | has (hasStatus 509) e = Just "limit_exceeded"
+      | otherwise = Nothing
 
 -- | Thrown if the identity pool has no role associated for the given auth
 -- type (auth\/unauth) or if the AssumeRole fails.
diff --git a/gen/Network/AWS/CognitoIdentity/Types/Product.hs b/gen/Network/AWS/CognitoIdentity/Types/Product.hs
--- a/gen/Network/AWS/CognitoIdentity/Types/Product.hs
+++ b/gen/Network/AWS/CognitoIdentity/Types/Product.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE OverloadedStrings  #-}
 {-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
@@ -215,15 +214,18 @@
 instance ToJSON IdentityPool where
         toJSON IdentityPool'{..}
           = object
-              ["SupportedLoginProviders" .=
-                 _ipSupportedLoginProviders,
-               "DeveloperProviderName" .= _ipDeveloperProviderName,
-               "OpenIdConnectProviderARNs" .=
-                 _ipOpenIdConnectProviderARNs,
-               "IdentityPoolId" .= _ipIdentityPoolId,
-               "IdentityPoolName" .= _ipIdentityPoolName,
-               "AllowUnauthenticatedIdentities" .=
-                 _ipAllowUnauthenticatedIdentities]
+              (catMaybes
+                 [("SupportedLoginProviders" .=) <$>
+                    _ipSupportedLoginProviders,
+                  ("DeveloperProviderName" .=) <$>
+                    _ipDeveloperProviderName,
+                  ("OpenIdConnectProviderARNs" .=) <$>
+                    _ipOpenIdConnectProviderARNs,
+                  Just ("IdentityPoolId" .= _ipIdentityPoolId),
+                  Just ("IdentityPoolName" .= _ipIdentityPoolName),
+                  Just
+                    ("AllowUnauthenticatedIdentities" .=
+                       _ipAllowUnauthenticatedIdentities)])
 
 -- | A description of the identity pool.
 --
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
@@ -102,10 +102,9 @@
 udiDeveloperUserIdentifier = lens _udiDeveloperUserIdentifier (\ s a -> s{_udiDeveloperUserIdentifier = a});
 
 instance AWSRequest UnlinkDeveloperIdentity where
-        type Sv UnlinkDeveloperIdentity = CognitoIdentity
         type Rs UnlinkDeveloperIdentity =
              UnlinkDeveloperIdentityResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response
           = receiveNull UnlinkDeveloperIdentityResponse'
 
@@ -122,11 +121,15 @@
 instance ToJSON UnlinkDeveloperIdentity where
         toJSON UnlinkDeveloperIdentity'{..}
           = object
-              ["IdentityId" .= _udiIdentityId,
-               "IdentityPoolId" .= _udiIdentityPoolId,
-               "DeveloperProviderName" .= _udiDeveloperProviderName,
-               "DeveloperUserIdentifier" .=
-                 _udiDeveloperUserIdentifier]
+              (catMaybes
+                 [Just ("IdentityId" .= _udiIdentityId),
+                  Just ("IdentityPoolId" .= _udiIdentityPoolId),
+                  Just
+                    ("DeveloperProviderName" .=
+                       _udiDeveloperProviderName),
+                  Just
+                    ("DeveloperUserIdentifier" .=
+                       _udiDeveloperUserIdentifier)])
 
 instance ToPath UnlinkDeveloperIdentity where
         toPath = const "/"
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
@@ -88,9 +88,8 @@
 uiLoginsToRemove = lens _uiLoginsToRemove (\ s a -> s{_uiLoginsToRemove = a}) . _Coerce;
 
 instance AWSRequest UnlinkIdentity where
-        type Sv UnlinkIdentity = CognitoIdentity
         type Rs UnlinkIdentity = UnlinkIdentityResponse
-        request = postJSON
+        request = postJSON cognitoIdentity
         response = receiveNull UnlinkIdentityResponse'
 
 instance ToHeaders UnlinkIdentity where
@@ -106,9 +105,10 @@
 instance ToJSON UnlinkIdentity where
         toJSON UnlinkIdentity'{..}
           = object
-              ["IdentityId" .= _uiIdentityId,
-               "Logins" .= _uiLogins,
-               "LoginsToRemove" .= _uiLoginsToRemove]
+              (catMaybes
+                 [Just ("IdentityId" .= _uiIdentityId),
+                  Just ("Logins" .= _uiLogins),
+                  Just ("LoginsToRemove" .= _uiLoginsToRemove)])
 
 instance ToPath UnlinkIdentity where
         toPath = const "/"
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
@@ -121,9 +121,8 @@
 uipAllowUnauthenticatedIdentities = lens _uipAllowUnauthenticatedIdentities (\ s a -> s{_uipAllowUnauthenticatedIdentities = a});
 
 instance AWSRequest UpdateIdentityPool where
-        type Sv UpdateIdentityPool = CognitoIdentity
         type Rs UpdateIdentityPool = IdentityPool
-        request = postJSON
+        request = postJSON cognitoIdentity
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders UpdateIdentityPool where
@@ -139,15 +138,18 @@
 instance ToJSON UpdateIdentityPool where
         toJSON UpdateIdentityPool'{..}
           = object
-              ["SupportedLoginProviders" .=
-                 _uipSupportedLoginProviders,
-               "DeveloperProviderName" .= _uipDeveloperProviderName,
-               "OpenIdConnectProviderARNs" .=
-                 _uipOpenIdConnectProviderARNs,
-               "IdentityPoolId" .= _uipIdentityPoolId,
-               "IdentityPoolName" .= _uipIdentityPoolName,
-               "AllowUnauthenticatedIdentities" .=
-                 _uipAllowUnauthenticatedIdentities]
+              (catMaybes
+                 [("SupportedLoginProviders" .=) <$>
+                    _uipSupportedLoginProviders,
+                  ("DeveloperProviderName" .=) <$>
+                    _uipDeveloperProviderName,
+                  ("OpenIdConnectProviderARNs" .=) <$>
+                    _uipOpenIdConnectProviderARNs,
+                  Just ("IdentityPoolId" .= _uipIdentityPoolId),
+                  Just ("IdentityPoolName" .= _uipIdentityPoolName),
+                  Just
+                    ("AllowUnauthenticatedIdentities" .=
+                       _uipAllowUnauthenticatedIdentities)])
 
 instance ToPath UpdateIdentityPool where
         toPath = const "/"
diff --git a/test/Test/AWS/Gen/CognitoIdentity.hs b/test/Test/AWS/Gen/CognitoIdentity.hs
--- a/test/Test/AWS/Gen/CognitoIdentity.hs
+++ b/test/Test/AWS/Gen/CognitoIdentity.hs
@@ -240,106 +240,124 @@
 testGetOpenIdTokenResponse = res
     "GetOpenIdTokenResponse"
     "fixture/GetOpenIdTokenResponse"
+    cognitoIdentity
     (Proxy :: Proxy GetOpenIdToken)
 
 testDescribeIdentityPoolResponse :: IdentityPool -> TestTree
 testDescribeIdentityPoolResponse = res
     "DescribeIdentityPoolResponse"
     "fixture/DescribeIdentityPoolResponse"
+    cognitoIdentity
     (Proxy :: Proxy DescribeIdentityPool)
 
 testGetOpenIdTokenForDeveloperIdentityResponse :: GetOpenIdTokenForDeveloperIdentityResponse -> TestTree
 testGetOpenIdTokenForDeveloperIdentityResponse = res
     "GetOpenIdTokenForDeveloperIdentityResponse"
     "fixture/GetOpenIdTokenForDeveloperIdentityResponse"
+    cognitoIdentity
     (Proxy :: Proxy GetOpenIdTokenForDeveloperIdentity)
 
 testUnlinkDeveloperIdentityResponse :: UnlinkDeveloperIdentityResponse -> TestTree
 testUnlinkDeveloperIdentityResponse = res
     "UnlinkDeveloperIdentityResponse"
     "fixture/UnlinkDeveloperIdentityResponse"
+    cognitoIdentity
     (Proxy :: Proxy UnlinkDeveloperIdentity)
 
 testGetCredentialsForIdentityResponse :: GetCredentialsForIdentityResponse -> TestTree
 testGetCredentialsForIdentityResponse = res
     "GetCredentialsForIdentityResponse"
     "fixture/GetCredentialsForIdentityResponse"
+    cognitoIdentity
     (Proxy :: Proxy GetCredentialsForIdentity)
 
 testListIdentityPoolsResponse :: ListIdentityPoolsResponse -> TestTree
 testListIdentityPoolsResponse = res
     "ListIdentityPoolsResponse"
     "fixture/ListIdentityPoolsResponse"
+    cognitoIdentity
     (Proxy :: Proxy ListIdentityPools)
 
 testGetIdentityPoolRolesResponse :: GetIdentityPoolRolesResponse -> TestTree
 testGetIdentityPoolRolesResponse = res
     "GetIdentityPoolRolesResponse"
     "fixture/GetIdentityPoolRolesResponse"
+    cognitoIdentity
     (Proxy :: Proxy GetIdentityPoolRoles)
 
 testDeleteIdentityPoolResponse :: DeleteIdentityPoolResponse -> TestTree
 testDeleteIdentityPoolResponse = res
     "DeleteIdentityPoolResponse"
     "fixture/DeleteIdentityPoolResponse"
+    cognitoIdentity
     (Proxy :: Proxy DeleteIdentityPool)
 
 testUpdateIdentityPoolResponse :: IdentityPool -> TestTree
 testUpdateIdentityPoolResponse = res
     "UpdateIdentityPoolResponse"
     "fixture/UpdateIdentityPoolResponse"
+    cognitoIdentity
     (Proxy :: Proxy UpdateIdentityPool)
 
 testGetIdResponse :: GetIdResponse -> TestTree
 testGetIdResponse = res
     "GetIdResponse"
     "fixture/GetIdResponse"
+    cognitoIdentity
     (Proxy :: Proxy GetId)
 
 testDeleteIdentitiesResponse :: DeleteIdentitiesResponse -> TestTree
 testDeleteIdentitiesResponse = res
     "DeleteIdentitiesResponse"
     "fixture/DeleteIdentitiesResponse"
+    cognitoIdentity
     (Proxy :: Proxy DeleteIdentities)
 
 testSetIdentityPoolRolesResponse :: SetIdentityPoolRolesResponse -> TestTree
 testSetIdentityPoolRolesResponse = res
     "SetIdentityPoolRolesResponse"
     "fixture/SetIdentityPoolRolesResponse"
+    cognitoIdentity
     (Proxy :: Proxy SetIdentityPoolRoles)
 
 testListIdentitiesResponse :: ListIdentitiesResponse -> TestTree
 testListIdentitiesResponse = res
     "ListIdentitiesResponse"
     "fixture/ListIdentitiesResponse"
+    cognitoIdentity
     (Proxy :: Proxy ListIdentities)
 
 testLookupDeveloperIdentityResponse :: LookupDeveloperIdentityResponse -> TestTree
 testLookupDeveloperIdentityResponse = res
     "LookupDeveloperIdentityResponse"
     "fixture/LookupDeveloperIdentityResponse"
+    cognitoIdentity
     (Proxy :: Proxy LookupDeveloperIdentity)
 
 testUnlinkIdentityResponse :: UnlinkIdentityResponse -> TestTree
 testUnlinkIdentityResponse = res
     "UnlinkIdentityResponse"
     "fixture/UnlinkIdentityResponse"
+    cognitoIdentity
     (Proxy :: Proxy UnlinkIdentity)
 
 testDescribeIdentityResponse :: IdentityDescription -> TestTree
 testDescribeIdentityResponse = res
     "DescribeIdentityResponse"
     "fixture/DescribeIdentityResponse"
+    cognitoIdentity
     (Proxy :: Proxy DescribeIdentity)
 
 testCreateIdentityPoolResponse :: IdentityPool -> TestTree
 testCreateIdentityPoolResponse = res
     "CreateIdentityPoolResponse"
     "fixture/CreateIdentityPoolResponse"
+    cognitoIdentity
     (Proxy :: Proxy CreateIdentityPool)
 
 testMergeDeveloperIdentitiesResponse :: MergeDeveloperIdentitiesResponse -> TestTree
 testMergeDeveloperIdentitiesResponse = res
     "MergeDeveloperIdentitiesResponse"
     "fixture/MergeDeveloperIdentitiesResponse"
+    cognitoIdentity
     (Proxy :: Proxy MergeDeveloperIdentities)
