diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,21 +1,53 @@
 # Amazon Data Pipeline SDK
 
-> _Warning:_ This is an experimental preview release which is still under heavy development and not intended for public consumption, _caveat emptor_!
-
+* [Version](#version)
 * [Description](#description)
 * [Contribute](#contribute)
 * [Licence](#licence)
 
+
+## Version
+
+`1.0.0`
+
+
 ## Description
 
-AWS Data Pipeline is a web service that you can use to automate the movement
-and transformation of data. With AWS Data Pipeline, you can define
-data-driven workflows, so that tasks can be dependent on the successful
-completion of previous tasks.
+AWS Data Pipeline configures and manages a data-driven workflow called a
+pipeline. AWS Data Pipeline handles the details of scheduling and
+ensuring that data dependencies are met so that your application can
+focus on processing the data.
 
+AWS Data Pipeline provides a JAR implementation of a task runner called
+AWS Data Pipeline Task Runner. AWS Data Pipeline Task Runner provides
+logic for common data management scenarios, such as performing database
+queries and running data analysis using Amazon Elastic MapReduce (Amazon
+EMR). You can use AWS Data Pipeline Task Runner as your task runner, or
+you can write your own task runner to provide custom data management.
+
+AWS Data Pipeline implements two main sets of functionality. Use the
+first set to create a pipeline and define data sources, schedules,
+dependencies, and the transforms to be performed on the data. Use the
+second set in your task runner application to receive the next task
+ready for processing. The logic for performing the task, such as
+querying the data, running data analysis, or converting the data from
+one format to another, is contained within the task runner. The task
+runner performs the task assigned to it by the web service, reporting
+progress to the web service as it does so. When the task is done, the
+task runner reports the final success or failure of the task to the web
+service.
+
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-datapipeline)
 and the [AWS API Reference](http://docs.aws.amazon.com/datapipeline/latest/APIReference/Welcome.html).
 
+The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
+which provides mechanisms for specifying AuthN/AuthZ information and sending requests.
+
+Use of lenses is required for constructing and manipulating types.
+This is due to the amount of nesting of AWS types and transparency regarding
+de/serialisation into more palatable Haskell values.
+The provided lenses should be compatible with any of the major lens libraries
+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
 
 ## Contribute
 
diff --git a/amazonka-datapipeline.cabal b/amazonka-datapipeline.cabal
--- a/amazonka-datapipeline.cabal
+++ b/amazonka-datapipeline.cabal
@@ -1,28 +1,55 @@
 name:                  amazonka-datapipeline
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon Data Pipeline SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2014 Brendan Hay
+copyright:             Copyright (c) 2013-2015 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 extra-source-files:    README.md
 cabal-version:         >= 1.10
 
 description:
-    AWS Data Pipeline is a web service that you can use to automate the movement
-    and transformation of data. With AWS Data Pipeline, you can define
-    data-driven workflows, so that tasks can be dependent on the successful
-    completion of previous tasks.
+    AWS Data Pipeline configures and manages a data-driven workflow called a
+    pipeline. AWS Data Pipeline handles the details of scheduling and
+    ensuring that data dependencies are met so that your application can
+    focus on processing the data.
 
+    AWS Data Pipeline provides a JAR implementation of a task runner called
+    AWS Data Pipeline Task Runner. AWS Data Pipeline Task Runner provides
+    logic for common data management scenarios, such as performing database
+    queries and running data analysis using Amazon Elastic MapReduce (Amazon
+    EMR). You can use AWS Data Pipeline Task Runner as your task runner, or
+    you can write your own task runner to provide custom data management.
+
+    AWS Data Pipeline implements two main sets of functionality. Use the
+    first set to create a pipeline and define data sources, schedules,
+    dependencies, and the transforms to be performed on the data. Use the
+    second set in your task runner application to receive the next task
+    ready for processing. The logic for performing the task, such as
+    querying the data, running data analysis, or converting the data from
+    one format to another, is contained within the task runner. The task
+    runner performs the task assigned to it by the web service, reporting
+    progress to the web service as it does so. When the task is done, the
+    task runner reports the final success or failure of the task to the web
+    service.
     .
-    /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/Welcome.html AWS API Reference>
+    The types from this library are intended to be used with
+    <http://hackage.haskell.org/package/amazonka amazonka>, which provides
+    mechanisms for specifying AuthN/AuthZ information and sending requests.
     .
-    /Warning:/ This is an experimental preview release which is still under
-    heavy development and not intended for public consumption, caveat emptor!
+    Use of lenses is required for constructing and manipulating types.
+    This is due to the amount of nesting of AWS types and transparency regarding
+    de/serialisation into more palatable Haskell values.
+    The provided lenses should be compatible with any of the major lens libraries
+    such as <http://hackage.haskell.org/package/lens lens> or
+    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
+    .
+    See "Network.AWS.DataPipeline" and the <http://docs.aws.amazon.com/datapipeline/latest/APIReference/Welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -56,9 +83,40 @@
         , Network.AWS.DataPipeline.SetTaskStatus
         , Network.AWS.DataPipeline.Types
         , Network.AWS.DataPipeline.ValidatePipelineDefinition
+        , Network.AWS.DataPipeline.Waiters
 
     other-modules:
+          Network.AWS.DataPipeline.Types.Product
+        , Network.AWS.DataPipeline.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-datapipeline-test
+    type:              exitcode-stdio-1.0
+    default-language:  Haskell2010
+    hs-source-dirs:    test
+    main-is:           Main.hs
+
+    ghc-options:       -Wall -threaded
+
+    -- This is not comprehensive if modules have manually been added.
+    -- It exists to ensure cabal 'somewhat' detects test module changes.
+    other-modules:
+          Test.AWS.DataPipeline
+        , Test.AWS.Gen.DataPipeline
+        , Test.AWS.DataPipeline.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-datapipeline == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
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
@@ -1,59 +1,280 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | AWS Data Pipeline is a web service that you can use to automate the movement
--- and transformation of data. With AWS Data Pipeline, you can define
--- data-driven workflows, so that tasks can be dependent on the successful
--- completion of previous tasks.
+-- AWS Data Pipeline configures and manages a data-driven workflow called a
+-- pipeline. AWS Data Pipeline handles the details of scheduling and
+-- ensuring that data dependencies are met so that your application can
+-- focus on processing the data.
+--
+-- AWS Data Pipeline provides a JAR implementation of a task runner called
+-- AWS Data Pipeline Task Runner. AWS Data Pipeline Task Runner provides
+-- logic for common data management scenarios, such as performing database
+-- queries and running data analysis using Amazon Elastic MapReduce (Amazon
+-- EMR). You can use AWS Data Pipeline Task Runner as your task runner, or
+-- you can write your own task runner to provide custom data management.
+--
+-- AWS Data Pipeline implements two main sets of functionality. Use the
+-- first set to create a pipeline and define data sources, schedules,
+-- dependencies, and the transforms to be performed on the data. Use the
+-- second set in your task runner application to receive the next task
+-- ready for processing. The logic for performing the task, such as
+-- querying the data, running data analysis, or converting the data from
+-- one format to another, is contained within the task runner. The task
+-- runner performs the task assigned to it by the web service, reporting
+-- progress to the web service as it does so. When the task is done, the
+-- task runner reports the final success or failure of the task to the web
+-- service.
+--
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.DataPipeline
-    ( module Network.AWS.DataPipeline.ActivatePipeline
-    , module Network.AWS.DataPipeline.AddTags
-    , module Network.AWS.DataPipeline.CreatePipeline
-    , module Network.AWS.DataPipeline.DeactivatePipeline
-    , module Network.AWS.DataPipeline.DeletePipeline
-    , module Network.AWS.DataPipeline.DescribeObjects
+    (
+    -- * Service
+      DataPipeline
+
+    -- * Errors
+    -- $errors
+
+    -- ** InvalidRequestException
+    , _InvalidRequestException
+
+    -- ** InternalServiceError
+    , _InternalServiceError
+
+    -- ** PipelineDeletedException
+    , _PipelineDeletedException
+
+    -- ** PipelineNotFoundException
+    , _PipelineNotFoundException
+
+    -- ** TaskNotFoundException
+    , _TaskNotFoundException
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** DescribePipelines
     , module Network.AWS.DataPipeline.DescribePipelines
-    , module Network.AWS.DataPipeline.EvaluateExpression
-    , module Network.AWS.DataPipeline.GetPipelineDefinition
-    , module Network.AWS.DataPipeline.ListPipelines
-    , module Network.AWS.DataPipeline.PollForTask
-    , module Network.AWS.DataPipeline.PutPipelineDefinition
+
+    -- ** QueryObjects (Paginated)
     , module Network.AWS.DataPipeline.QueryObjects
+
+    -- ** RemoveTags
     , module Network.AWS.DataPipeline.RemoveTags
-    , module Network.AWS.DataPipeline.ReportTaskProgress
+
+    -- ** DeletePipeline
+    , module Network.AWS.DataPipeline.DeletePipeline
+
+    -- ** ListPipelines (Paginated)
+    , module Network.AWS.DataPipeline.ListPipelines
+
+    -- ** GetPipelineDefinition
+    , module Network.AWS.DataPipeline.GetPipelineDefinition
+
+    -- ** PollForTask
+    , module Network.AWS.DataPipeline.PollForTask
+
+    -- ** EvaluateExpression
+    , module Network.AWS.DataPipeline.EvaluateExpression
+
+    -- ** DeactivatePipeline
+    , module Network.AWS.DataPipeline.DeactivatePipeline
+
+    -- ** AddTags
+    , module Network.AWS.DataPipeline.AddTags
+
+    -- ** DescribeObjects (Paginated)
+    , module Network.AWS.DataPipeline.DescribeObjects
+
+    -- ** ReportTaskRunnerHeartbeat
     , module Network.AWS.DataPipeline.ReportTaskRunnerHeartbeat
-    , module Network.AWS.DataPipeline.SetStatus
+
+    -- ** ActivatePipeline
+    , module Network.AWS.DataPipeline.ActivatePipeline
+
+    -- ** SetTaskStatus
     , module Network.AWS.DataPipeline.SetTaskStatus
-    , module Network.AWS.DataPipeline.Types
+
+    -- ** ReportTaskProgress
+    , module Network.AWS.DataPipeline.ReportTaskProgress
+
+    -- ** CreatePipeline
+    , module Network.AWS.DataPipeline.CreatePipeline
+
+    -- ** SetStatus
+    , module Network.AWS.DataPipeline.SetStatus
+
+    -- ** PutPipelineDefinition
+    , module Network.AWS.DataPipeline.PutPipelineDefinition
+
+    -- ** ValidatePipelineDefinition
     , module Network.AWS.DataPipeline.ValidatePipelineDefinition
+
+    -- * Types
+
+    -- ** OperatorType
+    , OperatorType (..)
+
+    -- ** TaskStatus
+    , TaskStatus (..)
+
+    -- ** Field
+    , Field
+    , field
+    , fRefValue
+    , fStringValue
+    , fKey
+
+    -- ** InstanceIdentity
+    , InstanceIdentity
+    , instanceIdentity
+    , iiSignature
+    , iiDocument
+
+    -- ** Operator
+    , Operator
+    , operator
+    , oValues
+    , oType
+
+    -- ** ParameterAttribute
+    , ParameterAttribute
+    , parameterAttribute
+    , paKey
+    , paStringValue
+
+    -- ** ParameterObject
+    , ParameterObject
+    , parameterObject
+    , poId
+    , poAttributes
+
+    -- ** ParameterValue
+    , ParameterValue
+    , parameterValue
+    , pvId
+    , pvStringValue
+
+    -- ** PipelineDescription
+    , PipelineDescription
+    , pipelineDescription
+    , pdDescription
+    , pdTags
+    , pdPipelineId
+    , pdName
+    , pdFields
+
+    -- ** PipelineIdName
+    , PipelineIdName
+    , pipelineIdName
+    , pinName
+    , pinId
+
+    -- ** PipelineObject
+    , PipelineObject
+    , pipelineObject
+    , pId
+    , pName
+    , pFields
+
+    -- ** Query
+    , Query
+    , query
+    , qSelectors
+
+    -- ** Selector
+    , Selector
+    , selector
+    , sOperator
+    , sFieldName
+
+    -- ** Tag
+    , Tag
+    , tag
+    , tagKey
+    , tagValue
+
+    -- ** TaskObject
+    , TaskObject
+    , taskObject
+    , toPipelineId
+    , toTaskId
+    , toAttemptId
+    , toObjects
+
+    -- ** ValidationError
+    , ValidationError
+    , validationError
+    , veId
+    , veErrors
+
+    -- ** ValidationWarning
+    , ValidationWarning
+    , validationWarning
+    , vwWarnings
+    , vwId
     ) where
 
-import Network.AWS.DataPipeline.ActivatePipeline
-import Network.AWS.DataPipeline.AddTags
-import Network.AWS.DataPipeline.CreatePipeline
-import Network.AWS.DataPipeline.DeactivatePipeline
-import Network.AWS.DataPipeline.DeletePipeline
-import Network.AWS.DataPipeline.DescribeObjects
-import Network.AWS.DataPipeline.DescribePipelines
-import Network.AWS.DataPipeline.EvaluateExpression
-import Network.AWS.DataPipeline.GetPipelineDefinition
-import Network.AWS.DataPipeline.ListPipelines
-import Network.AWS.DataPipeline.PollForTask
-import Network.AWS.DataPipeline.PutPipelineDefinition
-import Network.AWS.DataPipeline.QueryObjects
-import Network.AWS.DataPipeline.RemoveTags
-import Network.AWS.DataPipeline.ReportTaskProgress
-import Network.AWS.DataPipeline.ReportTaskRunnerHeartbeat
-import Network.AWS.DataPipeline.SetStatus
-import Network.AWS.DataPipeline.SetTaskStatus
-import Network.AWS.DataPipeline.Types
-import Network.AWS.DataPipeline.ValidatePipelineDefinition
+import           Network.AWS.DataPipeline.ActivatePipeline
+import           Network.AWS.DataPipeline.AddTags
+import           Network.AWS.DataPipeline.CreatePipeline
+import           Network.AWS.DataPipeline.DeactivatePipeline
+import           Network.AWS.DataPipeline.DeletePipeline
+import           Network.AWS.DataPipeline.DescribeObjects
+import           Network.AWS.DataPipeline.DescribePipelines
+import           Network.AWS.DataPipeline.EvaluateExpression
+import           Network.AWS.DataPipeline.GetPipelineDefinition
+import           Network.AWS.DataPipeline.ListPipelines
+import           Network.AWS.DataPipeline.PollForTask
+import           Network.AWS.DataPipeline.PutPipelineDefinition
+import           Network.AWS.DataPipeline.QueryObjects
+import           Network.AWS.DataPipeline.RemoveTags
+import           Network.AWS.DataPipeline.ReportTaskProgress
+import           Network.AWS.DataPipeline.ReportTaskRunnerHeartbeat
+import           Network.AWS.DataPipeline.SetStatus
+import           Network.AWS.DataPipeline.SetTaskStatus
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.ValidatePipelineDefinition
+import           Network.AWS.DataPipeline.Waiters
+
+{- $errors
+Error matchers are designed for use with the functions provided by
+<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
+This allows catching (and rethrowing) service specific errors returned
+by 'DataPipeline'.
+-}
+
+{- $operations
+Some AWS operations return results that are incomplete and require subsequent
+requests in order to obtain the entire result set. The process of sending
+subsequent requests to continue where a previous request left off is called
+pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
+1000 objects at a time, and you must send subsequent requests with the
+appropriate Marker in order to retrieve the next page of results.
+
+Operations that have an 'AWSPager' instance can transparently perform subsequent
+requests, correctly setting Markers and other request facets to iterate through
+the entire result set of a truncated API operation. Operations which support
+this have an additional note in the documentation.
+
+Many operations have the ability to filter results on the server side. See the
+individual operation parameters for details.
+-}
+
+{- $waiters
+Waiters poll by repeatedly sending a request until some remote success condition
+configured by the 'Wait' specification is fulfilled. The 'Wait' specification
+determines how many attempts should be made, in addition to delay and retry strategies.
+-}
diff --git a/gen/Network/AWS/DataPipeline/ActivatePipeline.hs b/gen/Network/AWS/DataPipeline/ActivatePipeline.hs
--- a/gen/Network/AWS/DataPipeline/ActivatePipeline.hs
+++ b/gen/Network/AWS/DataPipeline/ActivatePipeline.hs
@@ -1,124 +1,148 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.ActivatePipeline
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Validates the specified pipeline and starts processing pipeline tasks. If the
--- pipeline does not pass validation, activation fails.
+-- Validates the specified pipeline and starts processing pipeline tasks.
+-- If the pipeline does not pass validation, activation fails.
 --
--- If you need to pause the pipeline to investigate an issue with a component,
--- such as a data source or script, call 'DeactivatePipeline'.
+-- If you need to pause the pipeline to investigate an issue with a
+-- component, such as a data source or script, call DeactivatePipeline.
 --
--- To activate a finished pipeline, modify the end date for the pipeline and
--- then activate it.
+-- To activate a finished pipeline, modify the end date for the pipeline
+-- and then activate it.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_ActivatePipeline.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_ActivatePipeline.html AWS API Reference> for ActivatePipeline.
 module Network.AWS.DataPipeline.ActivatePipeline
     (
-    -- * Request
-      ActivatePipeline
-    -- ** Request constructor
-    , activatePipeline
-    -- ** Request lenses
+    -- * Creating a Request
+      activatePipeline
+    , ActivatePipeline
+    -- * Request Lenses
+    , apStartTimestamp
     , apParameterValues
     , apPipelineId
-    , apStartTimestamp
 
-    -- * Response
-    , ActivatePipelineResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , activatePipelineResponse
+    , ActivatePipelineResponse
+    -- * Response Lenses
+    , aprsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data ActivatePipeline = ActivatePipeline
-    { _apParameterValues :: List "parameterValues" ParameterValue
-    , _apPipelineId      :: Text
-    , _apStartTimestamp  :: Maybe POSIX
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ActivatePipeline' constructor.
+-- | Contains the parameters for ActivatePipeline.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'activatePipeline' smart constructor.
+data ActivatePipeline = ActivatePipeline'
+    { _apStartTimestamp  :: !(Maybe POSIX)
+    , _apParameterValues :: !(Maybe [ParameterValue])
+    , _apPipelineId      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ActivatePipeline' with the minimum fields required to make a request.
 --
--- * 'apParameterValues' @::@ ['ParameterValue']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'apPipelineId' @::@ 'Text'
+-- * 'apStartTimestamp'
 --
--- * 'apStartTimestamp' @::@ 'Maybe' 'UTCTime'
+-- * 'apParameterValues'
 --
-activatePipeline :: Text -- ^ 'apPipelineId'
-                 -> ActivatePipeline
-activatePipeline p1 = ActivatePipeline
-    { _apPipelineId      = p1
-    , _apParameterValues = mempty
-    , _apStartTimestamp  = Nothing
+-- * 'apPipelineId'
+activatePipeline
+    :: Text -- ^ 'apPipelineId'
+    -> ActivatePipeline
+activatePipeline pPipelineId_ =
+    ActivatePipeline'
+    { _apStartTimestamp = Nothing
+    , _apParameterValues = Nothing
+    , _apPipelineId = pPipelineId_
     }
 
+-- | The date and time to resume the pipeline. By default, the pipeline
+-- resumes from the last completed execution.
+apStartTimestamp :: Lens' ActivatePipeline (Maybe UTCTime)
+apStartTimestamp = lens _apStartTimestamp (\ s a -> s{_apStartTimestamp = a}) . mapping _Time;
+
 -- | A list of parameter values to pass to the pipeline at activation.
 apParameterValues :: Lens' ActivatePipeline [ParameterValue]
-apParameterValues =
-    lens _apParameterValues (\s a -> s { _apParameterValues = a })
-        . _List
+apParameterValues = lens _apParameterValues (\ s a -> s{_apParameterValues = a}) . _Default . _Coerce;
 
 -- | The ID of the pipeline.
 apPipelineId :: Lens' ActivatePipeline Text
-apPipelineId = lens _apPipelineId (\s a -> s { _apPipelineId = a })
+apPipelineId = lens _apPipelineId (\ s a -> s{_apPipelineId = a});
 
--- | The date and time to resume the pipeline. By default, the pipeline resumes
--- from the last completed execution.
-apStartTimestamp :: Lens' ActivatePipeline (Maybe UTCTime)
-apStartTimestamp = lens _apStartTimestamp (\s a -> s { _apStartTimestamp = a }) . mapping _Time
+instance AWSRequest ActivatePipeline where
+        type Sv ActivatePipeline = DataPipeline
+        type Rs ActivatePipeline = ActivatePipelineResponse
+        request = postJSON
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 ActivatePipelineResponse' <$> (pure (fromEnum s)))
 
-data ActivatePipelineResponse = ActivatePipelineResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance ToHeaders ActivatePipeline where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.ActivatePipeline" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'ActivatePipelineResponse' constructor.
-activatePipelineResponse :: ActivatePipelineResponse
-activatePipelineResponse = ActivatePipelineResponse
+instance ToJSON ActivatePipeline where
+        toJSON ActivatePipeline'{..}
+          = object
+              ["startTimestamp" .= _apStartTimestamp,
+               "parameterValues" .= _apParameterValues,
+               "pipelineId" .= _apPipelineId]
 
 instance ToPath ActivatePipeline where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ActivatePipeline where
-    toQuery = const mempty
-
-instance ToHeaders ActivatePipeline
+        toQuery = const mempty
 
-instance ToJSON ActivatePipeline where
-    toJSON ActivatePipeline{..} = object
-        [ "pipelineId"      .= _apPipelineId
-        , "parameterValues" .= _apParameterValues
-        , "startTimestamp"  .= _apStartTimestamp
-        ]
+-- | Contains the output of ActivatePipeline.
+--
+-- /See:/ 'activatePipelineResponse' smart constructor.
+newtype ActivatePipelineResponse = ActivatePipelineResponse'
+    { _aprsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ActivatePipeline where
-    type Sv ActivatePipeline = DataPipeline
-    type Rs ActivatePipeline = ActivatePipelineResponse
+-- | Creates a value of 'ActivatePipelineResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aprsStatus'
+activatePipelineResponse
+    :: Int -- ^ 'aprsStatus'
+    -> ActivatePipelineResponse
+activatePipelineResponse pStatus_ =
+    ActivatePipelineResponse'
+    { _aprsStatus = pStatus_
+    }
 
-    request  = post "ActivatePipeline"
-    response = nullResponse ActivatePipelineResponse
+-- | The response status code.
+aprsStatus :: Lens' ActivatePipelineResponse Int
+aprsStatus = lens _aprsStatus (\ s a -> s{_aprsStatus = a});
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
@@ -1,104 +1,128 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.AddTags
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Adds or modifies tags for the specified pipeline.
+-- Adds or modifies tags for the specified pipeline.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_AddTags.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_AddTags.html AWS API Reference> for AddTags.
 module Network.AWS.DataPipeline.AddTags
     (
-    -- * Request
-      AddTags
-    -- ** Request constructor
-    , addTags
-    -- ** Request lenses
+    -- * Creating a Request
+      addTags
+    , AddTags
+    -- * Request Lenses
     , atPipelineId
     , atTags
 
-    -- * Response
-    , AddTagsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , addTagsResponse
+    , AddTagsResponse
+    -- * Response Lenses
+    , atrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data AddTags = AddTags
-    { _atPipelineId :: Text
-    , _atTags       :: List "tags" Tag
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'AddTags' constructor.
+-- | Contains the parameters for AddTags.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'addTags' smart constructor.
+data AddTags = AddTags'
+    { _atPipelineId :: !Text
+    , _atTags       :: ![Tag]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddTags' with the minimum fields required to make a request.
 --
--- * 'atPipelineId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'atTags' @::@ ['Tag']
+-- * 'atPipelineId'
 --
-addTags :: Text -- ^ 'atPipelineId'
-        -> AddTags
-addTags p1 = AddTags
-    { _atPipelineId = p1
-    , _atTags       = mempty
+-- * 'atTags'
+addTags
+    :: Text -- ^ 'atPipelineId'
+    -> AddTags
+addTags pPipelineId_ =
+    AddTags'
+    { _atPipelineId = pPipelineId_
+    , _atTags = mempty
     }
 
 -- | The ID of the pipeline.
 atPipelineId :: Lens' AddTags Text
-atPipelineId = lens _atPipelineId (\s a -> s { _atPipelineId = a })
+atPipelineId = lens _atPipelineId (\ s a -> s{_atPipelineId = a});
 
--- | The tags to add, as key/value pairs.
+-- | The tags to add, as key\/value pairs.
 atTags :: Lens' AddTags [Tag]
-atTags = lens _atTags (\s a -> s { _atTags = a }) . _List
+atTags = lens _atTags (\ s a -> s{_atTags = a}) . _Coerce;
 
-data AddTagsResponse = AddTagsResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest AddTags where
+        type Sv AddTags = DataPipeline
+        type Rs AddTags = AddTagsResponse
+        request = postJSON
+        response
+          = receiveEmpty
+              (\ s h x -> AddTagsResponse' <$> (pure (fromEnum s)))
 
--- | 'AddTagsResponse' constructor.
-addTagsResponse :: AddTagsResponse
-addTagsResponse = AddTagsResponse
+instance ToHeaders AddTags where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.AddTags" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON AddTags where
+        toJSON AddTags'{..}
+          = object
+              ["pipelineId" .= _atPipelineId, "tags" .= _atTags]
+
 instance ToPath AddTags where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery AddTags where
-    toQuery = const mempty
-
-instance ToHeaders AddTags
+        toQuery = const mempty
 
-instance ToJSON AddTags where
-    toJSON AddTags{..} = object
-        [ "pipelineId" .= _atPipelineId
-        , "tags"       .= _atTags
-        ]
+-- | Contains the output of AddTags.
+--
+-- /See:/ 'addTagsResponse' smart constructor.
+newtype AddTagsResponse = AddTagsResponse'
+    { _atrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest AddTags where
-    type Sv AddTags = DataPipeline
-    type Rs AddTags = AddTagsResponse
+-- | Creates a value of 'AddTagsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atrsStatus'
+addTagsResponse
+    :: Int -- ^ 'atrsStatus'
+    -> AddTagsResponse
+addTagsResponse pStatus_ =
+    AddTagsResponse'
+    { _atrsStatus = pStatus_
+    }
 
-    request  = post "AddTags"
-    response = nullResponse AddTagsResponse
+-- | The response status code.
+atrsStatus :: Lens' AddTagsResponse Int
+atrsStatus = lens _atrsStatus (\ s a -> s{_atrsStatus = a});
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
@@ -1,159 +1,178 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.CreatePipeline
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a new, empty pipeline. Use 'PutPipelineDefinition' to populate the
+-- Creates a new, empty pipeline. Use PutPipelineDefinition to populate the
 -- pipeline.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_CreatePipeline.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_CreatePipeline.html AWS API Reference> for CreatePipeline.
 module Network.AWS.DataPipeline.CreatePipeline
     (
-    -- * Request
-      CreatePipeline
-    -- ** Request constructor
-    , createPipeline
-    -- ** Request lenses
+    -- * Creating a Request
+      createPipeline
+    , CreatePipeline
+    -- * Request Lenses
     , cpDescription
-    , cpName
     , cpTags
+    , cpName
     , cpUniqueId
 
-    -- * Response
-    , CreatePipelineResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createPipelineResponse
-    -- ** Response lenses
-    , cprPipelineId
+    , CreatePipelineResponse
+    -- * Response Lenses
+    , cprsStatus
+    , cprsPipelineId
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data CreatePipeline = CreatePipeline
-    { _cpDescription :: Maybe Text
-    , _cpName        :: Text
-    , _cpTags        :: List "tags" Tag
-    , _cpUniqueId    :: Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreatePipeline' constructor.
+-- | Contains the parameters for CreatePipeline.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createPipeline' smart constructor.
+data CreatePipeline = CreatePipeline'
+    { _cpDescription :: !(Maybe Text)
+    , _cpTags        :: !(Maybe [Tag])
+    , _cpName        :: !Text
+    , _cpUniqueId    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreatePipeline' with the minimum fields required to make a request.
 --
--- * 'cpDescription' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cpName' @::@ 'Text'
+-- * 'cpDescription'
 --
--- * 'cpTags' @::@ ['Tag']
+-- * 'cpTags'
 --
--- * 'cpUniqueId' @::@ 'Text'
+-- * 'cpName'
 --
-createPipeline :: Text -- ^ 'cpName'
-               -> Text -- ^ 'cpUniqueId'
-               -> CreatePipeline
-createPipeline p1 p2 = CreatePipeline
-    { _cpName        = p1
-    , _cpUniqueId    = p2
-    , _cpDescription = Nothing
-    , _cpTags        = mempty
+-- * 'cpUniqueId'
+createPipeline
+    :: Text -- ^ 'cpName'
+    -> Text -- ^ 'cpUniqueId'
+    -> CreatePipeline
+createPipeline pName_ pUniqueId_ =
+    CreatePipeline'
+    { _cpDescription = Nothing
+    , _cpTags = Nothing
+    , _cpName = pName_
+    , _cpUniqueId = pUniqueId_
     }
 
 -- | The description for the pipeline.
 cpDescription :: Lens' CreatePipeline (Maybe Text)
-cpDescription = lens _cpDescription (\s a -> s { _cpDescription = a })
-
--- | The name for the pipeline. You can use the same name for multiple pipelines
--- associated with your AWS account, because AWS Data Pipeline assigns each
--- pipeline a unique pipeline identifier.
-cpName :: Lens' CreatePipeline Text
-cpName = lens _cpName (\s a -> s { _cpName = a })
+cpDescription = lens _cpDescription (\ s a -> s{_cpDescription = a});
 
 -- | A list of tags to associate with the pipeline at creation. Tags let you
--- control access to pipelines. For more information, see <http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-control-access.html Controlling UserAccess to Pipelines> in the /AWS Data Pipeline Developer Guide/.
+-- control access to pipelines. For more information, see
+-- <http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-control-access.html Controlling User Access to Pipelines>
+-- in the /AWS Data Pipeline Developer Guide/.
 cpTags :: Lens' CreatePipeline [Tag]
-cpTags = lens _cpTags (\s a -> s { _cpTags = a }) . _List
+cpTags = lens _cpTags (\ s a -> s{_cpTags = a}) . _Default . _Coerce;
 
+-- | The name for the pipeline. You can use the same name for multiple
+-- pipelines associated with your AWS account, because AWS Data Pipeline
+-- assigns each pipeline a unique pipeline identifier.
+cpName :: Lens' CreatePipeline Text
+cpName = lens _cpName (\ s a -> s{_cpName = a});
+
 -- | A unique identifier. This identifier is not the same as the pipeline
--- identifier assigned by AWS Data Pipeline. You are responsible for defining
--- the format and ensuring the uniqueness of this identifier. You use this
--- parameter to ensure idempotency during repeated calls to 'CreatePipeline'. For
--- example, if the first call to 'CreatePipeline' does not succeed, you can pass
--- in the same unique identifier and pipeline name combination on a subsequent
--- call to 'CreatePipeline'. 'CreatePipeline' ensures that if a pipeline already
--- exists with the same name and unique identifier, a new pipeline is not
--- created. Instead, you'll receive the pipeline identifier from the previous
--- attempt. The uniqueness of the name and unique identifier combination is
--- scoped to the AWS account or IAM user credentials.
+-- identifier assigned by AWS Data Pipeline. You are responsible for
+-- defining the format and ensuring the uniqueness of this identifier. You
+-- use this parameter to ensure idempotency during repeated calls to
+-- 'CreatePipeline'. For example, if the first call to 'CreatePipeline'
+-- does not succeed, you can pass in the same unique identifier and
+-- pipeline name combination on a subsequent call to 'CreatePipeline'.
+-- 'CreatePipeline' ensures that if a pipeline already exists with the same
+-- name and unique identifier, a new pipeline is not created. Instead,
+-- you\'ll receive the pipeline identifier from the previous attempt. The
+-- uniqueness of the name and unique identifier combination is scoped to
+-- the AWS account or IAM user credentials.
 cpUniqueId :: Lens' CreatePipeline Text
-cpUniqueId = lens _cpUniqueId (\s a -> s { _cpUniqueId = a })
+cpUniqueId = lens _cpUniqueId (\ s a -> s{_cpUniqueId = a});
 
-newtype CreatePipelineResponse = CreatePipelineResponse
-    { _cprPipelineId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+instance AWSRequest CreatePipeline where
+        type Sv CreatePipeline = DataPipeline
+        type Rs CreatePipeline = CreatePipelineResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreatePipelineResponse' <$>
+                   (pure (fromEnum s)) <*> (x .:> "pipelineId"))
 
--- | 'CreatePipelineResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cprPipelineId' @::@ 'Text'
---
-createPipelineResponse :: Text -- ^ 'cprPipelineId'
-                       -> CreatePipelineResponse
-createPipelineResponse p1 = CreatePipelineResponse
-    { _cprPipelineId = p1
-    }
+instance ToHeaders CreatePipeline where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.CreatePipeline" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The ID that AWS Data Pipeline assigns the newly created pipeline. For
--- example, 'df-06372391ZG65EXAMPLE'.
-cprPipelineId :: Lens' CreatePipelineResponse Text
-cprPipelineId = lens _cprPipelineId (\s a -> s { _cprPipelineId = a })
+instance ToJSON CreatePipeline where
+        toJSON CreatePipeline'{..}
+          = object
+              ["description" .= _cpDescription, "tags" .= _cpTags,
+               "name" .= _cpName, "uniqueId" .= _cpUniqueId]
 
 instance ToPath CreatePipeline where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreatePipeline where
-    toQuery = const mempty
-
-instance ToHeaders CreatePipeline
+        toQuery = const mempty
 
-instance ToJSON CreatePipeline where
-    toJSON CreatePipeline{..} = object
-        [ "name"        .= _cpName
-        , "uniqueId"    .= _cpUniqueId
-        , "description" .= _cpDescription
-        , "tags"        .= _cpTags
-        ]
+-- | Contains the output of CreatePipeline.
+--
+-- /See:/ 'createPipelineResponse' smart constructor.
+data CreatePipelineResponse = CreatePipelineResponse'
+    { _cprsStatus     :: !Int
+    , _cprsPipelineId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreatePipeline where
-    type Sv CreatePipeline = DataPipeline
-    type Rs CreatePipeline = CreatePipelineResponse
+-- | Creates a value of 'CreatePipelineResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cprsStatus'
+--
+-- * 'cprsPipelineId'
+createPipelineResponse
+    :: Int -- ^ 'cprsStatus'
+    -> Text -- ^ 'cprsPipelineId'
+    -> CreatePipelineResponse
+createPipelineResponse pStatus_ pPipelineId_ =
+    CreatePipelineResponse'
+    { _cprsStatus = pStatus_
+    , _cprsPipelineId = pPipelineId_
+    }
 
-    request  = post "CreatePipeline"
-    response = jsonResponse
+-- | The response status code.
+cprsStatus :: Lens' CreatePipelineResponse Int
+cprsStatus = lens _cprsStatus (\ s a -> s{_cprsStatus = a});
 
-instance FromJSON CreatePipelineResponse where
-    parseJSON = withObject "CreatePipelineResponse" $ \o -> CreatePipelineResponse
-        <$> o .:  "pipelineId"
+-- | The ID that AWS Data Pipeline assigns the newly created pipeline. For
+-- example, 'df-06372391ZG65EXAMPLE'.
+cprsPipelineId :: Lens' CreatePipelineResponse Text
+cprsPipelineId = lens _cprsPipelineId (\ s a -> s{_cprsPipelineId = a});
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
@@ -1,110 +1,138 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.DeactivatePipeline
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deactivates the specified running pipeline. The pipeline is set to the 'DEACTIVATING' state until the deactivation process completes.
+-- Deactivates the specified running pipeline. The pipeline is set to the
+-- 'DEACTIVATING' state until the deactivation process completes.
 --
--- To resume a deactivated pipeline, use 'ActivatePipeline'. By default, the
+-- To resume a deactivated pipeline, use ActivatePipeline. By default, the
 -- pipeline resumes from the last completed execution. Optionally, you can
 -- specify the date and time to resume the pipeline.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_DeactivatePipeline.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_DeactivatePipeline.html AWS API Reference> for DeactivatePipeline.
 module Network.AWS.DataPipeline.DeactivatePipeline
     (
-    -- * Request
-      DeactivatePipeline
-    -- ** Request constructor
-    , deactivatePipeline
-    -- ** Request lenses
-    , dp1CancelActive
-    , dp1PipelineId
+    -- * Creating a Request
+      deactivatePipeline
+    , DeactivatePipeline
+    -- * Request Lenses
+    , dCancelActive
+    , dPipelineId
 
-    -- * Response
-    , DeactivatePipelineResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deactivatePipelineResponse
+    , DeactivatePipelineResponse
+    -- * Response Lenses
+    , drsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data DeactivatePipeline = DeactivatePipeline
-    { _dp1CancelActive :: Maybe Bool
-    , _dp1PipelineId   :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeactivatePipeline' constructor.
+-- | Contains the parameters for DeactivatePipeline.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deactivatePipeline' smart constructor.
+data DeactivatePipeline = DeactivatePipeline'
+    { _dCancelActive :: !(Maybe Bool)
+    , _dPipelineId   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeactivatePipeline' with the minimum fields required to make a request.
 --
--- * 'dp1CancelActive' @::@ 'Maybe' 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dp1PipelineId' @::@ 'Text'
+-- * 'dCancelActive'
 --
-deactivatePipeline :: Text -- ^ 'dp1PipelineId'
-                   -> DeactivatePipeline
-deactivatePipeline p1 = DeactivatePipeline
-    { _dp1PipelineId   = p1
-    , _dp1CancelActive = Nothing
+-- * 'dPipelineId'
+deactivatePipeline
+    :: Text -- ^ 'dPipelineId'
+    -> DeactivatePipeline
+deactivatePipeline pPipelineId_ =
+    DeactivatePipeline'
+    { _dCancelActive = Nothing
+    , _dPipelineId = pPipelineId_
     }
 
--- | Indicates whether to cancel any running objects. The default is true, which
--- sets the state of any running objects to 'CANCELED'. If this value is false,
--- the pipeline is deactivated after all running objects finish.
-dp1CancelActive :: Lens' DeactivatePipeline (Maybe Bool)
-dp1CancelActive = lens _dp1CancelActive (\s a -> s { _dp1CancelActive = a })
+-- | Indicates whether to cancel any running objects. The default is true,
+-- which sets the state of any running objects to 'CANCELED'. If this value
+-- is false, the pipeline is deactivated after all running objects finish.
+dCancelActive :: Lens' DeactivatePipeline (Maybe Bool)
+dCancelActive = lens _dCancelActive (\ s a -> s{_dCancelActive = a});
 
 -- | The ID of the pipeline.
-dp1PipelineId :: Lens' DeactivatePipeline Text
-dp1PipelineId = lens _dp1PipelineId (\s a -> s { _dp1PipelineId = a })
+dPipelineId :: Lens' DeactivatePipeline Text
+dPipelineId = lens _dPipelineId (\ s a -> s{_dPipelineId = a});
 
-data DeactivatePipelineResponse = DeactivatePipelineResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeactivatePipeline where
+        type Sv DeactivatePipeline = DataPipeline
+        type Rs DeactivatePipeline =
+             DeactivatePipelineResponse
+        request = postJSON
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeactivatePipelineResponse' <$> (pure (fromEnum s)))
 
--- | 'DeactivatePipelineResponse' constructor.
-deactivatePipelineResponse :: DeactivatePipelineResponse
-deactivatePipelineResponse = DeactivatePipelineResponse
+instance ToHeaders DeactivatePipeline where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.DeactivatePipeline" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DeactivatePipeline where
+        toJSON DeactivatePipeline'{..}
+          = object
+              ["cancelActive" .= _dCancelActive,
+               "pipelineId" .= _dPipelineId]
+
 instance ToPath DeactivatePipeline where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeactivatePipeline where
-    toQuery = const mempty
-
-instance ToHeaders DeactivatePipeline
+        toQuery = const mempty
 
-instance ToJSON DeactivatePipeline where
-    toJSON DeactivatePipeline{..} = object
-        [ "pipelineId"   .= _dp1PipelineId
-        , "cancelActive" .= _dp1CancelActive
-        ]
+-- | Contains the output of DeactivatePipeline.
+--
+-- /See:/ 'deactivatePipelineResponse' smart constructor.
+newtype DeactivatePipelineResponse = DeactivatePipelineResponse'
+    { _drsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeactivatePipeline where
-    type Sv DeactivatePipeline = DataPipeline
-    type Rs DeactivatePipeline = DeactivatePipelineResponse
+-- | Creates a value of 'DeactivatePipelineResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsStatus'
+deactivatePipelineResponse
+    :: Int -- ^ 'drsStatus'
+    -> DeactivatePipelineResponse
+deactivatePipelineResponse pStatus_ =
+    DeactivatePipelineResponse'
+    { _drsStatus = pStatus_
+    }
 
-    request  = post "DeactivatePipeline"
-    response = nullResponse DeactivatePipelineResponse
+-- | The response status code.
+drsStatus :: Lens' DeactivatePipelineResponse Int
+drsStatus = lens _drsStatus (\ s a -> s{_drsStatus = a});
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
@@ -1,100 +1,108 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.DeletePipeline
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a pipeline, its pipeline definition, and its run history. AWS Data
--- Pipeline attempts to cancel instances associated with the pipeline that are
--- currently being processed by task runners.
+-- Deletes a pipeline, its pipeline definition, and its run history. AWS
+-- Data Pipeline attempts to cancel instances associated with the pipeline
+-- that are currently being processed by task runners.
 --
--- Deleting a pipeline cannot be undone. You cannot query or restore a deleted
--- pipeline. To temporarily pause a pipeline instead of deleting it, call 'SetStatus' with the status set to 'PAUSE' on individual components. Components that are
--- paused by 'SetStatus' can be resumed.
+-- Deleting a pipeline cannot be undone. You cannot query or restore a
+-- deleted pipeline. To temporarily pause a pipeline instead of deleting
+-- it, call SetStatus with the status set to 'PAUSE' on individual
+-- components. Components that are paused by SetStatus can be resumed.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_DeletePipeline.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_DeletePipeline.html AWS API Reference> for DeletePipeline.
 module Network.AWS.DataPipeline.DeletePipeline
     (
-    -- * Request
-      DeletePipeline
-    -- ** Request constructor
-    , deletePipeline
-    -- ** Request lenses
+    -- * Creating a Request
+      deletePipeline
+    , DeletePipeline
+    -- * Request Lenses
     , dpPipelineId
 
-    -- * Response
-    , DeletePipelineResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deletePipelineResponse
+    , DeletePipelineResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeletePipeline = DeletePipeline
+-- | Contains the parameters for DeletePipeline.
+--
+-- /See:/ 'deletePipeline' smart constructor.
+newtype DeletePipeline = DeletePipeline'
     { _dpPipelineId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeletePipeline' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeletePipeline' with the minimum fields required to make a request.
 --
--- * 'dpPipelineId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deletePipeline :: Text -- ^ 'dpPipelineId'
-               -> DeletePipeline
-deletePipeline p1 = DeletePipeline
-    { _dpPipelineId = p1
+-- * 'dpPipelineId'
+deletePipeline
+    :: Text -- ^ 'dpPipelineId'
+    -> DeletePipeline
+deletePipeline pPipelineId_ =
+    DeletePipeline'
+    { _dpPipelineId = pPipelineId_
     }
 
 -- | The ID of the pipeline.
 dpPipelineId :: Lens' DeletePipeline Text
-dpPipelineId = lens _dpPipelineId (\s a -> s { _dpPipelineId = a })
+dpPipelineId = lens _dpPipelineId (\ s a -> s{_dpPipelineId = a});
 
-data DeletePipelineResponse = DeletePipelineResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeletePipeline where
+        type Sv DeletePipeline = DataPipeline
+        type Rs DeletePipeline = DeletePipelineResponse
+        request = postJSON
+        response = receiveNull DeletePipelineResponse'
 
--- | 'DeletePipelineResponse' constructor.
-deletePipelineResponse :: DeletePipelineResponse
-deletePipelineResponse = DeletePipelineResponse
+instance ToHeaders DeletePipeline where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.DeletePipeline" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DeletePipeline where
+        toJSON DeletePipeline'{..}
+          = object ["pipelineId" .= _dpPipelineId]
+
 instance ToPath DeletePipeline where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeletePipeline where
-    toQuery = const mempty
-
-instance ToHeaders DeletePipeline
-
-instance ToJSON DeletePipeline where
-    toJSON DeletePipeline{..} = object
-        [ "pipelineId" .= _dpPipelineId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest DeletePipeline where
-    type Sv DeletePipeline = DataPipeline
-    type Rs DeletePipeline = DeletePipelineResponse
+-- | /See:/ 'deletePipelineResponse' smart constructor.
+data DeletePipelineResponse =
+    DeletePipelineResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeletePipeline"
-    response = nullResponse DeletePipelineResponse
+-- | Creates a value of 'DeletePipelineResponse' with the minimum fields required to make a request.
+--
+deletePipelineResponse
+    :: DeletePipelineResponse
+deletePipelineResponse = DeletePipelineResponse'
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
@@ -1,180 +1,199 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.DescribeObjects
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Gets the object definitions for a set of objects associated with the
--- pipeline. Object definitions are composed of a set of fields that define the
--- properties of the object.
+-- Gets the object definitions for a set of objects associated with the
+-- pipeline. Object definitions are composed of a set of fields that define
+-- the properties of the object.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_DescribeObjects.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_DescribeObjects.html AWS API Reference> for DescribeObjects.
+--
+-- This operation returns paginated results.
 module Network.AWS.DataPipeline.DescribeObjects
     (
-    -- * Request
-      DescribeObjects
-    -- ** Request constructor
-    , describeObjects
-    -- ** Request lenses
+    -- * Creating a Request
+      describeObjects
+    , DescribeObjects
+    -- * Request Lenses
     , doEvaluateExpressions
     , doMarker
-    , doObjectIds
     , doPipelineId
+    , doObjectIds
 
-    -- * Response
-    , DescribeObjectsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeObjectsResponse
-    -- ** Response lenses
-    , dorHasMoreResults
-    , dorMarker
-    , dorPipelineObjects
+    , DescribeObjectsResponse
+    -- * Response Lenses
+    , dorsHasMoreResults
+    , dorsMarker
+    , dorsStatus
+    , dorsPipelineObjects
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data DescribeObjects = DescribeObjects
-    { _doEvaluateExpressions :: Maybe Bool
-    , _doMarker              :: Maybe Text
-    , _doObjectIds           :: List "objectIds" Text
-    , _doPipelineId          :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeObjects' constructor.
+-- | Contains the parameters for DescribeObjects.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeObjects' smart constructor.
+data DescribeObjects = DescribeObjects'
+    { _doEvaluateExpressions :: !(Maybe Bool)
+    , _doMarker              :: !(Maybe Text)
+    , _doPipelineId          :: !Text
+    , _doObjectIds           :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeObjects' with the minimum fields required to make a request.
 --
--- * 'doEvaluateExpressions' @::@ 'Maybe' 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'doMarker' @::@ 'Maybe' 'Text'
+-- * 'doEvaluateExpressions'
 --
--- * 'doObjectIds' @::@ ['Text']
+-- * 'doMarker'
 --
--- * 'doPipelineId' @::@ 'Text'
+-- * 'doPipelineId'
 --
-describeObjects :: Text -- ^ 'doPipelineId'
-                -> DescribeObjects
-describeObjects p1 = DescribeObjects
-    { _doPipelineId          = p1
-    , _doObjectIds           = mempty
-    , _doEvaluateExpressions = Nothing
-    , _doMarker              = Nothing
+-- * 'doObjectIds'
+describeObjects
+    :: Text -- ^ 'doPipelineId'
+    -> DescribeObjects
+describeObjects pPipelineId_ =
+    DescribeObjects'
+    { _doEvaluateExpressions = Nothing
+    , _doMarker = Nothing
+    , _doPipelineId = pPipelineId_
+    , _doObjectIds = mempty
     }
 
--- | Indicates whether any expressions in the object should be evaluated when the
--- object descriptions are returned.
+-- | Indicates whether any expressions in the object should be evaluated when
+-- the object descriptions are returned.
 doEvaluateExpressions :: Lens' DescribeObjects (Maybe Bool)
-doEvaluateExpressions =
-    lens _doEvaluateExpressions (\s a -> s { _doEvaluateExpressions = a })
+doEvaluateExpressions = lens _doEvaluateExpressions (\ s a -> s{_doEvaluateExpressions = a});
 
--- | The starting point for the results to be returned. For the first call, this
--- value should be empty. As long as there are more results, continue to call 'DescribeObjects' with the marker value from the previous call to retrieve the next set of
--- results.
+-- | The starting point for the results to be returned. For the first call,
+-- this value should be empty. As long as there are more results, continue
+-- to call 'DescribeObjects' with the marker value from the previous call
+-- to retrieve the next set of results.
 doMarker :: Lens' DescribeObjects (Maybe Text)
-doMarker = lens _doMarker (\s a -> s { _doMarker = a })
-
--- | The IDs of the pipeline objects that contain the definitions to be described.
--- You can pass as many as 25 identifiers in a single call to 'DescribeObjects'.
-doObjectIds :: Lens' DescribeObjects [Text]
-doObjectIds = lens _doObjectIds (\s a -> s { _doObjectIds = a }) . _List
+doMarker = lens _doMarker (\ s a -> s{_doMarker = a});
 
 -- | The ID of the pipeline that contains the object definitions.
 doPipelineId :: Lens' DescribeObjects Text
-doPipelineId = lens _doPipelineId (\s a -> s { _doPipelineId = a })
+doPipelineId = lens _doPipelineId (\ s a -> s{_doPipelineId = a});
 
-data DescribeObjectsResponse = DescribeObjectsResponse
-    { _dorHasMoreResults  :: Maybe Bool
-    , _dorMarker          :: Maybe Text
-    , _dorPipelineObjects :: List "pipelineObjects" PipelineObject
-    } deriving (Eq, Read, Show)
+-- | The IDs of the pipeline objects that contain the definitions to be
+-- described. You can pass as many as 25 identifiers in a single call to
+-- 'DescribeObjects'.
+doObjectIds :: Lens' DescribeObjects [Text]
+doObjectIds = lens _doObjectIds (\ s a -> s{_doObjectIds = a}) . _Coerce;
 
--- | 'DescribeObjectsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dorHasMoreResults' @::@ 'Maybe' 'Bool'
---
--- * 'dorMarker' @::@ 'Maybe' 'Text'
---
--- * 'dorPipelineObjects' @::@ ['PipelineObject']
---
-describeObjectsResponse :: DescribeObjectsResponse
-describeObjectsResponse = DescribeObjectsResponse
-    { _dorPipelineObjects = mempty
-    , _dorMarker          = Nothing
-    , _dorHasMoreResults  = Nothing
-    }
+instance AWSPager DescribeObjects where
+        page rq rs
+          | stop (rs ^. dorsHasMoreResults) = Nothing
+          | isNothing (rs ^. dorsMarker) = Nothing
+          | otherwise =
+            Just $ rq & doMarker .~ rs ^. dorsMarker
 
--- | Indicates whether there are more results to return.
-dorHasMoreResults :: Lens' DescribeObjectsResponse (Maybe Bool)
-dorHasMoreResults =
-    lens _dorHasMoreResults (\s a -> s { _dorHasMoreResults = a })
+instance AWSRequest DescribeObjects where
+        type Sv DescribeObjects = DataPipeline
+        type Rs DescribeObjects = DescribeObjectsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeObjectsResponse' <$>
+                   (x .?> "hasMoreResults") <*> (x .?> "marker") <*>
+                     (pure (fromEnum s))
+                     <*> (x .?> "pipelineObjects" .!@ mempty))
 
--- | The starting point for the next page of results. To view the next page of
--- results, call 'DescribeObjects' again with this marker value. If the value is
--- null, there are no more results.
-dorMarker :: Lens' DescribeObjectsResponse (Maybe Text)
-dorMarker = lens _dorMarker (\s a -> s { _dorMarker = a })
+instance ToHeaders DescribeObjects where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.DescribeObjects" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of object definitions.
-dorPipelineObjects :: Lens' DescribeObjectsResponse [PipelineObject]
-dorPipelineObjects =
-    lens _dorPipelineObjects (\s a -> s { _dorPipelineObjects = a })
-        . _List
+instance ToJSON DescribeObjects where
+        toJSON DescribeObjects'{..}
+          = object
+              ["evaluateExpressions" .= _doEvaluateExpressions,
+               "marker" .= _doMarker, "pipelineId" .= _doPipelineId,
+               "objectIds" .= _doObjectIds]
 
 instance ToPath DescribeObjects where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeObjects where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders DescribeObjects
+-- | Contains the output of DescribeObjects.
+--
+-- /See:/ 'describeObjectsResponse' smart constructor.
+data DescribeObjectsResponse = DescribeObjectsResponse'
+    { _dorsHasMoreResults  :: !(Maybe Bool)
+    , _dorsMarker          :: !(Maybe Text)
+    , _dorsStatus          :: !Int
+    , _dorsPipelineObjects :: ![PipelineObject]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON DescribeObjects where
-    toJSON DescribeObjects{..} = object
-        [ "pipelineId"          .= _doPipelineId
-        , "objectIds"           .= _doObjectIds
-        , "evaluateExpressions" .= _doEvaluateExpressions
-        , "marker"              .= _doMarker
-        ]
+-- | Creates a value of 'DescribeObjectsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dorsHasMoreResults'
+--
+-- * 'dorsMarker'
+--
+-- * 'dorsStatus'
+--
+-- * 'dorsPipelineObjects'
+describeObjectsResponse
+    :: Int -- ^ 'dorsStatus'
+    -> DescribeObjectsResponse
+describeObjectsResponse pStatus_ =
+    DescribeObjectsResponse'
+    { _dorsHasMoreResults = Nothing
+    , _dorsMarker = Nothing
+    , _dorsStatus = pStatus_
+    , _dorsPipelineObjects = mempty
+    }
 
-instance AWSRequest DescribeObjects where
-    type Sv DescribeObjects = DataPipeline
-    type Rs DescribeObjects = DescribeObjectsResponse
+-- | Indicates whether there are more results to return.
+dorsHasMoreResults :: Lens' DescribeObjectsResponse (Maybe Bool)
+dorsHasMoreResults = lens _dorsHasMoreResults (\ s a -> s{_dorsHasMoreResults = a});
 
-    request  = post "DescribeObjects"
-    response = jsonResponse
+-- | The starting point for the next page of results. To view the next page
+-- of results, call 'DescribeObjects' again with this marker value. If the
+-- value is null, there are no more results.
+dorsMarker :: Lens' DescribeObjectsResponse (Maybe Text)
+dorsMarker = lens _dorsMarker (\ s a -> s{_dorsMarker = a});
 
-instance FromJSON DescribeObjectsResponse where
-    parseJSON = withObject "DescribeObjectsResponse" $ \o -> DescribeObjectsResponse
-        <$> o .:? "hasMoreResults"
-        <*> o .:? "marker"
-        <*> o .:? "pipelineObjects" .!= mempty
+-- | The response status code.
+dorsStatus :: Lens' DescribeObjectsResponse Int
+dorsStatus = lens _dorsStatus (\ s a -> s{_dorsStatus = a});
 
-instance AWSPager DescribeObjects where
-    page rq rs
-        | stop (rs ^. dorHasMoreResults) = Nothing
-        | otherwise = Just $ rq
-            & doMarker .~ rs ^. dorMarker
+-- | An array of object definitions.
+dorsPipelineObjects :: Lens' DescribeObjectsResponse [PipelineObject]
+dorsPipelineObjects = lens _dorsPipelineObjects (\ s a -> s{_dorsPipelineObjects = a}) . _Coerce;
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
@@ -1,135 +1,140 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.DescribePipelines
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Retrieves metadata about one or more pipelines. The information retrieved
--- includes the name of the pipeline, the pipeline identifier, its current
--- state, and the user account that owns the pipeline. Using account
--- credentials, you can retrieve metadata about pipelines that you or your IAM
--- users have created. If you are using an IAM user account, you can retrieve
--- metadata about only those pipelines for which you have read permissions.
+-- Retrieves metadata about one or more pipelines. The information
+-- retrieved includes the name of the pipeline, the pipeline identifier,
+-- its current state, and the user account that owns the pipeline. Using
+-- account credentials, you can retrieve metadata about pipelines that you
+-- or your IAM users have created. If you are using an IAM user account,
+-- you can retrieve metadata about only those pipelines for which you have
+-- read permissions.
 --
 -- To retrieve the full pipeline definition instead of metadata about the
--- pipeline, call 'GetPipelineDefinition'.
+-- pipeline, call GetPipelineDefinition.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_DescribePipelines.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_DescribePipelines.html AWS API Reference> for DescribePipelines.
 module Network.AWS.DataPipeline.DescribePipelines
     (
-    -- * Request
-      DescribePipelines
-    -- ** Request constructor
-    , describePipelines
-    -- ** Request lenses
+    -- * Creating a Request
+      describePipelines
+    , DescribePipelines
+    -- * Request Lenses
     , dpPipelineIds
 
-    -- * Response
-    , DescribePipelinesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describePipelinesResponse
-    -- ** Response lenses
-    , dprPipelineDescriptionList
+    , DescribePipelinesResponse
+    -- * Response Lenses
+    , dprsStatus
+    , dprsPipelineDescriptionList
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-newtype DescribePipelines = DescribePipelines
-    { _dpPipelineIds :: List "pipelineIds" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribePipelines where
-    type Item DescribePipelines = Text
-
-    fromList = DescribePipelines . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dpPipelineIds
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribePipelines' constructor.
+-- | Contains the parameters for DescribePipelines.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describePipelines' smart constructor.
+newtype DescribePipelines = DescribePipelines'
+    { _dpPipelineIds :: [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribePipelines' with the minimum fields required to make a request.
 --
--- * 'dpPipelineIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describePipelines :: DescribePipelines
-describePipelines = DescribePipelines
+-- * 'dpPipelineIds'
+describePipelines
+    :: DescribePipelines
+describePipelines =
+    DescribePipelines'
     { _dpPipelineIds = mempty
     }
 
--- | The IDs of the pipelines to describe. You can pass as many as 25 identifiers
--- in a single call. To obtain pipeline IDs, call 'ListPipelines'.
+-- | The IDs of the pipelines to describe. You can pass as many as 25
+-- identifiers in a single call. To obtain pipeline IDs, call
+-- ListPipelines.
 dpPipelineIds :: Lens' DescribePipelines [Text]
-dpPipelineIds = lens _dpPipelineIds (\s a -> s { _dpPipelineIds = a }) . _List
-
-newtype DescribePipelinesResponse = DescribePipelinesResponse
-    { _dprPipelineDescriptionList :: List "pipelineDescriptionList" PipelineDescription
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribePipelinesResponse where
-    type Item DescribePipelinesResponse = PipelineDescription
+dpPipelineIds = lens _dpPipelineIds (\ s a -> s{_dpPipelineIds = a}) . _Coerce;
 
-    fromList = DescribePipelinesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dprPipelineDescriptionList
+instance AWSRequest DescribePipelines where
+        type Sv DescribePipelines = DataPipeline
+        type Rs DescribePipelines = DescribePipelinesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribePipelinesResponse' <$>
+                   (pure (fromEnum s)) <*>
+                     (x .?> "pipelineDescriptionList" .!@ mempty))
 
--- | 'DescribePipelinesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dprPipelineDescriptionList' @::@ ['PipelineDescription']
---
-describePipelinesResponse :: DescribePipelinesResponse
-describePipelinesResponse = DescribePipelinesResponse
-    { _dprPipelineDescriptionList = mempty
-    }
+instance ToHeaders DescribePipelines where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.DescribePipelines" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of descriptions for the specified pipelines.
-dprPipelineDescriptionList :: Lens' DescribePipelinesResponse [PipelineDescription]
-dprPipelineDescriptionList =
-    lens _dprPipelineDescriptionList
-        (\s a -> s { _dprPipelineDescriptionList = a })
-            . _List
+instance ToJSON DescribePipelines where
+        toJSON DescribePipelines'{..}
+          = object ["pipelineIds" .= _dpPipelineIds]
 
 instance ToPath DescribePipelines where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribePipelines where
-    toQuery = const mempty
-
-instance ToHeaders DescribePipelines
+        toQuery = const mempty
 
-instance ToJSON DescribePipelines where
-    toJSON DescribePipelines{..} = object
-        [ "pipelineIds" .= _dpPipelineIds
-        ]
+-- | Contains the output of DescribePipelines.
+--
+-- /See:/ 'describePipelinesResponse' smart constructor.
+data DescribePipelinesResponse = DescribePipelinesResponse'
+    { _dprsStatus                  :: !Int
+    , _dprsPipelineDescriptionList :: ![PipelineDescription]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribePipelines where
-    type Sv DescribePipelines = DataPipeline
-    type Rs DescribePipelines = DescribePipelinesResponse
+-- | Creates a value of 'DescribePipelinesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dprsStatus'
+--
+-- * 'dprsPipelineDescriptionList'
+describePipelinesResponse
+    :: Int -- ^ 'dprsStatus'
+    -> DescribePipelinesResponse
+describePipelinesResponse pStatus_ =
+    DescribePipelinesResponse'
+    { _dprsStatus = pStatus_
+    , _dprsPipelineDescriptionList = mempty
+    }
 
-    request  = post "DescribePipelines"
-    response = jsonResponse
+-- | The response status code.
+dprsStatus :: Lens' DescribePipelinesResponse Int
+dprsStatus = lens _dprsStatus (\ s a -> s{_dprsStatus = a});
 
-instance FromJSON DescribePipelinesResponse where
-    parseJSON = withObject "DescribePipelinesResponse" $ \o -> DescribePipelinesResponse
-        <$> o .:? "pipelineDescriptionList" .!= mempty
+-- | An array of descriptions for the specified pipelines.
+dprsPipelineDescriptionList :: Lens' DescribePipelinesResponse [PipelineDescription]
+dprsPipelineDescriptionList = lens _dprsPipelineDescriptionList (\ s a -> s{_dprsPipelineDescriptionList = a}) . _Coerce;
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
@@ -1,138 +1,157 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.EvaluateExpression
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Task runners call 'EvaluateExpression' to evaluate a string in the context of
--- the specified object. For example, a task runner can evaluate SQL queries
--- stored in Amazon S3.
+-- Task runners call 'EvaluateExpression' to evaluate a string in the
+-- context of the specified object. For example, a task runner can evaluate
+-- SQL queries stored in Amazon S3.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_EvaluateExpression.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_EvaluateExpression.html AWS API Reference> for EvaluateExpression.
 module Network.AWS.DataPipeline.EvaluateExpression
     (
-    -- * Request
-      EvaluateExpression
-    -- ** Request constructor
-    , evaluateExpression
-    -- ** Request lenses
-    , eeExpression
-    , eeObjectId
+    -- * Creating a Request
+      evaluateExpression
+    , EvaluateExpression
+    -- * Request Lenses
     , eePipelineId
+    , eeObjectId
+    , eeExpression
 
-    -- * Response
-    , EvaluateExpressionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , evaluateExpressionResponse
-    -- ** Response lenses
-    , eerEvaluatedExpression
+    , EvaluateExpressionResponse
+    -- * Response Lenses
+    , eersStatus
+    , eersEvaluatedExpression
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data EvaluateExpression = EvaluateExpression
-    { _eeExpression :: Text
-    , _eeObjectId   :: Text
-    , _eePipelineId :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'EvaluateExpression' constructor.
+-- | Contains the parameters for EvaluateExpression.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'evaluateExpression' smart constructor.
+data EvaluateExpression = EvaluateExpression'
+    { _eePipelineId :: !Text
+    , _eeObjectId   :: !Text
+    , _eeExpression :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EvaluateExpression' with the minimum fields required to make a request.
 --
--- * 'eeExpression' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'eeObjectId' @::@ 'Text'
+-- * 'eePipelineId'
 --
--- * 'eePipelineId' @::@ 'Text'
+-- * 'eeObjectId'
 --
-evaluateExpression :: Text -- ^ 'eePipelineId'
-                   -> Text -- ^ 'eeObjectId'
-                   -> Text -- ^ 'eeExpression'
-                   -> EvaluateExpression
-evaluateExpression p1 p2 p3 = EvaluateExpression
-    { _eePipelineId = p1
-    , _eeObjectId   = p2
-    , _eeExpression = p3
+-- * 'eeExpression'
+evaluateExpression
+    :: Text -- ^ 'eePipelineId'
+    -> Text -- ^ 'eeObjectId'
+    -> Text -- ^ 'eeExpression'
+    -> EvaluateExpression
+evaluateExpression pPipelineId_ pObjectId_ pExpression_ =
+    EvaluateExpression'
+    { _eePipelineId = pPipelineId_
+    , _eeObjectId = pObjectId_
+    , _eeExpression = pExpression_
     }
 
--- | The expression to evaluate.
-eeExpression :: Lens' EvaluateExpression Text
-eeExpression = lens _eeExpression (\s a -> s { _eeExpression = a })
+-- | The ID of the pipeline.
+eePipelineId :: Lens' EvaluateExpression Text
+eePipelineId = lens _eePipelineId (\ s a -> s{_eePipelineId = a});
 
 -- | The ID of the object.
 eeObjectId :: Lens' EvaluateExpression Text
-eeObjectId = lens _eeObjectId (\s a -> s { _eeObjectId = a })
+eeObjectId = lens _eeObjectId (\ s a -> s{_eeObjectId = a});
 
--- | The ID of the pipeline.
-eePipelineId :: Lens' EvaluateExpression Text
-eePipelineId = lens _eePipelineId (\s a -> s { _eePipelineId = a })
+-- | The expression to evaluate.
+eeExpression :: Lens' EvaluateExpression Text
+eeExpression = lens _eeExpression (\ s a -> s{_eeExpression = a});
 
-newtype EvaluateExpressionResponse = EvaluateExpressionResponse
-    { _eerEvaluatedExpression :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+instance AWSRequest EvaluateExpression where
+        type Sv EvaluateExpression = DataPipeline
+        type Rs EvaluateExpression =
+             EvaluateExpressionResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 EvaluateExpressionResponse' <$>
+                   (pure (fromEnum s)) <*>
+                     (x .:> "evaluatedExpression"))
 
--- | 'EvaluateExpressionResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'eerEvaluatedExpression' @::@ 'Text'
---
-evaluateExpressionResponse :: Text -- ^ 'eerEvaluatedExpression'
-                           -> EvaluateExpressionResponse
-evaluateExpressionResponse p1 = EvaluateExpressionResponse
-    { _eerEvaluatedExpression = p1
-    }
+instance ToHeaders EvaluateExpression where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.EvaluateExpression" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The evaluated expression.
-eerEvaluatedExpression :: Lens' EvaluateExpressionResponse Text
-eerEvaluatedExpression =
-    lens _eerEvaluatedExpression (\s a -> s { _eerEvaluatedExpression = a })
+instance ToJSON EvaluateExpression where
+        toJSON EvaluateExpression'{..}
+          = object
+              ["pipelineId" .= _eePipelineId,
+               "objectId" .= _eeObjectId,
+               "expression" .= _eeExpression]
 
 instance ToPath EvaluateExpression where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery EvaluateExpression where
-    toQuery = const mempty
-
-instance ToHeaders EvaluateExpression
+        toQuery = const mempty
 
-instance ToJSON EvaluateExpression where
-    toJSON EvaluateExpression{..} = object
-        [ "pipelineId" .= _eePipelineId
-        , "objectId"   .= _eeObjectId
-        , "expression" .= _eeExpression
-        ]
+-- | Contains the output of EvaluateExpression.
+--
+-- /See:/ 'evaluateExpressionResponse' smart constructor.
+data EvaluateExpressionResponse = EvaluateExpressionResponse'
+    { _eersStatus              :: !Int
+    , _eersEvaluatedExpression :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest EvaluateExpression where
-    type Sv EvaluateExpression = DataPipeline
-    type Rs EvaluateExpression = EvaluateExpressionResponse
+-- | Creates a value of 'EvaluateExpressionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eersStatus'
+--
+-- * 'eersEvaluatedExpression'
+evaluateExpressionResponse
+    :: Int -- ^ 'eersStatus'
+    -> Text -- ^ 'eersEvaluatedExpression'
+    -> EvaluateExpressionResponse
+evaluateExpressionResponse pStatus_ pEvaluatedExpression_ =
+    EvaluateExpressionResponse'
+    { _eersStatus = pStatus_
+    , _eersEvaluatedExpression = pEvaluatedExpression_
+    }
 
-    request  = post "EvaluateExpression"
-    response = jsonResponse
+-- | The response status code.
+eersStatus :: Lens' EvaluateExpressionResponse Int
+eersStatus = lens _eersStatus (\ s a -> s{_eersStatus = a});
 
-instance FromJSON EvaluateExpressionResponse where
-    parseJSON = withObject "EvaluateExpressionResponse" $ \o -> EvaluateExpressionResponse
-        <$> o .:  "evaluatedExpression"
+-- | The evaluated expression.
+eersEvaluatedExpression :: Lens' EvaluateExpressionResponse Text
+eersEvaluatedExpression = lens _eersEvaluatedExpression (\ s a -> s{_eersEvaluatedExpression = a});
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
@@ -1,149 +1,166 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.GetPipelineDefinition
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Gets the definition of the specified pipeline. You can call 'GetPipelineDefinition' to retrieve the pipeline definition that you provided using 'PutPipelineDefinition'.
+-- Gets the definition of the specified pipeline. You can call
+-- 'GetPipelineDefinition' to retrieve the pipeline definition that you
+-- provided using PutPipelineDefinition.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_GetPipelineDefinition.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_GetPipelineDefinition.html AWS API Reference> for GetPipelineDefinition.
 module Network.AWS.DataPipeline.GetPipelineDefinition
     (
-    -- * Request
-      GetPipelineDefinition
-    -- ** Request constructor
-    , getPipelineDefinition
-    -- ** Request lenses
-    , gpdPipelineId
+    -- * Creating a Request
+      getPipelineDefinition
+    , GetPipelineDefinition
+    -- * Request Lenses
     , gpdVersion
+    , gpdPipelineId
 
-    -- * Response
-    , GetPipelineDefinitionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getPipelineDefinitionResponse
-    -- ** Response lenses
-    , gpdrParameterObjects
-    , gpdrParameterValues
-    , gpdrPipelineObjects
+    , GetPipelineDefinitionResponse
+    -- * Response Lenses
+    , gpdrsPipelineObjects
+    , gpdrsParameterObjects
+    , gpdrsParameterValues
+    , gpdrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data GetPipelineDefinition = GetPipelineDefinition
-    { _gpdPipelineId :: Text
-    , _gpdVersion    :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'GetPipelineDefinition' constructor.
+-- | Contains the parameters for GetPipelineDefinition.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getPipelineDefinition' smart constructor.
+data GetPipelineDefinition = GetPipelineDefinition'
+    { _gpdVersion    :: !(Maybe Text)
+    , _gpdPipelineId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetPipelineDefinition' with the minimum fields required to make a request.
 --
--- * 'gpdPipelineId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gpdVersion' @::@ 'Maybe' 'Text'
+-- * 'gpdVersion'
 --
-getPipelineDefinition :: Text -- ^ 'gpdPipelineId'
-                      -> GetPipelineDefinition
-getPipelineDefinition p1 = GetPipelineDefinition
-    { _gpdPipelineId = p1
-    , _gpdVersion    = Nothing
+-- * 'gpdPipelineId'
+getPipelineDefinition
+    :: Text -- ^ 'gpdPipelineId'
+    -> GetPipelineDefinition
+getPipelineDefinition pPipelineId_ =
+    GetPipelineDefinition'
+    { _gpdVersion = Nothing
+    , _gpdPipelineId = pPipelineId_
     }
 
+-- | The version of the pipeline definition to retrieve. Set this parameter
+-- to 'latest' (default) to use the last definition saved to the pipeline
+-- or 'active' to use the last definition that was activated.
+gpdVersion :: Lens' GetPipelineDefinition (Maybe Text)
+gpdVersion = lens _gpdVersion (\ s a -> s{_gpdVersion = a});
+
 -- | The ID of the pipeline.
 gpdPipelineId :: Lens' GetPipelineDefinition Text
-gpdPipelineId = lens _gpdPipelineId (\s a -> s { _gpdPipelineId = a })
+gpdPipelineId = lens _gpdPipelineId (\ s a -> s{_gpdPipelineId = a});
 
--- | The version of the pipeline definition to retrieve. Set this parameter to 'latest' (default) to use the last definition saved to the pipeline or 'active' to use
--- the last definition that was activated.
-gpdVersion :: Lens' GetPipelineDefinition (Maybe Text)
-gpdVersion = lens _gpdVersion (\s a -> s { _gpdVersion = a })
+instance AWSRequest GetPipelineDefinition where
+        type Sv GetPipelineDefinition = DataPipeline
+        type Rs GetPipelineDefinition =
+             GetPipelineDefinitionResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetPipelineDefinitionResponse' <$>
+                   (x .?> "pipelineObjects" .!@ mempty) <*>
+                     (x .?> "parameterObjects" .!@ mempty)
+                     <*> (x .?> "parameterValues" .!@ mempty)
+                     <*> (pure (fromEnum s)))
 
-data GetPipelineDefinitionResponse = GetPipelineDefinitionResponse
-    { _gpdrParameterObjects :: List "parameterObjects" ParameterObject
-    , _gpdrParameterValues  :: List "parameterValues" ParameterValue
-    , _gpdrPipelineObjects  :: List "pipelineObjects" PipelineObject
-    } deriving (Eq, Read, Show)
+instance ToHeaders GetPipelineDefinition where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.GetPipelineDefinition" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'GetPipelineDefinitionResponse' constructor.
+instance ToJSON GetPipelineDefinition where
+        toJSON GetPipelineDefinition'{..}
+          = object
+              ["version" .= _gpdVersion,
+               "pipelineId" .= _gpdPipelineId]
+
+instance ToPath GetPipelineDefinition where
+        toPath = const "/"
+
+instance ToQuery GetPipelineDefinition where
+        toQuery = const mempty
+
+-- | Contains the output of GetPipelineDefinition.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getPipelineDefinitionResponse' smart constructor.
+data GetPipelineDefinitionResponse = GetPipelineDefinitionResponse'
+    { _gpdrsPipelineObjects  :: !(Maybe [PipelineObject])
+    , _gpdrsParameterObjects :: !(Maybe [ParameterObject])
+    , _gpdrsParameterValues  :: !(Maybe [ParameterValue])
+    , _gpdrsStatus           :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetPipelineDefinitionResponse' with the minimum fields required to make a request.
 --
--- * 'gpdrParameterObjects' @::@ ['ParameterObject']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gpdrParameterValues' @::@ ['ParameterValue']
+-- * 'gpdrsPipelineObjects'
 --
--- * 'gpdrPipelineObjects' @::@ ['PipelineObject']
+-- * 'gpdrsParameterObjects'
 --
-getPipelineDefinitionResponse :: GetPipelineDefinitionResponse
-getPipelineDefinitionResponse = GetPipelineDefinitionResponse
-    { _gpdrPipelineObjects  = mempty
-    , _gpdrParameterObjects = mempty
-    , _gpdrParameterValues  = mempty
+-- * 'gpdrsParameterValues'
+--
+-- * 'gpdrsStatus'
+getPipelineDefinitionResponse
+    :: Int -- ^ 'gpdrsStatus'
+    -> GetPipelineDefinitionResponse
+getPipelineDefinitionResponse pStatus_ =
+    GetPipelineDefinitionResponse'
+    { _gpdrsPipelineObjects = Nothing
+    , _gpdrsParameterObjects = Nothing
+    , _gpdrsParameterValues = Nothing
+    , _gpdrsStatus = pStatus_
     }
 
--- | The parameter objects used in the pipeline definition.
-gpdrParameterObjects :: Lens' GetPipelineDefinitionResponse [ParameterObject]
-gpdrParameterObjects =
-    lens _gpdrParameterObjects (\s a -> s { _gpdrParameterObjects = a })
-        . _List
-
--- | The parameter values used in the pipeline definition.
-gpdrParameterValues :: Lens' GetPipelineDefinitionResponse [ParameterValue]
-gpdrParameterValues =
-    lens _gpdrParameterValues (\s a -> s { _gpdrParameterValues = a })
-        . _List
-
 -- | The objects defined in the pipeline.
-gpdrPipelineObjects :: Lens' GetPipelineDefinitionResponse [PipelineObject]
-gpdrPipelineObjects =
-    lens _gpdrPipelineObjects (\s a -> s { _gpdrPipelineObjects = a })
-        . _List
-
-instance ToPath GetPipelineDefinition where
-    toPath = const "/"
-
-instance ToQuery GetPipelineDefinition where
-    toQuery = const mempty
-
-instance ToHeaders GetPipelineDefinition
-
-instance ToJSON GetPipelineDefinition where
-    toJSON GetPipelineDefinition{..} = object
-        [ "pipelineId" .= _gpdPipelineId
-        , "version"    .= _gpdVersion
-        ]
+gpdrsPipelineObjects :: Lens' GetPipelineDefinitionResponse [PipelineObject]
+gpdrsPipelineObjects = lens _gpdrsPipelineObjects (\ s a -> s{_gpdrsPipelineObjects = a}) . _Default . _Coerce;
 
-instance AWSRequest GetPipelineDefinition where
-    type Sv GetPipelineDefinition = DataPipeline
-    type Rs GetPipelineDefinition = GetPipelineDefinitionResponse
+-- | The parameter objects used in the pipeline definition.
+gpdrsParameterObjects :: Lens' GetPipelineDefinitionResponse [ParameterObject]
+gpdrsParameterObjects = lens _gpdrsParameterObjects (\ s a -> s{_gpdrsParameterObjects = a}) . _Default . _Coerce;
 
-    request  = post "GetPipelineDefinition"
-    response = jsonResponse
+-- | The parameter values used in the pipeline definition.
+gpdrsParameterValues :: Lens' GetPipelineDefinitionResponse [ParameterValue]
+gpdrsParameterValues = lens _gpdrsParameterValues (\ s a -> s{_gpdrsParameterValues = a}) . _Default . _Coerce;
 
-instance FromJSON GetPipelineDefinitionResponse where
-    parseJSON = withObject "GetPipelineDefinitionResponse" $ \o -> GetPipelineDefinitionResponse
-        <$> o .:? "parameterObjects" .!= mempty
-        <*> o .:? "parameterValues" .!= mempty
-        <*> o .:? "pipelineObjects" .!= mempty
+-- | The response status code.
+gpdrsStatus :: Lens' GetPipelineDefinitionResponse Int
+gpdrsStatus = lens _gpdrsStatus (\ s a -> s{_gpdrsStatus = a});
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
@@ -1,147 +1,167 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.ListPipelines
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Lists the pipeline identifiers for all active pipelines that you have
+-- Lists the pipeline identifiers for all active pipelines that you have
 -- permission to access.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_ListPipelines.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_ListPipelines.html AWS API Reference> for ListPipelines.
+--
+-- This operation returns paginated results.
 module Network.AWS.DataPipeline.ListPipelines
     (
-    -- * Request
-      ListPipelines
-    -- ** Request constructor
-    , listPipelines
-    -- ** Request lenses
+    -- * Creating a Request
+      listPipelines
+    , ListPipelines
+    -- * Request Lenses
     , lpMarker
 
-    -- * Response
-    , ListPipelinesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listPipelinesResponse
-    -- ** Response lenses
-    , lprHasMoreResults
-    , lprMarker
-    , lprPipelineIdList
+    , ListPipelinesResponse
+    -- * Response Lenses
+    , lprsHasMoreResults
+    , lprsMarker
+    , lprsStatus
+    , lprsPipelineIdList
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype ListPipelines = ListPipelines
+-- | Contains the parameters for ListPipelines.
+--
+-- /See:/ 'listPipelines' smart constructor.
+newtype ListPipelines = ListPipelines'
     { _lpMarker :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ListPipelines' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ListPipelines' with the minimum fields required to make a request.
 --
--- * 'lpMarker' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-listPipelines :: ListPipelines
-listPipelines = ListPipelines
+-- * 'lpMarker'
+listPipelines
+    :: ListPipelines
+listPipelines =
+    ListPipelines'
     { _lpMarker = Nothing
     }
 
--- | The starting point for the results to be returned. For the first call, this
--- value should be empty. As long as there are more results, continue to call 'ListPipelines' with the marker value from the previous call to retrieve the next set of
--- results.
+-- | The starting point for the results to be returned. For the first call,
+-- this value should be empty. As long as there are more results, continue
+-- to call 'ListPipelines' with the marker value from the previous call to
+-- retrieve the next set of results.
 lpMarker :: Lens' ListPipelines (Maybe Text)
-lpMarker = lens _lpMarker (\s a -> s { _lpMarker = a })
-
-data ListPipelinesResponse = ListPipelinesResponse
-    { _lprHasMoreResults :: Maybe Bool
-    , _lprMarker         :: Maybe Text
-    , _lprPipelineIdList :: List "pipelineIdList" PipelineIdName
-    } deriving (Eq, Read, Show)
+lpMarker = lens _lpMarker (\ s a -> s{_lpMarker = a});
 
--- | 'ListPipelinesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lprHasMoreResults' @::@ 'Maybe' 'Bool'
---
--- * 'lprMarker' @::@ 'Maybe' 'Text'
---
--- * 'lprPipelineIdList' @::@ ['PipelineIdName']
---
-listPipelinesResponse :: ListPipelinesResponse
-listPipelinesResponse = ListPipelinesResponse
-    { _lprPipelineIdList = mempty
-    , _lprMarker         = Nothing
-    , _lprHasMoreResults = Nothing
-    }
+instance AWSPager ListPipelines where
+        page rq rs
+          | stop (rs ^. lprsHasMoreResults) = Nothing
+          | isNothing (rs ^. lprsMarker) = Nothing
+          | otherwise =
+            Just $ rq & lpMarker .~ rs ^. lprsMarker
 
--- | Indicates whether there are more results that can be obtained by a subsequent
--- call.
-lprHasMoreResults :: Lens' ListPipelinesResponse (Maybe Bool)
-lprHasMoreResults =
-    lens _lprHasMoreResults (\s a -> s { _lprHasMoreResults = a })
+instance AWSRequest ListPipelines where
+        type Sv ListPipelines = DataPipeline
+        type Rs ListPipelines = ListPipelinesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListPipelinesResponse' <$>
+                   (x .?> "hasMoreResults") <*> (x .?> "marker") <*>
+                     (pure (fromEnum s))
+                     <*> (x .?> "pipelineIdList" .!@ mempty))
 
--- | The starting point for the next page of results. To view the next page of
--- results, call 'ListPipelinesOutput' again with this marker value. If the value
--- is null, there are no more results.
-lprMarker :: Lens' ListPipelinesResponse (Maybe Text)
-lprMarker = lens _lprMarker (\s a -> s { _lprMarker = a })
+instance ToHeaders ListPipelines where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.ListPipelines" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The pipeline identifiers. If you require additional information about the
--- pipelines, you can use these identifiers to call 'DescribePipelines' and 'GetPipelineDefinition'.
-lprPipelineIdList :: Lens' ListPipelinesResponse [PipelineIdName]
-lprPipelineIdList =
-    lens _lprPipelineIdList (\s a -> s { _lprPipelineIdList = a })
-        . _List
+instance ToJSON ListPipelines where
+        toJSON ListPipelines'{..}
+          = object ["marker" .= _lpMarker]
 
 instance ToPath ListPipelines where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ListPipelines where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders ListPipelines
+-- | Contains the output of ListPipelines.
+--
+-- /See:/ 'listPipelinesResponse' smart constructor.
+data ListPipelinesResponse = ListPipelinesResponse'
+    { _lprsHasMoreResults :: !(Maybe Bool)
+    , _lprsMarker         :: !(Maybe Text)
+    , _lprsStatus         :: !Int
+    , _lprsPipelineIdList :: ![PipelineIdName]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON ListPipelines where
-    toJSON ListPipelines{..} = object
-        [ "marker" .= _lpMarker
-        ]
+-- | Creates a value of 'ListPipelinesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lprsHasMoreResults'
+--
+-- * 'lprsMarker'
+--
+-- * 'lprsStatus'
+--
+-- * 'lprsPipelineIdList'
+listPipelinesResponse
+    :: Int -- ^ 'lprsStatus'
+    -> ListPipelinesResponse
+listPipelinesResponse pStatus_ =
+    ListPipelinesResponse'
+    { _lprsHasMoreResults = Nothing
+    , _lprsMarker = Nothing
+    , _lprsStatus = pStatus_
+    , _lprsPipelineIdList = mempty
+    }
 
-instance AWSRequest ListPipelines where
-    type Sv ListPipelines = DataPipeline
-    type Rs ListPipelines = ListPipelinesResponse
+-- | Indicates whether there are more results that can be obtained by a
+-- subsequent call.
+lprsHasMoreResults :: Lens' ListPipelinesResponse (Maybe Bool)
+lprsHasMoreResults = lens _lprsHasMoreResults (\ s a -> s{_lprsHasMoreResults = a});
 
-    request  = post "ListPipelines"
-    response = jsonResponse
+-- | The starting point for the next page of results. To view the next page
+-- of results, call 'ListPipelinesOutput' again with this marker value. If
+-- the value is null, there are no more results.
+lprsMarker :: Lens' ListPipelinesResponse (Maybe Text)
+lprsMarker = lens _lprsMarker (\ s a -> s{_lprsMarker = a});
 
-instance FromJSON ListPipelinesResponse where
-    parseJSON = withObject "ListPipelinesResponse" $ \o -> ListPipelinesResponse
-        <$> o .:? "hasMoreResults"
-        <*> o .:? "marker"
-        <*> o .:? "pipelineIdList" .!= mempty
+-- | The response status code.
+lprsStatus :: Lens' ListPipelinesResponse Int
+lprsStatus = lens _lprsStatus (\ s a -> s{_lprsStatus = a});
 
-instance AWSPager ListPipelines where
-    page rq rs
-        | stop (rs ^. lprHasMoreResults) = Nothing
-        | otherwise = Just $ rq
-            & lpMarker .~ rs ^. lprMarker
+-- | The pipeline identifiers. If you require additional information about
+-- the pipelines, you can use these identifiers to call DescribePipelines
+-- and GetPipelineDefinition.
+lprsPipelineIdList :: Lens' ListPipelinesResponse [PipelineIdName]
+lprsPipelineIdList = lens _lprsPipelineIdList (\ s a -> s{_lprsPipelineIdList = a}) . _Coerce;
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
@@ -1,155 +1,180 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.PollForTask
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Task runners call 'PollForTask' to receive a task to perform from AWS Data
--- Pipeline. The task runner specifies which tasks it can perform by setting a
--- value for the 'workerGroup' parameter. The task returned can come from any of
--- the pipelines that match the 'workerGroup' value passed in by the task runner
--- and that was launched using the IAM user credentials specified by the task
--- runner.
+-- Task runners call 'PollForTask' to receive a task to perform from AWS
+-- Data Pipeline. The task runner specifies which tasks it can perform by
+-- setting a value for the 'workerGroup' parameter. The task returned can
+-- come from any of the pipelines that match the 'workerGroup' value passed
+-- in by the task runner and that was launched using the IAM user
+-- credentials specified by the task runner.
 --
 -- If tasks are ready in the work queue, 'PollForTask' returns a response
 -- immediately. If no tasks are available in the queue, 'PollForTask' uses
--- long-polling and holds on to a poll connection for up to a 90 seconds, during
--- which time the first newly scheduled task is handed to the task runner. To
--- accomodate this, set the socket timeout in your task runner to 90 seconds.
--- The task runner should not call 'PollForTask' again on the same 'workerGroup'
--- until it receives a response, and this can take up to 90 seconds.
+-- long-polling and holds on to a poll connection for up to a 90 seconds,
+-- during which time the first newly scheduled task is handed to the task
+-- runner. To accomodate this, set the socket timeout in your task runner
+-- to 90 seconds. The task runner should not call 'PollForTask' again on
+-- the same 'workerGroup' until it receives a response, and this can take
+-- up to 90 seconds.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_PollForTask.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_PollForTask.html AWS API Reference> for PollForTask.
 module Network.AWS.DataPipeline.PollForTask
     (
-    -- * Request
-      PollForTask
-    -- ** Request constructor
-    , pollForTask
-    -- ** Request lenses
+    -- * Creating a Request
+      pollForTask
+    , PollForTask
+    -- * Request Lenses
     , pftHostname
     , pftInstanceIdentity
     , pftWorkerGroup
 
-    -- * Response
-    , PollForTaskResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , pollForTaskResponse
-    -- ** Response lenses
-    , pftrTaskObject
+    , PollForTaskResponse
+    -- * Response Lenses
+    , pftrsTaskObject
+    , pftrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data PollForTask = PollForTask
-    { _pftHostname         :: Maybe Text
-    , _pftInstanceIdentity :: Maybe InstanceIdentity
-    , _pftWorkerGroup      :: Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'PollForTask' constructor.
+-- | Contains the parameters for PollForTask.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'pollForTask' smart constructor.
+data PollForTask = PollForTask'
+    { _pftHostname         :: !(Maybe Text)
+    , _pftInstanceIdentity :: !(Maybe InstanceIdentity)
+    , _pftWorkerGroup      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PollForTask' with the minimum fields required to make a request.
 --
--- * 'pftHostname' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'pftInstanceIdentity' @::@ 'Maybe' 'InstanceIdentity'
+-- * 'pftHostname'
 --
--- * 'pftWorkerGroup' @::@ 'Text'
+-- * 'pftInstanceIdentity'
 --
-pollForTask :: Text -- ^ 'pftWorkerGroup'
-            -> PollForTask
-pollForTask p1 = PollForTask
-    { _pftWorkerGroup      = p1
-    , _pftHostname         = Nothing
+-- * 'pftWorkerGroup'
+pollForTask
+    :: Text -- ^ 'pftWorkerGroup'
+    -> PollForTask
+pollForTask pWorkerGroup_ =
+    PollForTask'
+    { _pftHostname = Nothing
     , _pftInstanceIdentity = Nothing
+    , _pftWorkerGroup = pWorkerGroup_
     }
 
 -- | The public DNS name of the calling task runner.
 pftHostname :: Lens' PollForTask (Maybe Text)
-pftHostname = lens _pftHostname (\s a -> s { _pftHostname = a })
+pftHostname = lens _pftHostname (\ s a -> s{_pftHostname = a});
 
--- | Identity information for the EC2 instance that is hosting the task runner.
--- You can get this value from the instance using 'http://169.254.169.254/latest/meta-data/instance-id'. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html Instance Metadata> in the /Amazon Elastic ComputeCloud User Guide./ Passing in this value proves that your task runner is
--- running on an EC2 instance, and ensures the proper AWS Data Pipeline service
--- charges are applied to your pipeline.
+-- | Identity information for the EC2 instance that is hosting the task
+-- runner. You can get this value from the instance using
+-- 'http:\/\/169.254.169.254\/latest\/meta-data\/instance-id'. For more
+-- information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html Instance Metadata>
+-- in the /Amazon Elastic Compute Cloud User Guide./ Passing in this value
+-- proves that your task runner is running on an EC2 instance, and ensures
+-- the proper AWS Data Pipeline service charges are applied to your
+-- pipeline.
 pftInstanceIdentity :: Lens' PollForTask (Maybe InstanceIdentity)
-pftInstanceIdentity =
-    lens _pftInstanceIdentity (\s a -> s { _pftInstanceIdentity = a })
+pftInstanceIdentity = lens _pftInstanceIdentity (\ s a -> s{_pftInstanceIdentity = a});
 
--- | The type of task the task runner is configured to accept and process. The
--- worker group is set as a field on objects in the pipeline when they are
--- created. You can only specify a single value for 'workerGroup' in the call to 'PollForTask'. There are no wildcard values permitted in 'workerGroup'; the string must be
--- an exact, case-sensitive, match.
+-- | The type of task the task runner is configured to accept and process.
+-- The worker group is set as a field on objects in the pipeline when they
+-- are created. You can only specify a single value for 'workerGroup' in
+-- the call to 'PollForTask'. There are no wildcard values permitted in
+-- 'workerGroup'; the string must be an exact, case-sensitive, match.
 pftWorkerGroup :: Lens' PollForTask Text
-pftWorkerGroup = lens _pftWorkerGroup (\s a -> s { _pftWorkerGroup = a })
+pftWorkerGroup = lens _pftWorkerGroup (\ s a -> s{_pftWorkerGroup = a});
 
-newtype PollForTaskResponse = PollForTaskResponse
-    { _pftrTaskObject :: Maybe TaskObject
-    } deriving (Eq, Read, Show)
+instance AWSRequest PollForTask where
+        type Sv PollForTask = DataPipeline
+        type Rs PollForTask = PollForTaskResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 PollForTaskResponse' <$>
+                   (x .?> "taskObject") <*> (pure (fromEnum s)))
 
--- | 'PollForTaskResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'pftrTaskObject' @::@ 'Maybe' 'TaskObject'
---
-pollForTaskResponse :: PollForTaskResponse
-pollForTaskResponse = PollForTaskResponse
-    { _pftrTaskObject = Nothing
-    }
+instance ToHeaders PollForTask where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.PollForTask" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The information needed to complete the task that is being assigned to the
--- task runner. One of the fields returned in this object is 'taskId', which
--- contains an identifier for the task being assigned. The calling task runner
--- uses 'taskId' in subsequent calls to 'ReportTaskProgress' and 'SetTaskStatus'.
-pftrTaskObject :: Lens' PollForTaskResponse (Maybe TaskObject)
-pftrTaskObject = lens _pftrTaskObject (\s a -> s { _pftrTaskObject = a })
+instance ToJSON PollForTask where
+        toJSON PollForTask'{..}
+          = object
+              ["hostname" .= _pftHostname,
+               "instanceIdentity" .= _pftInstanceIdentity,
+               "workerGroup" .= _pftWorkerGroup]
 
 instance ToPath PollForTask where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery PollForTask where
-    toQuery = const mempty
-
-instance ToHeaders PollForTask
+        toQuery = const mempty
 
-instance ToJSON PollForTask where
-    toJSON PollForTask{..} = object
-        [ "workerGroup"      .= _pftWorkerGroup
-        , "hostname"         .= _pftHostname
-        , "instanceIdentity" .= _pftInstanceIdentity
-        ]
+-- | Contains the output of PollForTask.
+--
+-- /See:/ 'pollForTaskResponse' smart constructor.
+data PollForTaskResponse = PollForTaskResponse'
+    { _pftrsTaskObject :: !(Maybe TaskObject)
+    , _pftrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest PollForTask where
-    type Sv PollForTask = DataPipeline
-    type Rs PollForTask = PollForTaskResponse
+-- | Creates a value of 'PollForTaskResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pftrsTaskObject'
+--
+-- * 'pftrsStatus'
+pollForTaskResponse
+    :: Int -- ^ 'pftrsStatus'
+    -> PollForTaskResponse
+pollForTaskResponse pStatus_ =
+    PollForTaskResponse'
+    { _pftrsTaskObject = Nothing
+    , _pftrsStatus = pStatus_
+    }
 
-    request  = post "PollForTask"
-    response = jsonResponse
+-- | The information needed to complete the task that is being assigned to
+-- the task runner. One of the fields returned in this object is 'taskId',
+-- which contains an identifier for the task being assigned. The calling
+-- task runner uses 'taskId' in subsequent calls to ReportTaskProgress and
+-- SetTaskStatus.
+pftrsTaskObject :: Lens' PollForTaskResponse (Maybe TaskObject)
+pftrsTaskObject = lens _pftrsTaskObject (\ s a -> s{_pftrsTaskObject = a});
 
-instance FromJSON PollForTaskResponse where
-    parseJSON = withObject "PollForTaskResponse" $ \o -> PollForTaskResponse
-        <$> o .:? "taskObject"
+-- | The response status code.
+pftrsStatus :: Lens' PollForTaskResponse Int
+pftrsStatus = lens _pftrsStatus (\ s a -> s{_pftrsStatus = a});
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
@@ -1,186 +1,203 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.PutPipelineDefinition
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Adds tasks, schedules, and preconditions to the specified pipeline. You can
--- use 'PutPipelineDefinition' to populate a new pipeline.
+-- Adds tasks, schedules, and preconditions to the specified pipeline. You
+-- can use 'PutPipelineDefinition' to populate a new pipeline.
 --
--- 'PutPipelineDefinition' also validates the configuration as it adds it to the
--- pipeline. Changes to the pipeline are saved unless one of the following three
--- validation errors exists in the pipeline.
+-- 'PutPipelineDefinition' also validates the configuration as it adds it
+-- to the pipeline. Changes to the pipeline are saved unless one of the
+-- following three validation errors exists in the pipeline.
 --
--- An object is missing a name or identifier field. A string or reference
--- field is empty. The number of objects in the pipeline exceeds the maximum
--- allowed objects. The pipeline is in a FINISHED state.   Pipeline object
--- definitions are passed to the 'PutPipelineDefinition' action and returned by
--- the 'GetPipelineDefinition' action.
+-- 1.  An object is missing a name or identifier field.
+-- 2.  A string or reference field is empty.
+-- 3.  The number of objects in the pipeline exceeds the maximum allowed
+--     objects.
+-- 4.  The pipeline is in a FINISHED state.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_PutPipelineDefinition.html>
+-- Pipeline object definitions are passed to the 'PutPipelineDefinition'
+-- action and returned by the GetPipelineDefinition action.
+--
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_PutPipelineDefinition.html AWS API Reference> for PutPipelineDefinition.
 module Network.AWS.DataPipeline.PutPipelineDefinition
     (
-    -- * Request
-      PutPipelineDefinition
-    -- ** Request constructor
-    , putPipelineDefinition
-    -- ** Request lenses
+    -- * Creating a Request
+      putPipelineDefinition
+    , PutPipelineDefinition
+    -- * Request Lenses
     , ppdParameterObjects
     , ppdParameterValues
     , ppdPipelineId
     , ppdPipelineObjects
 
-    -- * Response
-    , PutPipelineDefinitionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , putPipelineDefinitionResponse
-    -- ** Response lenses
-    , ppdrErrored
-    , ppdrValidationErrors
-    , ppdrValidationWarnings
+    , PutPipelineDefinitionResponse
+    -- * Response Lenses
+    , ppdrsValidationErrors
+    , ppdrsValidationWarnings
+    , ppdrsStatus
+    , ppdrsErrored
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data PutPipelineDefinition = PutPipelineDefinition
-    { _ppdParameterObjects :: List "parameterObjects" ParameterObject
-    , _ppdParameterValues  :: List "parameterValues" ParameterValue
-    , _ppdPipelineId       :: Text
-    , _ppdPipelineObjects  :: List "pipelineObjects" PipelineObject
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'PutPipelineDefinition' constructor.
+-- | Contains the parameters for PutPipelineDefinition.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'putPipelineDefinition' smart constructor.
+data PutPipelineDefinition = PutPipelineDefinition'
+    { _ppdParameterObjects :: !(Maybe [ParameterObject])
+    , _ppdParameterValues  :: !(Maybe [ParameterValue])
+    , _ppdPipelineId       :: !Text
+    , _ppdPipelineObjects  :: ![PipelineObject]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PutPipelineDefinition' with the minimum fields required to make a request.
 --
--- * 'ppdParameterObjects' @::@ ['ParameterObject']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ppdParameterValues' @::@ ['ParameterValue']
+-- * 'ppdParameterObjects'
 --
--- * 'ppdPipelineId' @::@ 'Text'
+-- * 'ppdParameterValues'
 --
--- * 'ppdPipelineObjects' @::@ ['PipelineObject']
+-- * 'ppdPipelineId'
 --
-putPipelineDefinition :: Text -- ^ 'ppdPipelineId'
-                      -> PutPipelineDefinition
-putPipelineDefinition p1 = PutPipelineDefinition
-    { _ppdPipelineId       = p1
-    , _ppdPipelineObjects  = mempty
-    , _ppdParameterObjects = mempty
-    , _ppdParameterValues  = mempty
+-- * 'ppdPipelineObjects'
+putPipelineDefinition
+    :: Text -- ^ 'ppdPipelineId'
+    -> PutPipelineDefinition
+putPipelineDefinition pPipelineId_ =
+    PutPipelineDefinition'
+    { _ppdParameterObjects = Nothing
+    , _ppdParameterValues = Nothing
+    , _ppdPipelineId = pPipelineId_
+    , _ppdPipelineObjects = mempty
     }
 
 -- | The parameter objects used with the pipeline.
 ppdParameterObjects :: Lens' PutPipelineDefinition [ParameterObject]
-ppdParameterObjects =
-    lens _ppdParameterObjects (\s a -> s { _ppdParameterObjects = a })
-        . _List
+ppdParameterObjects = lens _ppdParameterObjects (\ s a -> s{_ppdParameterObjects = a}) . _Default . _Coerce;
 
 -- | The parameter values used with the pipeline.
 ppdParameterValues :: Lens' PutPipelineDefinition [ParameterValue]
-ppdParameterValues =
-    lens _ppdParameterValues (\s a -> s { _ppdParameterValues = a })
-        . _List
+ppdParameterValues = lens _ppdParameterValues (\ s a -> s{_ppdParameterValues = a}) . _Default . _Coerce;
 
 -- | The ID of the pipeline.
 ppdPipelineId :: Lens' PutPipelineDefinition Text
-ppdPipelineId = lens _ppdPipelineId (\s a -> s { _ppdPipelineId = a })
+ppdPipelineId = lens _ppdPipelineId (\ s a -> s{_ppdPipelineId = a});
 
--- | The objects that define the pipeline. These objects overwrite the existing
--- pipeline definition.
+-- | The objects that define the pipeline. These objects overwrite the
+-- existing pipeline definition.
 ppdPipelineObjects :: Lens' PutPipelineDefinition [PipelineObject]
-ppdPipelineObjects =
-    lens _ppdPipelineObjects (\s a -> s { _ppdPipelineObjects = a })
-        . _List
-
-data PutPipelineDefinitionResponse = PutPipelineDefinitionResponse
-    { _ppdrErrored            :: Bool
-    , _ppdrValidationErrors   :: List "validationErrors" ValidationError
-    , _ppdrValidationWarnings :: List "validationWarnings" ValidationWarning
-    } deriving (Eq, Read, Show)
-
--- | 'PutPipelineDefinitionResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ppdrErrored' @::@ 'Bool'
---
--- * 'ppdrValidationErrors' @::@ ['ValidationError']
---
--- * 'ppdrValidationWarnings' @::@ ['ValidationWarning']
---
-putPipelineDefinitionResponse :: Bool -- ^ 'ppdrErrored'
-                              -> PutPipelineDefinitionResponse
-putPipelineDefinitionResponse p1 = PutPipelineDefinitionResponse
-    { _ppdrErrored            = p1
-    , _ppdrValidationErrors   = mempty
-    , _ppdrValidationWarnings = mempty
-    }
+ppdPipelineObjects = lens _ppdPipelineObjects (\ s a -> s{_ppdPipelineObjects = a}) . _Coerce;
 
--- | Indicates whether there were validation errors, and the pipeline definition
--- is stored but cannot be activated until you correct the pipeline and call 'PutPipelineDefinition' to commit the corrected pipeline.
-ppdrErrored :: Lens' PutPipelineDefinitionResponse Bool
-ppdrErrored = lens _ppdrErrored (\s a -> s { _ppdrErrored = a })
+instance AWSRequest PutPipelineDefinition where
+        type Sv PutPipelineDefinition = DataPipeline
+        type Rs PutPipelineDefinition =
+             PutPipelineDefinitionResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 PutPipelineDefinitionResponse' <$>
+                   (x .?> "validationErrors" .!@ mempty) <*>
+                     (x .?> "validationWarnings" .!@ mempty)
+                     <*> (pure (fromEnum s))
+                     <*> (x .:> "errored"))
 
--- | The validation errors that are associated with the objects defined in 'pipelineObjects'.
-ppdrValidationErrors :: Lens' PutPipelineDefinitionResponse [ValidationError]
-ppdrValidationErrors =
-    lens _ppdrValidationErrors (\s a -> s { _ppdrValidationErrors = a })
-        . _List
+instance ToHeaders PutPipelineDefinition where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.PutPipelineDefinition" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The validation warnings that are associated with the objects defined in 'pipelineObjects'.
-ppdrValidationWarnings :: Lens' PutPipelineDefinitionResponse [ValidationWarning]
-ppdrValidationWarnings =
-    lens _ppdrValidationWarnings (\s a -> s { _ppdrValidationWarnings = a })
-        . _List
+instance ToJSON PutPipelineDefinition where
+        toJSON PutPipelineDefinition'{..}
+          = object
+              ["parameterObjects" .= _ppdParameterObjects,
+               "parameterValues" .= _ppdParameterValues,
+               "pipelineId" .= _ppdPipelineId,
+               "pipelineObjects" .= _ppdPipelineObjects]
 
 instance ToPath PutPipelineDefinition where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery PutPipelineDefinition where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders PutPipelineDefinition
+-- | Contains the output of PutPipelineDefinition.
+--
+-- /See:/ 'putPipelineDefinitionResponse' smart constructor.
+data PutPipelineDefinitionResponse = PutPipelineDefinitionResponse'
+    { _ppdrsValidationErrors   :: !(Maybe [ValidationError])
+    , _ppdrsValidationWarnings :: !(Maybe [ValidationWarning])
+    , _ppdrsStatus             :: !Int
+    , _ppdrsErrored            :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON PutPipelineDefinition where
-    toJSON PutPipelineDefinition{..} = object
-        [ "pipelineId"       .= _ppdPipelineId
-        , "pipelineObjects"  .= _ppdPipelineObjects
-        , "parameterObjects" .= _ppdParameterObjects
-        , "parameterValues"  .= _ppdParameterValues
-        ]
+-- | Creates a value of 'PutPipelineDefinitionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ppdrsValidationErrors'
+--
+-- * 'ppdrsValidationWarnings'
+--
+-- * 'ppdrsStatus'
+--
+-- * 'ppdrsErrored'
+putPipelineDefinitionResponse
+    :: Int -- ^ 'ppdrsStatus'
+    -> Bool -- ^ 'ppdrsErrored'
+    -> PutPipelineDefinitionResponse
+putPipelineDefinitionResponse pStatus_ pErrored_ =
+    PutPipelineDefinitionResponse'
+    { _ppdrsValidationErrors = Nothing
+    , _ppdrsValidationWarnings = Nothing
+    , _ppdrsStatus = pStatus_
+    , _ppdrsErrored = pErrored_
+    }
 
-instance AWSRequest PutPipelineDefinition where
-    type Sv PutPipelineDefinition = DataPipeline
-    type Rs PutPipelineDefinition = PutPipelineDefinitionResponse
+-- | The validation errors that are associated with the objects defined in
+-- 'pipelineObjects'.
+ppdrsValidationErrors :: Lens' PutPipelineDefinitionResponse [ValidationError]
+ppdrsValidationErrors = lens _ppdrsValidationErrors (\ s a -> s{_ppdrsValidationErrors = a}) . _Default . _Coerce;
 
-    request  = post "PutPipelineDefinition"
-    response = jsonResponse
+-- | The validation warnings that are associated with the objects defined in
+-- 'pipelineObjects'.
+ppdrsValidationWarnings :: Lens' PutPipelineDefinitionResponse [ValidationWarning]
+ppdrsValidationWarnings = lens _ppdrsValidationWarnings (\ s a -> s{_ppdrsValidationWarnings = a}) . _Default . _Coerce;
 
-instance FromJSON PutPipelineDefinitionResponse where
-    parseJSON = withObject "PutPipelineDefinitionResponse" $ \o -> PutPipelineDefinitionResponse
-        <$> o .:  "errored"
-        <*> o .:? "validationErrors" .!= mempty
-        <*> o .:? "validationWarnings" .!= mempty
+-- | The response status code.
+ppdrsStatus :: Lens' PutPipelineDefinitionResponse Int
+ppdrsStatus = lens _ppdrsStatus (\ s a -> s{_ppdrsStatus = a});
+
+-- | Indicates whether there were validation errors, and the pipeline
+-- definition is stored but cannot be activated until you correct the
+-- pipeline and call 'PutPipelineDefinition' to commit the corrected
+-- pipeline.
+ppdrsErrored :: Lens' PutPipelineDefinitionResponse Bool
+ppdrsErrored = lens _ppdrsErrored (\ s a -> s{_ppdrsErrored = a});
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
@@ -1,191 +1,211 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.QueryObjects
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Queries the specified pipeline for the names of objects that match the
+-- Queries the specified pipeline for the names of objects that match the
 -- specified set of conditions.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_QueryObjects.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_QueryObjects.html AWS API Reference> for QueryObjects.
+--
+-- This operation returns paginated results.
 module Network.AWS.DataPipeline.QueryObjects
     (
-    -- * Request
-      QueryObjects
-    -- ** Request constructor
-    , queryObjects
-    -- ** Request lenses
-    , qoLimit
+    -- * Creating a Request
+      queryObjects
+    , QueryObjects
+    -- * Request Lenses
+    , qoQuery
     , qoMarker
+    , qoLimit
     , qoPipelineId
-    , qoQuery
     , qoSphere
 
-    -- * Response
-    , QueryObjectsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , queryObjectsResponse
-    -- ** Response lenses
-    , qorHasMoreResults
-    , qorIds
-    , qorMarker
+    , QueryObjectsResponse
+    -- * Response Lenses
+    , qorsHasMoreResults
+    , qorsIds
+    , qorsMarker
+    , qorsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data QueryObjects = QueryObjects
-    { _qoLimit      :: Maybe Int
-    , _qoMarker     :: Maybe Text
-    , _qoPipelineId :: Text
-    , _qoQuery      :: Maybe Query
-    , _qoSphere     :: Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'QueryObjects' constructor.
+-- | Contains the parameters for QueryObjects.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'queryObjects' smart constructor.
+data QueryObjects = QueryObjects'
+    { _qoQuery      :: !(Maybe Query)
+    , _qoMarker     :: !(Maybe Text)
+    , _qoLimit      :: !(Maybe Int)
+    , _qoPipelineId :: !Text
+    , _qoSphere     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'QueryObjects' with the minimum fields required to make a request.
 --
--- * 'qoLimit' @::@ 'Maybe' 'Int'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'qoMarker' @::@ 'Maybe' 'Text'
+-- * 'qoQuery'
 --
--- * 'qoPipelineId' @::@ 'Text'
+-- * 'qoMarker'
 --
--- * 'qoQuery' @::@ 'Maybe' 'Query'
+-- * 'qoLimit'
 --
--- * 'qoSphere' @::@ 'Text'
+-- * 'qoPipelineId'
 --
-queryObjects :: Text -- ^ 'qoPipelineId'
-             -> Text -- ^ 'qoSphere'
-             -> QueryObjects
-queryObjects p1 p2 = QueryObjects
-    { _qoPipelineId = p1
-    , _qoSphere     = p2
-    , _qoQuery      = Nothing
-    , _qoMarker     = Nothing
-    , _qoLimit      = Nothing
+-- * 'qoSphere'
+queryObjects
+    :: Text -- ^ 'qoPipelineId'
+    -> Text -- ^ 'qoSphere'
+    -> QueryObjects
+queryObjects pPipelineId_ pSphere_ =
+    QueryObjects'
+    { _qoQuery = Nothing
+    , _qoMarker = Nothing
+    , _qoLimit = Nothing
+    , _qoPipelineId = pPipelineId_
+    , _qoSphere = pSphere_
     }
 
--- | The maximum number of object names that 'QueryObjects' will return in a single
--- call. The default value is 100.
-qoLimit :: Lens' QueryObjects (Maybe Int)
-qoLimit = lens _qoLimit (\s a -> s { _qoLimit = a })
+-- | The query that defines the objects to be returned. The 'Query' object
+-- can contain a maximum of ten selectors. The conditions in the query are
+-- limited to top-level String fields in the object. These filters can be
+-- applied to components, instances, and attempts.
+qoQuery :: Lens' QueryObjects (Maybe Query)
+qoQuery = lens _qoQuery (\ s a -> s{_qoQuery = a});
 
--- | The starting point for the results to be returned. For the first call, this
--- value should be empty. As long as there are more results, continue to call 'QueryObjects' with the marker value from the previous call to retrieve the next set of
--- results.
+-- | The starting point for the results to be returned. For the first call,
+-- this value should be empty. As long as there are more results, continue
+-- to call 'QueryObjects' with the marker value from the previous call to
+-- retrieve the next set of results.
 qoMarker :: Lens' QueryObjects (Maybe Text)
-qoMarker = lens _qoMarker (\s a -> s { _qoMarker = a })
+qoMarker = lens _qoMarker (\ s a -> s{_qoMarker = a});
 
+-- | The maximum number of object names that 'QueryObjects' will return in a
+-- single call. The default value is 100.
+qoLimit :: Lens' QueryObjects (Maybe Int)
+qoLimit = lens _qoLimit (\ s a -> s{_qoLimit = a});
+
 -- | The ID of the pipeline.
 qoPipelineId :: Lens' QueryObjects Text
-qoPipelineId = lens _qoPipelineId (\s a -> s { _qoPipelineId = a })
-
--- | The query that defines the objects to be returned. The 'Query' object can
--- contain a maximum of ten selectors. The conditions in the query are limited
--- to top-level String fields in the object. These filters can be applied to
--- components, instances, and attempts.
-qoQuery :: Lens' QueryObjects (Maybe Query)
-qoQuery = lens _qoQuery (\s a -> s { _qoQuery = a })
+qoPipelineId = lens _qoPipelineId (\ s a -> s{_qoPipelineId = a});
 
--- | Indicates whether the query applies to components or instances. The possible
--- values are: 'COMPONENT', 'INSTANCE', and 'ATTEMPT'.
+-- | Indicates whether the query applies to components or instances. The
+-- possible values are: 'COMPONENT', 'INSTANCE', and 'ATTEMPT'.
 qoSphere :: Lens' QueryObjects Text
-qoSphere = lens _qoSphere (\s a -> s { _qoSphere = a })
-
-data QueryObjectsResponse = QueryObjectsResponse
-    { _qorHasMoreResults :: Maybe Bool
-    , _qorIds            :: List "ids" Text
-    , _qorMarker         :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+qoSphere = lens _qoSphere (\ s a -> s{_qoSphere = a});
 
--- | 'QueryObjectsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'qorHasMoreResults' @::@ 'Maybe' 'Bool'
---
--- * 'qorIds' @::@ ['Text']
---
--- * 'qorMarker' @::@ 'Maybe' 'Text'
---
-queryObjectsResponse :: QueryObjectsResponse
-queryObjectsResponse = QueryObjectsResponse
-    { _qorIds            = mempty
-    , _qorMarker         = Nothing
-    , _qorHasMoreResults = Nothing
-    }
+instance AWSPager QueryObjects where
+        page rq rs
+          | stop (rs ^. qorsHasMoreResults) = Nothing
+          | isNothing (rs ^. qorsMarker) = Nothing
+          | otherwise =
+            Just $ rq & qoMarker .~ rs ^. qorsMarker
 
--- | Indicates whether there are more results that can be obtained by a subsequent
--- call.
-qorHasMoreResults :: Lens' QueryObjectsResponse (Maybe Bool)
-qorHasMoreResults =
-    lens _qorHasMoreResults (\s a -> s { _qorHasMoreResults = a })
+instance AWSRequest QueryObjects where
+        type Sv QueryObjects = DataPipeline
+        type Rs QueryObjects = QueryObjectsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 QueryObjectsResponse' <$>
+                   (x .?> "hasMoreResults") <*> (x .?> "ids" .!@ mempty)
+                     <*> (x .?> "marker")
+                     <*> (pure (fromEnum s)))
 
--- | The identifiers that match the query selectors.
-qorIds :: Lens' QueryObjectsResponse [Text]
-qorIds = lens _qorIds (\s a -> s { _qorIds = a }) . _List
+instance ToHeaders QueryObjects where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.QueryObjects" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The starting point for the next page of results. To view the next page of
--- results, call 'QueryObjects' again with this marker value. If the value is
--- null, there are no more results.
-qorMarker :: Lens' QueryObjectsResponse (Maybe Text)
-qorMarker = lens _qorMarker (\s a -> s { _qorMarker = a })
+instance ToJSON QueryObjects where
+        toJSON QueryObjects'{..}
+          = object
+              ["query" .= _qoQuery, "marker" .= _qoMarker,
+               "limit" .= _qoLimit, "pipelineId" .= _qoPipelineId,
+               "sphere" .= _qoSphere]
 
 instance ToPath QueryObjects where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery QueryObjects where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders QueryObjects
+-- | Contains the output of QueryObjects.
+--
+-- /See:/ 'queryObjectsResponse' smart constructor.
+data QueryObjectsResponse = QueryObjectsResponse'
+    { _qorsHasMoreResults :: !(Maybe Bool)
+    , _qorsIds            :: !(Maybe [Text])
+    , _qorsMarker         :: !(Maybe Text)
+    , _qorsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON QueryObjects where
-    toJSON QueryObjects{..} = object
-        [ "pipelineId" .= _qoPipelineId
-        , "query"      .= _qoQuery
-        , "sphere"     .= _qoSphere
-        , "marker"     .= _qoMarker
-        , "limit"      .= _qoLimit
-        ]
+-- | Creates a value of 'QueryObjectsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'qorsHasMoreResults'
+--
+-- * 'qorsIds'
+--
+-- * 'qorsMarker'
+--
+-- * 'qorsStatus'
+queryObjectsResponse
+    :: Int -- ^ 'qorsStatus'
+    -> QueryObjectsResponse
+queryObjectsResponse pStatus_ =
+    QueryObjectsResponse'
+    { _qorsHasMoreResults = Nothing
+    , _qorsIds = Nothing
+    , _qorsMarker = Nothing
+    , _qorsStatus = pStatus_
+    }
 
-instance AWSRequest QueryObjects where
-    type Sv QueryObjects = DataPipeline
-    type Rs QueryObjects = QueryObjectsResponse
+-- | Indicates whether there are more results that can be obtained by a
+-- subsequent call.
+qorsHasMoreResults :: Lens' QueryObjectsResponse (Maybe Bool)
+qorsHasMoreResults = lens _qorsHasMoreResults (\ s a -> s{_qorsHasMoreResults = a});
 
-    request  = post "QueryObjects"
-    response = jsonResponse
+-- | The identifiers that match the query selectors.
+qorsIds :: Lens' QueryObjectsResponse [Text]
+qorsIds = lens _qorsIds (\ s a -> s{_qorsIds = a}) . _Default . _Coerce;
 
-instance FromJSON QueryObjectsResponse where
-    parseJSON = withObject "QueryObjectsResponse" $ \o -> QueryObjectsResponse
-        <$> o .:? "hasMoreResults"
-        <*> o .:? "ids" .!= mempty
-        <*> o .:? "marker"
+-- | The starting point for the next page of results. To view the next page
+-- of results, call 'QueryObjects' again with this marker value. If the
+-- value is null, there are no more results.
+qorsMarker :: Lens' QueryObjectsResponse (Maybe Text)
+qorsMarker = lens _qorsMarker (\ s a -> s{_qorsMarker = a});
 
-instance AWSPager QueryObjects where
-    page rq rs
-        | stop (rs ^. qorHasMoreResults) = Nothing
-        | otherwise = Just $ rq
-            & qoMarker .~ rs ^. qorMarker
+-- | The response status code.
+qorsStatus :: Lens' QueryObjectsResponse Int
+qorsStatus = lens _qorsStatus (\ s a -> s{_qorsStatus = a});
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
@@ -1,104 +1,130 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.RemoveTags
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Removes existing tags from the specified pipeline.
+-- Removes existing tags from the specified pipeline.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_RemoveTags.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_RemoveTags.html AWS API Reference> for RemoveTags.
 module Network.AWS.DataPipeline.RemoveTags
     (
-    -- * Request
-      RemoveTags
-    -- ** Request constructor
-    , removeTags
-    -- ** Request lenses
+    -- * Creating a Request
+      removeTags
+    , RemoveTags
+    -- * Request Lenses
     , rtPipelineId
     , rtTagKeys
 
-    -- * Response
-    , RemoveTagsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , removeTagsResponse
+    , RemoveTagsResponse
+    -- * Response Lenses
+    , rtrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data RemoveTags = RemoveTags
-    { _rtPipelineId :: Text
-    , _rtTagKeys    :: List "tagKeys" Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'RemoveTags' constructor.
+-- | Contains the parameters for RemoveTags.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'removeTags' smart constructor.
+data RemoveTags = RemoveTags'
+    { _rtPipelineId :: !Text
+    , _rtTagKeys    :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RemoveTags' with the minimum fields required to make a request.
 --
--- * 'rtPipelineId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rtTagKeys' @::@ ['Text']
+-- * 'rtPipelineId'
 --
-removeTags :: Text -- ^ 'rtPipelineId'
-           -> RemoveTags
-removeTags p1 = RemoveTags
-    { _rtPipelineId = p1
-    , _rtTagKeys    = mempty
+-- * 'rtTagKeys'
+removeTags
+    :: Text -- ^ 'rtPipelineId'
+    -> RemoveTags
+removeTags pPipelineId_ =
+    RemoveTags'
+    { _rtPipelineId = pPipelineId_
+    , _rtTagKeys = mempty
     }
 
 -- | The ID of the pipeline.
 rtPipelineId :: Lens' RemoveTags Text
-rtPipelineId = lens _rtPipelineId (\s a -> s { _rtPipelineId = a })
+rtPipelineId = lens _rtPipelineId (\ s a -> s{_rtPipelineId = a});
 
 -- | The keys of the tags to remove.
 rtTagKeys :: Lens' RemoveTags [Text]
-rtTagKeys = lens _rtTagKeys (\s a -> s { _rtTagKeys = a }) . _List
+rtTagKeys = lens _rtTagKeys (\ s a -> s{_rtTagKeys = a}) . _Coerce;
 
-data RemoveTagsResponse = RemoveTagsResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest RemoveTags where
+        type Sv RemoveTags = DataPipeline
+        type Rs RemoveTags = RemoveTagsResponse
+        request = postJSON
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 RemoveTagsResponse' <$> (pure (fromEnum s)))
 
--- | 'RemoveTagsResponse' constructor.
-removeTagsResponse :: RemoveTagsResponse
-removeTagsResponse = RemoveTagsResponse
+instance ToHeaders RemoveTags where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.RemoveTags" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON RemoveTags where
+        toJSON RemoveTags'{..}
+          = object
+              ["pipelineId" .= _rtPipelineId,
+               "tagKeys" .= _rtTagKeys]
+
 instance ToPath RemoveTags where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery RemoveTags where
-    toQuery = const mempty
-
-instance ToHeaders RemoveTags
+        toQuery = const mempty
 
-instance ToJSON RemoveTags where
-    toJSON RemoveTags{..} = object
-        [ "pipelineId" .= _rtPipelineId
-        , "tagKeys"    .= _rtTagKeys
-        ]
+-- | Contains the output of RemoveTags.
+--
+-- /See:/ 'removeTagsResponse' smart constructor.
+newtype RemoveTagsResponse = RemoveTagsResponse'
+    { _rtrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest RemoveTags where
-    type Sv RemoveTags = DataPipeline
-    type Rs RemoveTags = RemoveTagsResponse
+-- | Creates a value of 'RemoveTagsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtrsStatus'
+removeTagsResponse
+    :: Int -- ^ 'rtrsStatus'
+    -> RemoveTagsResponse
+removeTagsResponse pStatus_ =
+    RemoveTagsResponse'
+    { _rtrsStatus = pStatus_
+    }
 
-    request  = post "RemoveTags"
-    response = nullResponse RemoveTagsResponse
+-- | The response status code.
+rtrsStatus :: Lens' RemoveTagsResponse Int
+rtrsStatus = lens _rtrsStatus (\ s a -> s{_rtrsStatus = a});
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
@@ -1,137 +1,155 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.ReportTaskProgress
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Task runners call 'ReportTaskProgress' when assigned a task to acknowledge that
--- it has the task. If the web service does not receive this acknowledgement
--- within 2 minutes, it assigns the task in a subsequent 'PollForTask' call. After
--- this initial acknowledgement, the task runner only needs to report progress
--- every 15 minutes to maintain its ownership of the task. You can change this
--- reporting time from 15 minutes by specifying a 'reportProgressTimeout' field in
--- your pipeline.
+-- Task runners call 'ReportTaskProgress' when assigned a task to
+-- acknowledge that it has the task. If the web service does not receive
+-- this acknowledgement within 2 minutes, it assigns the task in a
+-- subsequent PollForTask call. After this initial acknowledgement, the
+-- task runner only needs to report progress every 15 minutes to maintain
+-- its ownership of the task. You can change this reporting time from 15
+-- minutes by specifying a 'reportProgressTimeout' field in your pipeline.
 --
 -- If a task runner does not report its status after 5 minutes, AWS Data
 -- Pipeline assumes that the task runner is unable to process the task and
--- reassigns the task in a subsequent response to 'PollForTask'. Task runners
+-- reassigns the task in a subsequent response to PollForTask. Task runners
 -- should call 'ReportTaskProgress' every 60 seconds.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_ReportTaskProgress.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_ReportTaskProgress.html AWS API Reference> for ReportTaskProgress.
 module Network.AWS.DataPipeline.ReportTaskProgress
     (
-    -- * Request
-      ReportTaskProgress
-    -- ** Request constructor
-    , reportTaskProgress
-    -- ** Request lenses
+    -- * Creating a Request
+      reportTaskProgress
+    , ReportTaskProgress
+    -- * Request Lenses
     , rtpFields
     , rtpTaskId
 
-    -- * Response
-    , ReportTaskProgressResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , reportTaskProgressResponse
-    -- ** Response lenses
-    , rtprCanceled
+    , ReportTaskProgressResponse
+    -- * Response Lenses
+    , rtprsStatus
+    , rtprsCanceled
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data ReportTaskProgress = ReportTaskProgress
-    { _rtpFields :: List "fields" Field
-    , _rtpTaskId :: Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ReportTaskProgress' constructor.
+-- | Contains the parameters for ReportTaskProgress.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'reportTaskProgress' smart constructor.
+data ReportTaskProgress = ReportTaskProgress'
+    { _rtpFields :: !(Maybe [Field])
+    , _rtpTaskId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportTaskProgress' with the minimum fields required to make a request.
 --
--- * 'rtpFields' @::@ ['Field']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rtpTaskId' @::@ 'Text'
+-- * 'rtpFields'
 --
-reportTaskProgress :: Text -- ^ 'rtpTaskId'
-                   -> ReportTaskProgress
-reportTaskProgress p1 = ReportTaskProgress
-    { _rtpTaskId = p1
-    , _rtpFields = mempty
+-- * 'rtpTaskId'
+reportTaskProgress
+    :: Text -- ^ 'rtpTaskId'
+    -> ReportTaskProgress
+reportTaskProgress pTaskId_ =
+    ReportTaskProgress'
+    { _rtpFields = Nothing
+    , _rtpTaskId = pTaskId_
     }
 
--- | Key-value pairs that define the properties of the ReportTaskProgressInput
--- object.
+-- | Key-value pairs that define the properties of the
+-- ReportTaskProgressInput object.
 rtpFields :: Lens' ReportTaskProgress [Field]
-rtpFields = lens _rtpFields (\s a -> s { _rtpFields = a }) . _List
+rtpFields = lens _rtpFields (\ s a -> s{_rtpFields = a}) . _Default . _Coerce;
 
--- | The ID of the task assigned to the task runner. This value is provided in the
--- response for 'PollForTask'.
+-- | The ID of the task assigned to the task runner. This value is provided
+-- in the response for PollForTask.
 rtpTaskId :: Lens' ReportTaskProgress Text
-rtpTaskId = lens _rtpTaskId (\s a -> s { _rtpTaskId = a })
+rtpTaskId = lens _rtpTaskId (\ s a -> s{_rtpTaskId = a});
 
-newtype ReportTaskProgressResponse = ReportTaskProgressResponse
-    { _rtprCanceled :: Bool
-    } deriving (Eq, Ord, Read, Show, Enum)
+instance AWSRequest ReportTaskProgress where
+        type Sv ReportTaskProgress = DataPipeline
+        type Rs ReportTaskProgress =
+             ReportTaskProgressResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ReportTaskProgressResponse' <$>
+                   (pure (fromEnum s)) <*> (x .:> "canceled"))
 
--- | 'ReportTaskProgressResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rtprCanceled' @::@ 'Bool'
---
-reportTaskProgressResponse :: Bool -- ^ 'rtprCanceled'
-                           -> ReportTaskProgressResponse
-reportTaskProgressResponse p1 = ReportTaskProgressResponse
-    { _rtprCanceled = p1
-    }
+instance ToHeaders ReportTaskProgress where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.ReportTaskProgress" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | If true, the calling task runner should cancel processing of the task. The
--- task runner does not need to call 'SetTaskStatus' for canceled tasks.
-rtprCanceled :: Lens' ReportTaskProgressResponse Bool
-rtprCanceled = lens _rtprCanceled (\s a -> s { _rtprCanceled = a })
+instance ToJSON ReportTaskProgress where
+        toJSON ReportTaskProgress'{..}
+          = object
+              ["fields" .= _rtpFields, "taskId" .= _rtpTaskId]
 
 instance ToPath ReportTaskProgress where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ReportTaskProgress where
-    toQuery = const mempty
-
-instance ToHeaders ReportTaskProgress
+        toQuery = const mempty
 
-instance ToJSON ReportTaskProgress where
-    toJSON ReportTaskProgress{..} = object
-        [ "taskId" .= _rtpTaskId
-        , "fields" .= _rtpFields
-        ]
+-- | Contains the output of ReportTaskProgress.
+--
+-- /See:/ 'reportTaskProgressResponse' smart constructor.
+data ReportTaskProgressResponse = ReportTaskProgressResponse'
+    { _rtprsStatus   :: !Int
+    , _rtprsCanceled :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ReportTaskProgress where
-    type Sv ReportTaskProgress = DataPipeline
-    type Rs ReportTaskProgress = ReportTaskProgressResponse
+-- | Creates a value of 'ReportTaskProgressResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtprsStatus'
+--
+-- * 'rtprsCanceled'
+reportTaskProgressResponse
+    :: Int -- ^ 'rtprsStatus'
+    -> Bool -- ^ 'rtprsCanceled'
+    -> ReportTaskProgressResponse
+reportTaskProgressResponse pStatus_ pCanceled_ =
+    ReportTaskProgressResponse'
+    { _rtprsStatus = pStatus_
+    , _rtprsCanceled = pCanceled_
+    }
 
-    request  = post "ReportTaskProgress"
-    response = jsonResponse
+-- | The response status code.
+rtprsStatus :: Lens' ReportTaskProgressResponse Int
+rtprsStatus = lens _rtprsStatus (\ s a -> s{_rtprsStatus = a});
 
-instance FromJSON ReportTaskProgressResponse where
-    parseJSON = withObject "ReportTaskProgressResponse" $ \o -> ReportTaskProgressResponse
-        <$> o .:  "canceled"
+-- | If true, the calling task runner should cancel processing of the task.
+-- The task runner does not need to call SetTaskStatus for canceled tasks.
+rtprsCanceled :: Lens' ReportTaskProgressResponse Bool
+rtprsCanceled = lens _rtprsCanceled (\ s a -> s{_rtprsCanceled = a});
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
@@ -1,144 +1,166 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.ReportTaskRunnerHeartbeat
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Task runners call 'ReportTaskRunnerHeartbeat' every 15 minutes to indicate that
--- they are operational. If the AWS Data Pipeline Task Runner is launched on a
--- resource managed by AWS Data Pipeline, the web service can use this call to
--- detect when the task runner application has failed and restart a new instance.
+-- Task runners call 'ReportTaskRunnerHeartbeat' every 15 minutes to
+-- indicate that they are operational. If the AWS Data Pipeline Task Runner
+-- is launched on a resource managed by AWS Data Pipeline, the web service
+-- can use this call to detect when the task runner application has failed
+-- and restart a new instance.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_ReportTaskRunnerHeartbeat.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_ReportTaskRunnerHeartbeat.html AWS API Reference> for ReportTaskRunnerHeartbeat.
 module Network.AWS.DataPipeline.ReportTaskRunnerHeartbeat
     (
-    -- * Request
-      ReportTaskRunnerHeartbeat
-    -- ** Request constructor
-    , reportTaskRunnerHeartbeat
-    -- ** Request lenses
+    -- * Creating a Request
+      reportTaskRunnerHeartbeat
+    , ReportTaskRunnerHeartbeat
+    -- * Request Lenses
     , rtrhHostname
-    , rtrhTaskrunnerId
     , rtrhWorkerGroup
+    , rtrhTaskrunnerId
 
-    -- * Response
-    , ReportTaskRunnerHeartbeatResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , reportTaskRunnerHeartbeatResponse
-    -- ** Response lenses
-    , rtrhrTerminate
+    , ReportTaskRunnerHeartbeatResponse
+    -- * Response Lenses
+    , rtrhrsStatus
+    , rtrhrsTerminate
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data ReportTaskRunnerHeartbeat = ReportTaskRunnerHeartbeat
-    { _rtrhHostname     :: Maybe Text
-    , _rtrhTaskrunnerId :: Text
-    , _rtrhWorkerGroup  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ReportTaskRunnerHeartbeat' constructor.
+-- | Contains the parameters for ReportTaskRunnerHeartbeat.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'reportTaskRunnerHeartbeat' smart constructor.
+data ReportTaskRunnerHeartbeat = ReportTaskRunnerHeartbeat'
+    { _rtrhHostname     :: !(Maybe Text)
+    , _rtrhWorkerGroup  :: !(Maybe Text)
+    , _rtrhTaskrunnerId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportTaskRunnerHeartbeat' with the minimum fields required to make a request.
 --
--- * 'rtrhHostname' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rtrhTaskrunnerId' @::@ 'Text'
+-- * 'rtrhHostname'
 --
--- * 'rtrhWorkerGroup' @::@ 'Maybe' 'Text'
+-- * 'rtrhWorkerGroup'
 --
-reportTaskRunnerHeartbeat :: Text -- ^ 'rtrhTaskrunnerId'
-                          -> ReportTaskRunnerHeartbeat
-reportTaskRunnerHeartbeat p1 = ReportTaskRunnerHeartbeat
-    { _rtrhTaskrunnerId = p1
-    , _rtrhWorkerGroup  = Nothing
-    , _rtrhHostname     = Nothing
+-- * 'rtrhTaskrunnerId'
+reportTaskRunnerHeartbeat
+    :: Text -- ^ 'rtrhTaskrunnerId'
+    -> ReportTaskRunnerHeartbeat
+reportTaskRunnerHeartbeat pTaskrunnerId_ =
+    ReportTaskRunnerHeartbeat'
+    { _rtrhHostname = Nothing
+    , _rtrhWorkerGroup = Nothing
+    , _rtrhTaskrunnerId = pTaskrunnerId_
     }
 
 -- | The public DNS name of the task runner.
 rtrhHostname :: Lens' ReportTaskRunnerHeartbeat (Maybe Text)
-rtrhHostname = lens _rtrhHostname (\s a -> s { _rtrhHostname = a })
+rtrhHostname = lens _rtrhHostname (\ s a -> s{_rtrhHostname = a});
 
+-- | The type of task the task runner is configured to accept and process.
+-- The worker group is set as a field on objects in the pipeline when they
+-- are created. You can only specify a single value for 'workerGroup'.
+-- There are no wildcard values permitted in 'workerGroup'; the string must
+-- be an exact, case-sensitive, match.
+rtrhWorkerGroup :: Lens' ReportTaskRunnerHeartbeat (Maybe Text)
+rtrhWorkerGroup = lens _rtrhWorkerGroup (\ s a -> s{_rtrhWorkerGroup = a});
+
 -- | The ID of the task runner. This value should be unique across your AWS
--- account. In the case of AWS Data Pipeline Task Runner launched on a resource
--- managed by AWS Data Pipeline, the web service provides a unique identifier
--- when it launches the application. If you have written a custom task runner,
--- you should assign a unique identifier for the task runner.
+-- account. In the case of AWS Data Pipeline Task Runner launched on a
+-- resource managed by AWS Data Pipeline, the web service provides a unique
+-- identifier when it launches the application. If you have written a
+-- custom task runner, you should assign a unique identifier for the task
+-- runner.
 rtrhTaskrunnerId :: Lens' ReportTaskRunnerHeartbeat Text
-rtrhTaskrunnerId = lens _rtrhTaskrunnerId (\s a -> s { _rtrhTaskrunnerId = a })
-
--- | The type of task the task runner is configured to accept and process. The
--- worker group is set as a field on objects in the pipeline when they are
--- created. You can only specify a single value for 'workerGroup'. There are no
--- wildcard values permitted in 'workerGroup'; the string must be an exact,
--- case-sensitive, match.
-rtrhWorkerGroup :: Lens' ReportTaskRunnerHeartbeat (Maybe Text)
-rtrhWorkerGroup = lens _rtrhWorkerGroup (\s a -> s { _rtrhWorkerGroup = a })
+rtrhTaskrunnerId = lens _rtrhTaskrunnerId (\ s a -> s{_rtrhTaskrunnerId = a});
 
-newtype ReportTaskRunnerHeartbeatResponse = ReportTaskRunnerHeartbeatResponse
-    { _rtrhrTerminate :: Bool
-    } deriving (Eq, Ord, Read, Show, Enum)
+instance AWSRequest ReportTaskRunnerHeartbeat where
+        type Sv ReportTaskRunnerHeartbeat = DataPipeline
+        type Rs ReportTaskRunnerHeartbeat =
+             ReportTaskRunnerHeartbeatResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ReportTaskRunnerHeartbeatResponse' <$>
+                   (pure (fromEnum s)) <*> (x .:> "terminate"))
 
--- | 'ReportTaskRunnerHeartbeatResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rtrhrTerminate' @::@ 'Bool'
---
-reportTaskRunnerHeartbeatResponse :: Bool -- ^ 'rtrhrTerminate'
-                                  -> ReportTaskRunnerHeartbeatResponse
-reportTaskRunnerHeartbeatResponse p1 = ReportTaskRunnerHeartbeatResponse
-    { _rtrhrTerminate = p1
-    }
+instance ToHeaders ReportTaskRunnerHeartbeat where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.ReportTaskRunnerHeartbeat" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | Indicates whether the calling task runner should terminate.
-rtrhrTerminate :: Lens' ReportTaskRunnerHeartbeatResponse Bool
-rtrhrTerminate = lens _rtrhrTerminate (\s a -> s { _rtrhrTerminate = a })
+instance ToJSON ReportTaskRunnerHeartbeat where
+        toJSON ReportTaskRunnerHeartbeat'{..}
+          = object
+              ["hostname" .= _rtrhHostname,
+               "workerGroup" .= _rtrhWorkerGroup,
+               "taskrunnerId" .= _rtrhTaskrunnerId]
 
 instance ToPath ReportTaskRunnerHeartbeat where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ReportTaskRunnerHeartbeat where
-    toQuery = const mempty
-
-instance ToHeaders ReportTaskRunnerHeartbeat
+        toQuery = const mempty
 
-instance ToJSON ReportTaskRunnerHeartbeat where
-    toJSON ReportTaskRunnerHeartbeat{..} = object
-        [ "taskrunnerId" .= _rtrhTaskrunnerId
-        , "workerGroup"  .= _rtrhWorkerGroup
-        , "hostname"     .= _rtrhHostname
-        ]
+-- | Contains the output of ReportTaskRunnerHeartbeat.
+--
+-- /See:/ 'reportTaskRunnerHeartbeatResponse' smart constructor.
+data ReportTaskRunnerHeartbeatResponse = ReportTaskRunnerHeartbeatResponse'
+    { _rtrhrsStatus    :: !Int
+    , _rtrhrsTerminate :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ReportTaskRunnerHeartbeat where
-    type Sv ReportTaskRunnerHeartbeat = DataPipeline
-    type Rs ReportTaskRunnerHeartbeat = ReportTaskRunnerHeartbeatResponse
+-- | Creates a value of 'ReportTaskRunnerHeartbeatResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtrhrsStatus'
+--
+-- * 'rtrhrsTerminate'
+reportTaskRunnerHeartbeatResponse
+    :: Int -- ^ 'rtrhrsStatus'
+    -> Bool -- ^ 'rtrhrsTerminate'
+    -> ReportTaskRunnerHeartbeatResponse
+reportTaskRunnerHeartbeatResponse pStatus_ pTerminate_ =
+    ReportTaskRunnerHeartbeatResponse'
+    { _rtrhrsStatus = pStatus_
+    , _rtrhrsTerminate = pTerminate_
+    }
 
-    request  = post "ReportTaskRunnerHeartbeat"
-    response = jsonResponse
+-- | The response status code.
+rtrhrsStatus :: Lens' ReportTaskRunnerHeartbeatResponse Int
+rtrhrsStatus = lens _rtrhrsStatus (\ s a -> s{_rtrhrsStatus = a});
 
-instance FromJSON ReportTaskRunnerHeartbeatResponse where
-    parseJSON = withObject "ReportTaskRunnerHeartbeatResponse" $ \o -> ReportTaskRunnerHeartbeatResponse
-        <$> o .:  "terminate"
+-- | Indicates whether the calling task runner should terminate.
+rtrhrsTerminate :: Lens' ReportTaskRunnerHeartbeatResponse Bool
+rtrhrsTerminate = lens _rtrhrsTerminate (\ s a -> s{_rtrhrsTerminate = a});
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
@@ -1,121 +1,130 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.SetStatus
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Requests that the status of the specified physical or logical pipeline
--- objects be updated in the specified pipeline. This update might not occur
--- immediately, but is eventually consistent. The status that can be set depends
--- on the type of object (for example, DataNode or Activity). You cannot perform
--- this operation on 'FINISHED' pipelines and attempting to do so returns 'InvalidRequestException'.
+-- Requests that the status of the specified physical or logical pipeline
+-- objects be updated in the specified pipeline. This update might not
+-- occur immediately, but is eventually consistent. The status that can be
+-- set depends on the type of object (for example, DataNode or Activity).
+-- You cannot perform this operation on 'FINISHED' pipelines and attempting
+-- to do so returns 'InvalidRequestException'.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_SetStatus.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_SetStatus.html AWS API Reference> for SetStatus.
 module Network.AWS.DataPipeline.SetStatus
     (
-    -- * Request
-      SetStatus
-    -- ** Request constructor
-    , setStatus
-    -- ** Request lenses
-    , ssObjectIds
+    -- * Creating a Request
+      setStatus
+    , SetStatus
+    -- * Request Lenses
     , ssPipelineId
+    , ssObjectIds
     , ssStatus
 
-    -- * Response
-    , SetStatusResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setStatusResponse
+    , SetStatusResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data SetStatus = SetStatus
-    { _ssObjectIds  :: List "objectIds" Text
-    , _ssPipelineId :: Text
-    , _ssStatus     :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'SetStatus' constructor.
+-- | Contains the parameters for SetStatus.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'setStatus' smart constructor.
+data SetStatus = SetStatus'
+    { _ssPipelineId :: !Text
+    , _ssObjectIds  :: ![Text]
+    , _ssStatus     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetStatus' with the minimum fields required to make a request.
 --
--- * 'ssObjectIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ssPipelineId' @::@ 'Text'
+-- * 'ssPipelineId'
 --
--- * 'ssStatus' @::@ 'Text'
+-- * 'ssObjectIds'
 --
-setStatus :: Text -- ^ 'ssPipelineId'
-          -> Text -- ^ 'ssStatus'
-          -> SetStatus
-setStatus p1 p2 = SetStatus
-    { _ssPipelineId = p1
-    , _ssStatus     = p2
-    , _ssObjectIds  = mempty
+-- * 'ssStatus'
+setStatus
+    :: Text -- ^ 'ssPipelineId'
+    -> Text -- ^ 'ssStatus'
+    -> SetStatus
+setStatus pPipelineId_ pStatus_ =
+    SetStatus'
+    { _ssPipelineId = pPipelineId_
+    , _ssObjectIds = mempty
+    , _ssStatus = pStatus_
     }
 
--- | The IDs of the objects. The corresponding objects can be either physical or
--- components, but not a mix of both types.
-ssObjectIds :: Lens' SetStatus [Text]
-ssObjectIds = lens _ssObjectIds (\s a -> s { _ssObjectIds = a }) . _List
-
 -- | The ID of the pipeline that contains the objects.
 ssPipelineId :: Lens' SetStatus Text
-ssPipelineId = lens _ssPipelineId (\s a -> s { _ssPipelineId = a })
+ssPipelineId = lens _ssPipelineId (\ s a -> s{_ssPipelineId = a});
 
+-- | The IDs of the objects. The corresponding objects can be either physical
+-- or components, but not a mix of both types.
+ssObjectIds :: Lens' SetStatus [Text]
+ssObjectIds = lens _ssObjectIds (\ s a -> s{_ssObjectIds = a}) . _Coerce;
+
 -- | The status to be set on all the objects specified in 'objectIds'. For
--- components, use 'PAUSE' or 'RESUME'. For instances, use 'TRY_CANCEL', 'RERUN', or 'MARK_FINISHED'.
+-- components, use 'PAUSE' or 'RESUME'. For instances, use 'TRY_CANCEL',
+-- 'RERUN', or 'MARK_FINISHED'.
 ssStatus :: Lens' SetStatus Text
-ssStatus = lens _ssStatus (\s a -> s { _ssStatus = a })
+ssStatus = lens _ssStatus (\ s a -> s{_ssStatus = a});
 
-data SetStatusResponse = SetStatusResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest SetStatus where
+        type Sv SetStatus = DataPipeline
+        type Rs SetStatus = SetStatusResponse
+        request = postJSON
+        response = receiveNull SetStatusResponse'
 
--- | 'SetStatusResponse' constructor.
-setStatusResponse :: SetStatusResponse
-setStatusResponse = SetStatusResponse
+instance ToHeaders SetStatus where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.SetStatus" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON SetStatus where
+        toJSON SetStatus'{..}
+          = object
+              ["pipelineId" .= _ssPipelineId,
+               "objectIds" .= _ssObjectIds, "status" .= _ssStatus]
+
 instance ToPath SetStatus where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery SetStatus where
-    toQuery = const mempty
-
-instance ToHeaders SetStatus
-
-instance ToJSON SetStatus where
-    toJSON SetStatus{..} = object
-        [ "pipelineId" .= _ssPipelineId
-        , "objectIds"  .= _ssObjectIds
-        , "status"     .= _ssStatus
-        ]
+        toQuery = const mempty
 
-instance AWSRequest SetStatus where
-    type Sv SetStatus = DataPipeline
-    type Rs SetStatus = SetStatusResponse
+-- | /See:/ 'setStatusResponse' smart constructor.
+data SetStatusResponse =
+    SetStatusResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "SetStatus"
-    response = nullResponse SetStatusResponse
+-- | Creates a value of 'SetStatusResponse' with the minimum fields required to make a request.
+--
+setStatusResponse
+    :: SetStatusResponse
+setStatusResponse = SetStatusResponse'
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
@@ -1,151 +1,176 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.SetTaskStatus
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Task runners call 'SetTaskStatus' to notify AWS Data Pipeline that a task is
--- completed and provide information about the final status. A task runner makes
--- this call regardless of whether the task was sucessful. A task runner does
--- not need to call 'SetTaskStatus' for tasks that are canceled by the web service
--- during a call to 'ReportTaskProgress'.
+-- Task runners call 'SetTaskStatus' to notify AWS Data Pipeline that a
+-- task is completed and provide information about the final status. A task
+-- runner makes this call regardless of whether the task was sucessful. A
+-- task runner does not need to call 'SetTaskStatus' for tasks that are
+-- canceled by the web service during a call to ReportTaskProgress.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_SetTaskStatus.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_SetTaskStatus.html AWS API Reference> for SetTaskStatus.
 module Network.AWS.DataPipeline.SetTaskStatus
     (
-    -- * Request
-      SetTaskStatus
-    -- ** Request constructor
-    , setTaskStatus
-    -- ** Request lenses
+    -- * Creating a Request
+      setTaskStatus
+    , SetTaskStatus
+    -- * Request Lenses
+    , stsErrorStackTrace
     , stsErrorId
     , stsErrorMessage
-    , stsErrorStackTrace
     , stsTaskId
     , stsTaskStatus
 
-    -- * Response
-    , SetTaskStatusResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setTaskStatusResponse
+    , SetTaskStatusResponse
+    -- * Response Lenses
+    , stsrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data SetTaskStatus = SetTaskStatus
-    { _stsErrorId         :: Maybe Text
-    , _stsErrorMessage    :: Maybe Text
-    , _stsErrorStackTrace :: Maybe Text
-    , _stsTaskId          :: Text
-    , _stsTaskStatus      :: TaskStatus
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'SetTaskStatus' constructor.
+-- | Contains the parameters for SetTaskStatus.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'setTaskStatus' smart constructor.
+data SetTaskStatus = SetTaskStatus'
+    { _stsErrorStackTrace :: !(Maybe Text)
+    , _stsErrorId         :: !(Maybe Text)
+    , _stsErrorMessage    :: !(Maybe Text)
+    , _stsTaskId          :: !Text
+    , _stsTaskStatus      :: !TaskStatus
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetTaskStatus' with the minimum fields required to make a request.
 --
--- * 'stsErrorId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'stsErrorMessage' @::@ 'Maybe' 'Text'
+-- * 'stsErrorStackTrace'
 --
--- * 'stsErrorStackTrace' @::@ 'Maybe' 'Text'
+-- * 'stsErrorId'
 --
--- * 'stsTaskId' @::@ 'Text'
+-- * 'stsErrorMessage'
 --
--- * 'stsTaskStatus' @::@ 'TaskStatus'
+-- * 'stsTaskId'
 --
-setTaskStatus :: Text -- ^ 'stsTaskId'
-              -> TaskStatus -- ^ 'stsTaskStatus'
-              -> SetTaskStatus
-setTaskStatus p1 p2 = SetTaskStatus
-    { _stsTaskId          = p1
-    , _stsTaskStatus      = p2
-    , _stsErrorId         = Nothing
-    , _stsErrorMessage    = Nothing
-    , _stsErrorStackTrace = Nothing
+-- * 'stsTaskStatus'
+setTaskStatus
+    :: Text -- ^ 'stsTaskId'
+    -> TaskStatus -- ^ 'stsTaskStatus'
+    -> SetTaskStatus
+setTaskStatus pTaskId_ pTaskStatus_ =
+    SetTaskStatus'
+    { _stsErrorStackTrace = Nothing
+    , _stsErrorId = Nothing
+    , _stsErrorMessage = Nothing
+    , _stsTaskId = pTaskId_
+    , _stsTaskStatus = pTaskStatus_
     }
 
--- | If an error occurred during the task, this value specifies the error code.
--- This value is set on the physical attempt object. It is used to display error
--- information to the user. It should not start with string "Service_" which is
--- reserved by the system.
+-- | If an error occurred during the task, this value specifies the stack
+-- trace associated with the error. This value is set on the physical
+-- attempt object. It is used to display error information to the user. The
+-- web service does not parse this value.
+stsErrorStackTrace :: Lens' SetTaskStatus (Maybe Text)
+stsErrorStackTrace = lens _stsErrorStackTrace (\ s a -> s{_stsErrorStackTrace = a});
+
+-- | If an error occurred during the task, this value specifies the error
+-- code. This value is set on the physical attempt object. It is used to
+-- display error information to the user. It should not start with string
+-- \"Service_\" which is reserved by the system.
 stsErrorId :: Lens' SetTaskStatus (Maybe Text)
-stsErrorId = lens _stsErrorId (\s a -> s { _stsErrorId = a })
+stsErrorId = lens _stsErrorId (\ s a -> s{_stsErrorId = a});
 
--- | If an error occurred during the task, this value specifies a text description
--- of the error. This value is set on the physical attempt object. It is used to
--- display error information to the user. The web service does not parse this
--- value.
+-- | If an error occurred during the task, this value specifies a text
+-- description of the error. This value is set on the physical attempt
+-- object. It is used to display error information to the user. The web
+-- service does not parse this value.
 stsErrorMessage :: Lens' SetTaskStatus (Maybe Text)
-stsErrorMessage = lens _stsErrorMessage (\s a -> s { _stsErrorMessage = a })
-
--- | If an error occurred during the task, this value specifies the stack trace
--- associated with the error. This value is set on the physical attempt object.
--- It is used to display error information to the user. The web service does not
--- parse this value.
-stsErrorStackTrace :: Lens' SetTaskStatus (Maybe Text)
-stsErrorStackTrace =
-    lens _stsErrorStackTrace (\s a -> s { _stsErrorStackTrace = a })
+stsErrorMessage = lens _stsErrorMessage (\ s a -> s{_stsErrorMessage = a});
 
--- | The ID of the task assigned to the task runner. This value is provided in the
--- response for 'PollForTask'.
+-- | The ID of the task assigned to the task runner. This value is provided
+-- in the response for PollForTask.
 stsTaskId :: Lens' SetTaskStatus Text
-stsTaskId = lens _stsTaskId (\s a -> s { _stsTaskId = a })
+stsTaskId = lens _stsTaskId (\ s a -> s{_stsTaskId = a});
 
--- | If 'FINISHED', the task successfully completed. If 'FAILED', the task ended
--- unsuccessfully. Preconditions use false.
+-- | If 'FINISHED', the task successfully completed. If 'FAILED', the task
+-- ended unsuccessfully. Preconditions use false.
 stsTaskStatus :: Lens' SetTaskStatus TaskStatus
-stsTaskStatus = lens _stsTaskStatus (\s a -> s { _stsTaskStatus = a })
+stsTaskStatus = lens _stsTaskStatus (\ s a -> s{_stsTaskStatus = a});
 
-data SetTaskStatusResponse = SetTaskStatusResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest SetTaskStatus where
+        type Sv SetTaskStatus = DataPipeline
+        type Rs SetTaskStatus = SetTaskStatusResponse
+        request = postJSON
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 SetTaskStatusResponse' <$> (pure (fromEnum s)))
 
--- | 'SetTaskStatusResponse' constructor.
-setTaskStatusResponse :: SetTaskStatusResponse
-setTaskStatusResponse = SetTaskStatusResponse
+instance ToHeaders SetTaskStatus where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.SetTaskStatus" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON SetTaskStatus where
+        toJSON SetTaskStatus'{..}
+          = object
+              ["errorStackTrace" .= _stsErrorStackTrace,
+               "errorId" .= _stsErrorId,
+               "errorMessage" .= _stsErrorMessage,
+               "taskId" .= _stsTaskId,
+               "taskStatus" .= _stsTaskStatus]
+
 instance ToPath SetTaskStatus where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery SetTaskStatus where
-    toQuery = const mempty
-
-instance ToHeaders SetTaskStatus
+        toQuery = const mempty
 
-instance ToJSON SetTaskStatus where
-    toJSON SetTaskStatus{..} = object
-        [ "taskId"          .= _stsTaskId
-        , "taskStatus"      .= _stsTaskStatus
-        , "errorId"         .= _stsErrorId
-        , "errorMessage"    .= _stsErrorMessage
-        , "errorStackTrace" .= _stsErrorStackTrace
-        ]
+-- | Contains the output of SetTaskStatus.
+--
+-- /See:/ 'setTaskStatusResponse' smart constructor.
+newtype SetTaskStatusResponse = SetTaskStatusResponse'
+    { _stsrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest SetTaskStatus where
-    type Sv SetTaskStatus = DataPipeline
-    type Rs SetTaskStatus = SetTaskStatusResponse
+-- | Creates a value of 'SetTaskStatusResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'stsrsStatus'
+setTaskStatusResponse
+    :: Int -- ^ 'stsrsStatus'
+    -> SetTaskStatusResponse
+setTaskStatusResponse pStatus_ =
+    SetTaskStatusResponse'
+    { _stsrsStatus = pStatus_
+    }
 
-    request  = post "SetTaskStatus"
-    response = nullResponse SetTaskStatusResponse
+-- | The response status code.
+stsrsStatus :: Lens' SetTaskStatusResponse Int
+stsrsStatus = lens _stsrsStatus (\ s a -> s{_stsrsStatus = a});
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,72 +1,52 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-{-# LANGUAGE ViewPatterns                #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
 
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
 
+-- |
 -- Module      : Network.AWS.DataPipeline.Types
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
 module Network.AWS.DataPipeline.Types
     (
     -- * Service
       DataPipeline
-    -- ** Error
-    , JSONError
 
-    -- * ParameterObject
-    , ParameterObject
-    , parameterObject
-    , poAttributes
-    , poId
+    -- * Errors
+    , _InvalidRequestException
+    , _InternalServiceError
+    , _PipelineDeletedException
+    , _PipelineNotFoundException
+    , _TaskNotFoundException
 
-    -- * PipelineObject
-    , PipelineObject
-    , pipelineObject
-    , po1Fields
-    , po1Id
-    , po1Name
+    -- * OperatorType
+    , OperatorType (..)
 
-    -- * Tag
-    , Tag
-    , tag
-    , tagKey
-    , tagValue
+    -- * TaskStatus
+    , TaskStatus (..)
 
     -- * Field
     , Field
     , field
-    , fKey
     , fRefValue
     , fStringValue
+    , fKey
 
-    -- * ParameterValue
-    , ParameterValue
-    , parameterValue
-    , pvId
-    , pvStringValue
+    -- * InstanceIdentity
+    , InstanceIdentity
+    , instanceIdentity
+    , iiSignature
+    , iiDocument
 
-    -- * Selector
-    , Selector
-    , selector
-    , sFieldName
-    , sOperator
+    -- * Operator
+    , Operator
+    , operator
+    , oValues
+    , oType
 
     -- * ParameterAttribute
     , ParameterAttribute
@@ -74,856 +54,138 @@
     , paKey
     , paStringValue
 
-    -- * Operator
-    , Operator
-    , operator
-    , oType
-    , oValues
-
-    -- * TaskObject
-    , TaskObject
-    , taskObject
-    , toAttemptId
-    , toObjects
-    , toPipelineId
-    , toTaskId
+    -- * ParameterObject
+    , ParameterObject
+    , parameterObject
+    , poId
+    , poAttributes
 
-    -- * ValidationError
-    , ValidationError
-    , validationError
-    , veErrors
-    , veId
+    -- * ParameterValue
+    , ParameterValue
+    , parameterValue
+    , pvId
+    , pvStringValue
 
     -- * PipelineDescription
     , PipelineDescription
     , pipelineDescription
     , pdDescription
-    , pdFields
-    , pdName
-    , pdPipelineId
     , pdTags
+    , pdPipelineId
+    , pdName
+    , pdFields
 
-    -- * InstanceIdentity
-    , InstanceIdentity
-    , instanceIdentity
-    , iiDocument
-    , iiSignature
+    -- * PipelineIdName
+    , PipelineIdName
+    , pipelineIdName
+    , pinName
+    , pinId
 
+    -- * PipelineObject
+    , PipelineObject
+    , pipelineObject
+    , pId
+    , pName
+    , pFields
+
     -- * Query
     , Query
     , query
     , qSelectors
 
-    -- * OperatorType
-    , OperatorType (..)
+    -- * Selector
+    , Selector
+    , selector
+    , sOperator
+    , sFieldName
 
-    -- * PipelineIdName
-    , PipelineIdName
-    , pipelineIdName
-    , pinId
-    , pinName
+    -- * Tag
+    , Tag
+    , tag
+    , tagKey
+    , tagValue
 
-    -- * TaskStatus
-    , TaskStatus (..)
+    -- * TaskObject
+    , TaskObject
+    , taskObject
+    , toPipelineId
+    , toTaskId
+    , toAttemptId
+    , toObjects
 
+    -- * ValidationError
+    , ValidationError
+    , validationError
+    , veId
+    , veErrors
+
     -- * ValidationWarning
     , ValidationWarning
     , validationWarning
-    , vwId
     , vwWarnings
+    , vwId
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.DataPipeline.Types.Sum
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
 
--- | Version @2012-10-29@ of the Amazon Data Pipeline service.
+-- | Version @2012-10-29@ of the Amazon Data Pipeline SDK.
 data DataPipeline
 
 instance AWSService DataPipeline where
     type Sg DataPipeline = V4
-    type Er DataPipeline = JSONError
-
-    service = service'
+    service = const svc
       where
-        service' :: Service DataPipeline
-        service' = Service
-            { _svcAbbrev       = "DataPipeline"
-            , _svcPrefix       = "datapipeline"
-            , _svcVersion      = "2012-10-29"
-            , _svcTargetPrefix = Just "DataPipeline"
-            , _svcJSONVersion  = Just "1.1"
-            , _svcHandle       = handle
-            , _svcRetry        = retry
+        svc =
+            Service
+            { _svcAbbrev = "DataPipeline"
+            , _svcPrefix = "datapipeline"
+            , _svcVersion = "2012-10-29"
+            , _svcEndpoint = defaultEndpoint svc
+            , _svcTimeout = Just 70
+            , _svcStatus = statusSuccess
+            , _svcError = parseJSONError
+            , _svcRetry = retry
             }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError JSONError)
-        handle = jsonError statusSuccess service'
-
-        retry :: Retry DataPipeline
-        retry = Exponential
-            { _retryBase     = 0.05
-            , _retryGrowth   = 2
+        retry =
+            Exponential
+            { _retryBase = 5.0e-2
+            , _retryGrowth = 2
             , _retryAttempts = 5
-            , _retryCheck    = check
+            , _retryCheck = check
             }
-
-        check :: Status
-              -> JSONError
-              -> Bool
-        check (statusCode -> s) (awsErrorCode -> e)
-            | s == 400 && (Just "Throttling") == e = True -- Throttling
-            | s == 500  = True -- General Server Error
-            | s == 509  = True -- Limit Exceeded
-            | s == 503  = True -- Service Unavailable
-            | otherwise = False
-
-data ParameterObject = ParameterObject
-    { _poAttributes :: List "attributes" ParameterAttribute
-    , _poId         :: Text
-    } deriving (Eq, Read, Show)
-
--- | 'ParameterObject' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'poAttributes' @::@ ['ParameterAttribute']
---
--- * 'poId' @::@ 'Text'
---
-parameterObject :: Text -- ^ 'poId'
-                -> ParameterObject
-parameterObject p1 = ParameterObject
-    { _poId         = p1
-    , _poAttributes = mempty
-    }
-
--- | The attributes of the parameter object.
-poAttributes :: Lens' ParameterObject [ParameterAttribute]
-poAttributes = lens _poAttributes (\s a -> s { _poAttributes = a }) . _List
-
--- | The ID of the parameter object.
-poId :: Lens' ParameterObject Text
-poId = lens _poId (\s a -> s { _poId = a })
-
-instance FromJSON ParameterObject where
-    parseJSON = withObject "ParameterObject" $ \o -> ParameterObject
-        <$> o .:? "attributes" .!= mempty
-        <*> o .:  "id"
-
-instance ToJSON ParameterObject where
-    toJSON ParameterObject{..} = object
-        [ "id"         .= _poId
-        , "attributes" .= _poAttributes
-        ]
-
-data PipelineObject = PipelineObject
-    { _po1Fields :: List "fields" Field
-    , _po1Id     :: Text
-    , _po1Name   :: Text
-    } deriving (Eq, Read, Show)
-
--- | 'PipelineObject' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'po1Fields' @::@ ['Field']
---
--- * 'po1Id' @::@ 'Text'
---
--- * 'po1Name' @::@ 'Text'
---
-pipelineObject :: Text -- ^ 'po1Id'
-               -> Text -- ^ 'po1Name'
-               -> PipelineObject
-pipelineObject p1 p2 = PipelineObject
-    { _po1Id     = p1
-    , _po1Name   = p2
-    , _po1Fields = mempty
-    }
-
--- | Key-value pairs that define the properties of the object.
-po1Fields :: Lens' PipelineObject [Field]
-po1Fields = lens _po1Fields (\s a -> s { _po1Fields = a }) . _List
-
--- | The ID of the object.
-po1Id :: Lens' PipelineObject Text
-po1Id = lens _po1Id (\s a -> s { _po1Id = a })
-
--- | The name of the object.
-po1Name :: Lens' PipelineObject Text
-po1Name = lens _po1Name (\s a -> s { _po1Name = a })
-
-instance FromJSON PipelineObject where
-    parseJSON = withObject "PipelineObject" $ \o -> PipelineObject
-        <$> o .:? "fields" .!= mempty
-        <*> o .:  "id"
-        <*> o .:  "name"
-
-instance ToJSON PipelineObject where
-    toJSON PipelineObject{..} = object
-        [ "id"     .= _po1Id
-        , "name"   .= _po1Name
-        , "fields" .= _po1Fields
-        ]
-
-data Tag = Tag
-    { _tagKey   :: Text
-    , _tagValue :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Tag' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tagKey' @::@ 'Text'
---
--- * 'tagValue' @::@ 'Text'
---
-tag :: Text -- ^ 'tagKey'
-    -> Text -- ^ 'tagValue'
-    -> Tag
-tag p1 p2 = Tag
-    { _tagKey   = p1
-    , _tagValue = p2
-    }
-
--- | The key name of a tag defined by a user. For more information, see <http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-control-access.html Controlling User Access to Pipelines> in the /AWS Data Pipeline Developer Guide/.
-tagKey :: Lens' Tag Text
-tagKey = lens _tagKey (\s a -> s { _tagKey = a })
-
--- | The optional value portion of a tag defined by a user. For more information,
--- see <http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-control-access.html Controlling User Access to Pipelines> in the /AWS Data Pipeline DeveloperGuide/.
-tagValue :: Lens' Tag Text
-tagValue = lens _tagValue (\s a -> s { _tagValue = a })
-
-instance FromJSON Tag where
-    parseJSON = withObject "Tag" $ \o -> Tag
-        <$> o .:  "key"
-        <*> o .:  "value"
-
-instance ToJSON Tag where
-    toJSON Tag{..} = object
-        [ "key"   .= _tagKey
-        , "value" .= _tagValue
-        ]
-
-data Field = Field
-    { _fKey         :: Text
-    , _fRefValue    :: Maybe Text
-    , _fStringValue :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Field' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'fKey' @::@ 'Text'
---
--- * 'fRefValue' @::@ 'Maybe' 'Text'
---
--- * 'fStringValue' @::@ 'Maybe' 'Text'
---
-field :: Text -- ^ 'fKey'
-      -> Field
-field p1 = Field
-    { _fKey         = p1
-    , _fStringValue = Nothing
-    , _fRefValue    = Nothing
-    }
-
--- | The field identifier.
-fKey :: Lens' Field Text
-fKey = lens _fKey (\s a -> s { _fKey = a })
-
--- | The field value, expressed as the identifier of another object.
-fRefValue :: Lens' Field (Maybe Text)
-fRefValue = lens _fRefValue (\s a -> s { _fRefValue = a })
-
--- | The field value, expressed as a String.
-fStringValue :: Lens' Field (Maybe Text)
-fStringValue = lens _fStringValue (\s a -> s { _fStringValue = a })
-
-instance FromJSON Field where
-    parseJSON = withObject "Field" $ \o -> Field
-        <$> o .:  "key"
-        <*> o .:? "refValue"
-        <*> o .:? "stringValue"
-
-instance ToJSON Field where
-    toJSON Field{..} = object
-        [ "key"         .= _fKey
-        , "stringValue" .= _fStringValue
-        , "refValue"    .= _fRefValue
-        ]
-
-data ParameterValue = ParameterValue
-    { _pvId          :: Text
-    , _pvStringValue :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ParameterValue' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'pvId' @::@ 'Text'
---
--- * 'pvStringValue' @::@ 'Text'
---
-parameterValue :: Text -- ^ 'pvId'
-               -> Text -- ^ 'pvStringValue'
-               -> ParameterValue
-parameterValue p1 p2 = ParameterValue
-    { _pvId          = p1
-    , _pvStringValue = p2
-    }
-
--- | The ID of the parameter value.
-pvId :: Lens' ParameterValue Text
-pvId = lens _pvId (\s a -> s { _pvId = a })
-
--- | The field value, expressed as a String.
-pvStringValue :: Lens' ParameterValue Text
-pvStringValue = lens _pvStringValue (\s a -> s { _pvStringValue = a })
-
-instance FromJSON ParameterValue where
-    parseJSON = withObject "ParameterValue" $ \o -> ParameterValue
-        <$> o .:  "id"
-        <*> o .:  "stringValue"
-
-instance ToJSON ParameterValue where
-    toJSON ParameterValue{..} = object
-        [ "id"          .= _pvId
-        , "stringValue" .= _pvStringValue
-        ]
-
-data Selector = Selector
-    { _sFieldName :: Maybe Text
-    , _sOperator  :: Maybe Operator
-    } deriving (Eq, Read, Show)
-
--- | 'Selector' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'sFieldName' @::@ 'Maybe' 'Text'
---
--- * 'sOperator' @::@ 'Maybe' 'Operator'
---
-selector :: Selector
-selector = Selector
-    { _sFieldName = Nothing
-    , _sOperator  = Nothing
-    }
-
--- | The name of the field that the operator will be applied to. The field name is
--- the "key" portion of the field definition in the pipeline definition syntax
--- that is used by the AWS Data Pipeline API. If the field is not set on the
--- object, the condition fails.
-sFieldName :: Lens' Selector (Maybe Text)
-sFieldName = lens _sFieldName (\s a -> s { _sFieldName = a })
-
-sOperator :: Lens' Selector (Maybe Operator)
-sOperator = lens _sOperator (\s a -> s { _sOperator = a })
-
-instance FromJSON Selector where
-    parseJSON = withObject "Selector" $ \o -> Selector
-        <$> o .:? "fieldName"
-        <*> o .:? "operator"
-
-instance ToJSON Selector where
-    toJSON Selector{..} = object
-        [ "fieldName" .= _sFieldName
-        , "operator"  .= _sOperator
-        ]
-
-data ParameterAttribute = ParameterAttribute
-    { _paKey         :: Text
-    , _paStringValue :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ParameterAttribute' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'paKey' @::@ 'Text'
---
--- * 'paStringValue' @::@ 'Text'
---
-parameterAttribute :: Text -- ^ 'paKey'
-                   -> Text -- ^ 'paStringValue'
-                   -> ParameterAttribute
-parameterAttribute p1 p2 = ParameterAttribute
-    { _paKey         = p1
-    , _paStringValue = p2
-    }
-
--- | The field identifier.
-paKey :: Lens' ParameterAttribute Text
-paKey = lens _paKey (\s a -> s { _paKey = a })
-
--- | The field value, expressed as a String.
-paStringValue :: Lens' ParameterAttribute Text
-paStringValue = lens _paStringValue (\s a -> s { _paStringValue = a })
-
-instance FromJSON ParameterAttribute where
-    parseJSON = withObject "ParameterAttribute" $ \o -> ParameterAttribute
-        <$> o .:  "key"
-        <*> o .:  "stringValue"
-
-instance ToJSON ParameterAttribute where
-    toJSON ParameterAttribute{..} = object
-        [ "key"         .= _paKey
-        , "stringValue" .= _paStringValue
-        ]
-
-data Operator = Operator
-    { _oType   :: Maybe OperatorType
-    , _oValues :: List "values" Text
-    } deriving (Eq, Read, Show)
-
--- | 'Operator' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'oType' @::@ 'Maybe' 'OperatorType'
---
--- * 'oValues' @::@ ['Text']
---
-operator :: Operator
-operator = Operator
-    { _oType   = Nothing
-    , _oValues = mempty
-    }
-
--- | The logical operation to be performed: equal ('EQ'), equal reference ('REF_EQ'),
--- less than or equal ('LE'), greater than or equal ('GE'), or between ('BETWEEN').
--- Equal reference ('REF_EQ') can be used only with reference fields. The other
--- comparison types can be used only with String fields. The comparison types
--- you can use apply only to certain object fields, as detailed below.
---
--- The comparison operators EQ and REF_EQ act on the following fields:
---
--- name @sphere parent @componentParent @instanceParent @status @scheduledStartTime
--- @scheduledEndTime @actualStartTime @actualEndTime   The comparison operators 'GE', 'LE', and 'BETWEEN' act on the following fields:
---
--- @scheduledStartTime @scheduledEndTime @actualStartTime @actualEndTime  Note
--- that fields beginning with the at sign (@) are read-only and set by the web
--- service. When you name fields, you should choose names containing only
--- alpha-numeric values, as symbols may be reserved by AWS Data Pipeline.
--- User-defined fields that you add to a pipeline should prefix their name with
--- the string "my".
-oType :: Lens' Operator (Maybe OperatorType)
-oType = lens _oType (\s a -> s { _oType = a })
-
--- | The value that the actual field value will be compared with.
-oValues :: Lens' Operator [Text]
-oValues = lens _oValues (\s a -> s { _oValues = a }) . _List
-
-instance FromJSON Operator where
-    parseJSON = withObject "Operator" $ \o -> Operator
-        <$> o .:? "type"
-        <*> o .:? "values" .!= mempty
-
-instance ToJSON Operator where
-    toJSON Operator{..} = object
-        [ "type"   .= _oType
-        , "values" .= _oValues
-        ]
-
-data TaskObject = TaskObject
-    { _toAttemptId  :: Maybe Text
-    , _toObjects    :: Map Text PipelineObject
-    , _toPipelineId :: Maybe Text
-    , _toTaskId     :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'TaskObject' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'toAttemptId' @::@ 'Maybe' 'Text'
---
--- * 'toObjects' @::@ 'HashMap' 'Text' 'PipelineObject'
---
--- * 'toPipelineId' @::@ 'Maybe' 'Text'
---
--- * 'toTaskId' @::@ 'Maybe' 'Text'
---
-taskObject :: TaskObject
-taskObject = TaskObject
-    { _toTaskId     = Nothing
-    , _toPipelineId = Nothing
-    , _toAttemptId  = Nothing
-    , _toObjects    = mempty
-    }
-
--- | The ID of the pipeline task attempt object. AWS Data Pipeline uses this value
--- to track how many times a task is attempted.
-toAttemptId :: Lens' TaskObject (Maybe Text)
-toAttemptId = lens _toAttemptId (\s a -> s { _toAttemptId = a })
-
--- | Connection information for the location where the task runner will publish
--- the output of the task.
-toObjects :: Lens' TaskObject (HashMap Text PipelineObject)
-toObjects = lens _toObjects (\s a -> s { _toObjects = a }) . _Map
-
--- | The ID of the pipeline that provided the task.
-toPipelineId :: Lens' TaskObject (Maybe Text)
-toPipelineId = lens _toPipelineId (\s a -> s { _toPipelineId = a })
-
--- | An internal identifier for the task. This ID is passed to the 'SetTaskStatus'
--- and 'ReportTaskProgress' actions.
-toTaskId :: Lens' TaskObject (Maybe Text)
-toTaskId = lens _toTaskId (\s a -> s { _toTaskId = a })
-
-instance FromJSON TaskObject where
-    parseJSON = withObject "TaskObject" $ \o -> TaskObject
-        <$> o .:? "attemptId"
-        <*> o .:? "objects" .!= mempty
-        <*> o .:? "pipelineId"
-        <*> o .:? "taskId"
-
-instance ToJSON TaskObject where
-    toJSON TaskObject{..} = object
-        [ "taskId"     .= _toTaskId
-        , "pipelineId" .= _toPipelineId
-        , "attemptId"  .= _toAttemptId
-        , "objects"    .= _toObjects
-        ]
-
-data ValidationError = ValidationError
-    { _veErrors :: List "errors" Text
-    , _veId     :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ValidationError' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'veErrors' @::@ ['Text']
---
--- * 'veId' @::@ 'Maybe' 'Text'
---
-validationError :: ValidationError
-validationError = ValidationError
-    { _veId     = Nothing
-    , _veErrors = mempty
-    }
-
--- | A description of the validation error.
-veErrors :: Lens' ValidationError [Text]
-veErrors = lens _veErrors (\s a -> s { _veErrors = a }) . _List
-
--- | The identifier of the object that contains the validation error.
-veId :: Lens' ValidationError (Maybe Text)
-veId = lens _veId (\s a -> s { _veId = a })
-
-instance FromJSON ValidationError where
-    parseJSON = withObject "ValidationError" $ \o -> ValidationError
-        <$> o .:? "errors" .!= mempty
-        <*> o .:? "id"
-
-instance ToJSON ValidationError where
-    toJSON ValidationError{..} = object
-        [ "id"     .= _veId
-        , "errors" .= _veErrors
-        ]
-
-data PipelineDescription = PipelineDescription
-    { _pdDescription :: Maybe Text
-    , _pdFields      :: List "fields" Field
-    , _pdName        :: Text
-    , _pdPipelineId  :: Text
-    , _pdTags        :: List "tags" Tag
-    } deriving (Eq, Read, Show)
-
--- | 'PipelineDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'pdDescription' @::@ 'Maybe' 'Text'
---
--- * 'pdFields' @::@ ['Field']
---
--- * 'pdName' @::@ 'Text'
---
--- * 'pdPipelineId' @::@ 'Text'
---
--- * 'pdTags' @::@ ['Tag']
---
-pipelineDescription :: Text -- ^ 'pdPipelineId'
-                    -> Text -- ^ 'pdName'
-                    -> PipelineDescription
-pipelineDescription p1 p2 = PipelineDescription
-    { _pdPipelineId  = p1
-    , _pdName        = p2
-    , _pdFields      = mempty
-    , _pdDescription = Nothing
-    , _pdTags        = mempty
-    }
-
--- | Description of the pipeline.
-pdDescription :: Lens' PipelineDescription (Maybe Text)
-pdDescription = lens _pdDescription (\s a -> s { _pdDescription = a })
-
--- | A list of read-only fields that contain metadata about the pipeline: @userId,
--- @accountId, and @pipelineState.
-pdFields :: Lens' PipelineDescription [Field]
-pdFields = lens _pdFields (\s a -> s { _pdFields = a }) . _List
-
--- | The name of the pipeline.
-pdName :: Lens' PipelineDescription Text
-pdName = lens _pdName (\s a -> s { _pdName = a })
-
--- | The pipeline identifier that was assigned by AWS Data Pipeline. This is a
--- string of the form 'df-297EG78HU43EEXAMPLE'.
-pdPipelineId :: Lens' PipelineDescription Text
-pdPipelineId = lens _pdPipelineId (\s a -> s { _pdPipelineId = a })
-
--- | A list of tags to associated with a pipeline. Tags let you control access to
--- pipelines. For more information, see <http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-control-access.html Controlling User Access to Pipelines> in
--- the /AWS Data Pipeline Developer Guide/.
-pdTags :: Lens' PipelineDescription [Tag]
-pdTags = lens _pdTags (\s a -> s { _pdTags = a }) . _List
-
-instance FromJSON PipelineDescription where
-    parseJSON = withObject "PipelineDescription" $ \o -> PipelineDescription
-        <$> o .:? "description"
-        <*> o .:? "fields" .!= mempty
-        <*> o .:  "name"
-        <*> o .:  "pipelineId"
-        <*> o .:? "tags" .!= mempty
-
-instance ToJSON PipelineDescription where
-    toJSON PipelineDescription{..} = object
-        [ "pipelineId"  .= _pdPipelineId
-        , "name"        .= _pdName
-        , "fields"      .= _pdFields
-        , "description" .= _pdDescription
-        , "tags"        .= _pdTags
-        ]
-
-data InstanceIdentity = InstanceIdentity
-    { _iiDocument  :: Maybe Text
-    , _iiSignature :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'InstanceIdentity' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'iiDocument' @::@ 'Maybe' 'Text'
---
--- * 'iiSignature' @::@ 'Maybe' 'Text'
---
-instanceIdentity :: InstanceIdentity
-instanceIdentity = InstanceIdentity
-    { _iiDocument  = Nothing
-    , _iiSignature = Nothing
-    }
-
--- | A description of an EC2 instance that is generated when the instance is
--- launched and exposed to the instance via the instance metadata service in the
--- form of a JSON representation of an object.
-iiDocument :: Lens' InstanceIdentity (Maybe Text)
-iiDocument = lens _iiDocument (\s a -> s { _iiDocument = a })
-
--- | A signature which can be used to verify the accuracy and authenticity of the
--- information provided in the instance identity document.
-iiSignature :: Lens' InstanceIdentity (Maybe Text)
-iiSignature = lens _iiSignature (\s a -> s { _iiSignature = a })
-
-instance FromJSON InstanceIdentity where
-    parseJSON = withObject "InstanceIdentity" $ \o -> InstanceIdentity
-        <$> o .:? "document"
-        <*> o .:? "signature"
-
-instance ToJSON InstanceIdentity where
-    toJSON InstanceIdentity{..} = object
-        [ "document"  .= _iiDocument
-        , "signature" .= _iiSignature
-        ]
-
-newtype Query = Query
-    { _qSelectors :: List "selectors" Selector
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList Query where
-    type Item Query = Selector
-
-    fromList = Query . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _qSelectors
-
--- | 'Query' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'qSelectors' @::@ ['Selector']
---
-query :: Query
-query = Query
-    { _qSelectors = mempty
-    }
-
--- | List of selectors that define the query. An object must satisfy all of the
--- selectors to match the query.
-qSelectors :: Lens' Query [Selector]
-qSelectors = lens _qSelectors (\s a -> s { _qSelectors = a }) . _List
-
-instance FromJSON Query where
-    parseJSON = withObject "Query" $ \o -> Query
-        <$> o .:? "selectors" .!= mempty
-
-instance ToJSON Query where
-    toJSON Query{..} = object
-        [ "selectors" .= _qSelectors
-        ]
-
-data OperatorType
-    = OperatorBetween -- ^ BETWEEN
-    | OperatorEq      -- ^ EQ
-    | OperatorGe      -- ^ GE
-    | OperatorLe      -- ^ LE
-    | OperatorRefEq   -- ^ REF_EQ
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable OperatorType
-
-instance FromText OperatorType where
-    parser = takeLowerText >>= \case
-        "between" -> pure OperatorBetween
-        "eq"      -> pure OperatorEq
-        "ge"      -> pure OperatorGe
-        "le"      -> pure OperatorLe
-        "ref_eq"  -> pure OperatorRefEq
-        e         -> fail $
-            "Failure parsing OperatorType from " ++ show e
-
-instance ToText OperatorType where
-    toText = \case
-        OperatorBetween -> "BETWEEN"
-        OperatorEq      -> "EQ"
-        OperatorGe      -> "GE"
-        OperatorLe      -> "LE"
-        OperatorRefEq   -> "REF_EQ"
-
-instance ToByteString OperatorType
-instance ToHeader     OperatorType
-instance ToQuery      OperatorType
-
-instance FromJSON OperatorType where
-    parseJSON = parseJSONText "OperatorType"
-
-instance ToJSON OperatorType where
-    toJSON = toJSONText
-
-data PipelineIdName = PipelineIdName
-    { _pinId   :: Maybe Text
-    , _pinName :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'PipelineIdName' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'pinId' @::@ 'Maybe' 'Text'
---
--- * 'pinName' @::@ 'Maybe' 'Text'
---
-pipelineIdName :: PipelineIdName
-pipelineIdName = PipelineIdName
-    { _pinId   = Nothing
-    , _pinName = Nothing
-    }
-
--- | The ID of the pipeline that was assigned by AWS Data Pipeline. This is a
--- string of the form 'df-297EG78HU43EEXAMPLE'.
-pinId :: Lens' PipelineIdName (Maybe Text)
-pinId = lens _pinId (\s a -> s { _pinId = a })
-
--- | The name of the pipeline.
-pinName :: Lens' PipelineIdName (Maybe Text)
-pinName = lens _pinName (\s a -> s { _pinName = a })
-
-instance FromJSON PipelineIdName where
-    parseJSON = withObject "PipelineIdName" $ \o -> PipelineIdName
-        <$> o .:? "id"
-        <*> o .:? "name"
-
-instance ToJSON PipelineIdName where
-    toJSON PipelineIdName{..} = object
-        [ "id"   .= _pinId
-        , "name" .= _pinName
-        ]
-
-data TaskStatus
-    = Failed   -- ^ FAILED
-    | False'   -- ^ FALSE
-    | Finished -- ^ FINISHED
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable TaskStatus
-
-instance FromText TaskStatus where
-    parser = takeLowerText >>= \case
-        "failed"   -> pure Failed
-        "false"    -> pure False'
-        "finished" -> pure Finished
-        e          -> fail $
-            "Failure parsing TaskStatus from " ++ show e
-
-instance ToText TaskStatus where
-    toText = \case
-        Failed   -> "FAILED"
-        False'   -> "FALSE"
-        Finished -> "FINISHED"
-
-instance ToByteString TaskStatus
-instance ToHeader     TaskStatus
-instance ToQuery      TaskStatus
-
-instance FromJSON TaskStatus where
-    parseJSON = parseJSONText "TaskStatus"
-
-instance ToJSON TaskStatus where
-    toJSON = toJSONText
-
-data ValidationWarning = ValidationWarning
-    { _vwId       :: Maybe Text
-    , _vwWarnings :: List "warnings" Text
-    } deriving (Eq, Ord, Read, Show)
+        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
 
--- | 'ValidationWarning' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'vwId' @::@ 'Maybe' 'Text'
---
--- * 'vwWarnings' @::@ ['Text']
---
-validationWarning :: ValidationWarning
-validationWarning = ValidationWarning
-    { _vwId       = Nothing
-    , _vwWarnings = mempty
-    }
+-- | The request was not valid. Verify that your request was properly
+-- formatted, that the signature was generated with the correct
+-- credentials, and that you haven\'t exceeded any of the service limits
+-- for your account.
+_InvalidRequestException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidRequestException = _ServiceError . hasCode "InvalidRequestException"
 
--- | The identifier of the object that contains the validation warning.
-vwId :: Lens' ValidationWarning (Maybe Text)
-vwId = lens _vwId (\s a -> s { _vwId = a })
+-- | An internal service error occurred.
+_InternalServiceError :: AsError a => Getting (First ServiceError) a ServiceError
+_InternalServiceError = _ServiceError . hasCode "InternalServiceError"
 
--- | A description of the validation warning.
-vwWarnings :: Lens' ValidationWarning [Text]
-vwWarnings = lens _vwWarnings (\s a -> s { _vwWarnings = a }) . _List
+-- | The specified pipeline has been deleted.
+_PipelineDeletedException :: AsError a => Getting (First ServiceError) a ServiceError
+_PipelineDeletedException = _ServiceError . hasCode "PipelineDeletedException"
 
-instance FromJSON ValidationWarning where
-    parseJSON = withObject "ValidationWarning" $ \o -> ValidationWarning
-        <$> o .:? "id"
-        <*> o .:? "warnings" .!= mempty
+-- | The specified pipeline was not found. Verify that you used the correct
+-- user and account identifiers.
+_PipelineNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_PipelineNotFoundException =
+    _ServiceError . hasCode "PipelineNotFoundException"
 
-instance ToJSON ValidationWarning where
-    toJSON ValidationWarning{..} = object
-        [ "id"       .= _vwId
-        , "warnings" .= _vwWarnings
-        ]
+-- | The specified task was not found.
+_TaskNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_TaskNotFoundException = _ServiceError . hasCode "TaskNotFoundException"
diff --git a/gen/Network/AWS/DataPipeline/Types/Product.hs b/gen/Network/AWS/DataPipeline/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DataPipeline/Types/Product.hs
@@ -0,0 +1,754 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DataPipeline.Types.Product
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.DataPipeline.Types.Product where
+
+import           Network.AWS.DataPipeline.Types.Sum
+import           Network.AWS.Prelude
+
+-- | A key-value pair that describes a property of a pipeline object. The
+-- value is specified as either a string value ('StringValue') or a
+-- reference to another object ('RefValue') but not as both.
+--
+-- /See:/ 'field' smart constructor.
+data Field = Field'
+    { _fRefValue    :: !(Maybe Text)
+    , _fStringValue :: !(Maybe Text)
+    , _fKey         :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Field' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fRefValue'
+--
+-- * 'fStringValue'
+--
+-- * 'fKey'
+field
+    :: Text -- ^ 'fKey'
+    -> Field
+field pKey_ =
+    Field'
+    { _fRefValue = Nothing
+    , _fStringValue = Nothing
+    , _fKey = pKey_
+    }
+
+-- | The field value, expressed as the identifier of another object.
+fRefValue :: Lens' Field (Maybe Text)
+fRefValue = lens _fRefValue (\ s a -> s{_fRefValue = a});
+
+-- | The field value, expressed as a String.
+fStringValue :: Lens' Field (Maybe Text)
+fStringValue = lens _fStringValue (\ s a -> s{_fStringValue = a});
+
+-- | The field identifier.
+fKey :: Lens' Field Text
+fKey = lens _fKey (\ s a -> s{_fKey = a});
+
+instance FromJSON Field where
+        parseJSON
+          = withObject "Field"
+              (\ x ->
+                 Field' <$>
+                   (x .:? "refValue") <*> (x .:? "stringValue") <*>
+                     (x .: "key"))
+
+instance ToJSON Field where
+        toJSON Field'{..}
+          = object
+              ["refValue" .= _fRefValue,
+               "stringValue" .= _fStringValue, "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
+-- instance. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html Instance Metadata>
+-- in the /Amazon Elastic Compute Cloud User Guide./ Passing in this value
+-- proves that your task runner is running on an EC2 instance, and ensures
+-- the proper AWS Data Pipeline service charges are applied to your
+-- pipeline.
+--
+-- /See:/ 'instanceIdentity' smart constructor.
+data InstanceIdentity = InstanceIdentity'
+    { _iiSignature :: !(Maybe Text)
+    , _iiDocument  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceIdentity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iiSignature'
+--
+-- * 'iiDocument'
+instanceIdentity
+    :: InstanceIdentity
+instanceIdentity =
+    InstanceIdentity'
+    { _iiSignature = Nothing
+    , _iiDocument = Nothing
+    }
+
+-- | A signature which can be used to verify the accuracy and authenticity of
+-- the information provided in the instance identity document.
+iiSignature :: Lens' InstanceIdentity (Maybe Text)
+iiSignature = lens _iiSignature (\ s a -> s{_iiSignature = a});
+
+-- | A description of an EC2 instance that is generated when the instance is
+-- launched and exposed to the instance via the instance metadata service
+-- in the form of a JSON representation of an object.
+iiDocument :: Lens' InstanceIdentity (Maybe Text)
+iiDocument = lens _iiDocument (\ s a -> s{_iiDocument = a});
+
+instance ToJSON InstanceIdentity where
+        toJSON InstanceIdentity'{..}
+          = object
+              ["signature" .= _iiSignature,
+               "document" .= _iiDocument]
+
+-- | Contains a logical operation for comparing the value of a field with a
+-- specified value.
+--
+-- /See:/ 'operator' smart constructor.
+data Operator = Operator'
+    { _oValues :: !(Maybe [Text])
+    , _oType   :: !(Maybe OperatorType)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Operator' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oValues'
+--
+-- * 'oType'
+operator
+    :: Operator
+operator =
+    Operator'
+    { _oValues = Nothing
+    , _oType = Nothing
+    }
+
+-- | The value that the actual field value will be compared with.
+oValues :: Lens' Operator [Text]
+oValues = lens _oValues (\ s a -> s{_oValues = a}) . _Default . _Coerce;
+
+-- | The logical operation to be performed: equal ('EQ'), equal reference
+-- ('REF_EQ'), less than or equal ('LE'), greater than or equal ('GE'), or
+-- between ('BETWEEN'). Equal reference ('REF_EQ') can be used only with
+-- reference fields. The other comparison types can be used only with
+-- String fields. The comparison types you can use apply only to certain
+-- object fields, as detailed below.
+--
+-- The comparison operators EQ and REF_EQ act on the following fields:
+--
+-- -   name
+-- -   \'sphere
+-- -   parent
+-- -   \'componentParent
+-- -   \'instanceParent
+-- -   \'status
+-- -   \'scheduledStartTime
+-- -   \'scheduledEndTime
+-- -   \'actualStartTime
+-- -   \'actualEndTime
+--
+-- The comparison operators 'GE', 'LE', and 'BETWEEN' act on the following
+-- fields:
+--
+-- -   \'scheduledStartTime
+-- -   \'scheduledEndTime
+-- -   \'actualStartTime
+-- -   \'actualEndTime
+--
+-- Note that fields beginning with the at sign (\') are read-only and set
+-- by the web service. When you name fields, you should choose names
+-- containing only alpha-numeric values, as symbols may be reserved by AWS
+-- Data Pipeline. User-defined fields that you add to a pipeline should
+-- prefix their name with the string \"my\".
+oType :: Lens' Operator (Maybe OperatorType)
+oType = lens _oType (\ s a -> s{_oType = a});
+
+instance ToJSON Operator where
+        toJSON Operator'{..}
+          = object ["values" .= _oValues, "type" .= _oType]
+
+-- | The attributes allowed or specified with a parameter object.
+--
+-- /See:/ 'parameterAttribute' smart constructor.
+data ParameterAttribute = ParameterAttribute'
+    { _paKey         :: !Text
+    , _paStringValue :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ParameterAttribute' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'paKey'
+--
+-- * 'paStringValue'
+parameterAttribute
+    :: Text -- ^ 'paKey'
+    -> Text -- ^ 'paStringValue'
+    -> ParameterAttribute
+parameterAttribute pKey_ pStringValue_ =
+    ParameterAttribute'
+    { _paKey = pKey_
+    , _paStringValue = pStringValue_
+    }
+
+-- | The field identifier.
+paKey :: Lens' ParameterAttribute Text
+paKey = lens _paKey (\ s a -> s{_paKey = a});
+
+-- | The field value, expressed as a String.
+paStringValue :: Lens' ParameterAttribute Text
+paStringValue = lens _paStringValue (\ s a -> s{_paStringValue = a});
+
+instance FromJSON ParameterAttribute where
+        parseJSON
+          = withObject "ParameterAttribute"
+              (\ x ->
+                 ParameterAttribute' <$>
+                   (x .: "key") <*> (x .: "stringValue"))
+
+instance ToJSON ParameterAttribute where
+        toJSON ParameterAttribute'{..}
+          = object
+              ["key" .= _paKey, "stringValue" .= _paStringValue]
+
+-- | Contains information about a parameter object.
+--
+-- /See:/ 'parameterObject' smart constructor.
+data ParameterObject = ParameterObject'
+    { _poId         :: !Text
+    , _poAttributes :: ![ParameterAttribute]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ParameterObject' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'poId'
+--
+-- * 'poAttributes'
+parameterObject
+    :: Text -- ^ 'poId'
+    -> ParameterObject
+parameterObject pId_ =
+    ParameterObject'
+    { _poId = pId_
+    , _poAttributes = mempty
+    }
+
+-- | The ID of the parameter object.
+poId :: Lens' ParameterObject Text
+poId = lens _poId (\ s a -> s{_poId = a});
+
+-- | The attributes of the parameter object.
+poAttributes :: Lens' ParameterObject [ParameterAttribute]
+poAttributes = lens _poAttributes (\ s a -> s{_poAttributes = a}) . _Coerce;
+
+instance FromJSON ParameterObject where
+        parseJSON
+          = withObject "ParameterObject"
+              (\ x ->
+                 ParameterObject' <$>
+                   (x .: "id") <*> (x .:? "attributes" .!= mempty))
+
+instance ToJSON ParameterObject where
+        toJSON ParameterObject'{..}
+          = object
+              ["id" .= _poId, "attributes" .= _poAttributes]
+
+-- | A value or list of parameter values.
+--
+-- /See:/ 'parameterValue' smart constructor.
+data ParameterValue = ParameterValue'
+    { _pvId          :: !Text
+    , _pvStringValue :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ParameterValue' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pvId'
+--
+-- * 'pvStringValue'
+parameterValue
+    :: Text -- ^ 'pvId'
+    -> Text -- ^ 'pvStringValue'
+    -> ParameterValue
+parameterValue pId_ pStringValue_ =
+    ParameterValue'
+    { _pvId = pId_
+    , _pvStringValue = pStringValue_
+    }
+
+-- | The ID of the parameter value.
+pvId :: Lens' ParameterValue Text
+pvId = lens _pvId (\ s a -> s{_pvId = a});
+
+-- | The field value, expressed as a String.
+pvStringValue :: Lens' ParameterValue Text
+pvStringValue = lens _pvStringValue (\ s a -> s{_pvStringValue = a});
+
+instance FromJSON ParameterValue where
+        parseJSON
+          = withObject "ParameterValue"
+              (\ x ->
+                 ParameterValue' <$>
+                   (x .: "id") <*> (x .: "stringValue"))
+
+instance ToJSON ParameterValue where
+        toJSON ParameterValue'{..}
+          = object
+              ["id" .= _pvId, "stringValue" .= _pvStringValue]
+
+-- | Contains pipeline metadata.
+--
+-- /See:/ 'pipelineDescription' smart constructor.
+data PipelineDescription = PipelineDescription'
+    { _pdDescription :: !(Maybe Text)
+    , _pdTags        :: !(Maybe [Tag])
+    , _pdPipelineId  :: !Text
+    , _pdName        :: !Text
+    , _pdFields      :: ![Field]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PipelineDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pdDescription'
+--
+-- * 'pdTags'
+--
+-- * 'pdPipelineId'
+--
+-- * 'pdName'
+--
+-- * 'pdFields'
+pipelineDescription
+    :: Text -- ^ 'pdPipelineId'
+    -> Text -- ^ 'pdName'
+    -> PipelineDescription
+pipelineDescription pPipelineId_ pName_ =
+    PipelineDescription'
+    { _pdDescription = Nothing
+    , _pdTags = Nothing
+    , _pdPipelineId = pPipelineId_
+    , _pdName = pName_
+    , _pdFields = mempty
+    }
+
+-- | Description of the pipeline.
+pdDescription :: Lens' PipelineDescription (Maybe Text)
+pdDescription = lens _pdDescription (\ s a -> s{_pdDescription = a});
+
+-- | A list of tags to associated with a pipeline. Tags let you control
+-- access to pipelines. For more information, see
+-- <http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-control-access.html Controlling User Access to Pipelines>
+-- in the /AWS Data Pipeline Developer Guide/.
+pdTags :: Lens' PipelineDescription [Tag]
+pdTags = lens _pdTags (\ s a -> s{_pdTags = a}) . _Default . _Coerce;
+
+-- | The pipeline identifier that was assigned by AWS Data Pipeline. This is
+-- a string of the form 'df-297EG78HU43EEXAMPLE'.
+pdPipelineId :: Lens' PipelineDescription Text
+pdPipelineId = lens _pdPipelineId (\ s a -> s{_pdPipelineId = a});
+
+-- | The name of the pipeline.
+pdName :: Lens' PipelineDescription Text
+pdName = lens _pdName (\ s a -> s{_pdName = a});
+
+-- | A list of read-only fields that contain metadata about the pipeline:
+-- \'userId, \'accountId, and \'pipelineState.
+pdFields :: Lens' PipelineDescription [Field]
+pdFields = lens _pdFields (\ s a -> s{_pdFields = a}) . _Coerce;
+
+instance FromJSON PipelineDescription where
+        parseJSON
+          = withObject "PipelineDescription"
+              (\ x ->
+                 PipelineDescription' <$>
+                   (x .:? "description") <*> (x .:? "tags" .!= mempty)
+                     <*> (x .: "pipelineId")
+                     <*> (x .: "name")
+                     <*> (x .:? "fields" .!= mempty))
+
+-- | Contains the name and identifier of a pipeline.
+--
+-- /See:/ 'pipelineIdName' smart constructor.
+data PipelineIdName = PipelineIdName'
+    { _pinName :: !(Maybe Text)
+    , _pinId   :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PipelineIdName' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pinName'
+--
+-- * 'pinId'
+pipelineIdName
+    :: PipelineIdName
+pipelineIdName =
+    PipelineIdName'
+    { _pinName = Nothing
+    , _pinId = Nothing
+    }
+
+-- | The name of the pipeline.
+pinName :: Lens' PipelineIdName (Maybe Text)
+pinName = lens _pinName (\ s a -> s{_pinName = a});
+
+-- | The ID of the pipeline that was assigned by AWS Data Pipeline. This is a
+-- string of the form 'df-297EG78HU43EEXAMPLE'.
+pinId :: Lens' PipelineIdName (Maybe Text)
+pinId = lens _pinId (\ s a -> s{_pinId = a});
+
+instance FromJSON PipelineIdName where
+        parseJSON
+          = withObject "PipelineIdName"
+              (\ x ->
+                 PipelineIdName' <$> (x .:? "name") <*> (x .:? "id"))
+
+-- | Contains information about a pipeline object. This can be a logical,
+-- physical, or physical attempt pipeline object. The complete set of
+-- components of a pipeline defines the pipeline.
+--
+-- /See:/ 'pipelineObject' smart constructor.
+data PipelineObject = PipelineObject'
+    { _pId     :: !Text
+    , _pName   :: !Text
+    , _pFields :: ![Field]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PipelineObject' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pId'
+--
+-- * 'pName'
+--
+-- * 'pFields'
+pipelineObject
+    :: Text -- ^ 'pId'
+    -> Text -- ^ 'pName'
+    -> PipelineObject
+pipelineObject pId_ pName_ =
+    PipelineObject'
+    { _pId = pId_
+    , _pName = pName_
+    , _pFields = mempty
+    }
+
+-- | The ID of the object.
+pId :: Lens' PipelineObject Text
+pId = lens _pId (\ s a -> s{_pId = a});
+
+-- | The name of the object.
+pName :: Lens' PipelineObject Text
+pName = lens _pName (\ s a -> s{_pName = a});
+
+-- | Key-value pairs that define the properties of the object.
+pFields :: Lens' PipelineObject [Field]
+pFields = lens _pFields (\ s a -> s{_pFields = a}) . _Coerce;
+
+instance FromJSON PipelineObject where
+        parseJSON
+          = withObject "PipelineObject"
+              (\ x ->
+                 PipelineObject' <$>
+                   (x .: "id") <*> (x .: "name") <*>
+                     (x .:? "fields" .!= mempty))
+
+instance ToJSON PipelineObject where
+        toJSON PipelineObject'{..}
+          = object
+              ["id" .= _pId, "name" .= _pName,
+               "fields" .= _pFields]
+
+-- | Defines the query to run against an object.
+--
+-- /See:/ 'query' smart constructor.
+newtype Query = Query'
+    { _qSelectors :: Maybe [Selector]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Query' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'qSelectors'
+query
+    :: Query
+query =
+    Query'
+    { _qSelectors = Nothing
+    }
+
+-- | List of selectors that define the query. An object must satisfy all of
+-- the selectors to match the query.
+qSelectors :: Lens' Query [Selector]
+qSelectors = lens _qSelectors (\ s a -> s{_qSelectors = a}) . _Default . _Coerce;
+
+instance ToJSON Query where
+        toJSON Query'{..}
+          = object ["selectors" .= _qSelectors]
+
+-- | A comparision that is used to determine whether a query should return
+-- this object.
+--
+-- /See:/ 'selector' smart constructor.
+data Selector = Selector'
+    { _sOperator  :: !(Maybe Operator)
+    , _sFieldName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Selector' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sOperator'
+--
+-- * 'sFieldName'
+selector
+    :: Selector
+selector =
+    Selector'
+    { _sOperator = Nothing
+    , _sFieldName = Nothing
+    }
+
+-- | Undocumented member.
+sOperator :: Lens' Selector (Maybe Operator)
+sOperator = lens _sOperator (\ s a -> s{_sOperator = a});
+
+-- | The name of the field that the operator will be applied to. The field
+-- name is the \"key\" portion of the field definition in the pipeline
+-- definition syntax that is used by the AWS Data Pipeline API. If the
+-- field is not set on the object, the condition fails.
+sFieldName :: Lens' Selector (Maybe Text)
+sFieldName = lens _sFieldName (\ s a -> s{_sFieldName = a});
+
+instance ToJSON Selector where
+        toJSON Selector'{..}
+          = object
+              ["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
+-- ten tags per pipeline. For more information, see
+-- <http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-control-access.html Controlling User Access to Pipelines>
+-- in the /AWS Data Pipeline Developer Guide/.
+--
+-- /See:/ 'tag' smart constructor.
+data Tag = Tag'
+    { _tagKey   :: !Text
+    , _tagValue :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tag' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tagKey'
+--
+-- * 'tagValue'
+tag
+    :: Text -- ^ 'tagKey'
+    -> Text -- ^ 'tagValue'
+    -> Tag
+tag pKey_ pValue_ =
+    Tag'
+    { _tagKey = pKey_
+    , _tagValue = pValue_
+    }
+
+-- | The key name of a tag defined by a user. For more information, see
+-- <http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-control-access.html Controlling User Access to Pipelines>
+-- in the /AWS Data Pipeline Developer Guide/.
+tagKey :: Lens' Tag Text
+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
+
+-- | The optional value portion of a tag defined by a user. For more
+-- information, see
+-- <http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-control-access.html Controlling User Access to Pipelines>
+-- in the /AWS Data Pipeline Developer Guide/.
+tagValue :: Lens' Tag Text
+tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
+
+instance FromJSON Tag where
+        parseJSON
+          = withObject "Tag"
+              (\ x -> Tag' <$> (x .: "key") <*> (x .: "value"))
+
+instance ToJSON Tag where
+        toJSON Tag'{..}
+          = object ["key" .= _tagKey, "value" .= _tagValue]
+
+-- | Contains information about a pipeline task that is assigned to a task
+-- runner.
+--
+-- /See:/ 'taskObject' smart constructor.
+data TaskObject = TaskObject'
+    { _toPipelineId :: !(Maybe Text)
+    , _toTaskId     :: !(Maybe Text)
+    , _toAttemptId  :: !(Maybe Text)
+    , _toObjects    :: !(Maybe (Map Text PipelineObject))
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TaskObject' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'toPipelineId'
+--
+-- * 'toTaskId'
+--
+-- * 'toAttemptId'
+--
+-- * 'toObjects'
+taskObject
+    :: TaskObject
+taskObject =
+    TaskObject'
+    { _toPipelineId = Nothing
+    , _toTaskId = Nothing
+    , _toAttemptId = Nothing
+    , _toObjects = Nothing
+    }
+
+-- | The ID of the pipeline that provided the task.
+toPipelineId :: Lens' TaskObject (Maybe Text)
+toPipelineId = lens _toPipelineId (\ s a -> s{_toPipelineId = a});
+
+-- | An internal identifier for the task. This ID is passed to the
+-- SetTaskStatus and ReportTaskProgress actions.
+toTaskId :: Lens' TaskObject (Maybe Text)
+toTaskId = lens _toTaskId (\ s a -> s{_toTaskId = a});
+
+-- | The ID of the pipeline task attempt object. AWS Data Pipeline uses this
+-- value to track how many times a task is attempted.
+toAttemptId :: Lens' TaskObject (Maybe Text)
+toAttemptId = lens _toAttemptId (\ s a -> s{_toAttemptId = a});
+
+-- | Connection information for the location where the task runner will
+-- publish the output of the task.
+toObjects :: Lens' TaskObject (HashMap Text PipelineObject)
+toObjects = lens _toObjects (\ s a -> s{_toObjects = a}) . _Default . _Map;
+
+instance FromJSON TaskObject where
+        parseJSON
+          = withObject "TaskObject"
+              (\ x ->
+                 TaskObject' <$>
+                   (x .:? "pipelineId") <*> (x .:? "taskId") <*>
+                     (x .:? "attemptId")
+                     <*> (x .:? "objects" .!= mempty))
+
+-- | Defines a validation error. Validation errors prevent pipeline
+-- activation. The set of validation errors that can be returned are
+-- defined by AWS Data Pipeline.
+--
+-- /See:/ 'validationError' smart constructor.
+data ValidationError = ValidationError'
+    { _veId     :: !(Maybe Text)
+    , _veErrors :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ValidationError' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'veId'
+--
+-- * 'veErrors'
+validationError
+    :: ValidationError
+validationError =
+    ValidationError'
+    { _veId = Nothing
+    , _veErrors = Nothing
+    }
+
+-- | The identifier of the object that contains the validation error.
+veId :: Lens' ValidationError (Maybe Text)
+veId = lens _veId (\ s a -> s{_veId = a});
+
+-- | A description of the validation error.
+veErrors :: Lens' ValidationError [Text]
+veErrors = lens _veErrors (\ s a -> s{_veErrors = a}) . _Default . _Coerce;
+
+instance FromJSON ValidationError where
+        parseJSON
+          = withObject "ValidationError"
+              (\ x ->
+                 ValidationError' <$>
+                   (x .:? "id") <*> (x .:? "errors" .!= mempty))
+
+-- | Defines a validation warning. Validation warnings do not prevent
+-- pipeline activation. The set of validation warnings that can be returned
+-- are defined by AWS Data Pipeline.
+--
+-- /See:/ 'validationWarning' smart constructor.
+data ValidationWarning = ValidationWarning'
+    { _vwWarnings :: !(Maybe [Text])
+    , _vwId       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ValidationWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vwWarnings'
+--
+-- * 'vwId'
+validationWarning
+    :: ValidationWarning
+validationWarning =
+    ValidationWarning'
+    { _vwWarnings = Nothing
+    , _vwId = Nothing
+    }
+
+-- | A description of the validation warning.
+vwWarnings :: Lens' ValidationWarning [Text]
+vwWarnings = lens _vwWarnings (\ s a -> s{_vwWarnings = a}) . _Default . _Coerce;
+
+-- | The identifier of the object that contains the validation warning.
+vwId :: Lens' ValidationWarning (Maybe Text)
+vwId = lens _vwId (\ s a -> s{_vwId = a});
+
+instance FromJSON ValidationWarning where
+        parseJSON
+          = withObject "ValidationWarning"
+              (\ x ->
+                 ValidationWarning' <$>
+                   (x .:? "warnings" .!= mempty) <*> (x .:? "id"))
diff --git a/gen/Network/AWS/DataPipeline/Types/Sum.hs b/gen/Network/AWS/DataPipeline/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DataPipeline/Types/Sum.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DataPipeline.Types.Sum
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.DataPipeline.Types.Sum where
+
+import           Network.AWS.Prelude
+
+data OperatorType
+    = OperatorBetween
+    | OperatorEQ'
+    | OperatorGE
+    | OperatorLE
+    | OperatorRefEQ
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText OperatorType where
+    parser = takeLowerText >>= \case
+        "between" -> pure OperatorBetween
+        "eq" -> pure OperatorEQ'
+        "ge" -> pure OperatorGE
+        "le" -> pure OperatorLE
+        "ref_eq" -> pure OperatorRefEQ
+        e -> fromTextError $ "Failure parsing OperatorType from value: '" <> e
+           <> "'. Accepted values: between, eq, ge, le, ref_eq"
+
+instance ToText OperatorType where
+    toText = \case
+        OperatorBetween -> "between"
+        OperatorEQ' -> "eq"
+        OperatorGE -> "ge"
+        OperatorLE -> "le"
+        OperatorRefEQ -> "ref_eq"
+
+instance Hashable     OperatorType
+instance ToByteString OperatorType
+instance ToQuery      OperatorType
+instance ToHeader     OperatorType
+
+instance ToJSON OperatorType where
+    toJSON = toJSONText
+
+data TaskStatus
+    = Failed
+    | False'
+    | Finished
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText TaskStatus where
+    parser = takeLowerText >>= \case
+        "failed" -> pure Failed
+        "false" -> pure False'
+        "finished" -> pure Finished
+        e -> fromTextError $ "Failure parsing TaskStatus from value: '" <> e
+           <> "'. Accepted values: failed, false, finished"
+
+instance ToText TaskStatus where
+    toText = \case
+        Failed -> "failed"
+        False' -> "false"
+        Finished -> "finished"
+
+instance Hashable     TaskStatus
+instance ToByteString TaskStatus
+instance ToQuery      TaskStatus
+instance ToHeader     TaskStatus
+
+instance ToJSON TaskStatus where
+    toJSON = toJSONText
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
@@ -1,174 +1,186 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.DataPipeline.ValidatePipelineDefinition
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Validates the specified pipeline definition to ensure that it is well formed
--- and can be run without error.
+-- Validates the specified pipeline definition to ensure that it is well
+-- formed and can be run without error.
 --
--- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_ValidatePipelineDefinition.html>
+-- /See:/ <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_ValidatePipelineDefinition.html AWS API Reference> for ValidatePipelineDefinition.
 module Network.AWS.DataPipeline.ValidatePipelineDefinition
     (
-    -- * Request
-      ValidatePipelineDefinition
-    -- ** Request constructor
-    , validatePipelineDefinition
-    -- ** Request lenses
+    -- * Creating a Request
+      validatePipelineDefinition
+    , ValidatePipelineDefinition
+    -- * Request Lenses
     , vpdParameterObjects
     , vpdParameterValues
     , vpdPipelineId
     , vpdPipelineObjects
 
-    -- * Response
-    , ValidatePipelineDefinitionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , validatePipelineDefinitionResponse
-    -- ** Response lenses
-    , vpdrErrored
-    , vpdrValidationErrors
-    , vpdrValidationWarnings
+    , ValidatePipelineDefinitionResponse
+    -- * Response Lenses
+    , vpdrsValidationErrors
+    , vpdrsValidationWarnings
+    , vpdrsStatus
+    , vpdrsErrored
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DataPipeline.Types
-import qualified GHC.Exts
-
-data ValidatePipelineDefinition = ValidatePipelineDefinition
-    { _vpdParameterObjects :: List "parameterObjects" ParameterObject
-    , _vpdParameterValues  :: List "parameterValues" ParameterValue
-    , _vpdPipelineId       :: Text
-    , _vpdPipelineObjects  :: List "pipelineObjects" PipelineObject
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.DataPipeline.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ValidatePipelineDefinition' constructor.
+-- | Contains the parameters for ValidatePipelineDefinition.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'validatePipelineDefinition' smart constructor.
+data ValidatePipelineDefinition = ValidatePipelineDefinition'
+    { _vpdParameterObjects :: !(Maybe [ParameterObject])
+    , _vpdParameterValues  :: !(Maybe [ParameterValue])
+    , _vpdPipelineId       :: !Text
+    , _vpdPipelineObjects  :: ![PipelineObject]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ValidatePipelineDefinition' with the minimum fields required to make a request.
 --
--- * 'vpdParameterObjects' @::@ ['ParameterObject']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'vpdParameterValues' @::@ ['ParameterValue']
+-- * 'vpdParameterObjects'
 --
--- * 'vpdPipelineId' @::@ 'Text'
+-- * 'vpdParameterValues'
 --
--- * 'vpdPipelineObjects' @::@ ['PipelineObject']
+-- * 'vpdPipelineId'
 --
-validatePipelineDefinition :: Text -- ^ 'vpdPipelineId'
-                           -> ValidatePipelineDefinition
-validatePipelineDefinition p1 = ValidatePipelineDefinition
-    { _vpdPipelineId       = p1
-    , _vpdPipelineObjects  = mempty
-    , _vpdParameterObjects = mempty
-    , _vpdParameterValues  = mempty
+-- * 'vpdPipelineObjects'
+validatePipelineDefinition
+    :: Text -- ^ 'vpdPipelineId'
+    -> ValidatePipelineDefinition
+validatePipelineDefinition pPipelineId_ =
+    ValidatePipelineDefinition'
+    { _vpdParameterObjects = Nothing
+    , _vpdParameterValues = Nothing
+    , _vpdPipelineId = pPipelineId_
+    , _vpdPipelineObjects = mempty
     }
 
 -- | The parameter objects used with the pipeline.
 vpdParameterObjects :: Lens' ValidatePipelineDefinition [ParameterObject]
-vpdParameterObjects =
-    lens _vpdParameterObjects (\s a -> s { _vpdParameterObjects = a })
-        . _List
+vpdParameterObjects = lens _vpdParameterObjects (\ s a -> s{_vpdParameterObjects = a}) . _Default . _Coerce;
 
 -- | The parameter values used with the pipeline.
 vpdParameterValues :: Lens' ValidatePipelineDefinition [ParameterValue]
-vpdParameterValues =
-    lens _vpdParameterValues (\s a -> s { _vpdParameterValues = a })
-        . _List
+vpdParameterValues = lens _vpdParameterValues (\ s a -> s{_vpdParameterValues = a}) . _Default . _Coerce;
 
 -- | The ID of the pipeline.
 vpdPipelineId :: Lens' ValidatePipelineDefinition Text
-vpdPipelineId = lens _vpdPipelineId (\s a -> s { _vpdPipelineId = a })
+vpdPipelineId = lens _vpdPipelineId (\ s a -> s{_vpdPipelineId = a});
 
--- | The objects that define the pipeline changes to validate against the pipeline.
+-- | The objects that define the pipeline changes to validate against the
+-- pipeline.
 vpdPipelineObjects :: Lens' ValidatePipelineDefinition [PipelineObject]
-vpdPipelineObjects =
-    lens _vpdPipelineObjects (\s a -> s { _vpdPipelineObjects = a })
-        . _List
+vpdPipelineObjects = lens _vpdPipelineObjects (\ s a -> s{_vpdPipelineObjects = a}) . _Coerce;
 
-data ValidatePipelineDefinitionResponse = ValidatePipelineDefinitionResponse
-    { _vpdrErrored            :: Bool
-    , _vpdrValidationErrors   :: List "validationErrors" ValidationError
-    , _vpdrValidationWarnings :: List "validationWarnings" ValidationWarning
-    } deriving (Eq, Read, Show)
+instance AWSRequest ValidatePipelineDefinition where
+        type Sv ValidatePipelineDefinition = DataPipeline
+        type Rs ValidatePipelineDefinition =
+             ValidatePipelineDefinitionResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ValidatePipelineDefinitionResponse' <$>
+                   (x .?> "validationErrors" .!@ mempty) <*>
+                     (x .?> "validationWarnings" .!@ mempty)
+                     <*> (pure (fromEnum s))
+                     <*> (x .:> "errored"))
 
--- | 'ValidatePipelineDefinitionResponse' constructor.
+instance ToHeaders ValidatePipelineDefinition where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DataPipeline.ValidatePipelineDefinition" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ValidatePipelineDefinition where
+        toJSON ValidatePipelineDefinition'{..}
+          = object
+              ["parameterObjects" .= _vpdParameterObjects,
+               "parameterValues" .= _vpdParameterValues,
+               "pipelineId" .= _vpdPipelineId,
+               "pipelineObjects" .= _vpdPipelineObjects]
+
+instance ToPath ValidatePipelineDefinition where
+        toPath = const "/"
+
+instance ToQuery ValidatePipelineDefinition where
+        toQuery = const mempty
+
+-- | Contains the output of ValidatePipelineDefinition.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'validatePipelineDefinitionResponse' smart constructor.
+data ValidatePipelineDefinitionResponse = ValidatePipelineDefinitionResponse'
+    { _vpdrsValidationErrors   :: !(Maybe [ValidationError])
+    , _vpdrsValidationWarnings :: !(Maybe [ValidationWarning])
+    , _vpdrsStatus             :: !Int
+    , _vpdrsErrored            :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ValidatePipelineDefinitionResponse' with the minimum fields required to make a request.
 --
--- * 'vpdrErrored' @::@ 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'vpdrValidationErrors' @::@ ['ValidationError']
+-- * 'vpdrsValidationErrors'
 --
--- * 'vpdrValidationWarnings' @::@ ['ValidationWarning']
+-- * 'vpdrsValidationWarnings'
 --
-validatePipelineDefinitionResponse :: Bool -- ^ 'vpdrErrored'
-                                   -> ValidatePipelineDefinitionResponse
-validatePipelineDefinitionResponse p1 = ValidatePipelineDefinitionResponse
-    { _vpdrErrored            = p1
-    , _vpdrValidationErrors   = mempty
-    , _vpdrValidationWarnings = mempty
+-- * 'vpdrsStatus'
+--
+-- * 'vpdrsErrored'
+validatePipelineDefinitionResponse
+    :: Int -- ^ 'vpdrsStatus'
+    -> Bool -- ^ 'vpdrsErrored'
+    -> ValidatePipelineDefinitionResponse
+validatePipelineDefinitionResponse pStatus_ pErrored_ =
+    ValidatePipelineDefinitionResponse'
+    { _vpdrsValidationErrors = Nothing
+    , _vpdrsValidationWarnings = Nothing
+    , _vpdrsStatus = pStatus_
+    , _vpdrsErrored = pErrored_
     }
 
--- | Indicates whether there were validation errors.
-vpdrErrored :: Lens' ValidatePipelineDefinitionResponse Bool
-vpdrErrored = lens _vpdrErrored (\s a -> s { _vpdrErrored = a })
-
 -- | Any validation errors that were found.
-vpdrValidationErrors :: Lens' ValidatePipelineDefinitionResponse [ValidationError]
-vpdrValidationErrors =
-    lens _vpdrValidationErrors (\s a -> s { _vpdrValidationErrors = a })
-        . _List
+vpdrsValidationErrors :: Lens' ValidatePipelineDefinitionResponse [ValidationError]
+vpdrsValidationErrors = lens _vpdrsValidationErrors (\ s a -> s{_vpdrsValidationErrors = a}) . _Default . _Coerce;
 
 -- | Any validation warnings that were found.
-vpdrValidationWarnings :: Lens' ValidatePipelineDefinitionResponse [ValidationWarning]
-vpdrValidationWarnings =
-    lens _vpdrValidationWarnings (\s a -> s { _vpdrValidationWarnings = a })
-        . _List
-
-instance ToPath ValidatePipelineDefinition where
-    toPath = const "/"
-
-instance ToQuery ValidatePipelineDefinition where
-    toQuery = const mempty
-
-instance ToHeaders ValidatePipelineDefinition
-
-instance ToJSON ValidatePipelineDefinition where
-    toJSON ValidatePipelineDefinition{..} = object
-        [ "pipelineId"       .= _vpdPipelineId
-        , "pipelineObjects"  .= _vpdPipelineObjects
-        , "parameterObjects" .= _vpdParameterObjects
-        , "parameterValues"  .= _vpdParameterValues
-        ]
-
-instance AWSRequest ValidatePipelineDefinition where
-    type Sv ValidatePipelineDefinition = DataPipeline
-    type Rs ValidatePipelineDefinition = ValidatePipelineDefinitionResponse
+vpdrsValidationWarnings :: Lens' ValidatePipelineDefinitionResponse [ValidationWarning]
+vpdrsValidationWarnings = lens _vpdrsValidationWarnings (\ s a -> s{_vpdrsValidationWarnings = a}) . _Default . _Coerce;
 
-    request  = post "ValidatePipelineDefinition"
-    response = jsonResponse
+-- | The response status code.
+vpdrsStatus :: Lens' ValidatePipelineDefinitionResponse Int
+vpdrsStatus = lens _vpdrsStatus (\ s a -> s{_vpdrsStatus = a});
 
-instance FromJSON ValidatePipelineDefinitionResponse where
-    parseJSON = withObject "ValidatePipelineDefinitionResponse" $ \o -> ValidatePipelineDefinitionResponse
-        <$> o .:  "errored"
-        <*> o .:? "validationErrors" .!= mempty
-        <*> o .:? "validationWarnings" .!= mempty
+-- | Indicates whether there were validation errors.
+vpdrsErrored :: Lens' ValidatePipelineDefinitionResponse Bool
+vpdrsErrored = lens _vpdrsErrored (\ s a -> s{_vpdrsErrored = a});
diff --git a/gen/Network/AWS/DataPipeline/Waiters.hs b/gen/Network/AWS/DataPipeline/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DataPipeline/Waiters.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DataPipeline.Waiters
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.DataPipeline.Waiters where
+
+import           Network.AWS.DataPipeline.Types
+import           Network.AWS.Prelude
+import           Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,21 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Main (main) where
+
+import Test.Tasty
+import Test.AWS.DataPipeline
+import Test.AWS.DataPipeline.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "DataPipeline"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/DataPipeline.hs b/test/Test/AWS/DataPipeline.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/DataPipeline.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.DataPipeline
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+
+module Test.AWS.DataPipeline
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.DataPipeline
+import           Test.AWS.Gen.DataPipeline
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/DataPipeline/Internal.hs b/test/Test/AWS/DataPipeline/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/DataPipeline/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.DataPipeline.Internal
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+
+module Test.AWS.DataPipeline.Internal where
+
+import Test.AWS.Prelude
diff --git a/test/Test/AWS/Gen/DataPipeline.hs b/test/Test/AWS/Gen/DataPipeline.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/DataPipeline.hs
@@ -0,0 +1,362 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans        #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.AWS.Gen.DataPipeline
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Test.AWS.Gen.DataPipeline where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.DataPipeline
+import Test.AWS.DataPipeline.Internal
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ testDescribePipelines $
+--             describePipelines
+--
+--         , testQueryObjects $
+--             queryObjects
+--
+--         , testRemoveTags $
+--             removeTags
+--
+--         , testDeletePipeline $
+--             deletePipeline
+--
+--         , testListPipelines $
+--             listPipelines
+--
+--         , testGetPipelineDefinition $
+--             getPipelineDefinition
+--
+--         , testPollForTask $
+--             pollForTask
+--
+--         , testEvaluateExpression $
+--             evaluateExpression
+--
+--         , testDeactivatePipeline $
+--             deactivatePipeline
+--
+--         , testAddTags $
+--             addTags
+--
+--         , testDescribeObjects $
+--             describeObjects
+--
+--         , testReportTaskRunnerHeartbeat $
+--             reportTaskRunnerHeartbeat
+--
+--         , testActivatePipeline $
+--             activatePipeline
+--
+--         , testSetTaskStatus $
+--             setTaskStatus
+--
+--         , testReportTaskProgress $
+--             reportTaskProgress
+--
+--         , testCreatePipeline $
+--             createPipeline
+--
+--         , testSetStatus $
+--             setStatus
+--
+--         , testPutPipelineDefinition $
+--             putPipelineDefinition
+--
+--         , testValidatePipelineDefinition $
+--             validatePipelineDefinition
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testDescribePipelinesResponse $
+--             describePipelinesResponse
+--
+--         , testQueryObjectsResponse $
+--             queryObjectsResponse
+--
+--         , testRemoveTagsResponse $
+--             removeTagsResponse
+--
+--         , testDeletePipelineResponse $
+--             deletePipelineResponse
+--
+--         , testListPipelinesResponse $
+--             listPipelinesResponse
+--
+--         , testGetPipelineDefinitionResponse $
+--             getPipelineDefinitionResponse
+--
+--         , testPollForTaskResponse $
+--             pollForTaskResponse
+--
+--         , testEvaluateExpressionResponse $
+--             evaluateExpressionResponse
+--
+--         , testDeactivatePipelineResponse $
+--             deactivatePipelineResponse
+--
+--         , testAddTagsResponse $
+--             addTagsResponse
+--
+--         , testDescribeObjectsResponse $
+--             describeObjectsResponse
+--
+--         , testReportTaskRunnerHeartbeatResponse $
+--             reportTaskRunnerHeartbeatResponse
+--
+--         , testActivatePipelineResponse $
+--             activatePipelineResponse
+--
+--         , testSetTaskStatusResponse $
+--             setTaskStatusResponse
+--
+--         , testReportTaskProgressResponse $
+--             reportTaskProgressResponse
+--
+--         , testCreatePipelineResponse $
+--             createPipelineResponse
+--
+--         , testSetStatusResponse $
+--             setStatusResponse
+--
+--         , testPutPipelineDefinitionResponse $
+--             putPipelineDefinitionResponse
+--
+--         , testValidatePipelineDefinitionResponse $
+--             validatePipelineDefinitionResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testDescribePipelines :: DescribePipelines -> TestTree
+testDescribePipelines = req
+    "DescribePipelines"
+    "fixture/DescribePipelines"
+
+testQueryObjects :: QueryObjects -> TestTree
+testQueryObjects = req
+    "QueryObjects"
+    "fixture/QueryObjects"
+
+testRemoveTags :: RemoveTags -> TestTree
+testRemoveTags = req
+    "RemoveTags"
+    "fixture/RemoveTags"
+
+testDeletePipeline :: DeletePipeline -> TestTree
+testDeletePipeline = req
+    "DeletePipeline"
+    "fixture/DeletePipeline"
+
+testListPipelines :: ListPipelines -> TestTree
+testListPipelines = req
+    "ListPipelines"
+    "fixture/ListPipelines"
+
+testGetPipelineDefinition :: GetPipelineDefinition -> TestTree
+testGetPipelineDefinition = req
+    "GetPipelineDefinition"
+    "fixture/GetPipelineDefinition"
+
+testPollForTask :: PollForTask -> TestTree
+testPollForTask = req
+    "PollForTask"
+    "fixture/PollForTask"
+
+testEvaluateExpression :: EvaluateExpression -> TestTree
+testEvaluateExpression = req
+    "EvaluateExpression"
+    "fixture/EvaluateExpression"
+
+testDeactivatePipeline :: DeactivatePipeline -> TestTree
+testDeactivatePipeline = req
+    "DeactivatePipeline"
+    "fixture/DeactivatePipeline"
+
+testAddTags :: AddTags -> TestTree
+testAddTags = req
+    "AddTags"
+    "fixture/AddTags"
+
+testDescribeObjects :: DescribeObjects -> TestTree
+testDescribeObjects = req
+    "DescribeObjects"
+    "fixture/DescribeObjects"
+
+testReportTaskRunnerHeartbeat :: ReportTaskRunnerHeartbeat -> TestTree
+testReportTaskRunnerHeartbeat = req
+    "ReportTaskRunnerHeartbeat"
+    "fixture/ReportTaskRunnerHeartbeat"
+
+testActivatePipeline :: ActivatePipeline -> TestTree
+testActivatePipeline = req
+    "ActivatePipeline"
+    "fixture/ActivatePipeline"
+
+testSetTaskStatus :: SetTaskStatus -> TestTree
+testSetTaskStatus = req
+    "SetTaskStatus"
+    "fixture/SetTaskStatus"
+
+testReportTaskProgress :: ReportTaskProgress -> TestTree
+testReportTaskProgress = req
+    "ReportTaskProgress"
+    "fixture/ReportTaskProgress"
+
+testCreatePipeline :: CreatePipeline -> TestTree
+testCreatePipeline = req
+    "CreatePipeline"
+    "fixture/CreatePipeline"
+
+testSetStatus :: SetStatus -> TestTree
+testSetStatus = req
+    "SetStatus"
+    "fixture/SetStatus"
+
+testPutPipelineDefinition :: PutPipelineDefinition -> TestTree
+testPutPipelineDefinition = req
+    "PutPipelineDefinition"
+    "fixture/PutPipelineDefinition"
+
+testValidatePipelineDefinition :: ValidatePipelineDefinition -> TestTree
+testValidatePipelineDefinition = req
+    "ValidatePipelineDefinition"
+    "fixture/ValidatePipelineDefinition"
+
+-- Responses
+
+testDescribePipelinesResponse :: DescribePipelinesResponse -> TestTree
+testDescribePipelinesResponse = res
+    "DescribePipelinesResponse"
+    "fixture/DescribePipelinesResponse"
+    (Proxy :: Proxy DescribePipelines)
+
+testQueryObjectsResponse :: QueryObjectsResponse -> TestTree
+testQueryObjectsResponse = res
+    "QueryObjectsResponse"
+    "fixture/QueryObjectsResponse"
+    (Proxy :: Proxy QueryObjects)
+
+testRemoveTagsResponse :: RemoveTagsResponse -> TestTree
+testRemoveTagsResponse = res
+    "RemoveTagsResponse"
+    "fixture/RemoveTagsResponse"
+    (Proxy :: Proxy RemoveTags)
+
+testDeletePipelineResponse :: DeletePipelineResponse -> TestTree
+testDeletePipelineResponse = res
+    "DeletePipelineResponse"
+    "fixture/DeletePipelineResponse"
+    (Proxy :: Proxy DeletePipeline)
+
+testListPipelinesResponse :: ListPipelinesResponse -> TestTree
+testListPipelinesResponse = res
+    "ListPipelinesResponse"
+    "fixture/ListPipelinesResponse"
+    (Proxy :: Proxy ListPipelines)
+
+testGetPipelineDefinitionResponse :: GetPipelineDefinitionResponse -> TestTree
+testGetPipelineDefinitionResponse = res
+    "GetPipelineDefinitionResponse"
+    "fixture/GetPipelineDefinitionResponse"
+    (Proxy :: Proxy GetPipelineDefinition)
+
+testPollForTaskResponse :: PollForTaskResponse -> TestTree
+testPollForTaskResponse = res
+    "PollForTaskResponse"
+    "fixture/PollForTaskResponse"
+    (Proxy :: Proxy PollForTask)
+
+testEvaluateExpressionResponse :: EvaluateExpressionResponse -> TestTree
+testEvaluateExpressionResponse = res
+    "EvaluateExpressionResponse"
+    "fixture/EvaluateExpressionResponse"
+    (Proxy :: Proxy EvaluateExpression)
+
+testDeactivatePipelineResponse :: DeactivatePipelineResponse -> TestTree
+testDeactivatePipelineResponse = res
+    "DeactivatePipelineResponse"
+    "fixture/DeactivatePipelineResponse"
+    (Proxy :: Proxy DeactivatePipeline)
+
+testAddTagsResponse :: AddTagsResponse -> TestTree
+testAddTagsResponse = res
+    "AddTagsResponse"
+    "fixture/AddTagsResponse"
+    (Proxy :: Proxy AddTags)
+
+testDescribeObjectsResponse :: DescribeObjectsResponse -> TestTree
+testDescribeObjectsResponse = res
+    "DescribeObjectsResponse"
+    "fixture/DescribeObjectsResponse"
+    (Proxy :: Proxy DescribeObjects)
+
+testReportTaskRunnerHeartbeatResponse :: ReportTaskRunnerHeartbeatResponse -> TestTree
+testReportTaskRunnerHeartbeatResponse = res
+    "ReportTaskRunnerHeartbeatResponse"
+    "fixture/ReportTaskRunnerHeartbeatResponse"
+    (Proxy :: Proxy ReportTaskRunnerHeartbeat)
+
+testActivatePipelineResponse :: ActivatePipelineResponse -> TestTree
+testActivatePipelineResponse = res
+    "ActivatePipelineResponse"
+    "fixture/ActivatePipelineResponse"
+    (Proxy :: Proxy ActivatePipeline)
+
+testSetTaskStatusResponse :: SetTaskStatusResponse -> TestTree
+testSetTaskStatusResponse = res
+    "SetTaskStatusResponse"
+    "fixture/SetTaskStatusResponse"
+    (Proxy :: Proxy SetTaskStatus)
+
+testReportTaskProgressResponse :: ReportTaskProgressResponse -> TestTree
+testReportTaskProgressResponse = res
+    "ReportTaskProgressResponse"
+    "fixture/ReportTaskProgressResponse"
+    (Proxy :: Proxy ReportTaskProgress)
+
+testCreatePipelineResponse :: CreatePipelineResponse -> TestTree
+testCreatePipelineResponse = res
+    "CreatePipelineResponse"
+    "fixture/CreatePipelineResponse"
+    (Proxy :: Proxy CreatePipeline)
+
+testSetStatusResponse :: SetStatusResponse -> TestTree
+testSetStatusResponse = res
+    "SetStatusResponse"
+    "fixture/SetStatusResponse"
+    (Proxy :: Proxy SetStatus)
+
+testPutPipelineDefinitionResponse :: PutPipelineDefinitionResponse -> TestTree
+testPutPipelineDefinitionResponse = res
+    "PutPipelineDefinitionResponse"
+    "fixture/PutPipelineDefinitionResponse"
+    (Proxy :: Proxy PutPipelineDefinition)
+
+testValidatePipelineDefinitionResponse :: ValidatePipelineDefinitionResponse -> TestTree
+testValidatePipelineDefinitionResponse = res
+    "ValidatePipelineDefinitionResponse"
+    "fixture/ValidatePipelineDefinitionResponse"
+    (Proxy :: Proxy ValidatePipelineDefinition)
