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-ssm.cabal b/amazonka-ssm.cabal
--- a/amazonka-ssm.cabal
+++ b/amazonka-ssm.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-ssm
-version:               1.1.0
+version:               1.2.0
 synopsis:              Amazon Simple Systems Management Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -75,7 +75,7 @@
         , Network.AWS.SSM.Types.Sum
 
     build-depends:
-          amazonka-core == 1.1.0.*
+          amazonka-core == 1.2.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ssm-test
@@ -94,9 +94,9 @@
         , Test.AWS.SSM.Internal
 
     build-depends:
-          amazonka-core == 1.1.0
-        , amazonka-test == 1.1.0
-        , amazonka-ssm == 1.1.0
+          amazonka-core == 1.2.0
+        , amazonka-test == 1.2.0
+        , amazonka-ssm == 1.2.0
         , base
         , bytestring
         , lens
diff --git a/gen/Network/AWS/SSM.hs b/gen/Network/AWS/SSM.hs
--- a/gen/Network/AWS/SSM.hs
+++ b/gen/Network/AWS/SSM.hs
@@ -31,8 +31,8 @@
 -- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.SSM
     (
-    -- * Service
-      SSM
+    -- * Service Configuration
+      sSM
 
     -- * Errors
     -- $errors
diff --git a/gen/Network/AWS/SSM/CreateAssociation.hs b/gen/Network/AWS/SSM/CreateAssociation.hs
--- a/gen/Network/AWS/SSM/CreateAssociation.hs
+++ b/gen/Network/AWS/SSM/CreateAssociation.hs
@@ -85,9 +85,8 @@
 caInstanceId = lens _caInstanceId (\ s a -> s{_caInstanceId = a});
 
 instance AWSRequest CreateAssociation where
-        type Sv CreateAssociation = SSM
         type Rs CreateAssociation = CreateAssociationResponse
-        request = postJSON
+        request = postJSON sSM
         response
           = receiveJSON
               (\ s h x ->
@@ -107,7 +106,9 @@
 instance ToJSON CreateAssociation where
         toJSON CreateAssociation'{..}
           = object
-              ["Name" .= _caName, "InstanceId" .= _caInstanceId]
+              (catMaybes
+                 [Just ("Name" .= _caName),
+                  Just ("InstanceId" .= _caInstanceId)])
 
 instance ToPath CreateAssociation where
         toPath = const "/"
diff --git a/gen/Network/AWS/SSM/CreateAssociationBatch.hs b/gen/Network/AWS/SSM/CreateAssociationBatch.hs
--- a/gen/Network/AWS/SSM/CreateAssociationBatch.hs
+++ b/gen/Network/AWS/SSM/CreateAssociationBatch.hs
@@ -75,10 +75,9 @@
 cabEntries = lens _cabEntries (\ s a -> s{_cabEntries = a}) . _Coerce;
 
 instance AWSRequest CreateAssociationBatch where
-        type Sv CreateAssociationBatch = SSM
         type Rs CreateAssociationBatch =
              CreateAssociationBatchResponse
-        request = postJSON
+        request = postJSON sSM
         response
           = receiveJSON
               (\ s h x ->
@@ -98,7 +97,8 @@
 
 instance ToJSON CreateAssociationBatch where
         toJSON CreateAssociationBatch'{..}
-          = object ["Entries" .= _cabEntries]
+          = object
+              (catMaybes [Just ("Entries" .= _cabEntries)])
 
 instance ToPath CreateAssociationBatch where
         toPath = const "/"
diff --git a/gen/Network/AWS/SSM/CreateDocument.hs b/gen/Network/AWS/SSM/CreateDocument.hs
--- a/gen/Network/AWS/SSM/CreateDocument.hs
+++ b/gen/Network/AWS/SSM/CreateDocument.hs
@@ -81,9 +81,8 @@
 cdName = lens _cdName (\ s a -> s{_cdName = a});
 
 instance AWSRequest CreateDocument where
-        type Sv CreateDocument = SSM
         type Rs CreateDocument = CreateDocumentResponse
-        request = postJSON
+        request = postJSON sSM
         response
           = receiveJSON
               (\ s h x ->
@@ -102,7 +101,10 @@
 
 instance ToJSON CreateDocument where
         toJSON CreateDocument'{..}
-          = object ["Content" .= _cdContent, "Name" .= _cdName]
+          = object
+              (catMaybes
+                 [Just ("Content" .= _cdContent),
+                  Just ("Name" .= _cdName)])
 
 instance ToPath CreateDocument where
         toPath = const "/"
diff --git a/gen/Network/AWS/SSM/DeleteAssociation.hs b/gen/Network/AWS/SSM/DeleteAssociation.hs
--- a/gen/Network/AWS/SSM/DeleteAssociation.hs
+++ b/gen/Network/AWS/SSM/DeleteAssociation.hs
@@ -82,9 +82,8 @@
 delInstanceId = lens _delInstanceId (\ s a -> s{_delInstanceId = a});
 
 instance AWSRequest DeleteAssociation where
-        type Sv DeleteAssociation = SSM
         type Rs DeleteAssociation = DeleteAssociationResponse
-        request = postJSON
+        request = postJSON sSM
         response
           = receiveEmpty
               (\ s h x ->
@@ -102,7 +101,9 @@
 instance ToJSON DeleteAssociation where
         toJSON DeleteAssociation'{..}
           = object
-              ["Name" .= _delName, "InstanceId" .= _delInstanceId]
+              (catMaybes
+                 [Just ("Name" .= _delName),
+                  Just ("InstanceId" .= _delInstanceId)])
 
 instance ToPath DeleteAssociation where
         toPath = const "/"
diff --git a/gen/Network/AWS/SSM/DeleteDocument.hs b/gen/Network/AWS/SSM/DeleteDocument.hs
--- a/gen/Network/AWS/SSM/DeleteDocument.hs
+++ b/gen/Network/AWS/SSM/DeleteDocument.hs
@@ -68,9 +68,8 @@
 dddName = lens _dddName (\ s a -> s{_dddName = a});
 
 instance AWSRequest DeleteDocument where
-        type Sv DeleteDocument = SSM
         type Rs DeleteDocument = DeleteDocumentResponse
-        request = postJSON
+        request = postJSON sSM
         response
           = receiveEmpty
               (\ s h x ->
@@ -87,7 +86,7 @@
 
 instance ToJSON DeleteDocument where
         toJSON DeleteDocument'{..}
-          = object ["Name" .= _dddName]
+          = object (catMaybes [Just ("Name" .= _dddName)])
 
 instance ToPath DeleteDocument where
         toPath = const "/"
diff --git a/gen/Network/AWS/SSM/DescribeAssociation.hs b/gen/Network/AWS/SSM/DescribeAssociation.hs
--- a/gen/Network/AWS/SSM/DescribeAssociation.hs
+++ b/gen/Network/AWS/SSM/DescribeAssociation.hs
@@ -77,10 +77,9 @@
 daInstanceId = lens _daInstanceId (\ s a -> s{_daInstanceId = a});
 
 instance AWSRequest DescribeAssociation where
-        type Sv DescribeAssociation = SSM
         type Rs DescribeAssociation =
              DescribeAssociationResponse
-        request = postJSON
+        request = postJSON sSM
         response
           = receiveJSON
               (\ s h x ->
@@ -100,7 +99,9 @@
 instance ToJSON DescribeAssociation where
         toJSON DescribeAssociation'{..}
           = object
-              ["Name" .= _daName, "InstanceId" .= _daInstanceId]
+              (catMaybes
+                 [Just ("Name" .= _daName),
+                  Just ("InstanceId" .= _daInstanceId)])
 
 instance ToPath DescribeAssociation where
         toPath = const "/"
diff --git a/gen/Network/AWS/SSM/DescribeDocument.hs b/gen/Network/AWS/SSM/DescribeDocument.hs
--- a/gen/Network/AWS/SSM/DescribeDocument.hs
+++ b/gen/Network/AWS/SSM/DescribeDocument.hs
@@ -66,9 +66,8 @@
 ddName = lens _ddName (\ s a -> s{_ddName = a});
 
 instance AWSRequest DescribeDocument where
-        type Sv DescribeDocument = SSM
         type Rs DescribeDocument = DescribeDocumentResponse
-        request = postJSON
+        request = postJSON sSM
         response
           = receiveJSON
               (\ s h x ->
@@ -86,7 +85,7 @@
 
 instance ToJSON DescribeDocument where
         toJSON DescribeDocument'{..}
-          = object ["Name" .= _ddName]
+          = object (catMaybes [Just ("Name" .= _ddName)])
 
 instance ToPath DescribeDocument where
         toPath = const "/"
diff --git a/gen/Network/AWS/SSM/GetDocument.hs b/gen/Network/AWS/SSM/GetDocument.hs
--- a/gen/Network/AWS/SSM/GetDocument.hs
+++ b/gen/Network/AWS/SSM/GetDocument.hs
@@ -67,9 +67,8 @@
 gdName = lens _gdName (\ s a -> s{_gdName = a});
 
 instance AWSRequest GetDocument where
-        type Sv GetDocument = SSM
         type Rs GetDocument = GetDocumentResponse
-        request = postJSON
+        request = postJSON sSM
         response
           = receiveJSON
               (\ s h x ->
@@ -87,7 +86,8 @@
                     ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON GetDocument where
-        toJSON GetDocument'{..} = object ["Name" .= _gdName]
+        toJSON GetDocument'{..}
+          = object (catMaybes [Just ("Name" .= _gdName)])
 
 instance ToPath GetDocument where
         toPath = const "/"
diff --git a/gen/Network/AWS/SSM/ListAssociations.hs b/gen/Network/AWS/SSM/ListAssociations.hs
--- a/gen/Network/AWS/SSM/ListAssociations.hs
+++ b/gen/Network/AWS/SSM/ListAssociations.hs
@@ -90,9 +90,8 @@
 laAssociationFilterList = lens _laAssociationFilterList (\ s a -> s{_laAssociationFilterList = a}) . _List1;
 
 instance AWSRequest ListAssociations where
-        type Sv ListAssociations = SSM
         type Rs ListAssociations = ListAssociationsResponse
-        request = postJSON
+        request = postJSON sSM
         response
           = receiveJSON
               (\ s h x ->
@@ -113,9 +112,12 @@
 instance ToJSON ListAssociations where
         toJSON ListAssociations'{..}
           = object
-              ["NextToken" .= _laNextToken,
-               "MaxResults" .= _laMaxResults,
-               "AssociationFilterList" .= _laAssociationFilterList]
+              (catMaybes
+                 [("NextToken" .=) <$> _laNextToken,
+                  ("MaxResults" .=) <$> _laMaxResults,
+                  Just
+                    ("AssociationFilterList" .=
+                       _laAssociationFilterList)])
 
 instance ToPath ListAssociations where
         toPath = const "/"
diff --git a/gen/Network/AWS/SSM/ListDocuments.hs b/gen/Network/AWS/SSM/ListDocuments.hs
--- a/gen/Network/AWS/SSM/ListDocuments.hs
+++ b/gen/Network/AWS/SSM/ListDocuments.hs
@@ -88,9 +88,8 @@
 ldMaxResults = lens _ldMaxResults (\ s a -> s{_ldMaxResults = a}) . mapping _Nat;
 
 instance AWSRequest ListDocuments where
-        type Sv ListDocuments = SSM
         type Rs ListDocuments = ListDocumentsResponse
-        request = postJSON
+        request = postJSON sSM
         response
           = receiveJSON
               (\ s h x ->
@@ -111,9 +110,10 @@
 instance ToJSON ListDocuments where
         toJSON ListDocuments'{..}
           = object
-              ["DocumentFilterList" .= _ldDocumentFilterList,
-               "NextToken" .= _ldNextToken,
-               "MaxResults" .= _ldMaxResults]
+              (catMaybes
+                 [("DocumentFilterList" .=) <$> _ldDocumentFilterList,
+                  ("NextToken" .=) <$> _ldNextToken,
+                  ("MaxResults" .=) <$> _ldMaxResults])
 
 instance ToPath ListDocuments where
         toPath = const "/"
diff --git a/gen/Network/AWS/SSM/Types.hs b/gen/Network/AWS/SSM/Types.hs
--- a/gen/Network/AWS/SSM/Types.hs
+++ b/gen/Network/AWS/SSM/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.SSM.Types
     (
-    -- * Service
-      SSM
+    -- * Service Configuration
+      sSM
 
     -- * Errors
     , _AssociatedInstances
@@ -114,39 +113,36 @@
 import           Network.AWS.SSM.Types.Product
 import           Network.AWS.SSM.Types.Sum
 
--- | Version @2014-11-06@ of the Amazon Simple Systems Management Service SDK.
-data SSM
-
-instance AWSService SSM where
-    type Sg SSM = V4
-    service = const svc
-      where
-        svc =
-            Service
-            { _svcAbbrev = "SSM"
-            , _svcPrefix = "ssm"
-            , _svcVersion = "2014-11-06"
-            , _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-11-06' of the Amazon Simple Systems Management Service SDK configuration.
+sSM :: Service
+sSM =
+    Service
+    { _svcAbbrev = "SSM"
+    , _svcSigner = v4
+    , _svcPrefix = "ssm"
+    , _svcVersion = "2014-11-06"
+    , _svcEndpoint = defaultEndpoint sSM
+    , _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
 
 -- | You must disassociate a configuration document from all instances before
 -- you can delete it.
diff --git a/gen/Network/AWS/SSM/Types/Product.hs b/gen/Network/AWS/SSM/Types/Product.hs
--- a/gen/Network/AWS/SSM/Types/Product.hs
+++ b/gen/Network/AWS/SSM/Types/Product.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE OverloadedStrings  #-}
 {-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
@@ -150,7 +149,9 @@
 
 instance ToJSON AssociationFilter where
         toJSON AssociationFilter'{..}
-          = object ["key" .= _afKey, "value" .= _afValue]
+          = object
+              (catMaybes
+                 [Just ("key" .= _afKey), Just ("value" .= _afValue)])
 
 -- | Describes an association status.
 --
@@ -214,9 +215,10 @@
 instance ToJSON AssociationStatus where
         toJSON AssociationStatus'{..}
           = object
-              ["AdditionalInfo" .= _asAdditionalInfo,
-               "Date" .= _asDate, "Name" .= _asName,
-               "Message" .= _asMessage]
+              (catMaybes
+                 [("AdditionalInfo" .=) <$> _asAdditionalInfo,
+                  Just ("Date" .= _asDate), Just ("Name" .= _asName),
+                  Just ("Message" .= _asMessage)])
 
 -- | Describes the association of a configuration document and an instance.
 --
@@ -261,8 +263,9 @@
          where
         toJSON CreateAssociationBatchRequestEntry'{..}
           = object
-              ["InstanceId" .= _cabreInstanceId,
-               "Name" .= _cabreName]
+              (catMaybes
+                 [("InstanceId" .=) <$> _cabreInstanceId,
+                  ("Name" .=) <$> _cabreName])
 
 -- | Describes a configuration document.
 --
@@ -356,7 +359,9 @@
 
 instance ToJSON DocumentFilter where
         toJSON DocumentFilter'{..}
-          = object ["key" .= _dfKey, "value" .= _dfValue]
+          = object
+              (catMaybes
+                 [Just ("key" .= _dfKey), Just ("value" .= _dfValue)])
 
 -- | Describes the name of a configuration document.
 --
diff --git a/gen/Network/AWS/SSM/UpdateAssociationStatus.hs b/gen/Network/AWS/SSM/UpdateAssociationStatus.hs
--- a/gen/Network/AWS/SSM/UpdateAssociationStatus.hs
+++ b/gen/Network/AWS/SSM/UpdateAssociationStatus.hs
@@ -87,10 +87,9 @@
 uasAssociationStatus = lens _uasAssociationStatus (\ s a -> s{_uasAssociationStatus = a});
 
 instance AWSRequest UpdateAssociationStatus where
-        type Sv UpdateAssociationStatus = SSM
         type Rs UpdateAssociationStatus =
              UpdateAssociationStatusResponse
-        request = postJSON
+        request = postJSON sSM
         response
           = receiveJSON
               (\ s h x ->
@@ -110,8 +109,10 @@
 instance ToJSON UpdateAssociationStatus where
         toJSON UpdateAssociationStatus'{..}
           = object
-              ["Name" .= _uasName, "InstanceId" .= _uasInstanceId,
-               "AssociationStatus" .= _uasAssociationStatus]
+              (catMaybes
+                 [Just ("Name" .= _uasName),
+                  Just ("InstanceId" .= _uasInstanceId),
+                  Just ("AssociationStatus" .= _uasAssociationStatus)])
 
 instance ToPath UpdateAssociationStatus where
         toPath = const "/"
diff --git a/test/Test/AWS/Gen/SSM.hs b/test/Test/AWS/Gen/SSM.hs
--- a/test/Test/AWS/Gen/SSM.hs
+++ b/test/Test/AWS/Gen/SSM.hs
@@ -163,64 +163,75 @@
 testDescribeDocumentResponse = res
     "DescribeDocumentResponse"
     "fixture/DescribeDocumentResponse"
+    sSM
     (Proxy :: Proxy DescribeDocument)
 
 testCreateAssociationResponse :: CreateAssociationResponse -> TestTree
 testCreateAssociationResponse = res
     "CreateAssociationResponse"
     "fixture/CreateAssociationResponse"
+    sSM
     (Proxy :: Proxy CreateAssociation)
 
 testCreateDocumentResponse :: CreateDocumentResponse -> TestTree
 testCreateDocumentResponse = res
     "CreateDocumentResponse"
     "fixture/CreateDocumentResponse"
+    sSM
     (Proxy :: Proxy CreateDocument)
 
 testListDocumentsResponse :: ListDocumentsResponse -> TestTree
 testListDocumentsResponse = res
     "ListDocumentsResponse"
     "fixture/ListDocumentsResponse"
+    sSM
     (Proxy :: Proxy ListDocuments)
 
 testGetDocumentResponse :: GetDocumentResponse -> TestTree
 testGetDocumentResponse = res
     "GetDocumentResponse"
     "fixture/GetDocumentResponse"
+    sSM
     (Proxy :: Proxy GetDocument)
 
 testDescribeAssociationResponse :: DescribeAssociationResponse -> TestTree
 testDescribeAssociationResponse = res
     "DescribeAssociationResponse"
     "fixture/DescribeAssociationResponse"
+    sSM
     (Proxy :: Proxy DescribeAssociation)
 
 testUpdateAssociationStatusResponse :: UpdateAssociationStatusResponse -> TestTree
 testUpdateAssociationStatusResponse = res
     "UpdateAssociationStatusResponse"
     "fixture/UpdateAssociationStatusResponse"
+    sSM
     (Proxy :: Proxy UpdateAssociationStatus)
 
 testDeleteAssociationResponse :: DeleteAssociationResponse -> TestTree
 testDeleteAssociationResponse = res
     "DeleteAssociationResponse"
     "fixture/DeleteAssociationResponse"
+    sSM
     (Proxy :: Proxy DeleteAssociation)
 
 testListAssociationsResponse :: ListAssociationsResponse -> TestTree
 testListAssociationsResponse = res
     "ListAssociationsResponse"
     "fixture/ListAssociationsResponse"
+    sSM
     (Proxy :: Proxy ListAssociations)
 
 testDeleteDocumentResponse :: DeleteDocumentResponse -> TestTree
 testDeleteDocumentResponse = res
     "DeleteDocumentResponse"
     "fixture/DeleteDocumentResponse"
+    sSM
     (Proxy :: Proxy DeleteDocument)
 
 testCreateAssociationBatchResponse :: CreateAssociationBatchResponse -> TestTree
 testCreateAssociationBatchResponse = res
     "CreateAssociationBatchResponse"
     "fixture/CreateAssociationBatchResponse"
+    sSM
     (Proxy :: Proxy CreateAssociationBatch)
