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-datapipeline.cabal b/amazonka-datapipeline.cabal
--- a/amazonka-datapipeline.cabal
+++ b/amazonka-datapipeline.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-datapipeline
-version:               1.1.0
+version:               1.2.0
 synopsis:              Amazon Data Pipeline SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -90,7 +90,7 @@
         , Network.AWS.DataPipeline.Types.Sum
 
     build-depends:
-          amazonka-core == 1.1.0.*
+          amazonka-core == 1.2.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-datapipeline-test
@@ -109,9 +109,9 @@
         , Test.AWS.DataPipeline.Internal
 
     build-depends:
-          amazonka-core == 1.1.0
-        , amazonka-test == 1.1.0
-        , amazonka-datapipeline == 1.1.0
+          amazonka-core == 1.2.0
+        , amazonka-test == 1.2.0
+        , amazonka-datapipeline == 1.2.0
         , base
         , bytestring
         , lens
diff --git a/gen/Network/AWS/DataPipeline.hs b/gen/Network/AWS/DataPipeline.hs
--- a/gen/Network/AWS/DataPipeline.hs
+++ b/gen/Network/AWS/DataPipeline.hs
@@ -38,8 +38,8 @@
 -- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.DataPipeline
     (
-    -- * Service
-      DataPipeline
+    -- * Service Configuration
+      dataPipeline
 
     -- * Errors
     -- $errors
diff --git a/gen/Network/AWS/DataPipeline/ActivatePipeline.hs b/gen/Network/AWS/DataPipeline/ActivatePipeline.hs
--- a/gen/Network/AWS/DataPipeline/ActivatePipeline.hs
+++ b/gen/Network/AWS/DataPipeline/ActivatePipeline.hs
@@ -93,9 +93,8 @@
 apPipelineId = lens _apPipelineId (\ s a -> s{_apPipelineId = a});
 
 instance AWSRequest ActivatePipeline where
-        type Sv ActivatePipeline = DataPipeline
         type Rs ActivatePipeline = ActivatePipelineResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveEmpty
               (\ s h x ->
@@ -113,9 +112,10 @@
 instance ToJSON ActivatePipeline where
         toJSON ActivatePipeline'{..}
           = object
-              ["startTimestamp" .= _apStartTimestamp,
-               "parameterValues" .= _apParameterValues,
-               "pipelineId" .= _apPipelineId]
+              (catMaybes
+                 [("startTimestamp" .=) <$> _apStartTimestamp,
+                  ("parameterValues" .=) <$> _apParameterValues,
+                  Just ("pipelineId" .= _apPipelineId)])
 
 instance ToPath ActivatePipeline where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/AddTags.hs b/gen/Network/AWS/DataPipeline/AddTags.hs
--- a/gen/Network/AWS/DataPipeline/AddTags.hs
+++ b/gen/Network/AWS/DataPipeline/AddTags.hs
@@ -76,9 +76,8 @@
 atTags = lens _atTags (\ s a -> s{_atTags = a}) . _Coerce;
 
 instance AWSRequest AddTags where
-        type Sv AddTags = DataPipeline
         type Rs AddTags = AddTagsResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveEmpty
               (\ s h x -> AddTagsResponse' <$> (pure (fromEnum s)))
@@ -95,7 +94,9 @@
 instance ToJSON AddTags where
         toJSON AddTags'{..}
           = object
-              ["pipelineId" .= _atPipelineId, "tags" .= _atTags]
+              (catMaybes
+                 [Just ("pipelineId" .= _atPipelineId),
+                  Just ("tags" .= _atTags)])
 
 instance ToPath AddTags where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/CreatePipeline.hs b/gen/Network/AWS/DataPipeline/CreatePipeline.hs
--- a/gen/Network/AWS/DataPipeline/CreatePipeline.hs
+++ b/gen/Network/AWS/DataPipeline/CreatePipeline.hs
@@ -113,9 +113,8 @@
 cpUniqueId = lens _cpUniqueId (\ s a -> s{_cpUniqueId = a});
 
 instance AWSRequest CreatePipeline where
-        type Sv CreatePipeline = DataPipeline
         type Rs CreatePipeline = CreatePipelineResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveJSON
               (\ s h x ->
@@ -134,8 +133,10 @@
 instance ToJSON CreatePipeline where
         toJSON CreatePipeline'{..}
           = object
-              ["description" .= _cpDescription, "tags" .= _cpTags,
-               "name" .= _cpName, "uniqueId" .= _cpUniqueId]
+              (catMaybes
+                 [("description" .=) <$> _cpDescription,
+                  ("tags" .=) <$> _cpTags, Just ("name" .= _cpName),
+                  Just ("uniqueId" .= _cpUniqueId)])
 
 instance ToPath CreatePipeline where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/DeactivatePipeline.hs b/gen/Network/AWS/DataPipeline/DeactivatePipeline.hs
--- a/gen/Network/AWS/DataPipeline/DeactivatePipeline.hs
+++ b/gen/Network/AWS/DataPipeline/DeactivatePipeline.hs
@@ -83,10 +83,9 @@
 dPipelineId = lens _dPipelineId (\ s a -> s{_dPipelineId = a});
 
 instance AWSRequest DeactivatePipeline where
-        type Sv DeactivatePipeline = DataPipeline
         type Rs DeactivatePipeline =
              DeactivatePipelineResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveEmpty
               (\ s h x ->
@@ -104,8 +103,9 @@
 instance ToJSON DeactivatePipeline where
         toJSON DeactivatePipeline'{..}
           = object
-              ["cancelActive" .= _dCancelActive,
-               "pipelineId" .= _dPipelineId]
+              (catMaybes
+                 [("cancelActive" .=) <$> _dCancelActive,
+                  Just ("pipelineId" .= _dPipelineId)])
 
 instance ToPath DeactivatePipeline where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/DeletePipeline.hs b/gen/Network/AWS/DataPipeline/DeletePipeline.hs
--- a/gen/Network/AWS/DataPipeline/DeletePipeline.hs
+++ b/gen/Network/AWS/DataPipeline/DeletePipeline.hs
@@ -72,9 +72,8 @@
 dpPipelineId = lens _dpPipelineId (\ s a -> s{_dpPipelineId = a});
 
 instance AWSRequest DeletePipeline where
-        type Sv DeletePipeline = DataPipeline
         type Rs DeletePipeline = DeletePipelineResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response = receiveNull DeletePipelineResponse'
 
 instance ToHeaders DeletePipeline where
@@ -88,7 +87,8 @@
 
 instance ToJSON DeletePipeline where
         toJSON DeletePipeline'{..}
-          = object ["pipelineId" .= _dpPipelineId]
+          = object
+              (catMaybes [Just ("pipelineId" .= _dpPipelineId)])
 
 instance ToPath DeletePipeline where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/DescribeObjects.hs b/gen/Network/AWS/DataPipeline/DescribeObjects.hs
--- a/gen/Network/AWS/DataPipeline/DescribeObjects.hs
+++ b/gen/Network/AWS/DataPipeline/DescribeObjects.hs
@@ -115,9 +115,8 @@
             Just $ rq & doMarker .~ rs ^. dorsMarker
 
 instance AWSRequest DescribeObjects where
-        type Sv DescribeObjects = DataPipeline
         type Rs DescribeObjects = DescribeObjectsResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveJSON
               (\ s h x ->
@@ -138,9 +137,12 @@
 instance ToJSON DescribeObjects where
         toJSON DescribeObjects'{..}
           = object
-              ["evaluateExpressions" .= _doEvaluateExpressions,
-               "marker" .= _doMarker, "pipelineId" .= _doPipelineId,
-               "objectIds" .= _doObjectIds]
+              (catMaybes
+                 [("evaluateExpressions" .=) <$>
+                    _doEvaluateExpressions,
+                  ("marker" .=) <$> _doMarker,
+                  Just ("pipelineId" .= _doPipelineId),
+                  Just ("objectIds" .= _doObjectIds)])
 
 instance ToPath DescribeObjects where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/DescribePipelines.hs b/gen/Network/AWS/DataPipeline/DescribePipelines.hs
--- a/gen/Network/AWS/DataPipeline/DescribePipelines.hs
+++ b/gen/Network/AWS/DataPipeline/DescribePipelines.hs
@@ -78,9 +78,8 @@
 dpPipelineIds = lens _dpPipelineIds (\ s a -> s{_dpPipelineIds = a}) . _Coerce;
 
 instance AWSRequest DescribePipelines where
-        type Sv DescribePipelines = DataPipeline
         type Rs DescribePipelines = DescribePipelinesResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveJSON
               (\ s h x ->
@@ -99,7 +98,8 @@
 
 instance ToJSON DescribePipelines where
         toJSON DescribePipelines'{..}
-          = object ["pipelineIds" .= _dpPipelineIds]
+          = object
+              (catMaybes [Just ("pipelineIds" .= _dpPipelineIds)])
 
 instance ToPath DescribePipelines where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/EvaluateExpression.hs b/gen/Network/AWS/DataPipeline/EvaluateExpression.hs
--- a/gen/Network/AWS/DataPipeline/EvaluateExpression.hs
+++ b/gen/Network/AWS/DataPipeline/EvaluateExpression.hs
@@ -90,10 +90,9 @@
 eeExpression = lens _eeExpression (\ s a -> s{_eeExpression = a});
 
 instance AWSRequest EvaluateExpression where
-        type Sv EvaluateExpression = DataPipeline
         type Rs EvaluateExpression =
              EvaluateExpressionResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveJSON
               (\ s h x ->
@@ -113,9 +112,10 @@
 instance ToJSON EvaluateExpression where
         toJSON EvaluateExpression'{..}
           = object
-              ["pipelineId" .= _eePipelineId,
-               "objectId" .= _eeObjectId,
-               "expression" .= _eeExpression]
+              (catMaybes
+                 [Just ("pipelineId" .= _eePipelineId),
+                  Just ("objectId" .= _eeObjectId),
+                  Just ("expression" .= _eeExpression)])
 
 instance ToPath EvaluateExpression where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/GetPipelineDefinition.hs b/gen/Network/AWS/DataPipeline/GetPipelineDefinition.hs
--- a/gen/Network/AWS/DataPipeline/GetPipelineDefinition.hs
+++ b/gen/Network/AWS/DataPipeline/GetPipelineDefinition.hs
@@ -83,10 +83,9 @@
 gpdPipelineId = lens _gpdPipelineId (\ s a -> s{_gpdPipelineId = a});
 
 instance AWSRequest GetPipelineDefinition where
-        type Sv GetPipelineDefinition = DataPipeline
         type Rs GetPipelineDefinition =
              GetPipelineDefinitionResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveJSON
               (\ s h x ->
@@ -108,8 +107,9 @@
 instance ToJSON GetPipelineDefinition where
         toJSON GetPipelineDefinition'{..}
           = object
-              ["version" .= _gpdVersion,
-               "pipelineId" .= _gpdPipelineId]
+              (catMaybes
+                 [("version" .=) <$> _gpdVersion,
+                  Just ("pipelineId" .= _gpdPipelineId)])
 
 instance ToPath GetPipelineDefinition where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/ListPipelines.hs b/gen/Network/AWS/DataPipeline/ListPipelines.hs
--- a/gen/Network/AWS/DataPipeline/ListPipelines.hs
+++ b/gen/Network/AWS/DataPipeline/ListPipelines.hs
@@ -83,9 +83,8 @@
             Just $ rq & lpMarker .~ rs ^. lprsMarker
 
 instance AWSRequest ListPipelines where
-        type Sv ListPipelines = DataPipeline
         type Rs ListPipelines = ListPipelinesResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveJSON
               (\ s h x ->
@@ -105,7 +104,7 @@
 
 instance ToJSON ListPipelines where
         toJSON ListPipelines'{..}
-          = object ["marker" .= _lpMarker]
+          = object (catMaybes [("marker" .=) <$> _lpMarker])
 
 instance ToPath ListPipelines where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/PollForTask.hs b/gen/Network/AWS/DataPipeline/PollForTask.hs
--- a/gen/Network/AWS/DataPipeline/PollForTask.hs
+++ b/gen/Network/AWS/DataPipeline/PollForTask.hs
@@ -112,9 +112,8 @@
 pftWorkerGroup = lens _pftWorkerGroup (\ s a -> s{_pftWorkerGroup = a});
 
 instance AWSRequest PollForTask where
-        type Sv PollForTask = DataPipeline
         type Rs PollForTask = PollForTaskResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveJSON
               (\ s h x ->
@@ -133,9 +132,10 @@
 instance ToJSON PollForTask where
         toJSON PollForTask'{..}
           = object
-              ["hostname" .= _pftHostname,
-               "instanceIdentity" .= _pftInstanceIdentity,
-               "workerGroup" .= _pftWorkerGroup]
+              (catMaybes
+                 [("hostname" .=) <$> _pftHostname,
+                  ("instanceIdentity" .=) <$> _pftInstanceIdentity,
+                  Just ("workerGroup" .= _pftWorkerGroup)])
 
 instance ToPath PollForTask where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/PutPipelineDefinition.hs b/gen/Network/AWS/DataPipeline/PutPipelineDefinition.hs
--- a/gen/Network/AWS/DataPipeline/PutPipelineDefinition.hs
+++ b/gen/Network/AWS/DataPipeline/PutPipelineDefinition.hs
@@ -112,10 +112,9 @@
 ppdPipelineObjects = lens _ppdPipelineObjects (\ s a -> s{_ppdPipelineObjects = a}) . _Coerce;
 
 instance AWSRequest PutPipelineDefinition where
-        type Sv PutPipelineDefinition = DataPipeline
         type Rs PutPipelineDefinition =
              PutPipelineDefinitionResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveJSON
               (\ s h x ->
@@ -137,10 +136,11 @@
 instance ToJSON PutPipelineDefinition where
         toJSON PutPipelineDefinition'{..}
           = object
-              ["parameterObjects" .= _ppdParameterObjects,
-               "parameterValues" .= _ppdParameterValues,
-               "pipelineId" .= _ppdPipelineId,
-               "pipelineObjects" .= _ppdPipelineObjects]
+              (catMaybes
+                 [("parameterObjects" .=) <$> _ppdParameterObjects,
+                  ("parameterValues" .=) <$> _ppdParameterValues,
+                  Just ("pipelineId" .= _ppdPipelineId),
+                  Just ("pipelineObjects" .= _ppdPipelineObjects)])
 
 instance ToPath PutPipelineDefinition where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/QueryObjects.hs b/gen/Network/AWS/DataPipeline/QueryObjects.hs
--- a/gen/Network/AWS/DataPipeline/QueryObjects.hs
+++ b/gen/Network/AWS/DataPipeline/QueryObjects.hs
@@ -126,9 +126,8 @@
             Just $ rq & qoMarker .~ rs ^. qorsMarker
 
 instance AWSRequest QueryObjects where
-        type Sv QueryObjects = DataPipeline
         type Rs QueryObjects = QueryObjectsResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveJSON
               (\ s h x ->
@@ -149,9 +148,12 @@
 instance ToJSON QueryObjects where
         toJSON QueryObjects'{..}
           = object
-              ["query" .= _qoQuery, "marker" .= _qoMarker,
-               "limit" .= _qoLimit, "pipelineId" .= _qoPipelineId,
-               "sphere" .= _qoSphere]
+              (catMaybes
+                 [("query" .=) <$> _qoQuery,
+                  ("marker" .=) <$> _qoMarker,
+                  ("limit" .=) <$> _qoLimit,
+                  Just ("pipelineId" .= _qoPipelineId),
+                  Just ("sphere" .= _qoSphere)])
 
 instance ToPath QueryObjects where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/RemoveTags.hs b/gen/Network/AWS/DataPipeline/RemoveTags.hs
--- a/gen/Network/AWS/DataPipeline/RemoveTags.hs
+++ b/gen/Network/AWS/DataPipeline/RemoveTags.hs
@@ -76,9 +76,8 @@
 rtTagKeys = lens _rtTagKeys (\ s a -> s{_rtTagKeys = a}) . _Coerce;
 
 instance AWSRequest RemoveTags where
-        type Sv RemoveTags = DataPipeline
         type Rs RemoveTags = RemoveTagsResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveEmpty
               (\ s h x ->
@@ -96,8 +95,9 @@
 instance ToJSON RemoveTags where
         toJSON RemoveTags'{..}
           = object
-              ["pipelineId" .= _rtPipelineId,
-               "tagKeys" .= _rtTagKeys]
+              (catMaybes
+                 [Just ("pipelineId" .= _rtPipelineId),
+                  Just ("tagKeys" .= _rtTagKeys)])
 
 instance ToPath RemoveTags where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/ReportTaskProgress.hs b/gen/Network/AWS/DataPipeline/ReportTaskProgress.hs
--- a/gen/Network/AWS/DataPipeline/ReportTaskProgress.hs
+++ b/gen/Network/AWS/DataPipeline/ReportTaskProgress.hs
@@ -90,10 +90,9 @@
 rtpTaskId = lens _rtpTaskId (\ s a -> s{_rtpTaskId = a});
 
 instance AWSRequest ReportTaskProgress where
-        type Sv ReportTaskProgress = DataPipeline
         type Rs ReportTaskProgress =
              ReportTaskProgressResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveJSON
               (\ s h x ->
@@ -112,7 +111,9 @@
 instance ToJSON ReportTaskProgress where
         toJSON ReportTaskProgress'{..}
           = object
-              ["fields" .= _rtpFields, "taskId" .= _rtpTaskId]
+              (catMaybes
+                 [("fields" .=) <$> _rtpFields,
+                  Just ("taskId" .= _rtpTaskId)])
 
 instance ToPath ReportTaskProgress where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/ReportTaskRunnerHeartbeat.hs b/gen/Network/AWS/DataPipeline/ReportTaskRunnerHeartbeat.hs
--- a/gen/Network/AWS/DataPipeline/ReportTaskRunnerHeartbeat.hs
+++ b/gen/Network/AWS/DataPipeline/ReportTaskRunnerHeartbeat.hs
@@ -99,10 +99,9 @@
 rtrhTaskrunnerId = lens _rtrhTaskrunnerId (\ s a -> s{_rtrhTaskrunnerId = a});
 
 instance AWSRequest ReportTaskRunnerHeartbeat where
-        type Sv ReportTaskRunnerHeartbeat = DataPipeline
         type Rs ReportTaskRunnerHeartbeat =
              ReportTaskRunnerHeartbeatResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveJSON
               (\ s h x ->
@@ -122,9 +121,10 @@
 instance ToJSON ReportTaskRunnerHeartbeat where
         toJSON ReportTaskRunnerHeartbeat'{..}
           = object
-              ["hostname" .= _rtrhHostname,
-               "workerGroup" .= _rtrhWorkerGroup,
-               "taskrunnerId" .= _rtrhTaskrunnerId]
+              (catMaybes
+                 [("hostname" .=) <$> _rtrhHostname,
+                  ("workerGroup" .=) <$> _rtrhWorkerGroup,
+                  Just ("taskrunnerId" .= _rtrhTaskrunnerId)])
 
 instance ToPath ReportTaskRunnerHeartbeat where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/SetStatus.hs b/gen/Network/AWS/DataPipeline/SetStatus.hs
--- a/gen/Network/AWS/DataPipeline/SetStatus.hs
+++ b/gen/Network/AWS/DataPipeline/SetStatus.hs
@@ -92,9 +92,8 @@
 ssStatus = lens _ssStatus (\ s a -> s{_ssStatus = a});
 
 instance AWSRequest SetStatus where
-        type Sv SetStatus = DataPipeline
         type Rs SetStatus = SetStatusResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response = receiveNull SetStatusResponse'
 
 instance ToHeaders SetStatus where
@@ -109,8 +108,10 @@
 instance ToJSON SetStatus where
         toJSON SetStatus'{..}
           = object
-              ["pipelineId" .= _ssPipelineId,
-               "objectIds" .= _ssObjectIds, "status" .= _ssStatus]
+              (catMaybes
+                 [Just ("pipelineId" .= _ssPipelineId),
+                  Just ("objectIds" .= _ssObjectIds),
+                  Just ("status" .= _ssStatus)])
 
 instance ToPath SetStatus where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/SetTaskStatus.hs b/gen/Network/AWS/DataPipeline/SetTaskStatus.hs
--- a/gen/Network/AWS/DataPipeline/SetTaskStatus.hs
+++ b/gen/Network/AWS/DataPipeline/SetTaskStatus.hs
@@ -119,9 +119,8 @@
 stsTaskStatus = lens _stsTaskStatus (\ s a -> s{_stsTaskStatus = a});
 
 instance AWSRequest SetTaskStatus where
-        type Sv SetTaskStatus = DataPipeline
         type Rs SetTaskStatus = SetTaskStatusResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveEmpty
               (\ s h x ->
@@ -139,11 +138,12 @@
 instance ToJSON SetTaskStatus where
         toJSON SetTaskStatus'{..}
           = object
-              ["errorStackTrace" .= _stsErrorStackTrace,
-               "errorId" .= _stsErrorId,
-               "errorMessage" .= _stsErrorMessage,
-               "taskId" .= _stsTaskId,
-               "taskStatus" .= _stsTaskStatus]
+              (catMaybes
+                 [("errorStackTrace" .=) <$> _stsErrorStackTrace,
+                  ("errorId" .=) <$> _stsErrorId,
+                  ("errorMessage" .=) <$> _stsErrorMessage,
+                  Just ("taskId" .= _stsTaskId),
+                  Just ("taskStatus" .= _stsTaskStatus)])
 
 instance ToPath SetTaskStatus where
         toPath = const "/"
diff --git a/gen/Network/AWS/DataPipeline/Types.hs b/gen/Network/AWS/DataPipeline/Types.hs
--- a/gen/Network/AWS/DataPipeline/Types.hs
+++ b/gen/Network/AWS/DataPipeline/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.DataPipeline.Types
     (
-    -- * Service
-      DataPipeline
+    -- * Service Configuration
+      dataPipeline
 
     -- * Errors
     , _InvalidRequestException
@@ -131,39 +130,36 @@
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
--- | Version @2012-10-29@ of the Amazon Data Pipeline SDK.
-data DataPipeline
-
-instance AWSService DataPipeline where
-    type Sg DataPipeline = V4
-    service = const svc
-      where
-        svc =
-            Service
-            { _svcAbbrev = "DataPipeline"
-            , _svcPrefix = "datapipeline"
-            , _svcVersion = "2012-10-29"
-            , _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 '2012-10-29' of the Amazon Data Pipeline SDK configuration.
+dataPipeline :: Service
+dataPipeline =
+    Service
+    { _svcAbbrev = "DataPipeline"
+    , _svcSigner = v4
+    , _svcPrefix = "datapipeline"
+    , _svcVersion = "2012-10-29"
+    , _svcEndpoint = defaultEndpoint dataPipeline
+    , _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
 
 -- | The request was not valid. Verify that your request was properly
 -- formatted, that the signature was generated with the correct
diff --git a/gen/Network/AWS/DataPipeline/Types/Product.hs b/gen/Network/AWS/DataPipeline/Types/Product.hs
--- a/gen/Network/AWS/DataPipeline/Types/Product.hs
+++ b/gen/Network/AWS/DataPipeline/Types/Product.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE OverloadedStrings  #-}
 {-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
@@ -74,8 +73,10 @@
 instance ToJSON Field where
         toJSON Field'{..}
           = object
-              ["refValue" .= _fRefValue,
-               "stringValue" .= _fStringValue, "key" .= _fKey]
+              (catMaybes
+                 [("refValue" .=) <$> _fRefValue,
+                  ("stringValue" .=) <$> _fStringValue,
+                  Just ("key" .= _fKey)])
 
 -- | Identity information for the EC2 instance that is hosting the task
 -- runner. You can get this value by calling a metadata URI from the EC2
@@ -121,8 +122,9 @@
 instance ToJSON InstanceIdentity where
         toJSON InstanceIdentity'{..}
           = object
-              ["signature" .= _iiSignature,
-               "document" .= _iiDocument]
+              (catMaybes
+                 [("signature" .=) <$> _iiSignature,
+                  ("document" .=) <$> _iiDocument])
 
 -- | Contains a logical operation for comparing the value of a field with a
 -- specified value.
@@ -190,7 +192,9 @@
 
 instance ToJSON Operator where
         toJSON Operator'{..}
-          = object ["values" .= _oValues, "type" .= _oType]
+          = object
+              (catMaybes
+                 [("values" .=) <$> _oValues, ("type" .=) <$> _oType])
 
 -- | The attributes allowed or specified with a parameter object.
 --
@@ -235,7 +239,9 @@
 instance ToJSON ParameterAttribute where
         toJSON ParameterAttribute'{..}
           = object
-              ["key" .= _paKey, "stringValue" .= _paStringValue]
+              (catMaybes
+                 [Just ("key" .= _paKey),
+                  Just ("stringValue" .= _paStringValue)])
 
 -- | Contains information about a parameter object.
 --
@@ -279,7 +285,9 @@
 instance ToJSON ParameterObject where
         toJSON ParameterObject'{..}
           = object
-              ["id" .= _poId, "attributes" .= _poAttributes]
+              (catMaybes
+                 [Just ("id" .= _poId),
+                  Just ("attributes" .= _poAttributes)])
 
 -- | A value or list of parameter values.
 --
@@ -324,7 +332,9 @@
 instance ToJSON ParameterValue where
         toJSON ParameterValue'{..}
           = object
-              ["id" .= _pvId, "stringValue" .= _pvStringValue]
+              (catMaybes
+                 [Just ("id" .= _pvId),
+                  Just ("stringValue" .= _pvStringValue)])
 
 -- | Contains pipeline metadata.
 --
@@ -490,8 +500,9 @@
 instance ToJSON PipelineObject where
         toJSON PipelineObject'{..}
           = object
-              ["id" .= _pId, "name" .= _pName,
-               "fields" .= _pFields]
+              (catMaybes
+                 [Just ("id" .= _pId), Just ("name" .= _pName),
+                  Just ("fields" .= _pFields)])
 
 -- | Defines the query to run against an object.
 --
@@ -519,7 +530,8 @@
 
 instance ToJSON Query where
         toJSON Query'{..}
-          = object ["selectors" .= _qSelectors]
+          = object
+              (catMaybes [("selectors" .=) <$> _qSelectors])
 
 -- | A comparision that is used to determine whether a query should return
 -- this object.
@@ -559,8 +571,9 @@
 instance ToJSON Selector where
         toJSON Selector'{..}
           = object
-              ["operator" .= _sOperator,
-               "fieldName" .= _sFieldName]
+              (catMaybes
+                 [("operator" .=) <$> _sOperator,
+                  ("fieldName" .=) <$> _sFieldName])
 
 -- | Tags are key\/value pairs defined by a user and associated with a
 -- pipeline to control access. AWS Data Pipeline allows you to associate
@@ -611,7 +624,10 @@
 
 instance ToJSON Tag where
         toJSON Tag'{..}
-          = object ["key" .= _tagKey, "value" .= _tagValue]
+          = object
+              (catMaybes
+                 [Just ("key" .= _tagKey),
+                  Just ("value" .= _tagValue)])
 
 -- | Contains information about a pipeline task that is assigned to a task
 -- runner.
diff --git a/gen/Network/AWS/DataPipeline/ValidatePipelineDefinition.hs b/gen/Network/AWS/DataPipeline/ValidatePipelineDefinition.hs
--- a/gen/Network/AWS/DataPipeline/ValidatePipelineDefinition.hs
+++ b/gen/Network/AWS/DataPipeline/ValidatePipelineDefinition.hs
@@ -99,10 +99,9 @@
 vpdPipelineObjects = lens _vpdPipelineObjects (\ s a -> s{_vpdPipelineObjects = a}) . _Coerce;
 
 instance AWSRequest ValidatePipelineDefinition where
-        type Sv ValidatePipelineDefinition = DataPipeline
         type Rs ValidatePipelineDefinition =
              ValidatePipelineDefinitionResponse
-        request = postJSON
+        request = postJSON dataPipeline
         response
           = receiveJSON
               (\ s h x ->
@@ -125,10 +124,11 @@
 instance ToJSON ValidatePipelineDefinition where
         toJSON ValidatePipelineDefinition'{..}
           = object
-              ["parameterObjects" .= _vpdParameterObjects,
-               "parameterValues" .= _vpdParameterValues,
-               "pipelineId" .= _vpdPipelineId,
-               "pipelineObjects" .= _vpdPipelineObjects]
+              (catMaybes
+                 [("parameterObjects" .=) <$> _vpdParameterObjects,
+                  ("parameterValues" .=) <$> _vpdParameterValues,
+                  Just ("pipelineId" .= _vpdPipelineId),
+                  Just ("pipelineObjects" .= _vpdPipelineObjects)])
 
 instance ToPath ValidatePipelineDefinition where
         toPath = const "/"
diff --git a/test/Test/AWS/Gen/DataPipeline.hs b/test/Test/AWS/Gen/DataPipeline.hs
--- a/test/Test/AWS/Gen/DataPipeline.hs
+++ b/test/Test/AWS/Gen/DataPipeline.hs
@@ -251,112 +251,131 @@
 testDescribePipelinesResponse = res
     "DescribePipelinesResponse"
     "fixture/DescribePipelinesResponse"
+    dataPipeline
     (Proxy :: Proxy DescribePipelines)
 
 testQueryObjectsResponse :: QueryObjectsResponse -> TestTree
 testQueryObjectsResponse = res
     "QueryObjectsResponse"
     "fixture/QueryObjectsResponse"
+    dataPipeline
     (Proxy :: Proxy QueryObjects)
 
 testRemoveTagsResponse :: RemoveTagsResponse -> TestTree
 testRemoveTagsResponse = res
     "RemoveTagsResponse"
     "fixture/RemoveTagsResponse"
+    dataPipeline
     (Proxy :: Proxy RemoveTags)
 
 testDeletePipelineResponse :: DeletePipelineResponse -> TestTree
 testDeletePipelineResponse = res
     "DeletePipelineResponse"
     "fixture/DeletePipelineResponse"
+    dataPipeline
     (Proxy :: Proxy DeletePipeline)
 
 testListPipelinesResponse :: ListPipelinesResponse -> TestTree
 testListPipelinesResponse = res
     "ListPipelinesResponse"
     "fixture/ListPipelinesResponse"
+    dataPipeline
     (Proxy :: Proxy ListPipelines)
 
 testGetPipelineDefinitionResponse :: GetPipelineDefinitionResponse -> TestTree
 testGetPipelineDefinitionResponse = res
     "GetPipelineDefinitionResponse"
     "fixture/GetPipelineDefinitionResponse"
+    dataPipeline
     (Proxy :: Proxy GetPipelineDefinition)
 
 testPollForTaskResponse :: PollForTaskResponse -> TestTree
 testPollForTaskResponse = res
     "PollForTaskResponse"
     "fixture/PollForTaskResponse"
+    dataPipeline
     (Proxy :: Proxy PollForTask)
 
 testEvaluateExpressionResponse :: EvaluateExpressionResponse -> TestTree
 testEvaluateExpressionResponse = res
     "EvaluateExpressionResponse"
     "fixture/EvaluateExpressionResponse"
+    dataPipeline
     (Proxy :: Proxy EvaluateExpression)
 
 testDeactivatePipelineResponse :: DeactivatePipelineResponse -> TestTree
 testDeactivatePipelineResponse = res
     "DeactivatePipelineResponse"
     "fixture/DeactivatePipelineResponse"
+    dataPipeline
     (Proxy :: Proxy DeactivatePipeline)
 
 testAddTagsResponse :: AddTagsResponse -> TestTree
 testAddTagsResponse = res
     "AddTagsResponse"
     "fixture/AddTagsResponse"
+    dataPipeline
     (Proxy :: Proxy AddTags)
 
 testDescribeObjectsResponse :: DescribeObjectsResponse -> TestTree
 testDescribeObjectsResponse = res
     "DescribeObjectsResponse"
     "fixture/DescribeObjectsResponse"
+    dataPipeline
     (Proxy :: Proxy DescribeObjects)
 
 testReportTaskRunnerHeartbeatResponse :: ReportTaskRunnerHeartbeatResponse -> TestTree
 testReportTaskRunnerHeartbeatResponse = res
     "ReportTaskRunnerHeartbeatResponse"
     "fixture/ReportTaskRunnerHeartbeatResponse"
+    dataPipeline
     (Proxy :: Proxy ReportTaskRunnerHeartbeat)
 
 testActivatePipelineResponse :: ActivatePipelineResponse -> TestTree
 testActivatePipelineResponse = res
     "ActivatePipelineResponse"
     "fixture/ActivatePipelineResponse"
+    dataPipeline
     (Proxy :: Proxy ActivatePipeline)
 
 testSetTaskStatusResponse :: SetTaskStatusResponse -> TestTree
 testSetTaskStatusResponse = res
     "SetTaskStatusResponse"
     "fixture/SetTaskStatusResponse"
+    dataPipeline
     (Proxy :: Proxy SetTaskStatus)
 
 testReportTaskProgressResponse :: ReportTaskProgressResponse -> TestTree
 testReportTaskProgressResponse = res
     "ReportTaskProgressResponse"
     "fixture/ReportTaskProgressResponse"
+    dataPipeline
     (Proxy :: Proxy ReportTaskProgress)
 
 testCreatePipelineResponse :: CreatePipelineResponse -> TestTree
 testCreatePipelineResponse = res
     "CreatePipelineResponse"
     "fixture/CreatePipelineResponse"
+    dataPipeline
     (Proxy :: Proxy CreatePipeline)
 
 testSetStatusResponse :: SetStatusResponse -> TestTree
 testSetStatusResponse = res
     "SetStatusResponse"
     "fixture/SetStatusResponse"
+    dataPipeline
     (Proxy :: Proxy SetStatus)
 
 testPutPipelineDefinitionResponse :: PutPipelineDefinitionResponse -> TestTree
 testPutPipelineDefinitionResponse = res
     "PutPipelineDefinitionResponse"
     "fixture/PutPipelineDefinitionResponse"
+    dataPipeline
     (Proxy :: Proxy PutPipelineDefinition)
 
 testValidatePipelineDefinitionResponse :: ValidatePipelineDefinitionResponse -> TestTree
 testValidatePipelineDefinitionResponse = res
     "ValidatePipelineDefinitionResponse"
     "fixture/ValidatePipelineDefinitionResponse"
+    dataPipeline
     (Proxy :: Proxy ValidatePipelineDefinition)
