diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.3.0`
+`1.3.1`
 
 
 ## Description
diff --git a/amazonka-storagegateway.cabal b/amazonka-storagegateway.cabal
--- a/amazonka-storagegateway.cabal
+++ b/amazonka-storagegateway.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-storagegateway
-version:               1.3.0
+version:               1.3.1
 synopsis:              Amazon Storage Gateway SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -69,6 +69,7 @@
           Network.AWS.StorageGateway
         , Network.AWS.StorageGateway.ActivateGateway
         , Network.AWS.StorageGateway.AddCache
+        , Network.AWS.StorageGateway.AddTagsToResource
         , Network.AWS.StorageGateway.AddUploadBuffer
         , Network.AWS.StorageGateway.AddWorkingStorage
         , Network.AWS.StorageGateway.CancelArchival
@@ -102,9 +103,11 @@
         , Network.AWS.StorageGateway.DisableGateway
         , Network.AWS.StorageGateway.ListGateways
         , Network.AWS.StorageGateway.ListLocalDisks
+        , Network.AWS.StorageGateway.ListTagsForResource
         , Network.AWS.StorageGateway.ListVolumeInitiators
         , Network.AWS.StorageGateway.ListVolumeRecoveryPoints
         , Network.AWS.StorageGateway.ListVolumes
+        , Network.AWS.StorageGateway.RemoveTagsFromResource
         , Network.AWS.StorageGateway.ResetCache
         , Network.AWS.StorageGateway.RetrieveTapeArchive
         , Network.AWS.StorageGateway.RetrieveTapeRecoveryPoint
@@ -125,7 +128,7 @@
         , Network.AWS.StorageGateway.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.0.*
+          amazonka-core == 1.3.1.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-storagegateway-test
@@ -145,9 +148,9 @@
         , Test.AWS.StorageGateway.Internal
 
     build-depends:
-          amazonka-core == 1.3.0.*
-        , amazonka-test == 1.3.0.*
-        , amazonka-storagegateway == 1.3.0.*
+          amazonka-core == 1.3.1.*
+        , amazonka-test == 1.3.1.*
+        , amazonka-storagegateway == 1.3.1.*
         , base
         , bytestring
         , lens
diff --git a/fixture/AddTagsToResource.yaml b/fixture/AddTagsToResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AddTagsToResource.yaml
diff --git a/fixture/AddTagsToResourceResponse.proto b/fixture/AddTagsToResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AddTagsToResourceResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
diff --git a/fixture/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/RemoveTagsFromResource.yaml b/fixture/RemoveTagsFromResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveTagsFromResource.yaml
diff --git a/fixture/RemoveTagsFromResourceResponse.proto b/fixture/RemoveTagsFromResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveTagsFromResourceResponse.proto
diff --git a/gen/Network/AWS/StorageGateway.hs b/gen/Network/AWS/StorageGateway.hs
--- a/gen/Network/AWS/StorageGateway.hs
+++ b/gen/Network/AWS/StorageGateway.hs
@@ -84,6 +84,9 @@
     -- ** AddUploadBuffer
     , module Network.AWS.StorageGateway.AddUploadBuffer
 
+    -- ** ListTagsForResource
+    , module Network.AWS.StorageGateway.ListTagsForResource
+
     -- ** UpdateGatewayInformation
     , module Network.AWS.StorageGateway.UpdateGatewayInformation
 
@@ -108,6 +111,9 @@
     -- ** UpdateGatewaySoftwareNow
     , module Network.AWS.StorageGateway.UpdateGatewaySoftwareNow
 
+    -- ** RemoveTagsFromResource
+    , module Network.AWS.StorageGateway.RemoveTagsFromResource
+
     -- ** DeleteChapCredentials
     , module Network.AWS.StorageGateway.DeleteChapCredentials
 
@@ -129,6 +135,9 @@
     -- ** RetrieveTapeRecoveryPoint
     , module Network.AWS.StorageGateway.RetrieveTapeRecoveryPoint
 
+    -- ** AddTagsToResource
+    , module Network.AWS.StorageGateway.AddTagsToResource
+
     -- ** DeleteGateway
     , module Network.AWS.StorageGateway.DeleteGateway
 
@@ -256,6 +265,7 @@
     , gatewayInfo
     , giGatewayARN
     , giGatewayOperationalState
+    , giGatewayName
     , giGatewayType
 
     -- ** NetworkInterface
@@ -279,6 +289,12 @@
     , sscsivVolumeDiskId
     , sscsivVolumeType
 
+    -- ** Tag
+    , Tag
+    , tag
+    , tagKey
+    , tagValue
+
     -- ** Tape
     , Tape
     , tape
@@ -342,6 +358,7 @@
 
 import           Network.AWS.StorageGateway.ActivateGateway
 import           Network.AWS.StorageGateway.AddCache
+import           Network.AWS.StorageGateway.AddTagsToResource
 import           Network.AWS.StorageGateway.AddUploadBuffer
 import           Network.AWS.StorageGateway.AddWorkingStorage
 import           Network.AWS.StorageGateway.CancelArchival
@@ -375,9 +392,11 @@
 import           Network.AWS.StorageGateway.DisableGateway
 import           Network.AWS.StorageGateway.ListGateways
 import           Network.AWS.StorageGateway.ListLocalDisks
+import           Network.AWS.StorageGateway.ListTagsForResource
 import           Network.AWS.StorageGateway.ListVolumeInitiators
 import           Network.AWS.StorageGateway.ListVolumeRecoveryPoints
 import           Network.AWS.StorageGateway.ListVolumes
+import           Network.AWS.StorageGateway.RemoveTagsFromResource
 import           Network.AWS.StorageGateway.ResetCache
 import           Network.AWS.StorageGateway.RetrieveTapeArchive
 import           Network.AWS.StorageGateway.RetrieveTapeRecoveryPoint
diff --git a/gen/Network/AWS/StorageGateway/AddTagsToResource.hs b/gen/Network/AWS/StorageGateway/AddTagsToResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/StorageGateway/AddTagsToResource.hs
@@ -0,0 +1,159 @@
+{-# 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.StorageGateway.AddTagsToResource
+-- 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)
+--
+-- This operation adds one or more tags to the specified resource. You use
+-- tags to add metadata to resources, which you can use to categorize these
+-- resources. For example, you can categorize resources by purpose, owner,
+-- environment, or team. Each tag consists of a key and a value, which you
+-- define. You can add tags to the following AWS Storage Gateway resources:
+--
+-- -   Storage gateways of all types
+--
+-- -   Storage Volumes
+--
+-- -   Virtual Tapes
+--
+-- You can create a maximum of 10 tags for each resource. Virtual tapes and
+-- storage volumes that are recovered to a new gateway maintain their tags.
+--
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_AddTagsToResource.html AWS API Reference> for AddTagsToResource.
+module Network.AWS.StorageGateway.AddTagsToResource
+    (
+    -- * Creating a Request
+      addTagsToResource
+    , AddTagsToResource
+    -- * Request Lenses
+    , attrResourceARN
+    , attrTags
+
+    -- * Destructuring the Response
+    , addTagsToResourceResponse
+    , AddTagsToResourceResponse
+    -- * Response Lenses
+    , attrrsResourceARN
+    , attrrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
+
+-- | AddTagsToResourceInput
+--
+-- /See:/ 'addTagsToResource' smart constructor.
+data AddTagsToResource = AddTagsToResource'
+    { _attrResourceARN :: !Text
+    , _attrTags        :: ![Tag]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddTagsToResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'attrResourceARN'
+--
+-- * 'attrTags'
+addTagsToResource
+    :: Text -- ^ 'attrResourceARN'
+    -> AddTagsToResource
+addTagsToResource pResourceARN_ =
+    AddTagsToResource'
+    { _attrResourceARN = pResourceARN_
+    , _attrTags = mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource you want to add tags to.
+attrResourceARN :: Lens' AddTagsToResource Text
+attrResourceARN = lens _attrResourceARN (\ s a -> s{_attrResourceARN = a});
+
+-- | The key-value pair that represents the tag you want to add to the
+-- resource. The value can be an empty string.
+--
+-- Valid characters for key and value are letters, spaces, and numbers
+-- representable in UTF-8 format, and the following special characters: + -
+-- = . _ : \/ \'.
+attrTags :: Lens' AddTagsToResource [Tag]
+attrTags = lens _attrTags (\ s a -> s{_attrTags = a}) . _Coerce;
+
+instance AWSRequest AddTagsToResource where
+        type Rs AddTagsToResource = AddTagsToResourceResponse
+        request = postJSON storageGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 AddTagsToResourceResponse' <$>
+                   (x .?> "ResourceARN") <*> (pure (fromEnum s)))
+
+instance ToHeaders AddTagsToResource where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.AddTagsToResource" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON AddTagsToResource where
+        toJSON AddTagsToResource'{..}
+          = object
+              (catMaybes
+                 [Just ("ResourceARN" .= _attrResourceARN),
+                  Just ("Tags" .= _attrTags)])
+
+instance ToPath AddTagsToResource where
+        toPath = const "/"
+
+instance ToQuery AddTagsToResource where
+        toQuery = const mempty
+
+-- | AddTagsToResourceOutput
+--
+-- /See:/ 'addTagsToResourceResponse' smart constructor.
+data AddTagsToResourceResponse = AddTagsToResourceResponse'
+    { _attrrsResourceARN    :: !(Maybe Text)
+    , _attrrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddTagsToResourceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'attrrsResourceARN'
+--
+-- * 'attrrsResponseStatus'
+addTagsToResourceResponse
+    :: Int -- ^ 'attrrsResponseStatus'
+    -> AddTagsToResourceResponse
+addTagsToResourceResponse pResponseStatus_ =
+    AddTagsToResourceResponse'
+    { _attrrsResourceARN = Nothing
+    , _attrrsResponseStatus = pResponseStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource you want to add tags to.
+attrrsResourceARN :: Lens' AddTagsToResourceResponse (Maybe Text)
+attrrsResourceARN = lens _attrrsResourceARN (\ s a -> s{_attrrsResourceARN = a});
+
+-- | The response status code.
+attrrsResponseStatus :: Lens' AddTagsToResourceResponse Int
+attrrsResponseStatus = lens _attrrsResponseStatus (\ s a -> s{_attrrsResponseStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/CreateTapes.hs b/gen/Network/AWS/StorageGateway/CreateTapes.hs
--- a/gen/Network/AWS/StorageGateway/CreateTapes.hs
+++ b/gen/Network/AWS/StorageGateway/CreateTapes.hs
@@ -184,7 +184,7 @@
     , _ctrsResponseStatus = pResponseStatus_
     }
 
--- | A list of unique Amazon Resource Named (ARN) the represents the virtual
+-- | A list of unique Amazon Resource Named (ARN) that represents the virtual
 -- tapes that were created.
 ctrsTapeARNs :: Lens' CreateTapesResponse [Text]
 ctrsTapeARNs = lens _ctrsTapeARNs (\ s a -> s{_ctrsTapeARNs = a}) . _Default . _Coerce;
diff --git a/gen/Network/AWS/StorageGateway/DeleteVolume.hs b/gen/Network/AWS/StorageGateway/DeleteVolume.hs
--- a/gen/Network/AWS/StorageGateway/DeleteVolume.hs
+++ b/gen/Network/AWS/StorageGateway/DeleteVolume.hs
@@ -18,10 +18,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- This operation delete the specified gateway volume that you previously
--- created using the CreateStorediSCSIVolume API. For gateway-stored
--- volumes, the local disk that was configured as the storage volume is not
--- deleted. You can reuse the local disk to create another storage volume.
+-- This operation deletes the specified gateway volume that you previously
+-- created using the CreateCachediSCSIVolume or CreateStorediSCSIVolume
+-- API. For gateway-stored volumes, the local disk that was configured as
+-- the storage volume is not deleted. You can reuse the local disk to
+-- create another storage volume.
 --
 -- Before you delete a gateway volume, make sure there are no iSCSI
 -- connections to the volume you are deleting. You should also make sure
diff --git a/gen/Network/AWS/StorageGateway/DescribeGatewayInformation.hs b/gen/Network/AWS/StorageGateway/DescribeGatewayInformation.hs
--- a/gen/Network/AWS/StorageGateway/DescribeGatewayInformation.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeGatewayInformation.hs
@@ -41,6 +41,7 @@
     , dgirsGatewayNetworkInterfaces
     , dgirsNextUpdateAvailabilityDate
     , dgirsLastSoftwareUpdate
+    , dgirsGatewayName
     , dgirsGatewayId
     , dgirsGatewayType
     , dgirsGatewayTimezone
@@ -89,6 +90,7 @@
                      (x .?> "GatewayNetworkInterfaces" .!@ mempty)
                      <*> (x .?> "NextUpdateAvailabilityDate")
                      <*> (x .?> "LastSoftwareUpdate")
+                     <*> (x .?> "GatewayName")
                      <*> (x .?> "GatewayId")
                      <*> (x .?> "GatewayType")
                      <*> (x .?> "GatewayTimezone")
@@ -124,6 +126,7 @@
     , _dgirsGatewayNetworkInterfaces   :: !(Maybe [NetworkInterface])
     , _dgirsNextUpdateAvailabilityDate :: !(Maybe Text)
     , _dgirsLastSoftwareUpdate         :: !(Maybe Text)
+    , _dgirsGatewayName                :: !(Maybe Text)
     , _dgirsGatewayId                  :: !(Maybe Text)
     , _dgirsGatewayType                :: !(Maybe Text)
     , _dgirsGatewayTimezone            :: !(Maybe Text)
@@ -144,6 +147,8 @@
 --
 -- * 'dgirsLastSoftwareUpdate'
 --
+-- * 'dgirsGatewayName'
+--
 -- * 'dgirsGatewayId'
 --
 -- * 'dgirsGatewayType'
@@ -161,6 +166,7 @@
     , _dgirsGatewayNetworkInterfaces = Nothing
     , _dgirsNextUpdateAvailabilityDate = Nothing
     , _dgirsLastSoftwareUpdate = Nothing
+    , _dgirsGatewayName = Nothing
     , _dgirsGatewayId = Nothing
     , _dgirsGatewayType = Nothing
     , _dgirsGatewayTimezone = Nothing
@@ -191,6 +197,10 @@
 -- value in the response.
 dgirsLastSoftwareUpdate :: Lens' DescribeGatewayInformationResponse (Maybe Text)
 dgirsLastSoftwareUpdate = lens _dgirsLastSoftwareUpdate (\ s a -> s{_dgirsLastSoftwareUpdate = a});
+
+-- | The gateway name.
+dgirsGatewayName :: Lens' DescribeGatewayInformationResponse (Maybe Text)
+dgirsGatewayName = lens _dgirsGatewayName (\ s a -> s{_dgirsGatewayName = a});
 
 -- | The gateway ID.
 dgirsGatewayId :: Lens' DescribeGatewayInformationResponse (Maybe Text)
diff --git a/gen/Network/AWS/StorageGateway/ListTagsForResource.hs b/gen/Network/AWS/StorageGateway/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/StorageGateway/ListTagsForResource.hs
@@ -0,0 +1,177 @@
+{-# 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.StorageGateway.ListTagsForResource
+-- 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)
+--
+-- This operation lists the tags that have been added to the specified
+-- resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ListTagsForResource.html AWS API Reference> for ListTagsForResource.
+module Network.AWS.StorageGateway.ListTagsForResource
+    (
+    -- * Creating a Request
+      listTagsForResource
+    , ListTagsForResource
+    -- * Request Lenses
+    , ltfrResourceARN
+    , ltfrMarker
+    , ltfrLimit
+
+    -- * Destructuring the Response
+    , listTagsForResourceResponse
+    , ListTagsForResourceResponse
+    -- * Response Lenses
+    , ltfrrsResourceARN
+    , ltfrrsMarker
+    , ltfrrsTags
+    , ltfrrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
+
+-- | ListTagsForResourceInput
+--
+-- /See:/ 'listTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+    { _ltfrResourceARN :: !(Maybe Text)
+    , _ltfrMarker      :: !(Maybe Text)
+    , _ltfrLimit       :: !(Maybe Nat)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListTagsForResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltfrResourceARN'
+--
+-- * 'ltfrMarker'
+--
+-- * 'ltfrLimit'
+listTagsForResource
+    :: ListTagsForResource
+listTagsForResource =
+    ListTagsForResource'
+    { _ltfrResourceARN = Nothing
+    , _ltfrMarker = Nothing
+    , _ltfrLimit = Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource for which you want to
+-- list tags.
+ltfrResourceARN :: Lens' ListTagsForResource (Maybe Text)
+ltfrResourceARN = lens _ltfrResourceARN (\ s a -> s{_ltfrResourceARN = a});
+
+-- | An opaque string that indicates the position at which to begin returning
+-- the list of tags.
+ltfrMarker :: Lens' ListTagsForResource (Maybe Text)
+ltfrMarker = lens _ltfrMarker (\ s a -> s{_ltfrMarker = a});
+
+-- | Specifies that the list of tags returned be limited to the specified
+-- number of items.
+ltfrLimit :: Lens' ListTagsForResource (Maybe Natural)
+ltfrLimit = lens _ltfrLimit (\ s a -> s{_ltfrLimit = a}) . mapping _Nat;
+
+instance AWSRequest ListTagsForResource where
+        type Rs ListTagsForResource =
+             ListTagsForResourceResponse
+        request = postJSON storageGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListTagsForResourceResponse' <$>
+                   (x .?> "ResourceARN") <*> (x .?> "Marker") <*>
+                     (x .?> "Tags" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListTagsForResource where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.ListTagsForResource" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListTagsForResource where
+        toJSON ListTagsForResource'{..}
+          = object
+              (catMaybes
+                 [("ResourceARN" .=) <$> _ltfrResourceARN,
+                  ("Marker" .=) <$> _ltfrMarker,
+                  ("Limit" .=) <$> _ltfrLimit])
+
+instance ToPath ListTagsForResource where
+        toPath = const "/"
+
+instance ToQuery ListTagsForResource where
+        toQuery = const mempty
+
+-- | ListTagsForResourceOutput
+--
+-- /See:/ 'listTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+    { _ltfrrsResourceARN    :: !(Maybe Text)
+    , _ltfrrsMarker         :: !(Maybe Text)
+    , _ltfrrsTags           :: !(Maybe [Tag])
+    , _ltfrrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListTagsForResourceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltfrrsResourceARN'
+--
+-- * 'ltfrrsMarker'
+--
+-- * 'ltfrrsTags'
+--
+-- * 'ltfrrsResponseStatus'
+listTagsForResourceResponse
+    :: Int -- ^ 'ltfrrsResponseStatus'
+    -> ListTagsForResourceResponse
+listTagsForResourceResponse pResponseStatus_ =
+    ListTagsForResourceResponse'
+    { _ltfrrsResourceARN = Nothing
+    , _ltfrrsMarker = Nothing
+    , _ltfrrsTags = Nothing
+    , _ltfrrsResponseStatus = pResponseStatus_
+    }
+
+-- | he Amazon Resource Name (ARN) of the resource for which you want to list
+-- tags.
+ltfrrsResourceARN :: Lens' ListTagsForResourceResponse (Maybe Text)
+ltfrrsResourceARN = lens _ltfrrsResourceARN (\ s a -> s{_ltfrrsResourceARN = a});
+
+-- | An opaque string that indicates the position at which to stop returning
+-- the list of tags.
+ltfrrsMarker :: Lens' ListTagsForResourceResponse (Maybe Text)
+ltfrrsMarker = lens _ltfrrsMarker (\ s a -> s{_ltfrrsMarker = a});
+
+-- | An array that contains the tags for the specified resource.
+ltfrrsTags :: Lens' ListTagsForResourceResponse [Tag]
+ltfrrsTags = lens _ltfrrsTags (\ s a -> s{_ltfrrsTags = a}) . _Default . _Coerce;
+
+-- | The response status code.
+ltfrrsResponseStatus :: Lens' ListTagsForResourceResponse Int
+ltfrrsResponseStatus = lens _ltfrrsResponseStatus (\ s a -> s{_ltfrrsResponseStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/RemoveTagsFromResource.hs b/gen/Network/AWS/StorageGateway/RemoveTagsFromResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/StorageGateway/RemoveTagsFromResource.hs
@@ -0,0 +1,144 @@
+{-# 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.StorageGateway.RemoveTagsFromResource
+-- 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)
+--
+-- This operation removes one or more tags from the specified resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_RemoveTagsFromResource.html AWS API Reference> for RemoveTagsFromResource.
+module Network.AWS.StorageGateway.RemoveTagsFromResource
+    (
+    -- * Creating a Request
+      removeTagsFromResource
+    , RemoveTagsFromResource
+    -- * Request Lenses
+    , rtfrTagKeys
+    , rtfrResourceARN
+
+    -- * Destructuring the Response
+    , removeTagsFromResourceResponse
+    , RemoveTagsFromResourceResponse
+    -- * Response Lenses
+    , rtfrrsResourceARN
+    , rtfrrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
+
+-- | RemoveTagsFromResourceInput
+--
+-- /See:/ 'removeTagsFromResource' smart constructor.
+data RemoveTagsFromResource = RemoveTagsFromResource'
+    { _rtfrTagKeys     :: !(Maybe [Text])
+    , _rtfrResourceARN :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RemoveTagsFromResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtfrTagKeys'
+--
+-- * 'rtfrResourceARN'
+removeTagsFromResource
+    :: RemoveTagsFromResource
+removeTagsFromResource =
+    RemoveTagsFromResource'
+    { _rtfrTagKeys = Nothing
+    , _rtfrResourceARN = Nothing
+    }
+
+-- | The keys of the tags you want to remove from the specified resource. A
+-- tag is composed of a key\/value pair.
+rtfrTagKeys :: Lens' RemoveTagsFromResource [Text]
+rtfrTagKeys = lens _rtfrTagKeys (\ s a -> s{_rtfrTagKeys = a}) . _Default . _Coerce;
+
+-- | The Amazon Resource Name (ARN) of the resource you want to remove the
+-- tags from.
+rtfrResourceARN :: Lens' RemoveTagsFromResource (Maybe Text)
+rtfrResourceARN = lens _rtfrResourceARN (\ s a -> s{_rtfrResourceARN = a});
+
+instance AWSRequest RemoveTagsFromResource where
+        type Rs RemoveTagsFromResource =
+             RemoveTagsFromResourceResponse
+        request = postJSON storageGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RemoveTagsFromResourceResponse' <$>
+                   (x .?> "ResourceARN") <*> (pure (fromEnum s)))
+
+instance ToHeaders RemoveTagsFromResource where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.RemoveTagsFromResource" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON RemoveTagsFromResource where
+        toJSON RemoveTagsFromResource'{..}
+          = object
+              (catMaybes
+                 [("TagKeys" .=) <$> _rtfrTagKeys,
+                  ("ResourceARN" .=) <$> _rtfrResourceARN])
+
+instance ToPath RemoveTagsFromResource where
+        toPath = const "/"
+
+instance ToQuery RemoveTagsFromResource where
+        toQuery = const mempty
+
+-- | RemoveTagsFromResourceOutput
+--
+-- /See:/ 'removeTagsFromResourceResponse' smart constructor.
+data RemoveTagsFromResourceResponse = RemoveTagsFromResourceResponse'
+    { _rtfrrsResourceARN    :: !(Maybe Text)
+    , _rtfrrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RemoveTagsFromResourceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtfrrsResourceARN'
+--
+-- * 'rtfrrsResponseStatus'
+removeTagsFromResourceResponse
+    :: Int -- ^ 'rtfrrsResponseStatus'
+    -> RemoveTagsFromResourceResponse
+removeTagsFromResourceResponse pResponseStatus_ =
+    RemoveTagsFromResourceResponse'
+    { _rtfrrsResourceARN = Nothing
+    , _rtfrrsResponseStatus = pResponseStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource that the tags were
+-- removed from.
+rtfrrsResourceARN :: Lens' RemoveTagsFromResourceResponse (Maybe Text)
+rtfrrsResourceARN = lens _rtfrrsResourceARN (\ s a -> s{_rtfrrsResourceARN = a});
+
+-- | The response status code.
+rtfrrsResponseStatus :: Lens' RemoveTagsFromResourceResponse Int
+rtfrrsResponseStatus = lens _rtfrrsResponseStatus (\ s a -> s{_rtfrrsResponseStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/Types.hs b/gen/Network/AWS/StorageGateway/Types.hs
--- a/gen/Network/AWS/StorageGateway/Types.hs
+++ b/gen/Network/AWS/StorageGateway/Types.hs
@@ -63,6 +63,7 @@
     , gatewayInfo
     , giGatewayARN
     , giGatewayOperationalState
+    , giGatewayName
     , giGatewayType
 
     -- * NetworkInterface
@@ -85,6 +86,12 @@
     , sscsivVolumeId
     , sscsivVolumeDiskId
     , sscsivVolumeType
+
+    -- * Tag
+    , Tag
+    , tag
+    , tagKey
+    , tagValue
 
     -- * Tape
     , Tape
diff --git a/gen/Network/AWS/StorageGateway/Types/Product.hs b/gen/Network/AWS/StorageGateway/Types/Product.hs
--- a/gen/Network/AWS/StorageGateway/Types/Product.hs
+++ b/gen/Network/AWS/StorageGateway/Types/Product.hs
@@ -317,6 +317,7 @@
 data GatewayInfo = GatewayInfo'
     { _giGatewayARN              :: !(Maybe Text)
     , _giGatewayOperationalState :: !(Maybe Text)
+    , _giGatewayName             :: !(Maybe Text)
     , _giGatewayType             :: !(Maybe Text)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -328,6 +329,8 @@
 --
 -- * 'giGatewayOperationalState'
 --
+-- * 'giGatewayName'
+--
 -- * 'giGatewayType'
 gatewayInfo
     :: GatewayInfo
@@ -335,6 +338,7 @@
     GatewayInfo'
     { _giGatewayARN = Nothing
     , _giGatewayOperationalState = Nothing
+    , _giGatewayName = Nothing
     , _giGatewayType = Nothing
     }
 
@@ -347,6 +351,10 @@
 giGatewayOperationalState = lens _giGatewayOperationalState (\ s a -> s{_giGatewayOperationalState = a});
 
 -- | Undocumented member.
+giGatewayName :: Lens' GatewayInfo (Maybe Text)
+giGatewayName = lens _giGatewayName (\ s a -> s{_giGatewayName = a});
+
+-- | Undocumented member.
 giGatewayType :: Lens' GatewayInfo (Maybe Text)
 giGatewayType = lens _giGatewayType (\ s a -> s{_giGatewayType = a});
 
@@ -357,6 +365,7 @@
                  GatewayInfo' <$>
                    (x .:? "GatewayARN") <*>
                      (x .:? "GatewayOperationalState")
+                     <*> (x .:? "GatewayName")
                      <*> (x .:? "GatewayType"))
 
 -- | Describes a gateway\'s network interface.
@@ -517,6 +526,49 @@
                      <*> (x .:? "VolumeId")
                      <*> (x .:? "VolumeDiskId")
                      <*> (x .:? "VolumeType"))
+
+-- | /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_
+    }
+
+-- | Undocumented member.
+tagKey :: Lens' Tag Text
+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
+
+-- | Undocumented member.
+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
+              (catMaybes
+                 [Just ("Key" .= _tagKey),
+                  Just ("Value" .= _tagValue)])
 
 -- | Describes a virtual tape object.
 --
diff --git a/gen/Network/AWS/StorageGateway/UpdateGatewayInformation.hs b/gen/Network/AWS/StorageGateway/UpdateGatewayInformation.hs
--- a/gen/Network/AWS/StorageGateway/UpdateGatewayInformation.hs
+++ b/gen/Network/AWS/StorageGateway/UpdateGatewayInformation.hs
@@ -38,6 +38,7 @@
     , UpdateGatewayInformationResponse
     -- * Response Lenses
     , ugirsGatewayARN
+    , ugirsGatewayName
     , ugirsResponseStatus
     ) where
 
@@ -93,7 +94,8 @@
           = receiveJSON
               (\ s h x ->
                  UpdateGatewayInformationResponse' <$>
-                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
+                   (x .?> "GatewayARN") <*> (x .?> "GatewayName") <*>
+                     (pure (fromEnum s)))
 
 instance ToHeaders UpdateGatewayInformation where
         toHeaders
@@ -124,6 +126,7 @@
 -- /See:/ 'updateGatewayInformationResponse' smart constructor.
 data UpdateGatewayInformationResponse = UpdateGatewayInformationResponse'
     { _ugirsGatewayARN     :: !(Maybe Text)
+    , _ugirsGatewayName    :: !(Maybe Text)
     , _ugirsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -133,6 +136,8 @@
 --
 -- * 'ugirsGatewayARN'
 --
+-- * 'ugirsGatewayName'
+--
 -- * 'ugirsResponseStatus'
 updateGatewayInformationResponse
     :: Int -- ^ 'ugirsResponseStatus'
@@ -140,12 +145,17 @@
 updateGatewayInformationResponse pResponseStatus_ =
     UpdateGatewayInformationResponse'
     { _ugirsGatewayARN = Nothing
+    , _ugirsGatewayName = Nothing
     , _ugirsResponseStatus = pResponseStatus_
     }
 
 -- | Undocumented member.
 ugirsGatewayARN :: Lens' UpdateGatewayInformationResponse (Maybe Text)
 ugirsGatewayARN = lens _ugirsGatewayARN (\ s a -> s{_ugirsGatewayARN = a});
+
+-- | Undocumented member.
+ugirsGatewayName :: Lens' UpdateGatewayInformationResponse (Maybe Text)
+ugirsGatewayName = lens _ugirsGatewayName (\ s a -> s{_ugirsGatewayName = a});
 
 -- | The response status code.
 ugirsResponseStatus :: Lens' UpdateGatewayInformationResponse Int
diff --git a/gen/Network/AWS/StorageGateway/UpdateMaintenanceStartTime.hs b/gen/Network/AWS/StorageGateway/UpdateMaintenanceStartTime.hs
--- a/gen/Network/AWS/StorageGateway/UpdateMaintenanceStartTime.hs
+++ b/gen/Network/AWS/StorageGateway/UpdateMaintenanceStartTime.hs
@@ -91,7 +91,7 @@
 umstGatewayARN :: Lens' UpdateMaintenanceStartTime Text
 umstGatewayARN = lens _umstGatewayARN (\ s a -> s{_umstGatewayARN = a});
 
--- | The hour component of the maintenance start time represented as hh,
+-- | The hour component of the maintenance start time represented as /hh/,
 -- where /hh/ is the hour (00 to 23). The hour of the day is in the time
 -- zone of the gateway.
 umstHourOfDay :: Lens' UpdateMaintenanceStartTime Natural
diff --git a/test/Test/AWS/Gen/StorageGateway.hs b/test/Test/AWS/Gen/StorageGateway.hs
--- a/test/Test/AWS/Gen/StorageGateway.hs
+++ b/test/Test/AWS/Gen/StorageGateway.hs
@@ -52,6 +52,9 @@
 --         , testAddUploadBuffer $
 --             addUploadBuffer
 --
+--         , testListTagsForResource $
+--             listTagsForResource
+--
 --         , testUpdateGatewayInformation $
 --             updateGatewayInformation
 --
@@ -76,6 +79,9 @@
 --         , testUpdateGatewaySoftwareNow $
 --             updateGatewaySoftwareNow
 --
+--         , testRemoveTagsFromResource $
+--             removeTagsFromResource
+--
 --         , testDeleteChapCredentials $
 --             deleteChapCredentials
 --
@@ -97,6 +103,9 @@
 --         , testRetrieveTapeRecoveryPoint $
 --             retrieveTapeRecoveryPoint
 --
+--         , testAddTagsToResource $
+--             addTagsToResource
+--
 --         , testDeleteGateway $
 --             deleteGateway
 --
@@ -205,6 +214,9 @@
 --         , testAddUploadBufferResponse $
 --             addUploadBufferResponse
 --
+--         , testListTagsForResourceResponse $
+--             listTagsForResourceResponse
+--
 --         , testUpdateGatewayInformationResponse $
 --             updateGatewayInformationResponse
 --
@@ -229,6 +241,9 @@
 --         , testUpdateGatewaySoftwareNowResponse $
 --             updateGatewaySoftwareNowResponse
 --
+--         , testRemoveTagsFromResourceResponse $
+--             removeTagsFromResourceResponse
+--
 --         , testDeleteChapCredentialsResponse $
 --             deleteChapCredentialsResponse
 --
@@ -250,6 +265,9 @@
 --         , testRetrieveTapeRecoveryPointResponse $
 --             retrieveTapeRecoveryPointResponse
 --
+--         , testAddTagsToResourceResponse $
+--             addTagsToResourceResponse
+--
 --         , testDeleteGatewayResponse $
 --             deleteGatewayResponse
 --
@@ -376,6 +394,11 @@
     "AddUploadBuffer"
     "fixture/AddUploadBuffer.yaml"
 
+testListTagsForResource :: ListTagsForResource -> TestTree
+testListTagsForResource = req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
 testUpdateGatewayInformation :: UpdateGatewayInformation -> TestTree
 testUpdateGatewayInformation = req
     "UpdateGatewayInformation"
@@ -416,6 +439,11 @@
     "UpdateGatewaySoftwareNow"
     "fixture/UpdateGatewaySoftwareNow.yaml"
 
+testRemoveTagsFromResource :: RemoveTagsFromResource -> TestTree
+testRemoveTagsFromResource = req
+    "RemoveTagsFromResource"
+    "fixture/RemoveTagsFromResource.yaml"
+
 testDeleteChapCredentials :: DeleteChapCredentials -> TestTree
 testDeleteChapCredentials = req
     "DeleteChapCredentials"
@@ -451,6 +479,11 @@
     "RetrieveTapeRecoveryPoint"
     "fixture/RetrieveTapeRecoveryPoint.yaml"
 
+testAddTagsToResource :: AddTagsToResource -> TestTree
+testAddTagsToResource = req
+    "AddTagsToResource"
+    "fixture/AddTagsToResource.yaml"
+
 testDeleteGateway :: DeleteGateway -> TestTree
 testDeleteGateway = req
     "DeleteGateway"
@@ -644,6 +677,13 @@
     storageGateway
     (Proxy :: Proxy AddUploadBuffer)
 
+testListTagsForResourceResponse :: ListTagsForResourceResponse -> TestTree
+testListTagsForResourceResponse = res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    storageGateway
+    (Proxy :: Proxy ListTagsForResource)
+
 testUpdateGatewayInformationResponse :: UpdateGatewayInformationResponse -> TestTree
 testUpdateGatewayInformationResponse = res
     "UpdateGatewayInformationResponse"
@@ -700,6 +740,13 @@
     storageGateway
     (Proxy :: Proxy UpdateGatewaySoftwareNow)
 
+testRemoveTagsFromResourceResponse :: RemoveTagsFromResourceResponse -> TestTree
+testRemoveTagsFromResourceResponse = res
+    "RemoveTagsFromResourceResponse"
+    "fixture/RemoveTagsFromResourceResponse.proto"
+    storageGateway
+    (Proxy :: Proxy RemoveTagsFromResource)
+
 testDeleteChapCredentialsResponse :: DeleteChapCredentialsResponse -> TestTree
 testDeleteChapCredentialsResponse = res
     "DeleteChapCredentialsResponse"
@@ -748,6 +795,13 @@
     "fixture/RetrieveTapeRecoveryPointResponse.proto"
     storageGateway
     (Proxy :: Proxy RetrieveTapeRecoveryPoint)
+
+testAddTagsToResourceResponse :: AddTagsToResourceResponse -> TestTree
+testAddTagsToResourceResponse = res
+    "AddTagsToResourceResponse"
+    "fixture/AddTagsToResourceResponse.proto"
+    storageGateway
+    (Proxy :: Proxy AddTagsToResource)
 
 testDeleteGatewayResponse :: DeleteGatewayResponse -> TestTree
 testDeleteGatewayResponse = res
