diff --git a/amazonka-datapipeline.cabal b/amazonka-datapipeline.cabal
--- a/amazonka-datapipeline.cabal
+++ b/amazonka-datapipeline.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-datapipeline
-version:               0.3.0
+version:               0.3.1
 synopsis:              Amazon Data Pipeline SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -37,6 +37,7 @@
     exposed-modules:
           Network.AWS.DataPipeline
         , Network.AWS.DataPipeline.ActivatePipeline
+        , Network.AWS.DataPipeline.AddTags
         , Network.AWS.DataPipeline.CreatePipeline
         , Network.AWS.DataPipeline.DeletePipeline
         , Network.AWS.DataPipeline.DescribeObjects
@@ -47,6 +48,7 @@
         , Network.AWS.DataPipeline.PollForTask
         , Network.AWS.DataPipeline.PutPipelineDefinition
         , Network.AWS.DataPipeline.QueryObjects
+        , Network.AWS.DataPipeline.RemoveTags
         , Network.AWS.DataPipeline.ReportTaskProgress
         , Network.AWS.DataPipeline.ReportTaskRunnerHeartbeat
         , Network.AWS.DataPipeline.SetStatus
@@ -57,5 +59,5 @@
     other-modules:
 
     build-depends:
-          amazonka-core == 0.3.0.*
+          amazonka-core == 0.3.1.*
         , base          >= 4.7     && < 5
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
@@ -16,6 +16,7 @@
 -- completion of previous tasks.
 module Network.AWS.DataPipeline
     ( module Network.AWS.DataPipeline.ActivatePipeline
+    , module Network.AWS.DataPipeline.AddTags
     , module Network.AWS.DataPipeline.CreatePipeline
     , module Network.AWS.DataPipeline.DeletePipeline
     , module Network.AWS.DataPipeline.DescribeObjects
@@ -26,6 +27,7 @@
     , module Network.AWS.DataPipeline.PollForTask
     , module Network.AWS.DataPipeline.PutPipelineDefinition
     , module Network.AWS.DataPipeline.QueryObjects
+    , module Network.AWS.DataPipeline.RemoveTags
     , module Network.AWS.DataPipeline.ReportTaskProgress
     , module Network.AWS.DataPipeline.ReportTaskRunnerHeartbeat
     , module Network.AWS.DataPipeline.SetStatus
@@ -35,6 +37,7 @@
     ) where
 
 import Network.AWS.DataPipeline.ActivatePipeline
+import Network.AWS.DataPipeline.AddTags
 import Network.AWS.DataPipeline.CreatePipeline
 import Network.AWS.DataPipeline.DeletePipeline
 import Network.AWS.DataPipeline.DescribeObjects
@@ -45,6 +48,7 @@
 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
diff --git a/gen/Network/AWS/DataPipeline/AddTags.hs b/gen/Network/AWS/DataPipeline/AddTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DataPipeline/AddTags.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.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/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | Add or modify tags in an existing pipeline.
+--
+-- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_AddTags.html>
+module Network.AWS.DataPipeline.AddTags
+    (
+    -- * Request
+      AddTags
+    -- ** Request constructor
+    , addTags
+    -- ** Request lenses
+    , atPipelineId
+    , atTags
+
+    -- * Response
+    , AddTagsResponse
+    -- ** Response constructor
+    , addTagsResponse
+    ) where
+
+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)
+
+-- | 'AddTags' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'atPipelineId' @::@ 'Text'
+--
+-- * 'atTags' @::@ ['Tag']
+--
+addTags :: Text -- ^ 'atPipelineId'
+        -> AddTags
+addTags p1 = AddTags
+    { _atPipelineId = p1
+    , _atTags       = mempty
+    }
+
+-- | The identifier of the pipeline to which you want to add the tags.
+atPipelineId :: Lens' AddTags Text
+atPipelineId = lens _atPipelineId (\s a -> s { _atPipelineId = a })
+
+-- | The tags as key/value pairs to add to the pipeline.
+atTags :: Lens' AddTags [Tag]
+atTags = lens _atTags (\s a -> s { _atTags = a }) . _List
+
+data AddTagsResponse = AddTagsResponse
+    deriving (Eq, Ord, Read, Show, Generic)
+
+-- | 'AddTagsResponse' constructor.
+addTagsResponse :: AddTagsResponse
+addTagsResponse = AddTagsResponse
+
+instance ToPath AddTags where
+    toPath = const "/"
+
+instance ToQuery AddTags where
+    toQuery = const mempty
+
+instance ToHeaders AddTags
+
+instance ToJSON AddTags where
+    toJSON AddTags{..} = object
+        [ "pipelineId" .= _atPipelineId
+        , "tags"       .= _atTags
+        ]
+
+instance AWSRequest AddTags where
+    type Sv AddTags = DataPipeline
+    type Rs AddTags = AddTagsResponse
+
+    request  = post "AddTags"
+    response = nullResponse AddTagsResponse
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
@@ -34,6 +34,7 @@
     -- ** Request lenses
     , cpDescription
     , cpName
+    , cpTags
     , cpUniqueId
 
     -- * Response
@@ -52,8 +53,9 @@
 data CreatePipeline = CreatePipeline
     { _cpDescription :: Maybe Text
     , _cpName        :: Text
+    , _cpTags        :: List "tags" Tag
     , _cpUniqueId    :: Text
-    } deriving (Eq, Ord, Read, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'CreatePipeline' constructor.
 --
@@ -63,6 +65,8 @@
 --
 -- * 'cpName' @::@ 'Text'
 --
+-- * 'cpTags' @::@ ['Tag']
+--
 -- * 'cpUniqueId' @::@ 'Text'
 --
 createPipeline :: Text -- ^ 'cpName'
@@ -72,6 +76,7 @@
     { _cpName        = p1
     , _cpUniqueId    = p2
     , _cpDescription = Nothing
+    , _cpTags        = mempty
     }
 
 -- | The description of the new pipeline.
@@ -84,6 +89,11 @@
 cpName :: Lens' CreatePipeline Text
 cpName = lens _cpName (\s a -> s { _cpName = a })
 
+-- | A list of tags to associate with a pipeline at creation time. 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/.
+cpTags :: Lens' CreatePipeline [Tag]
+cpTags = lens _cpTags (\s a -> s { _cpTags = a }) . _List
+
 -- | A unique identifier that you specify. 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
@@ -132,6 +142,7 @@
         [ "name"        .= _cpName
         , "uniqueId"    .= _cpUniqueId
         , "description" .= _cpDescription
+        , "tags"        .= _cpTags
         ]
 
 instance AWSRequest CreatePipeline where
diff --git a/gen/Network/AWS/DataPipeline/RemoveTags.hs b/gen/Network/AWS/DataPipeline/RemoveTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DataPipeline/RemoveTags.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.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/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | Remove existing tags from a pipeline.
+--
+-- <http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_RemoveTags.html>
+module Network.AWS.DataPipeline.RemoveTags
+    (
+    -- * Request
+      RemoveTags
+    -- ** Request constructor
+    , removeTags
+    -- ** Request lenses
+    , rtPipelineId
+    , rtTagKeys
+
+    -- * Response
+    , RemoveTagsResponse
+    -- ** Response constructor
+    , removeTagsResponse
+    ) where
+
+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)
+
+-- | 'RemoveTags' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'rtPipelineId' @::@ 'Text'
+--
+-- * 'rtTagKeys' @::@ ['Text']
+--
+removeTags :: Text -- ^ 'rtPipelineId'
+           -> RemoveTags
+removeTags p1 = RemoveTags
+    { _rtPipelineId = p1
+    , _rtTagKeys    = mempty
+    }
+
+-- | The pipeline from which you want to remove tags.
+rtPipelineId :: Lens' RemoveTags Text
+rtPipelineId = lens _rtPipelineId (\s a -> s { _rtPipelineId = a })
+
+-- | The keys of the tags you wish to remove.
+rtTagKeys :: Lens' RemoveTags [Text]
+rtTagKeys = lens _rtTagKeys (\s a -> s { _rtTagKeys = a }) . _List
+
+data RemoveTagsResponse = RemoveTagsResponse
+    deriving (Eq, Ord, Read, Show, Generic)
+
+-- | 'RemoveTagsResponse' constructor.
+removeTagsResponse :: RemoveTagsResponse
+removeTagsResponse = RemoveTagsResponse
+
+instance ToPath RemoveTags where
+    toPath = const "/"
+
+instance ToQuery RemoveTags where
+    toQuery = const mempty
+
+instance ToHeaders RemoveTags
+
+instance ToJSON RemoveTags where
+    toJSON RemoveTags{..} = object
+        [ "pipelineId" .= _rtPipelineId
+        , "tagKeys"    .= _rtTagKeys
+        ]
+
+instance AWSRequest RemoveTags where
+    type Sv RemoveTags = DataPipeline
+    type Rs RemoveTags = RemoveTagsResponse
+
+    request  = post "RemoveTags"
+    response = nullResponse RemoveTagsResponse
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
@@ -88,7 +88,7 @@
 
 -- | Specifies the status to be set on all the objects in 'objectIds'. For
 -- components, this can be either 'PAUSE' or 'RESUME'. For instances, this can be
--- either 'CANCEL', 'RERUN', or 'MARK_FINISHED'.
+-- either 'TRY_CANCEL', 'RERUN', or 'MARK_FINISHED'.
 ssStatus :: Lens' SetStatus Text
 ssStatus = lens _ssStatus (\s a -> s { _ssStatus = 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
@@ -43,6 +43,12 @@
     , po1Id
     , po1Name
 
+    -- * Tag
+    , Tag
+    , tag
+    , tagKey
+    , tagValue
+
     -- * Field
     , Field
     , field
@@ -95,6 +101,7 @@
     , pdFields
     , pdName
     , pdPipelineId
+    , pdTags
 
     -- * InstanceIdentity
     , InstanceIdentity
@@ -261,6 +268,47 @@
         , "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
@@ -588,6 +636,7 @@
     , _pdFields      :: List "fields" Field
     , _pdName        :: Text
     , _pdPipelineId  :: Text
+    , _pdTags        :: List "tags" Tag
     } deriving (Eq, Read, Show)
 
 -- | 'PipelineDescription' constructor.
@@ -602,6 +651,8 @@
 --
 -- * 'pdPipelineId' @::@ 'Text'
 --
+-- * 'pdTags' @::@ ['Tag']
+--
 pipelineDescription :: Text -- ^ 'pdPipelineId'
                     -> Text -- ^ 'pdName'
                     -> PipelineDescription
@@ -610,6 +661,7 @@
     , _pdName        = p2
     , _pdFields      = mempty
     , _pdDescription = Nothing
+    , _pdTags        = mempty
     }
 
 -- | Description of the pipeline.
@@ -630,12 +682,19 @@
 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
@@ -643,6 +702,7 @@
         , "name"        .= _pdName
         , "fields"      .= _pdFields
         , "description" .= _pdDescription
+        , "tags"        .= _pdTags
         ]
 
 data InstanceIdentity = InstanceIdentity
