diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.5.0`
+`1.6.0`
 
 
 ## Description
diff --git a/amazonka-appstream.cabal b/amazonka-appstream.cabal
--- a/amazonka-appstream.cabal
+++ b/amazonka-appstream.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-appstream
-version:               1.5.0
+version:               1.6.0
 synopsis:              Amazon AppStream SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -7,7 +7,7 @@
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-copyright:             Copyright (c) 2013-2017 Brendan Hay
+copyright:             Copyright (c) 2013-2018 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -46,6 +46,7 @@
     exposed-modules:
           Network.AWS.AppStream
         , Network.AWS.AppStream.AssociateFleet
+        , Network.AWS.AppStream.CopyImage
         , Network.AWS.AppStream.CreateDirectoryConfig
         , Network.AWS.AppStream.CreateFleet
         , Network.AWS.AppStream.CreateImageBuilder
@@ -67,11 +68,14 @@
         , Network.AWS.AppStream.ExpireSession
         , Network.AWS.AppStream.ListAssociatedFleets
         , Network.AWS.AppStream.ListAssociatedStacks
+        , Network.AWS.AppStream.ListTagsForResource
         , Network.AWS.AppStream.StartFleet
         , Network.AWS.AppStream.StartImageBuilder
         , Network.AWS.AppStream.StopFleet
         , Network.AWS.AppStream.StopImageBuilder
+        , Network.AWS.AppStream.TagResource
         , Network.AWS.AppStream.Types
+        , Network.AWS.AppStream.UntagResource
         , Network.AWS.AppStream.UpdateDirectoryConfig
         , Network.AWS.AppStream.UpdateFleet
         , Network.AWS.AppStream.UpdateStack
@@ -82,7 +86,7 @@
         , Network.AWS.AppStream.Types.Sum
 
     build-depends:
-          amazonka-core == 1.5.0.*
+          amazonka-core == 1.6.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-appstream-test
@@ -102,8 +106,8 @@
         , Test.AWS.AppStream.Internal
 
     build-depends:
-          amazonka-core == 1.5.0.*
-        , amazonka-test == 1.5.0.*
+          amazonka-core == 1.6.0.*
+        , amazonka-test == 1.6.0.*
         , amazonka-appstream
         , base
         , bytestring
diff --git a/fixture/CopyImage.yaml b/fixture/CopyImage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CopyImage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appstream2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appstream2.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CopyImageResponse.proto b/fixture/CopyImageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CopyImageResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appstream2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appstream2.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appstream2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appstream2.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appstream2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  appstream2.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/gen/Network/AWS/AppStream.hs b/gen/Network/AWS/AppStream.hs
--- a/gen/Network/AWS/AppStream.hs
+++ b/gen/Network/AWS/AppStream.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -38,6 +38,9 @@
     -- ** OperationNotPermittedException
     , _OperationNotPermittedException
 
+    -- ** InvalidAccountStatusException
+    , _InvalidAccountStatusException
+
     -- ** ResourceNotFoundException
     , _ResourceNotFoundException
 
@@ -56,6 +59,12 @@
     -- * Waiters
     -- $waiters
 
+    -- ** FleetStopped
+    , fleetStopped
+
+    -- ** FleetStarted
+    , fleetStarted
+
     -- * Operations
     -- $operations
 
@@ -92,6 +101,9 @@
     -- ** CreateImageBuilder
     , module Network.AWS.AppStream.CreateImageBuilder
 
+    -- ** ListTagsForResource
+    , module Network.AWS.AppStream.ListTagsForResource
+
     -- ** DescribeDirectoryConfigs
     , module Network.AWS.AppStream.DescribeDirectoryConfigs
 
@@ -128,12 +140,21 @@
     -- ** CreateStack
     , module Network.AWS.AppStream.CreateStack
 
+    -- ** CopyImage
+    , module Network.AWS.AppStream.CopyImage
+
     -- ** ExpireSession
     , module Network.AWS.AppStream.ExpireSession
 
+    -- ** TagResource
+    , module Network.AWS.AppStream.TagResource
+
     -- ** CreateStreamingURL
     , module Network.AWS.AppStream.CreateStreamingURL
 
+    -- ** UntagResource
+    , module Network.AWS.AppStream.UntagResource
+
     -- ** StartFleet
     , module Network.AWS.AppStream.StartFleet
 
@@ -181,6 +202,9 @@
     -- ** SessionState
     , SessionState (..)
 
+    -- ** StackAttribute
+    , StackAttribute (..)
+
     -- ** StackErrorCode
     , StackErrorCode (..)
 
@@ -268,6 +292,7 @@
     , iBaseImageARN
     , iDisplayName
     , iDescription
+    , iAppstreamAgentVersion
     , iApplications
     , iName
 
@@ -287,6 +312,7 @@
     , ibDisplayName
     , ibEnableDefaultInternetAccess
     , ibDescription
+    , ibAppstreamAgentVersion
     , ibName
 
     -- ** ImageBuilderStateChangeReason
@@ -327,12 +353,14 @@
     -- ** Stack
     , Stack
     , stack
+    , sFeedbackURL
     , sARN
     , sCreatedTime
     , sStorageConnectors
     , sDisplayName
     , sStackErrors
     , sDescription
+    , sRedirectURL
     , sName
 
     -- ** StackError
@@ -355,6 +383,7 @@
     ) where
 
 import Network.AWS.AppStream.AssociateFleet
+import Network.AWS.AppStream.CopyImage
 import Network.AWS.AppStream.CreateDirectoryConfig
 import Network.AWS.AppStream.CreateFleet
 import Network.AWS.AppStream.CreateImageBuilder
@@ -376,11 +405,14 @@
 import Network.AWS.AppStream.ExpireSession
 import Network.AWS.AppStream.ListAssociatedFleets
 import Network.AWS.AppStream.ListAssociatedStacks
+import Network.AWS.AppStream.ListTagsForResource
 import Network.AWS.AppStream.StartFleet
 import Network.AWS.AppStream.StartImageBuilder
 import Network.AWS.AppStream.StopFleet
 import Network.AWS.AppStream.StopImageBuilder
+import Network.AWS.AppStream.TagResource
 import Network.AWS.AppStream.Types
+import Network.AWS.AppStream.UntagResource
 import Network.AWS.AppStream.UpdateDirectoryConfig
 import Network.AWS.AppStream.UpdateFleet
 import Network.AWS.AppStream.UpdateStack
diff --git a/gen/Network/AWS/AppStream/AssociateFleet.hs b/gen/Network/AWS/AppStream/AssociateFleet.hs
--- a/gen/Network/AWS/AppStream/AssociateFleet.hs
+++ b/gen/Network/AWS/AppStream/AssociateFleet.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.AssociateFleet
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -68,11 +68,11 @@
 
 -- | The name of the fleet.
 afFleetName :: Lens' AssociateFleet Text
-afFleetName = lens _afFleetName (\ s a -> s{_afFleetName = a});
+afFleetName = lens _afFleetName (\ s a -> s{_afFleetName = a})
 
 -- | The name of the stack.
 afStackName :: Lens' AssociateFleet Text
-afStackName = lens _afStackName (\ s a -> s{_afStackName = a});
+afStackName = lens _afStackName (\ s a -> s{_afStackName = a})
 
 instance AWSRequest AssociateFleet where
         type Rs AssociateFleet = AssociateFleetResponse
@@ -129,6 +129,6 @@
 
 -- | -- | The response status code.
 afrsResponseStatus :: Lens' AssociateFleetResponse Int
-afrsResponseStatus = lens _afrsResponseStatus (\ s a -> s{_afrsResponseStatus = a});
+afrsResponseStatus = lens _afrsResponseStatus (\ s a -> s{_afrsResponseStatus = a})
 
 instance NFData AssociateFleetResponse where
diff --git a/gen/Network/AWS/AppStream/CopyImage.hs b/gen/Network/AWS/AppStream/CopyImage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/CopyImage.hs
@@ -0,0 +1,172 @@
+{-# 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.AppStream.CopyImage
+-- Copyright   : (c) 2013-2018 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Copies the image within the same region or to a new region within the same AWS account. Note that any tags you added to the image will not be copied.
+--
+--
+module Network.AWS.AppStream.CopyImage
+    (
+    -- * Creating a Request
+      copyImage
+    , CopyImage
+    -- * Request Lenses
+    , ciDestinationImageDescription
+    , ciSourceImageName
+    , ciDestinationImageName
+    , ciDestinationRegion
+
+    -- * Destructuring the Response
+    , copyImageResponse
+    , CopyImageResponse
+    -- * Response Lenses
+    , cirsDestinationImageName
+    , cirsResponseStatus
+    ) where
+
+import Network.AWS.AppStream.Types
+import Network.AWS.AppStream.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+
+-- | /See:/ 'copyImage' smart constructor.
+data CopyImage = CopyImage'
+  { _ciDestinationImageDescription :: !(Maybe Text)
+  , _ciSourceImageName             :: !Text
+  , _ciDestinationImageName        :: !Text
+  , _ciDestinationRegion           :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CopyImage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ciDestinationImageDescription' - The description that the image will have when it is copied to the destination.
+--
+-- * 'ciSourceImageName' - The name of the image to copy.
+--
+-- * 'ciDestinationImageName' - The name that the image will have when it is copied to the destination.
+--
+-- * 'ciDestinationRegion' - The destination region to which the image will be copied. This parameter is required, even if you are copying an image within the same region.
+copyImage
+    :: Text -- ^ 'ciSourceImageName'
+    -> Text -- ^ 'ciDestinationImageName'
+    -> Text -- ^ 'ciDestinationRegion'
+    -> CopyImage
+copyImage pSourceImageName_ pDestinationImageName_ pDestinationRegion_ =
+  CopyImage'
+    { _ciDestinationImageDescription = Nothing
+    , _ciSourceImageName = pSourceImageName_
+    , _ciDestinationImageName = pDestinationImageName_
+    , _ciDestinationRegion = pDestinationRegion_
+    }
+
+
+-- | The description that the image will have when it is copied to the destination.
+ciDestinationImageDescription :: Lens' CopyImage (Maybe Text)
+ciDestinationImageDescription = lens _ciDestinationImageDescription (\ s a -> s{_ciDestinationImageDescription = a})
+
+-- | The name of the image to copy.
+ciSourceImageName :: Lens' CopyImage Text
+ciSourceImageName = lens _ciSourceImageName (\ s a -> s{_ciSourceImageName = a})
+
+-- | The name that the image will have when it is copied to the destination.
+ciDestinationImageName :: Lens' CopyImage Text
+ciDestinationImageName = lens _ciDestinationImageName (\ s a -> s{_ciDestinationImageName = a})
+
+-- | The destination region to which the image will be copied. This parameter is required, even if you are copying an image within the same region.
+ciDestinationRegion :: Lens' CopyImage Text
+ciDestinationRegion = lens _ciDestinationRegion (\ s a -> s{_ciDestinationRegion = a})
+
+instance AWSRequest CopyImage where
+        type Rs CopyImage = CopyImageResponse
+        request = postJSON appStream
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CopyImageResponse' <$>
+                   (x .?> "DestinationImageName") <*>
+                     (pure (fromEnum s)))
+
+instance Hashable CopyImage where
+
+instance NFData CopyImage where
+
+instance ToHeaders CopyImage where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.CopyImage" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CopyImage where
+        toJSON CopyImage'{..}
+          = object
+              (catMaybes
+                 [("DestinationImageDescription" .=) <$>
+                    _ciDestinationImageDescription,
+                  Just ("SourceImageName" .= _ciSourceImageName),
+                  Just
+                    ("DestinationImageName" .= _ciDestinationImageName),
+                  Just ("DestinationRegion" .= _ciDestinationRegion)])
+
+instance ToPath CopyImage where
+        toPath = const "/"
+
+instance ToQuery CopyImage where
+        toQuery = const mempty
+
+-- | /See:/ 'copyImageResponse' smart constructor.
+data CopyImageResponse = CopyImageResponse'
+  { _cirsDestinationImageName :: !(Maybe Text)
+  , _cirsResponseStatus       :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CopyImageResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cirsDestinationImageName' - The name of the destination image.
+--
+-- * 'cirsResponseStatus' - -- | The response status code.
+copyImageResponse
+    :: Int -- ^ 'cirsResponseStatus'
+    -> CopyImageResponse
+copyImageResponse pResponseStatus_ =
+  CopyImageResponse'
+    { _cirsDestinationImageName = Nothing
+    , _cirsResponseStatus = pResponseStatus_
+    }
+
+
+-- | The name of the destination image.
+cirsDestinationImageName :: Lens' CopyImageResponse (Maybe Text)
+cirsDestinationImageName = lens _cirsDestinationImageName (\ s a -> s{_cirsDestinationImageName = a})
+
+-- | -- | The response status code.
+cirsResponseStatus :: Lens' CopyImageResponse Int
+cirsResponseStatus = lens _cirsResponseStatus (\ s a -> s{_cirsResponseStatus = a})
+
+instance NFData CopyImageResponse where
diff --git a/gen/Network/AWS/AppStream/CreateDirectoryConfig.hs b/gen/Network/AWS/AppStream/CreateDirectoryConfig.hs
--- a/gen/Network/AWS/AppStream/CreateDirectoryConfig.hs
+++ b/gen/Network/AWS/AppStream/CreateDirectoryConfig.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.CreateDirectoryConfig
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -69,23 +69,23 @@
     -> CreateDirectoryConfig
 createDirectoryConfig pDirectoryName_ pServiceAccountCredentials_ =
   CreateDirectoryConfig'
-  { _cdcDirectoryName = pDirectoryName_
-  , _cdcOrganizationalUnitDistinguishedNames = mempty
-  , _cdcServiceAccountCredentials = pServiceAccountCredentials_
-  }
+    { _cdcDirectoryName = pDirectoryName_
+    , _cdcOrganizationalUnitDistinguishedNames = mempty
+    , _cdcServiceAccountCredentials = pServiceAccountCredentials_
+    }
 
 
 -- | The fully qualified name of the directory (for example, corp.example.com).
 cdcDirectoryName :: Lens' CreateDirectoryConfig Text
-cdcDirectoryName = lens _cdcDirectoryName (\ s a -> s{_cdcDirectoryName = a});
+cdcDirectoryName = lens _cdcDirectoryName (\ s a -> s{_cdcDirectoryName = a})
 
 -- | The distinguished names of the organizational units for computer accounts.
 cdcOrganizationalUnitDistinguishedNames :: Lens' CreateDirectoryConfig [Text]
-cdcOrganizationalUnitDistinguishedNames = lens _cdcOrganizationalUnitDistinguishedNames (\ s a -> s{_cdcOrganizationalUnitDistinguishedNames = a}) . _Coerce;
+cdcOrganizationalUnitDistinguishedNames = lens _cdcOrganizationalUnitDistinguishedNames (\ s a -> s{_cdcOrganizationalUnitDistinguishedNames = a}) . _Coerce
 
 -- | The credentials for the service account used by the streaming instance to connect to the directory.
 cdcServiceAccountCredentials :: Lens' CreateDirectoryConfig ServiceAccountCredentials
-cdcServiceAccountCredentials = lens _cdcServiceAccountCredentials (\ s a -> s{_cdcServiceAccountCredentials = a});
+cdcServiceAccountCredentials = lens _cdcServiceAccountCredentials (\ s a -> s{_cdcServiceAccountCredentials = a})
 
 instance AWSRequest CreateDirectoryConfig where
         type Rs CreateDirectoryConfig =
@@ -148,15 +148,15 @@
     -> CreateDirectoryConfigResponse
 createDirectoryConfigResponse pResponseStatus_ =
   CreateDirectoryConfigResponse'
-  {_cdcrsDirectoryConfig = Nothing, _cdcrsResponseStatus = pResponseStatus_}
+    {_cdcrsDirectoryConfig = Nothing, _cdcrsResponseStatus = pResponseStatus_}
 
 
 -- | Information about the directory configuration.
 cdcrsDirectoryConfig :: Lens' CreateDirectoryConfigResponse (Maybe DirectoryConfig)
-cdcrsDirectoryConfig = lens _cdcrsDirectoryConfig (\ s a -> s{_cdcrsDirectoryConfig = a});
+cdcrsDirectoryConfig = lens _cdcrsDirectoryConfig (\ s a -> s{_cdcrsDirectoryConfig = a})
 
 -- | -- | The response status code.
 cdcrsResponseStatus :: Lens' CreateDirectoryConfigResponse Int
-cdcrsResponseStatus = lens _cdcrsResponseStatus (\ s a -> s{_cdcrsResponseStatus = a});
+cdcrsResponseStatus = lens _cdcrsResponseStatus (\ s a -> s{_cdcrsResponseStatus = a})
 
 instance NFData CreateDirectoryConfigResponse where
diff --git a/gen/Network/AWS/AppStream/CreateFleet.hs b/gen/Network/AWS/AppStream/CreateFleet.hs
--- a/gen/Network/AWS/AppStream/CreateFleet.hs
+++ b/gen/Network/AWS/AppStream/CreateFleet.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.CreateFleet
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -76,25 +76,25 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cfDomainJoinInfo' - The information needed for streaming instances to join a domain.
+-- * 'cfDomainJoinInfo' - The information needed to join a Microsoft Active Directory domain.
 --
 -- * 'cfDisconnectTimeoutInSeconds' - The time after disconnection when a session is considered to have ended, in seconds. If a user who was disconnected reconnects within this time interval, the user is connected to their previous session. Specify a value between 60 and 57600.
 --
 -- * 'cfMaxUserDurationInSeconds' - The maximum time that a streaming session can run, in seconds. Specify a value between 600 and 57600.
 --
--- * 'cfFleetType' - Undocumented member.
+-- * 'cfFleetType' - The fleet type.     * ALWAYS_ON    * Provides users with instant-on access to their apps. You are charged for all running instances in your fleet, even if no users are streaming apps.     * ON_DEMAND    * Provide users with access to applications after they connect, which takes one to two minutes. You are charged for instance streaming when users are connected and a small hourly fee for instances that are not streaming apps.
 --
 -- * 'cfVPCConfig' - The VPC configuration for the fleet.
 --
--- * 'cfDisplayName' - The fleet name displayed to end users.
+-- * 'cfDisplayName' - The fleet name for display.
 --
 -- * 'cfEnableDefaultInternetAccess' - Enables or disables default internet access for the fleet.
 --
--- * 'cfDescription' - The description displayed to end users.
+-- * 'cfDescription' - The description for display.
 --
 -- * 'cfName' - A unique name for the fleet.
 --
--- * 'cfImageName' - The name of the image used by the fleet.
+-- * 'cfImageName' - The name of the image used to create the fleet.
 --
 -- * 'cfInstanceType' - The instance type to use when launching fleet instances. The following instance types are available:     * stream.standard.medium     * stream.standard.large     * stream.compute.large     * stream.compute.xlarge     * stream.compute.2xlarge     * stream.compute.4xlarge     * stream.compute.8xlarge     * stream.memory.large     * stream.memory.xlarge     * stream.memory.2xlarge     * stream.memory.4xlarge     * stream.memory.8xlarge     * stream.graphics-design.large     * stream.graphics-design.xlarge     * stream.graphics-design.2xlarge     * stream.graphics-design.4xlarge     * stream.graphics-desktop.2xlarge     * stream.graphics-pro.4xlarge     * stream.graphics-pro.8xlarge     * stream.graphics-pro.16xlarge
 --
@@ -107,68 +107,68 @@
     -> CreateFleet
 createFleet pName_ pImageName_ pInstanceType_ pComputeCapacity_ =
   CreateFleet'
-  { _cfDomainJoinInfo = Nothing
-  , _cfDisconnectTimeoutInSeconds = Nothing
-  , _cfMaxUserDurationInSeconds = Nothing
-  , _cfFleetType = Nothing
-  , _cfVPCConfig = Nothing
-  , _cfDisplayName = Nothing
-  , _cfEnableDefaultInternetAccess = Nothing
-  , _cfDescription = Nothing
-  , _cfName = pName_
-  , _cfImageName = pImageName_
-  , _cfInstanceType = pInstanceType_
-  , _cfComputeCapacity = pComputeCapacity_
-  }
+    { _cfDomainJoinInfo = Nothing
+    , _cfDisconnectTimeoutInSeconds = Nothing
+    , _cfMaxUserDurationInSeconds = Nothing
+    , _cfFleetType = Nothing
+    , _cfVPCConfig = Nothing
+    , _cfDisplayName = Nothing
+    , _cfEnableDefaultInternetAccess = Nothing
+    , _cfDescription = Nothing
+    , _cfName = pName_
+    , _cfImageName = pImageName_
+    , _cfInstanceType = pInstanceType_
+    , _cfComputeCapacity = pComputeCapacity_
+    }
 
 
--- | The information needed for streaming instances to join a domain.
+-- | The information needed to join a Microsoft Active Directory domain.
 cfDomainJoinInfo :: Lens' CreateFleet (Maybe DomainJoinInfo)
-cfDomainJoinInfo = lens _cfDomainJoinInfo (\ s a -> s{_cfDomainJoinInfo = a});
+cfDomainJoinInfo = lens _cfDomainJoinInfo (\ s a -> s{_cfDomainJoinInfo = a})
 
 -- | The time after disconnection when a session is considered to have ended, in seconds. If a user who was disconnected reconnects within this time interval, the user is connected to their previous session. Specify a value between 60 and 57600.
 cfDisconnectTimeoutInSeconds :: Lens' CreateFleet (Maybe Int)
-cfDisconnectTimeoutInSeconds = lens _cfDisconnectTimeoutInSeconds (\ s a -> s{_cfDisconnectTimeoutInSeconds = a});
+cfDisconnectTimeoutInSeconds = lens _cfDisconnectTimeoutInSeconds (\ s a -> s{_cfDisconnectTimeoutInSeconds = a})
 
 -- | The maximum time that a streaming session can run, in seconds. Specify a value between 600 and 57600.
 cfMaxUserDurationInSeconds :: Lens' CreateFleet (Maybe Int)
-cfMaxUserDurationInSeconds = lens _cfMaxUserDurationInSeconds (\ s a -> s{_cfMaxUserDurationInSeconds = a});
+cfMaxUserDurationInSeconds = lens _cfMaxUserDurationInSeconds (\ s a -> s{_cfMaxUserDurationInSeconds = a})
 
--- | Undocumented member.
+-- | The fleet type.     * ALWAYS_ON    * Provides users with instant-on access to their apps. You are charged for all running instances in your fleet, even if no users are streaming apps.     * ON_DEMAND    * Provide users with access to applications after they connect, which takes one to two minutes. You are charged for instance streaming when users are connected and a small hourly fee for instances that are not streaming apps.
 cfFleetType :: Lens' CreateFleet (Maybe FleetType)
-cfFleetType = lens _cfFleetType (\ s a -> s{_cfFleetType = a});
+cfFleetType = lens _cfFleetType (\ s a -> s{_cfFleetType = a})
 
 -- | The VPC configuration for the fleet.
 cfVPCConfig :: Lens' CreateFleet (Maybe VPCConfig)
-cfVPCConfig = lens _cfVPCConfig (\ s a -> s{_cfVPCConfig = a});
+cfVPCConfig = lens _cfVPCConfig (\ s a -> s{_cfVPCConfig = a})
 
--- | The fleet name displayed to end users.
+-- | The fleet name for display.
 cfDisplayName :: Lens' CreateFleet (Maybe Text)
-cfDisplayName = lens _cfDisplayName (\ s a -> s{_cfDisplayName = a});
+cfDisplayName = lens _cfDisplayName (\ s a -> s{_cfDisplayName = a})
 
 -- | Enables or disables default internet access for the fleet.
 cfEnableDefaultInternetAccess :: Lens' CreateFleet (Maybe Bool)
-cfEnableDefaultInternetAccess = lens _cfEnableDefaultInternetAccess (\ s a -> s{_cfEnableDefaultInternetAccess = a});
+cfEnableDefaultInternetAccess = lens _cfEnableDefaultInternetAccess (\ s a -> s{_cfEnableDefaultInternetAccess = a})
 
--- | The description displayed to end users.
+-- | The description for display.
 cfDescription :: Lens' CreateFleet (Maybe Text)
-cfDescription = lens _cfDescription (\ s a -> s{_cfDescription = a});
+cfDescription = lens _cfDescription (\ s a -> s{_cfDescription = a})
 
 -- | A unique name for the fleet.
 cfName :: Lens' CreateFleet Text
-cfName = lens _cfName (\ s a -> s{_cfName = a});
+cfName = lens _cfName (\ s a -> s{_cfName = a})
 
--- | The name of the image used by the fleet.
+-- | The name of the image used to create the fleet.
 cfImageName :: Lens' CreateFleet Text
-cfImageName = lens _cfImageName (\ s a -> s{_cfImageName = a});
+cfImageName = lens _cfImageName (\ s a -> s{_cfImageName = a})
 
 -- | The instance type to use when launching fleet instances. The following instance types are available:     * stream.standard.medium     * stream.standard.large     * stream.compute.large     * stream.compute.xlarge     * stream.compute.2xlarge     * stream.compute.4xlarge     * stream.compute.8xlarge     * stream.memory.large     * stream.memory.xlarge     * stream.memory.2xlarge     * stream.memory.4xlarge     * stream.memory.8xlarge     * stream.graphics-design.large     * stream.graphics-design.xlarge     * stream.graphics-design.2xlarge     * stream.graphics-design.4xlarge     * stream.graphics-desktop.2xlarge     * stream.graphics-pro.4xlarge     * stream.graphics-pro.8xlarge     * stream.graphics-pro.16xlarge
 cfInstanceType :: Lens' CreateFleet Text
-cfInstanceType = lens _cfInstanceType (\ s a -> s{_cfInstanceType = a});
+cfInstanceType = lens _cfInstanceType (\ s a -> s{_cfInstanceType = a})
 
 -- | The desired capacity for the fleet.
 cfComputeCapacity :: Lens' CreateFleet ComputeCapacity
-cfComputeCapacity = lens _cfComputeCapacity (\ s a -> s{_cfComputeCapacity = a});
+cfComputeCapacity = lens _cfComputeCapacity (\ s a -> s{_cfComputeCapacity = a})
 
 instance AWSRequest CreateFleet where
         type Rs CreateFleet = CreateFleetResponse
@@ -238,15 +238,15 @@
     -> CreateFleetResponse
 createFleetResponse pResponseStatus_ =
   CreateFleetResponse'
-  {_cfrsFleet = Nothing, _cfrsResponseStatus = pResponseStatus_}
+    {_cfrsFleet = Nothing, _cfrsResponseStatus = pResponseStatus_}
 
 
 -- | Information about the fleet.
 cfrsFleet :: Lens' CreateFleetResponse (Maybe Fleet)
-cfrsFleet = lens _cfrsFleet (\ s a -> s{_cfrsFleet = a});
+cfrsFleet = lens _cfrsFleet (\ s a -> s{_cfrsFleet = a})
 
 -- | -- | The response status code.
 cfrsResponseStatus :: Lens' CreateFleetResponse Int
-cfrsResponseStatus = lens _cfrsResponseStatus (\ s a -> s{_cfrsResponseStatus = a});
+cfrsResponseStatus = lens _cfrsResponseStatus (\ s a -> s{_cfrsResponseStatus = a})
 
 instance NFData CreateFleetResponse where
diff --git a/gen/Network/AWS/AppStream/CreateImageBuilder.hs b/gen/Network/AWS/AppStream/CreateImageBuilder.hs
--- a/gen/Network/AWS/AppStream/CreateImageBuilder.hs
+++ b/gen/Network/AWS/AppStream/CreateImageBuilder.hs
@@ -12,13 +12,17 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.CreateImageBuilder
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Undocumented operation.
+-- Creates an image builder.
+--
+--
+-- The initial state of the builder is @PENDING@ . When it is ready, the state is @RUNNING@ .
+--
 module Network.AWS.AppStream.CreateImageBuilder
     (
     -- * Creating a Request
@@ -30,6 +34,7 @@
     , cibDisplayName
     , cibEnableDefaultInternetAccess
     , cibDescription
+    , cibAppstreamAgentVersion
     , cibName
     , cibImageName
     , cibInstanceType
@@ -56,6 +61,7 @@
   , _cibDisplayName                 :: !(Maybe Text)
   , _cibEnableDefaultInternetAccess :: !(Maybe Bool)
   , _cibDescription                 :: !(Maybe Text)
+  , _cibAppstreamAgentVersion       :: !(Maybe Text)
   , _cibName                        :: !Text
   , _cibImageName                   :: !Text
   , _cibInstanceType                :: !Text
@@ -66,21 +72,23 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cibDomainJoinInfo' - Undocumented member.
+-- * 'cibDomainJoinInfo' - The information needed to join a Microsoft Active Directory domain.
 --
--- * 'cibVPCConfig' - Undocumented member.
+-- * 'cibVPCConfig' - The VPC configuration for the image builder. You can specify only one subnet.
 --
--- * 'cibDisplayName' - Undocumented member.
+-- * 'cibDisplayName' - The image builder name for display.
 --
--- * 'cibEnableDefaultInternetAccess' - Undocumented member.
+-- * 'cibEnableDefaultInternetAccess' - Enables or disables default internet access for the image builder.
 --
--- * 'cibDescription' - Undocumented member.
+-- * 'cibDescription' - The description for display.
 --
--- * 'cibName' - Undocumented member.
+-- * 'cibAppstreamAgentVersion' - The version of the AppStream 2.0 agent to use for this image builder. To use the latest version of the AppStream 2.0 agent, specify [LATEST].
 --
--- * 'cibImageName' - Undocumented member.
+-- * 'cibName' - A unique name for the image builder.
 --
--- * 'cibInstanceType' - Undocumented member.
+-- * 'cibImageName' - The name of the image used to create the builder.
+--
+-- * 'cibInstanceType' - The instance type to use when launching the image builder.
 createImageBuilder
     :: Text -- ^ 'cibName'
     -> Text -- ^ 'cibImageName'
@@ -88,48 +96,53 @@
     -> CreateImageBuilder
 createImageBuilder pName_ pImageName_ pInstanceType_ =
   CreateImageBuilder'
-  { _cibDomainJoinInfo = Nothing
-  , _cibVPCConfig = Nothing
-  , _cibDisplayName = Nothing
-  , _cibEnableDefaultInternetAccess = Nothing
-  , _cibDescription = Nothing
-  , _cibName = pName_
-  , _cibImageName = pImageName_
-  , _cibInstanceType = pInstanceType_
-  }
+    { _cibDomainJoinInfo = Nothing
+    , _cibVPCConfig = Nothing
+    , _cibDisplayName = Nothing
+    , _cibEnableDefaultInternetAccess = Nothing
+    , _cibDescription = Nothing
+    , _cibAppstreamAgentVersion = Nothing
+    , _cibName = pName_
+    , _cibImageName = pImageName_
+    , _cibInstanceType = pInstanceType_
+    }
 
 
--- | Undocumented member.
+-- | The information needed to join a Microsoft Active Directory domain.
 cibDomainJoinInfo :: Lens' CreateImageBuilder (Maybe DomainJoinInfo)
-cibDomainJoinInfo = lens _cibDomainJoinInfo (\ s a -> s{_cibDomainJoinInfo = a});
+cibDomainJoinInfo = lens _cibDomainJoinInfo (\ s a -> s{_cibDomainJoinInfo = a})
 
--- | Undocumented member.
+-- | The VPC configuration for the image builder. You can specify only one subnet.
 cibVPCConfig :: Lens' CreateImageBuilder (Maybe VPCConfig)
-cibVPCConfig = lens _cibVPCConfig (\ s a -> s{_cibVPCConfig = a});
+cibVPCConfig = lens _cibVPCConfig (\ s a -> s{_cibVPCConfig = a})
 
--- | Undocumented member.
+-- | The image builder name for display.
 cibDisplayName :: Lens' CreateImageBuilder (Maybe Text)
-cibDisplayName = lens _cibDisplayName (\ s a -> s{_cibDisplayName = a});
+cibDisplayName = lens _cibDisplayName (\ s a -> s{_cibDisplayName = a})
 
--- | Undocumented member.
+-- | Enables or disables default internet access for the image builder.
 cibEnableDefaultInternetAccess :: Lens' CreateImageBuilder (Maybe Bool)
-cibEnableDefaultInternetAccess = lens _cibEnableDefaultInternetAccess (\ s a -> s{_cibEnableDefaultInternetAccess = a});
+cibEnableDefaultInternetAccess = lens _cibEnableDefaultInternetAccess (\ s a -> s{_cibEnableDefaultInternetAccess = a})
 
--- | Undocumented member.
+-- | The description for display.
 cibDescription :: Lens' CreateImageBuilder (Maybe Text)
-cibDescription = lens _cibDescription (\ s a -> s{_cibDescription = a});
+cibDescription = lens _cibDescription (\ s a -> s{_cibDescription = a})
 
--- | Undocumented member.
+-- | The version of the AppStream 2.0 agent to use for this image builder. To use the latest version of the AppStream 2.0 agent, specify [LATEST].
+cibAppstreamAgentVersion :: Lens' CreateImageBuilder (Maybe Text)
+cibAppstreamAgentVersion = lens _cibAppstreamAgentVersion (\ s a -> s{_cibAppstreamAgentVersion = a})
+
+-- | A unique name for the image builder.
 cibName :: Lens' CreateImageBuilder Text
-cibName = lens _cibName (\ s a -> s{_cibName = a});
+cibName = lens _cibName (\ s a -> s{_cibName = a})
 
--- | Undocumented member.
+-- | The name of the image used to create the builder.
 cibImageName :: Lens' CreateImageBuilder Text
-cibImageName = lens _cibImageName (\ s a -> s{_cibImageName = a});
+cibImageName = lens _cibImageName (\ s a -> s{_cibImageName = a})
 
--- | Undocumented member.
+-- | The instance type to use when launching the image builder.
 cibInstanceType :: Lens' CreateImageBuilder Text
-cibInstanceType = lens _cibInstanceType (\ s a -> s{_cibInstanceType = a});
+cibInstanceType = lens _cibInstanceType (\ s a -> s{_cibInstanceType = a})
 
 instance AWSRequest CreateImageBuilder where
         type Rs CreateImageBuilder =
@@ -165,6 +178,8 @@
                   ("EnableDefaultInternetAccess" .=) <$>
                     _cibEnableDefaultInternetAccess,
                   ("Description" .=) <$> _cibDescription,
+                  ("AppstreamAgentVersion" .=) <$>
+                    _cibAppstreamAgentVersion,
                   Just ("Name" .= _cibName),
                   Just ("ImageName" .= _cibImageName),
                   Just ("InstanceType" .= _cibInstanceType)])
@@ -186,7 +201,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cibrsImageBuilder' - Undocumented member.
+-- * 'cibrsImageBuilder' - Information about the image builder.
 --
 -- * 'cibrsResponseStatus' - -- | The response status code.
 createImageBuilderResponse
@@ -194,15 +209,15 @@
     -> CreateImageBuilderResponse
 createImageBuilderResponse pResponseStatus_ =
   CreateImageBuilderResponse'
-  {_cibrsImageBuilder = Nothing, _cibrsResponseStatus = pResponseStatus_}
+    {_cibrsImageBuilder = Nothing, _cibrsResponseStatus = pResponseStatus_}
 
 
--- | Undocumented member.
+-- | Information about the image builder.
 cibrsImageBuilder :: Lens' CreateImageBuilderResponse (Maybe ImageBuilder)
-cibrsImageBuilder = lens _cibrsImageBuilder (\ s a -> s{_cibrsImageBuilder = a});
+cibrsImageBuilder = lens _cibrsImageBuilder (\ s a -> s{_cibrsImageBuilder = a})
 
 -- | -- | The response status code.
 cibrsResponseStatus :: Lens' CreateImageBuilderResponse Int
-cibrsResponseStatus = lens _cibrsResponseStatus (\ s a -> s{_cibrsResponseStatus = a});
+cibrsResponseStatus = lens _cibrsResponseStatus (\ s a -> s{_cibrsResponseStatus = a})
 
 instance NFData CreateImageBuilderResponse where
diff --git a/gen/Network/AWS/AppStream/CreateImageBuilderStreamingURL.hs b/gen/Network/AWS/AppStream/CreateImageBuilderStreamingURL.hs
--- a/gen/Network/AWS/AppStream/CreateImageBuilderStreamingURL.hs
+++ b/gen/Network/AWS/AppStream/CreateImageBuilderStreamingURL.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.CreateImageBuilderStreamingURL
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Undocumented operation.
+-- Creates a URL to start an image builder streaming session.
+--
+--
 module Network.AWS.AppStream.CreateImageBuilderStreamingURL
     (
     -- * Creating a Request
@@ -55,24 +57,24 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cibsuValidity' - Undocumented member.
+-- * 'cibsuValidity' - The time that the streaming URL will be valid, in seconds. Specify a value between 1 and 604800 seconds. The default is 3600 seconds.
 --
--- * 'cibsuName' - Undocumented member.
+-- * 'cibsuName' - The name of the image builder.
 createImageBuilderStreamingURL
     :: Text -- ^ 'cibsuName'
     -> CreateImageBuilderStreamingURL
 createImageBuilderStreamingURL pName_ =
   CreateImageBuilderStreamingURL'
-  {_cibsuValidity = Nothing, _cibsuName = pName_}
+    {_cibsuValidity = Nothing, _cibsuName = pName_}
 
 
--- | Undocumented member.
+-- | The time that the streaming URL will be valid, in seconds. Specify a value between 1 and 604800 seconds. The default is 3600 seconds.
 cibsuValidity :: Lens' CreateImageBuilderStreamingURL (Maybe Integer)
-cibsuValidity = lens _cibsuValidity (\ s a -> s{_cibsuValidity = a});
+cibsuValidity = lens _cibsuValidity (\ s a -> s{_cibsuValidity = a})
 
--- | Undocumented member.
+-- | The name of the image builder.
 cibsuName :: Lens' CreateImageBuilderStreamingURL Text
-cibsuName = lens _cibsuName (\ s a -> s{_cibsuName = a});
+cibsuName = lens _cibsuName (\ s a -> s{_cibsuName = a})
 
 instance AWSRequest CreateImageBuilderStreamingURL
          where
@@ -127,9 +129,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cibsursStreamingURL' - Undocumented member.
+-- * 'cibsursStreamingURL' - The URL to start the AppStream 2.0 streaming session.
 --
--- * 'cibsursExpires' - Undocumented member.
+-- * 'cibsursExpires' - The elapsed time, in seconds after the Unix epoch, when this URL expires.
 --
 -- * 'cibsursResponseStatus' - -- | The response status code.
 createImageBuilderStreamingURLResponse
@@ -137,23 +139,23 @@
     -> CreateImageBuilderStreamingURLResponse
 createImageBuilderStreamingURLResponse pResponseStatus_ =
   CreateImageBuilderStreamingURLResponse'
-  { _cibsursStreamingURL = Nothing
-  , _cibsursExpires = Nothing
-  , _cibsursResponseStatus = pResponseStatus_
-  }
+    { _cibsursStreamingURL = Nothing
+    , _cibsursExpires = Nothing
+    , _cibsursResponseStatus = pResponseStatus_
+    }
 
 
--- | Undocumented member.
+-- | The URL to start the AppStream 2.0 streaming session.
 cibsursStreamingURL :: Lens' CreateImageBuilderStreamingURLResponse (Maybe Text)
-cibsursStreamingURL = lens _cibsursStreamingURL (\ s a -> s{_cibsursStreamingURL = a});
+cibsursStreamingURL = lens _cibsursStreamingURL (\ s a -> s{_cibsursStreamingURL = a})
 
--- | Undocumented member.
+-- | The elapsed time, in seconds after the Unix epoch, when this URL expires.
 cibsursExpires :: Lens' CreateImageBuilderStreamingURLResponse (Maybe UTCTime)
-cibsursExpires = lens _cibsursExpires (\ s a -> s{_cibsursExpires = a}) . mapping _Time;
+cibsursExpires = lens _cibsursExpires (\ s a -> s{_cibsursExpires = a}) . mapping _Time
 
 -- | -- | The response status code.
 cibsursResponseStatus :: Lens' CreateImageBuilderStreamingURLResponse Int
-cibsursResponseStatus = lens _cibsursResponseStatus (\ s a -> s{_cibsursResponseStatus = a});
+cibsursResponseStatus = lens _cibsursResponseStatus (\ s a -> s{_cibsursResponseStatus = a})
 
 instance NFData
            CreateImageBuilderStreamingURLResponse
diff --git a/gen/Network/AWS/AppStream/CreateStack.hs b/gen/Network/AWS/AppStream/CreateStack.hs
--- a/gen/Network/AWS/AppStream/CreateStack.hs
+++ b/gen/Network/AWS/AppStream/CreateStack.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.CreateStack
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -27,9 +27,11 @@
       createStack
     , CreateStack
     -- * Request Lenses
+    , csFeedbackURL
     , csStorageConnectors
     , csDisplayName
     , csDescription
+    , csRedirectURL
     , csName
 
     -- * Destructuring the Response
@@ -49,9 +51,11 @@
 
 -- | /See:/ 'createStack' smart constructor.
 data CreateStack = CreateStack'
-  { _csStorageConnectors :: !(Maybe [StorageConnector])
+  { _csFeedbackURL       :: !(Maybe Text)
+  , _csStorageConnectors :: !(Maybe [StorageConnector])
   , _csDisplayName       :: !(Maybe Text)
   , _csDescription       :: !(Maybe Text)
+  , _csRedirectURL       :: !(Maybe Text)
   , _csName              :: !Text
   } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
@@ -60,40 +64,54 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'csFeedbackURL' - The URL that users are redirected to after they click the Send Feedback link. If no URL is specified, no Send Feedback link is displayed.
+--
 -- * 'csStorageConnectors' - The storage connectors to enable.
 --
--- * 'csDisplayName' - The stack name displayed to end users.
+-- * 'csDisplayName' - The stack name for display.
 --
--- * 'csDescription' - The description displayed to end users.
+-- * 'csDescription' - The description for display.
 --
+-- * 'csRedirectURL' - The URL that users are redirected to after their streaming session ends.
+--
 -- * 'csName' - The name of the stack.
 createStack
     :: Text -- ^ 'csName'
     -> CreateStack
 createStack pName_ =
   CreateStack'
-  { _csStorageConnectors = Nothing
-  , _csDisplayName = Nothing
-  , _csDescription = Nothing
-  , _csName = pName_
-  }
+    { _csFeedbackURL = Nothing
+    , _csStorageConnectors = Nothing
+    , _csDisplayName = Nothing
+    , _csDescription = Nothing
+    , _csRedirectURL = Nothing
+    , _csName = pName_
+    }
 
 
+-- | The URL that users are redirected to after they click the Send Feedback link. If no URL is specified, no Send Feedback link is displayed.
+csFeedbackURL :: Lens' CreateStack (Maybe Text)
+csFeedbackURL = lens _csFeedbackURL (\ s a -> s{_csFeedbackURL = a})
+
 -- | The storage connectors to enable.
 csStorageConnectors :: Lens' CreateStack [StorageConnector]
-csStorageConnectors = lens _csStorageConnectors (\ s a -> s{_csStorageConnectors = a}) . _Default . _Coerce;
+csStorageConnectors = lens _csStorageConnectors (\ s a -> s{_csStorageConnectors = a}) . _Default . _Coerce
 
--- | The stack name displayed to end users.
+-- | The stack name for display.
 csDisplayName :: Lens' CreateStack (Maybe Text)
-csDisplayName = lens _csDisplayName (\ s a -> s{_csDisplayName = a});
+csDisplayName = lens _csDisplayName (\ s a -> s{_csDisplayName = a})
 
--- | The description displayed to end users.
+-- | The description for display.
 csDescription :: Lens' CreateStack (Maybe Text)
-csDescription = lens _csDescription (\ s a -> s{_csDescription = a});
+csDescription = lens _csDescription (\ s a -> s{_csDescription = a})
 
+-- | The URL that users are redirected to after their streaming session ends.
+csRedirectURL :: Lens' CreateStack (Maybe Text)
+csRedirectURL = lens _csRedirectURL (\ s a -> s{_csRedirectURL = a})
+
 -- | The name of the stack.
 csName :: Lens' CreateStack Text
-csName = lens _csName (\ s a -> s{_csName = a});
+csName = lens _csName (\ s a -> s{_csName = a})
 
 instance AWSRequest CreateStack where
         type Rs CreateStack = CreateStackResponse
@@ -122,9 +140,11 @@
         toJSON CreateStack'{..}
           = object
               (catMaybes
-                 [("StorageConnectors" .=) <$> _csStorageConnectors,
+                 [("FeedbackURL" .=) <$> _csFeedbackURL,
+                  ("StorageConnectors" .=) <$> _csStorageConnectors,
                   ("DisplayName" .=) <$> _csDisplayName,
                   ("Description" .=) <$> _csDescription,
+                  ("RedirectURL" .=) <$> _csRedirectURL,
                   Just ("Name" .= _csName)])
 
 instance ToPath CreateStack where
@@ -152,15 +172,15 @@
     -> CreateStackResponse
 createStackResponse pResponseStatus_ =
   CreateStackResponse'
-  {_csrsStack = Nothing, _csrsResponseStatus = pResponseStatus_}
+    {_csrsStack = Nothing, _csrsResponseStatus = pResponseStatus_}
 
 
 -- | Information about the stack.
 csrsStack :: Lens' CreateStackResponse (Maybe Stack)
-csrsStack = lens _csrsStack (\ s a -> s{_csrsStack = a});
+csrsStack = lens _csrsStack (\ s a -> s{_csrsStack = a})
 
 -- | -- | The response status code.
 csrsResponseStatus :: Lens' CreateStackResponse Int
-csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a});
+csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a})
 
 instance NFData CreateStackResponse where
diff --git a/gen/Network/AWS/AppStream/CreateStreamingURL.hs b/gen/Network/AWS/AppStream/CreateStreamingURL.hs
--- a/gen/Network/AWS/AppStream/CreateStreamingURL.hs
+++ b/gen/Network/AWS/AppStream/CreateStreamingURL.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.CreateStreamingURL
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -21,8 +21,6 @@
 -- Creates a URL to start a streaming session for the specified user.
 --
 --
--- By default, the URL is valid only for one minute from the time that it is generated.
---
 module Network.AWS.AppStream.CreateStreamingURL
     (
     -- * Creating a Request
@@ -67,11 +65,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csuSessionContext' - The session context of the streaming URL.
+-- * 'csuSessionContext' - The session context. For more information, see <http://docs.aws.amazon.com/appstream2/latest/developerguide/managing-stacks-fleets.html#managing-stacks-fleets-parameters Session Context> in the /Amazon AppStream 2.0 Developer Guide/ .
 --
--- * 'csuApplicationId' - The ID of the application that must be launched after the session starts.
+-- * 'csuApplicationId' - The name of the application to launch after the session starts. This is the name that you specified as __Name__ in the Image Assistant.
 --
--- * 'csuValidity' - The time that the streaming URL will be valid, in seconds. Specify a value between 1 and 604800 seconds.
+-- * 'csuValidity' - The time that the streaming URL will be valid, in seconds. Specify a value between 1 and 604800 seconds. The default is 60 seconds.
 --
 -- * 'csuStackName' - The name of the stack.
 --
@@ -85,38 +83,38 @@
     -> CreateStreamingURL
 createStreamingURL pStackName_ pFleetName_ pUserId_ =
   CreateStreamingURL'
-  { _csuSessionContext = Nothing
-  , _csuApplicationId = Nothing
-  , _csuValidity = Nothing
-  , _csuStackName = pStackName_
-  , _csuFleetName = pFleetName_
-  , _csuUserId = pUserId_
-  }
+    { _csuSessionContext = Nothing
+    , _csuApplicationId = Nothing
+    , _csuValidity = Nothing
+    , _csuStackName = pStackName_
+    , _csuFleetName = pFleetName_
+    , _csuUserId = pUserId_
+    }
 
 
--- | The session context of the streaming URL.
+-- | The session context. For more information, see <http://docs.aws.amazon.com/appstream2/latest/developerguide/managing-stacks-fleets.html#managing-stacks-fleets-parameters Session Context> in the /Amazon AppStream 2.0 Developer Guide/ .
 csuSessionContext :: Lens' CreateStreamingURL (Maybe Text)
-csuSessionContext = lens _csuSessionContext (\ s a -> s{_csuSessionContext = a});
+csuSessionContext = lens _csuSessionContext (\ s a -> s{_csuSessionContext = a})
 
--- | The ID of the application that must be launched after the session starts.
+-- | The name of the application to launch after the session starts. This is the name that you specified as __Name__ in the Image Assistant.
 csuApplicationId :: Lens' CreateStreamingURL (Maybe Text)
-csuApplicationId = lens _csuApplicationId (\ s a -> s{_csuApplicationId = a});
+csuApplicationId = lens _csuApplicationId (\ s a -> s{_csuApplicationId = a})
 
--- | The time that the streaming URL will be valid, in seconds. Specify a value between 1 and 604800 seconds.
+-- | The time that the streaming URL will be valid, in seconds. Specify a value between 1 and 604800 seconds. The default is 60 seconds.
 csuValidity :: Lens' CreateStreamingURL (Maybe Integer)
-csuValidity = lens _csuValidity (\ s a -> s{_csuValidity = a});
+csuValidity = lens _csuValidity (\ s a -> s{_csuValidity = a})
 
 -- | The name of the stack.
 csuStackName :: Lens' CreateStreamingURL Text
-csuStackName = lens _csuStackName (\ s a -> s{_csuStackName = a});
+csuStackName = lens _csuStackName (\ s a -> s{_csuStackName = a})
 
 -- | The name of the fleet.
 csuFleetName :: Lens' CreateStreamingURL Text
-csuFleetName = lens _csuFleetName (\ s a -> s{_csuFleetName = a});
+csuFleetName = lens _csuFleetName (\ s a -> s{_csuFleetName = a})
 
 -- | The ID of the user.
 csuUserId :: Lens' CreateStreamingURL Text
-csuUserId = lens _csuUserId (\ s a -> s{_csuUserId = a});
+csuUserId = lens _csuUserId (\ s a -> s{_csuUserId = a})
 
 instance AWSRequest CreateStreamingURL where
         type Rs CreateStreamingURL =
@@ -182,22 +180,22 @@
     -> CreateStreamingURLResponse
 createStreamingURLResponse pResponseStatus_ =
   CreateStreamingURLResponse'
-  { _csursStreamingURL = Nothing
-  , _csursExpires = Nothing
-  , _csursResponseStatus = pResponseStatus_
-  }
+    { _csursStreamingURL = Nothing
+    , _csursExpires = Nothing
+    , _csursResponseStatus = pResponseStatus_
+    }
 
 
 -- | The URL to start the AppStream 2.0 streaming session.
 csursStreamingURL :: Lens' CreateStreamingURLResponse (Maybe Text)
-csursStreamingURL = lens _csursStreamingURL (\ s a -> s{_csursStreamingURL = a});
+csursStreamingURL = lens _csursStreamingURL (\ s a -> s{_csursStreamingURL = a})
 
 -- | The elapsed time, in seconds after the Unix epoch, when this URL expires.
 csursExpires :: Lens' CreateStreamingURLResponse (Maybe UTCTime)
-csursExpires = lens _csursExpires (\ s a -> s{_csursExpires = a}) . mapping _Time;
+csursExpires = lens _csursExpires (\ s a -> s{_csursExpires = a}) . mapping _Time
 
 -- | -- | The response status code.
 csursResponseStatus :: Lens' CreateStreamingURLResponse Int
-csursResponseStatus = lens _csursResponseStatus (\ s a -> s{_csursResponseStatus = a});
+csursResponseStatus = lens _csursResponseStatus (\ s a -> s{_csursResponseStatus = a})
 
 instance NFData CreateStreamingURLResponse where
diff --git a/gen/Network/AWS/AppStream/DeleteDirectoryConfig.hs b/gen/Network/AWS/AppStream/DeleteDirectoryConfig.hs
--- a/gen/Network/AWS/AppStream/DeleteDirectoryConfig.hs
+++ b/gen/Network/AWS/AppStream/DeleteDirectoryConfig.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DeleteDirectoryConfig
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -63,7 +63,7 @@
 
 -- | The name of the directory configuration.
 ddcDirectoryName :: Lens' DeleteDirectoryConfig Text
-ddcDirectoryName = lens _ddcDirectoryName (\ s a -> s{_ddcDirectoryName = a});
+ddcDirectoryName = lens _ddcDirectoryName (\ s a -> s{_ddcDirectoryName = a})
 
 instance AWSRequest DeleteDirectoryConfig where
         type Rs DeleteDirectoryConfig =
@@ -121,6 +121,6 @@
 
 -- | -- | The response status code.
 delrsResponseStatus :: Lens' DeleteDirectoryConfigResponse Int
-delrsResponseStatus = lens _delrsResponseStatus (\ s a -> s{_delrsResponseStatus = a});
+delrsResponseStatus = lens _delrsResponseStatus (\ s a -> s{_delrsResponseStatus = a})
 
 instance NFData DeleteDirectoryConfigResponse where
diff --git a/gen/Network/AWS/AppStream/DeleteFleet.hs b/gen/Network/AWS/AppStream/DeleteFleet.hs
--- a/gen/Network/AWS/AppStream/DeleteFleet.hs
+++ b/gen/Network/AWS/AppStream/DeleteFleet.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DeleteFleet
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -62,7 +62,7 @@
 
 -- | The name of the fleet.
 dfName :: Lens' DeleteFleet Text
-dfName = lens _dfName (\ s a -> s{_dfName = a});
+dfName = lens _dfName (\ s a -> s{_dfName = a})
 
 instance AWSRequest DeleteFleet where
         type Rs DeleteFleet = DeleteFleetResponse
@@ -116,6 +116,6 @@
 
 -- | -- | The response status code.
 dfrsResponseStatus :: Lens' DeleteFleetResponse Int
-dfrsResponseStatus = lens _dfrsResponseStatus (\ s a -> s{_dfrsResponseStatus = a});
+dfrsResponseStatus = lens _dfrsResponseStatus (\ s a -> s{_dfrsResponseStatus = a})
 
 instance NFData DeleteFleetResponse where
diff --git a/gen/Network/AWS/AppStream/DeleteImage.hs b/gen/Network/AWS/AppStream/DeleteImage.hs
--- a/gen/Network/AWS/AppStream/DeleteImage.hs
+++ b/gen/Network/AWS/AppStream/DeleteImage.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DeleteImage
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Undocumented operation.
+-- Deletes the specified image. You cannot delete an image that is currently in use. After you delete an image, you cannot provision new capacity using the image.
+--
+--
 module Network.AWS.AppStream.DeleteImage
     (
     -- * Creating a Request
@@ -52,16 +54,16 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'diName' - Undocumented member.
+-- * 'diName' - The name of the image.
 deleteImage
     :: Text -- ^ 'diName'
     -> DeleteImage
 deleteImage pName_ = DeleteImage' {_diName = pName_}
 
 
--- | Undocumented member.
+-- | The name of the image.
 diName :: Lens' DeleteImage Text
-diName = lens _diName (\ s a -> s{_diName = a});
+diName = lens _diName (\ s a -> s{_diName = a})
 
 instance AWSRequest DeleteImage where
         type Rs DeleteImage = DeleteImageResponse
@@ -107,7 +109,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dirsImage' - Undocumented member.
+-- * 'dirsImage' - Information about the image.
 --
 -- * 'dirsResponseStatus' - -- | The response status code.
 deleteImageResponse
@@ -115,15 +117,15 @@
     -> DeleteImageResponse
 deleteImageResponse pResponseStatus_ =
   DeleteImageResponse'
-  {_dirsImage = Nothing, _dirsResponseStatus = pResponseStatus_}
+    {_dirsImage = Nothing, _dirsResponseStatus = pResponseStatus_}
 
 
--- | Undocumented member.
+-- | Information about the image.
 dirsImage :: Lens' DeleteImageResponse (Maybe Image)
-dirsImage = lens _dirsImage (\ s a -> s{_dirsImage = a});
+dirsImage = lens _dirsImage (\ s a -> s{_dirsImage = a})
 
 -- | -- | The response status code.
 dirsResponseStatus :: Lens' DeleteImageResponse Int
-dirsResponseStatus = lens _dirsResponseStatus (\ s a -> s{_dirsResponseStatus = a});
+dirsResponseStatus = lens _dirsResponseStatus (\ s a -> s{_dirsResponseStatus = a})
 
 instance NFData DeleteImageResponse where
diff --git a/gen/Network/AWS/AppStream/DeleteImageBuilder.hs b/gen/Network/AWS/AppStream/DeleteImageBuilder.hs
--- a/gen/Network/AWS/AppStream/DeleteImageBuilder.hs
+++ b/gen/Network/AWS/AppStream/DeleteImageBuilder.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DeleteImageBuilder
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Undocumented operation.
+-- Deletes the specified image builder and releases the capacity.
+--
+--
 module Network.AWS.AppStream.DeleteImageBuilder
     (
     -- * Creating a Request
@@ -52,16 +54,16 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dibName' - Undocumented member.
+-- * 'dibName' - The name of the image builder.
 deleteImageBuilder
     :: Text -- ^ 'dibName'
     -> DeleteImageBuilder
 deleteImageBuilder pName_ = DeleteImageBuilder' {_dibName = pName_}
 
 
--- | Undocumented member.
+-- | The name of the image builder.
 dibName :: Lens' DeleteImageBuilder Text
-dibName = lens _dibName (\ s a -> s{_dibName = a});
+dibName = lens _dibName (\ s a -> s{_dibName = a})
 
 instance AWSRequest DeleteImageBuilder where
         type Rs DeleteImageBuilder =
@@ -108,7 +110,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dibrsImageBuilder' - Undocumented member.
+-- * 'dibrsImageBuilder' - Information about the image builder.
 --
 -- * 'dibrsResponseStatus' - -- | The response status code.
 deleteImageBuilderResponse
@@ -116,15 +118,15 @@
     -> DeleteImageBuilderResponse
 deleteImageBuilderResponse pResponseStatus_ =
   DeleteImageBuilderResponse'
-  {_dibrsImageBuilder = Nothing, _dibrsResponseStatus = pResponseStatus_}
+    {_dibrsImageBuilder = Nothing, _dibrsResponseStatus = pResponseStatus_}
 
 
--- | Undocumented member.
+-- | Information about the image builder.
 dibrsImageBuilder :: Lens' DeleteImageBuilderResponse (Maybe ImageBuilder)
-dibrsImageBuilder = lens _dibrsImageBuilder (\ s a -> s{_dibrsImageBuilder = a});
+dibrsImageBuilder = lens _dibrsImageBuilder (\ s a -> s{_dibrsImageBuilder = a})
 
 -- | -- | The response status code.
 dibrsResponseStatus :: Lens' DeleteImageBuilderResponse Int
-dibrsResponseStatus = lens _dibrsResponseStatus (\ s a -> s{_dibrsResponseStatus = a});
+dibrsResponseStatus = lens _dibrsResponseStatus (\ s a -> s{_dibrsResponseStatus = a})
 
 instance NFData DeleteImageBuilderResponse where
diff --git a/gen/Network/AWS/AppStream/DeleteStack.hs b/gen/Network/AWS/AppStream/DeleteStack.hs
--- a/gen/Network/AWS/AppStream/DeleteStack.hs
+++ b/gen/Network/AWS/AppStream/DeleteStack.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DeleteStack
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -62,7 +62,7 @@
 
 -- | The name of the stack.
 dsName :: Lens' DeleteStack Text
-dsName = lens _dsName (\ s a -> s{_dsName = a});
+dsName = lens _dsName (\ s a -> s{_dsName = a})
 
 instance AWSRequest DeleteStack where
         type Rs DeleteStack = DeleteStackResponse
@@ -116,6 +116,6 @@
 
 -- | -- | The response status code.
 dsrsResponseStatus :: Lens' DeleteStackResponse Int
-dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a});
+dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a})
 
 instance NFData DeleteStackResponse where
diff --git a/gen/Network/AWS/AppStream/DescribeDirectoryConfigs.hs b/gen/Network/AWS/AppStream/DescribeDirectoryConfigs.hs
--- a/gen/Network/AWS/AppStream/DescribeDirectoryConfigs.hs
+++ b/gen/Network/AWS/AppStream/DescribeDirectoryConfigs.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DescribeDirectoryConfigs
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes the specified directory configurations.
+-- Describes the specified directory configurations. Note that although the response syntax in this topic includes the account password, this password is not returned in the actual response.
 --
 --
 module Network.AWS.AppStream.DescribeDirectoryConfigs
@@ -68,23 +68,23 @@
     :: DescribeDirectoryConfigs
 describeDirectoryConfigs =
   DescribeDirectoryConfigs'
-  { _ddcNextToken = Nothing
-  , _ddcDirectoryNames = Nothing
-  , _ddcMaxResults = Nothing
-  }
+    { _ddcNextToken = Nothing
+    , _ddcDirectoryNames = Nothing
+    , _ddcMaxResults = Nothing
+    }
 
 
 -- | The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.
 ddcNextToken :: Lens' DescribeDirectoryConfigs (Maybe Text)
-ddcNextToken = lens _ddcNextToken (\ s a -> s{_ddcNextToken = a});
+ddcNextToken = lens _ddcNextToken (\ s a -> s{_ddcNextToken = a})
 
 -- | The directory names.
 ddcDirectoryNames :: Lens' DescribeDirectoryConfigs [Text]
-ddcDirectoryNames = lens _ddcDirectoryNames (\ s a -> s{_ddcDirectoryNames = a}) . _Default . _Coerce;
+ddcDirectoryNames = lens _ddcDirectoryNames (\ s a -> s{_ddcDirectoryNames = a}) . _Default . _Coerce
 
 -- | The maximum size of each page of results.
 ddcMaxResults :: Lens' DescribeDirectoryConfigs (Maybe Int)
-ddcMaxResults = lens _ddcMaxResults (\ s a -> s{_ddcMaxResults = a});
+ddcMaxResults = lens _ddcMaxResults (\ s a -> s{_ddcMaxResults = a})
 
 instance AWSRequest DescribeDirectoryConfigs where
         type Rs DescribeDirectoryConfigs =
@@ -140,7 +140,7 @@
 --
 -- * 'ddcrsNextToken' - The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.
 --
--- * 'ddcrsDirectoryConfigs' - Information about the directory configurations.
+-- * 'ddcrsDirectoryConfigs' - Information about the directory configurations. Note that although the response syntax in this topic includes the account password, this password is not returned in the actual response.
 --
 -- * 'ddcrsResponseStatus' - -- | The response status code.
 describeDirectoryConfigsResponse
@@ -148,23 +148,23 @@
     -> DescribeDirectoryConfigsResponse
 describeDirectoryConfigsResponse pResponseStatus_ =
   DescribeDirectoryConfigsResponse'
-  { _ddcrsNextToken = Nothing
-  , _ddcrsDirectoryConfigs = Nothing
-  , _ddcrsResponseStatus = pResponseStatus_
-  }
+    { _ddcrsNextToken = Nothing
+    , _ddcrsDirectoryConfigs = Nothing
+    , _ddcrsResponseStatus = pResponseStatus_
+    }
 
 
 -- | The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.
 ddcrsNextToken :: Lens' DescribeDirectoryConfigsResponse (Maybe Text)
-ddcrsNextToken = lens _ddcrsNextToken (\ s a -> s{_ddcrsNextToken = a});
+ddcrsNextToken = lens _ddcrsNextToken (\ s a -> s{_ddcrsNextToken = a})
 
--- | Information about the directory configurations.
+-- | Information about the directory configurations. Note that although the response syntax in this topic includes the account password, this password is not returned in the actual response.
 ddcrsDirectoryConfigs :: Lens' DescribeDirectoryConfigsResponse [DirectoryConfig]
-ddcrsDirectoryConfigs = lens _ddcrsDirectoryConfigs (\ s a -> s{_ddcrsDirectoryConfigs = a}) . _Default . _Coerce;
+ddcrsDirectoryConfigs = lens _ddcrsDirectoryConfigs (\ s a -> s{_ddcrsDirectoryConfigs = a}) . _Default . _Coerce
 
 -- | -- | The response status code.
 ddcrsResponseStatus :: Lens' DescribeDirectoryConfigsResponse Int
-ddcrsResponseStatus = lens _ddcrsResponseStatus (\ s a -> s{_ddcrsResponseStatus = a});
+ddcrsResponseStatus = lens _ddcrsResponseStatus (\ s a -> s{_ddcrsResponseStatus = a})
 
 instance NFData DescribeDirectoryConfigsResponse
          where
diff --git a/gen/Network/AWS/AppStream/DescribeFleets.hs b/gen/Network/AWS/AppStream/DescribeFleets.hs
--- a/gen/Network/AWS/AppStream/DescribeFleets.hs
+++ b/gen/Network/AWS/AppStream/DescribeFleets.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DescribeFleets
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -67,11 +67,11 @@
 
 -- | The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.
 dfNextToken :: Lens' DescribeFleets (Maybe Text)
-dfNextToken = lens _dfNextToken (\ s a -> s{_dfNextToken = a});
+dfNextToken = lens _dfNextToken (\ s a -> s{_dfNextToken = a})
 
 -- | The names of the fleets to describe.
 dfNames :: Lens' DescribeFleets [Text]
-dfNames = lens _dfNames (\ s a -> s{_dfNames = a}) . _Default . _Coerce;
+dfNames = lens _dfNames (\ s a -> s{_dfNames = a}) . _Default . _Coerce
 
 instance AWSRequest DescribeFleets where
         type Rs DescribeFleets = DescribeFleetsResponse
@@ -132,22 +132,22 @@
     -> DescribeFleetsResponse
 describeFleetsResponse pResponseStatus_ =
   DescribeFleetsResponse'
-  { _dfsrsNextToken = Nothing
-  , _dfsrsFleets = Nothing
-  , _dfsrsResponseStatus = pResponseStatus_
-  }
+    { _dfsrsNextToken = Nothing
+    , _dfsrsFleets = Nothing
+    , _dfsrsResponseStatus = pResponseStatus_
+    }
 
 
 -- | The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.
 dfsrsNextToken :: Lens' DescribeFleetsResponse (Maybe Text)
-dfsrsNextToken = lens _dfsrsNextToken (\ s a -> s{_dfsrsNextToken = a});
+dfsrsNextToken = lens _dfsrsNextToken (\ s a -> s{_dfsrsNextToken = a})
 
 -- | Information about the fleets.
 dfsrsFleets :: Lens' DescribeFleetsResponse [Fleet]
-dfsrsFleets = lens _dfsrsFleets (\ s a -> s{_dfsrsFleets = a}) . _Default . _Coerce;
+dfsrsFleets = lens _dfsrsFleets (\ s a -> s{_dfsrsFleets = a}) . _Default . _Coerce
 
 -- | -- | The response status code.
 dfsrsResponseStatus :: Lens' DescribeFleetsResponse Int
-dfsrsResponseStatus = lens _dfsrsResponseStatus (\ s a -> s{_dfsrsResponseStatus = a});
+dfsrsResponseStatus = lens _dfsrsResponseStatus (\ s a -> s{_dfsrsResponseStatus = a})
 
 instance NFData DescribeFleetsResponse where
diff --git a/gen/Network/AWS/AppStream/DescribeImageBuilders.hs b/gen/Network/AWS/AppStream/DescribeImageBuilders.hs
--- a/gen/Network/AWS/AppStream/DescribeImageBuilders.hs
+++ b/gen/Network/AWS/AppStream/DescribeImageBuilders.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DescribeImageBuilders
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Undocumented operation.
+-- Describes the specified image builders or all image builders in the account.
+--
+--
 module Network.AWS.AppStream.DescribeImageBuilders
     (
     -- * Creating a Request
@@ -57,29 +59,29 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dibNextToken' - Undocumented member.
+-- * 'dibNextToken' - The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.
 --
--- * 'dibNames' - Undocumented member.
+-- * 'dibNames' - The names of the image builders to describe.
 --
--- * 'dibMaxResults' - Undocumented member.
+-- * 'dibMaxResults' - The maximum size of each page of results.
 describeImageBuilders
     :: DescribeImageBuilders
 describeImageBuilders =
   DescribeImageBuilders'
-  {_dibNextToken = Nothing, _dibNames = Nothing, _dibMaxResults = Nothing}
+    {_dibNextToken = Nothing, _dibNames = Nothing, _dibMaxResults = Nothing}
 
 
--- | Undocumented member.
+-- | The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.
 dibNextToken :: Lens' DescribeImageBuilders (Maybe Text)
-dibNextToken = lens _dibNextToken (\ s a -> s{_dibNextToken = a});
+dibNextToken = lens _dibNextToken (\ s a -> s{_dibNextToken = a})
 
--- | Undocumented member.
+-- | The names of the image builders to describe.
 dibNames :: Lens' DescribeImageBuilders [Text]
-dibNames = lens _dibNames (\ s a -> s{_dibNames = a}) . _Default . _Coerce;
+dibNames = lens _dibNames (\ s a -> s{_dibNames = a}) . _Default . _Coerce
 
--- | Undocumented member.
+-- | The maximum size of each page of results.
 dibMaxResults :: Lens' DescribeImageBuilders (Maybe Int)
-dibMaxResults = lens _dibMaxResults (\ s a -> s{_dibMaxResults = a});
+dibMaxResults = lens _dibMaxResults (\ s a -> s{_dibMaxResults = a})
 
 instance AWSRequest DescribeImageBuilders where
         type Rs DescribeImageBuilders =
@@ -133,9 +135,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dibsrsImageBuilders' - Undocumented member.
+-- * 'dibsrsImageBuilders' - Information about the image builders.
 --
--- * 'dibsrsNextToken' - Undocumented member.
+-- * 'dibsrsNextToken' - The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.
 --
 -- * 'dibsrsResponseStatus' - -- | The response status code.
 describeImageBuildersResponse
@@ -143,22 +145,22 @@
     -> DescribeImageBuildersResponse
 describeImageBuildersResponse pResponseStatus_ =
   DescribeImageBuildersResponse'
-  { _dibsrsImageBuilders = Nothing
-  , _dibsrsNextToken = Nothing
-  , _dibsrsResponseStatus = pResponseStatus_
-  }
+    { _dibsrsImageBuilders = Nothing
+    , _dibsrsNextToken = Nothing
+    , _dibsrsResponseStatus = pResponseStatus_
+    }
 
 
--- | Undocumented member.
+-- | Information about the image builders.
 dibsrsImageBuilders :: Lens' DescribeImageBuildersResponse [ImageBuilder]
-dibsrsImageBuilders = lens _dibsrsImageBuilders (\ s a -> s{_dibsrsImageBuilders = a}) . _Default . _Coerce;
+dibsrsImageBuilders = lens _dibsrsImageBuilders (\ s a -> s{_dibsrsImageBuilders = a}) . _Default . _Coerce
 
--- | Undocumented member.
+-- | The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.
 dibsrsNextToken :: Lens' DescribeImageBuildersResponse (Maybe Text)
-dibsrsNextToken = lens _dibsrsNextToken (\ s a -> s{_dibsrsNextToken = a});
+dibsrsNextToken = lens _dibsrsNextToken (\ s a -> s{_dibsrsNextToken = a})
 
 -- | -- | The response status code.
 dibsrsResponseStatus :: Lens' DescribeImageBuildersResponse Int
-dibsrsResponseStatus = lens _dibsrsResponseStatus (\ s a -> s{_dibsrsResponseStatus = a});
+dibsrsResponseStatus = lens _dibsrsResponseStatus (\ s a -> s{_dibsrsResponseStatus = a})
 
 instance NFData DescribeImageBuildersResponse where
diff --git a/gen/Network/AWS/AppStream/DescribeImages.hs b/gen/Network/AWS/AppStream/DescribeImages.hs
--- a/gen/Network/AWS/AppStream/DescribeImages.hs
+++ b/gen/Network/AWS/AppStream/DescribeImages.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DescribeImages
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -62,7 +62,7 @@
 
 -- | The names of the images to describe.
 diNames :: Lens' DescribeImages [Text]
-diNames = lens _diNames (\ s a -> s{_diNames = a}) . _Default . _Coerce;
+diNames = lens _diNames (\ s a -> s{_diNames = a}) . _Default . _Coerce
 
 instance AWSRequest DescribeImages where
         type Rs DescribeImages = DescribeImagesResponse
@@ -116,15 +116,15 @@
     -> DescribeImagesResponse
 describeImagesResponse pResponseStatus_ =
   DescribeImagesResponse'
-  {_disrsImages = Nothing, _disrsResponseStatus = pResponseStatus_}
+    {_disrsImages = Nothing, _disrsResponseStatus = pResponseStatus_}
 
 
 -- | Information about the images.
 disrsImages :: Lens' DescribeImagesResponse [Image]
-disrsImages = lens _disrsImages (\ s a -> s{_disrsImages = a}) . _Default . _Coerce;
+disrsImages = lens _disrsImages (\ s a -> s{_disrsImages = a}) . _Default . _Coerce
 
 -- | -- | The response status code.
 disrsResponseStatus :: Lens' DescribeImagesResponse Int
-disrsResponseStatus = lens _disrsResponseStatus (\ s a -> s{_disrsResponseStatus = a});
+disrsResponseStatus = lens _disrsResponseStatus (\ s a -> s{_disrsResponseStatus = a})
 
 instance NFData DescribeImagesResponse where
diff --git a/gen/Network/AWS/AppStream/DescribeSessions.hs b/gen/Network/AWS/AppStream/DescribeSessions.hs
--- a/gen/Network/AWS/AppStream/DescribeSessions.hs
+++ b/gen/Network/AWS/AppStream/DescribeSessions.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DescribeSessions
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -73,47 +73,47 @@
 --
 -- * 'dsAuthenticationType' - The authentication method. Specify @API@ for a user authenticated using a streaming URL or @SAML@ for a SAML federated user. The default is to authenticate users using a streaming URL.
 --
--- * 'dsStackName' - The name of the stack.
+-- * 'dsStackName' - The name of the stack. This value is case-sensitive.
 --
--- * 'dsFleetName' - The name of the fleet.
+-- * 'dsFleetName' - The name of the fleet. This value is case-sensitive.
 describeSessions
     :: Text -- ^ 'dsStackName'
     -> Text -- ^ 'dsFleetName'
     -> DescribeSessions
 describeSessions pStackName_ pFleetName_ =
   DescribeSessions'
-  { _dsUserId = Nothing
-  , _dsNextToken = Nothing
-  , _dsLimit = Nothing
-  , _dsAuthenticationType = Nothing
-  , _dsStackName = pStackName_
-  , _dsFleetName = pFleetName_
-  }
+    { _dsUserId = Nothing
+    , _dsNextToken = Nothing
+    , _dsLimit = Nothing
+    , _dsAuthenticationType = Nothing
+    , _dsStackName = pStackName_
+    , _dsFleetName = pFleetName_
+    }
 
 
 -- | The user ID.
 dsUserId :: Lens' DescribeSessions (Maybe Text)
-dsUserId = lens _dsUserId (\ s a -> s{_dsUserId = a});
+dsUserId = lens _dsUserId (\ s a -> s{_dsUserId = a})
 
 -- | The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.
 dsNextToken :: Lens' DescribeSessions (Maybe Text)
-dsNextToken = lens _dsNextToken (\ s a -> s{_dsNextToken = a});
+dsNextToken = lens _dsNextToken (\ s a -> s{_dsNextToken = a})
 
 -- | The size of each page of results. The default value is 20 and the maximum value is 50.
 dsLimit :: Lens' DescribeSessions (Maybe Int)
-dsLimit = lens _dsLimit (\ s a -> s{_dsLimit = a});
+dsLimit = lens _dsLimit (\ s a -> s{_dsLimit = a})
 
 -- | The authentication method. Specify @API@ for a user authenticated using a streaming URL or @SAML@ for a SAML federated user. The default is to authenticate users using a streaming URL.
 dsAuthenticationType :: Lens' DescribeSessions (Maybe AuthenticationType)
-dsAuthenticationType = lens _dsAuthenticationType (\ s a -> s{_dsAuthenticationType = a});
+dsAuthenticationType = lens _dsAuthenticationType (\ s a -> s{_dsAuthenticationType = a})
 
--- | The name of the stack.
+-- | The name of the stack. This value is case-sensitive.
 dsStackName :: Lens' DescribeSessions Text
-dsStackName = lens _dsStackName (\ s a -> s{_dsStackName = a});
+dsStackName = lens _dsStackName (\ s a -> s{_dsStackName = a})
 
--- | The name of the fleet.
+-- | The name of the fleet. This value is case-sensitive.
 dsFleetName :: Lens' DescribeSessions Text
-dsFleetName = lens _dsFleetName (\ s a -> s{_dsFleetName = a});
+dsFleetName = lens _dsFleetName (\ s a -> s{_dsFleetName = a})
 
 instance AWSRequest DescribeSessions where
         type Rs DescribeSessions = DescribeSessionsResponse
@@ -178,22 +178,22 @@
     -> DescribeSessionsResponse
 describeSessionsResponse pResponseStatus_ =
   DescribeSessionsResponse'
-  { _dssrsNextToken = Nothing
-  , _dssrsSessions = Nothing
-  , _dssrsResponseStatus = pResponseStatus_
-  }
+    { _dssrsNextToken = Nothing
+    , _dssrsSessions = Nothing
+    , _dssrsResponseStatus = pResponseStatus_
+    }
 
 
 -- | The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.
 dssrsNextToken :: Lens' DescribeSessionsResponse (Maybe Text)
-dssrsNextToken = lens _dssrsNextToken (\ s a -> s{_dssrsNextToken = a});
+dssrsNextToken = lens _dssrsNextToken (\ s a -> s{_dssrsNextToken = a})
 
 -- | Information about the streaming sessions.
 dssrsSessions :: Lens' DescribeSessionsResponse [Session]
-dssrsSessions = lens _dssrsSessions (\ s a -> s{_dssrsSessions = a}) . _Default . _Coerce;
+dssrsSessions = lens _dssrsSessions (\ s a -> s{_dssrsSessions = a}) . _Default . _Coerce
 
 -- | -- | The response status code.
 dssrsResponseStatus :: Lens' DescribeSessionsResponse Int
-dssrsResponseStatus = lens _dssrsResponseStatus (\ s a -> s{_dssrsResponseStatus = a});
+dssrsResponseStatus = lens _dssrsResponseStatus (\ s a -> s{_dssrsResponseStatus = a})
 
 instance NFData DescribeSessionsResponse where
diff --git a/gen/Network/AWS/AppStream/DescribeStacks.hs b/gen/Network/AWS/AppStream/DescribeStacks.hs
--- a/gen/Network/AWS/AppStream/DescribeStacks.hs
+++ b/gen/Network/AWS/AppStream/DescribeStacks.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DescribeStacks
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -67,11 +67,11 @@
 
 -- | The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.
 dNextToken :: Lens' DescribeStacks (Maybe Text)
-dNextToken = lens _dNextToken (\ s a -> s{_dNextToken = a});
+dNextToken = lens _dNextToken (\ s a -> s{_dNextToken = a})
 
 -- | The names of the stacks to describe.
 dNames :: Lens' DescribeStacks [Text]
-dNames = lens _dNames (\ s a -> s{_dNames = a}) . _Default . _Coerce;
+dNames = lens _dNames (\ s a -> s{_dNames = a}) . _Default . _Coerce
 
 instance AWSRequest DescribeStacks where
         type Rs DescribeStacks = DescribeStacksResponse
@@ -132,22 +132,22 @@
     -> DescribeStacksResponse
 describeStacksResponse pResponseStatus_ =
   DescribeStacksResponse'
-  { _desrsNextToken = Nothing
-  , _desrsStacks = Nothing
-  , _desrsResponseStatus = pResponseStatus_
-  }
+    { _desrsNextToken = Nothing
+    , _desrsStacks = Nothing
+    , _desrsResponseStatus = pResponseStatus_
+    }
 
 
 -- | The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.
 desrsNextToken :: Lens' DescribeStacksResponse (Maybe Text)
-desrsNextToken = lens _desrsNextToken (\ s a -> s{_desrsNextToken = a});
+desrsNextToken = lens _desrsNextToken (\ s a -> s{_desrsNextToken = a})
 
 -- | Information about the stacks.
 desrsStacks :: Lens' DescribeStacksResponse [Stack]
-desrsStacks = lens _desrsStacks (\ s a -> s{_desrsStacks = a}) . _Default . _Coerce;
+desrsStacks = lens _desrsStacks (\ s a -> s{_desrsStacks = a}) . _Default . _Coerce
 
 -- | -- | The response status code.
 desrsResponseStatus :: Lens' DescribeStacksResponse Int
-desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a});
+desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a})
 
 instance NFData DescribeStacksResponse where
diff --git a/gen/Network/AWS/AppStream/DisassociateFleet.hs b/gen/Network/AWS/AppStream/DisassociateFleet.hs
--- a/gen/Network/AWS/AppStream/DisassociateFleet.hs
+++ b/gen/Network/AWS/AppStream/DisassociateFleet.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DisassociateFleet
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -68,11 +68,11 @@
 
 -- | The name of the fleet.
 dfFleetName :: Lens' DisassociateFleet Text
-dfFleetName = lens _dfFleetName (\ s a -> s{_dfFleetName = a});
+dfFleetName = lens _dfFleetName (\ s a -> s{_dfFleetName = a})
 
 -- | The name of the stack.
 dfStackName :: Lens' DisassociateFleet Text
-dfStackName = lens _dfStackName (\ s a -> s{_dfStackName = a});
+dfStackName = lens _dfStackName (\ s a -> s{_dfStackName = a})
 
 instance AWSRequest DisassociateFleet where
         type Rs DisassociateFleet = DisassociateFleetResponse
@@ -129,6 +129,6 @@
 
 -- | -- | The response status code.
 drsResponseStatus :: Lens' DisassociateFleetResponse Int
-drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
+drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a})
 
 instance NFData DisassociateFleetResponse where
diff --git a/gen/Network/AWS/AppStream/ExpireSession.hs b/gen/Network/AWS/AppStream/ExpireSession.hs
--- a/gen/Network/AWS/AppStream/ExpireSession.hs
+++ b/gen/Network/AWS/AppStream/ExpireSession.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.ExpireSession
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -62,7 +62,7 @@
 
 -- | The ID of the streaming session.
 esSessionId :: Lens' ExpireSession Text
-esSessionId = lens _esSessionId (\ s a -> s{_esSessionId = a});
+esSessionId = lens _esSessionId (\ s a -> s{_esSessionId = a})
 
 instance AWSRequest ExpireSession where
         type Rs ExpireSession = ExpireSessionResponse
@@ -117,6 +117,6 @@
 
 -- | -- | The response status code.
 esrsResponseStatus :: Lens' ExpireSessionResponse Int
-esrsResponseStatus = lens _esrsResponseStatus (\ s a -> s{_esrsResponseStatus = a});
+esrsResponseStatus = lens _esrsResponseStatus (\ s a -> s{_esrsResponseStatus = a})
 
 instance NFData ExpireSessionResponse where
diff --git a/gen/Network/AWS/AppStream/ListAssociatedFleets.hs b/gen/Network/AWS/AppStream/ListAssociatedFleets.hs
--- a/gen/Network/AWS/AppStream/ListAssociatedFleets.hs
+++ b/gen/Network/AWS/AppStream/ListAssociatedFleets.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.ListAssociatedFleets
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -69,11 +69,11 @@
 
 -- | The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.
 lafNextToken :: Lens' ListAssociatedFleets (Maybe Text)
-lafNextToken = lens _lafNextToken (\ s a -> s{_lafNextToken = a});
+lafNextToken = lens _lafNextToken (\ s a -> s{_lafNextToken = a})
 
 -- | The name of the stack.
 lafStackName :: Lens' ListAssociatedFleets Text
-lafStackName = lens _lafStackName (\ s a -> s{_lafStackName = a});
+lafStackName = lens _lafStackName (\ s a -> s{_lafStackName = a})
 
 instance AWSRequest ListAssociatedFleets where
         type Rs ListAssociatedFleets =
@@ -135,22 +135,22 @@
     -> ListAssociatedFleetsResponse
 listAssociatedFleetsResponse pResponseStatus_ =
   ListAssociatedFleetsResponse'
-  { _lafrsNextToken = Nothing
-  , _lafrsNames = Nothing
-  , _lafrsResponseStatus = pResponseStatus_
-  }
+    { _lafrsNextToken = Nothing
+    , _lafrsNames = Nothing
+    , _lafrsResponseStatus = pResponseStatus_
+    }
 
 
 -- | The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.
 lafrsNextToken :: Lens' ListAssociatedFleetsResponse (Maybe Text)
-lafrsNextToken = lens _lafrsNextToken (\ s a -> s{_lafrsNextToken = a});
+lafrsNextToken = lens _lafrsNextToken (\ s a -> s{_lafrsNextToken = a})
 
 -- | The names of the fleets.
 lafrsNames :: Lens' ListAssociatedFleetsResponse [Text]
-lafrsNames = lens _lafrsNames (\ s a -> s{_lafrsNames = a}) . _Default . _Coerce;
+lafrsNames = lens _lafrsNames (\ s a -> s{_lafrsNames = a}) . _Default . _Coerce
 
 -- | -- | The response status code.
 lafrsResponseStatus :: Lens' ListAssociatedFleetsResponse Int
-lafrsResponseStatus = lens _lafrsResponseStatus (\ s a -> s{_lafrsResponseStatus = a});
+lafrsResponseStatus = lens _lafrsResponseStatus (\ s a -> s{_lafrsResponseStatus = a})
 
 instance NFData ListAssociatedFleetsResponse where
diff --git a/gen/Network/AWS/AppStream/ListAssociatedStacks.hs b/gen/Network/AWS/AppStream/ListAssociatedStacks.hs
--- a/gen/Network/AWS/AppStream/ListAssociatedStacks.hs
+++ b/gen/Network/AWS/AppStream/ListAssociatedStacks.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.ListAssociatedStacks
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -69,11 +69,11 @@
 
 -- | The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.
 lasNextToken :: Lens' ListAssociatedStacks (Maybe Text)
-lasNextToken = lens _lasNextToken (\ s a -> s{_lasNextToken = a});
+lasNextToken = lens _lasNextToken (\ s a -> s{_lasNextToken = a})
 
 -- | The name of the fleet.
 lasFleetName :: Lens' ListAssociatedStacks Text
-lasFleetName = lens _lasFleetName (\ s a -> s{_lasFleetName = a});
+lasFleetName = lens _lasFleetName (\ s a -> s{_lasFleetName = a})
 
 instance AWSRequest ListAssociatedStacks where
         type Rs ListAssociatedStacks =
@@ -135,22 +135,22 @@
     -> ListAssociatedStacksResponse
 listAssociatedStacksResponse pResponseStatus_ =
   ListAssociatedStacksResponse'
-  { _lasrsNextToken = Nothing
-  , _lasrsNames = Nothing
-  , _lasrsResponseStatus = pResponseStatus_
-  }
+    { _lasrsNextToken = Nothing
+    , _lasrsNames = Nothing
+    , _lasrsResponseStatus = pResponseStatus_
+    }
 
 
 -- | The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.
 lasrsNextToken :: Lens' ListAssociatedStacksResponse (Maybe Text)
-lasrsNextToken = lens _lasrsNextToken (\ s a -> s{_lasrsNextToken = a});
+lasrsNextToken = lens _lasrsNextToken (\ s a -> s{_lasrsNextToken = a})
 
 -- | The names of the stacks.
 lasrsNames :: Lens' ListAssociatedStacksResponse [Text]
-lasrsNames = lens _lasrsNames (\ s a -> s{_lasrsNames = a}) . _Default . _Coerce;
+lasrsNames = lens _lasrsNames (\ s a -> s{_lasrsNames = a}) . _Default . _Coerce
 
 -- | -- | The response status code.
 lasrsResponseStatus :: Lens' ListAssociatedStacksResponse Int
-lasrsResponseStatus = lens _lasrsResponseStatus (\ s a -> s{_lasrsResponseStatus = a});
+lasrsResponseStatus = lens _lasrsResponseStatus (\ s a -> s{_lasrsResponseStatus = a})
 
 instance NFData ListAssociatedStacksResponse where
diff --git a/gen/Network/AWS/AppStream/ListTagsForResource.hs b/gen/Network/AWS/AppStream/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/ListTagsForResource.hs
@@ -0,0 +1,137 @@
+{-# 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.AppStream.ListTagsForResource
+-- Copyright   : (c) 2013-2018 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the tags for the specified AppStream 2.0 resource. You can tag AppStream 2.0 image builders, images, fleets, and stacks.
+--
+--
+-- For more information about tags, see <http://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html Tagging Your Resources> in the /Amazon AppStream 2.0 Developer Guide/ .
+--
+module Network.AWS.AppStream.ListTagsForResource
+    (
+    -- * Creating a Request
+      listTagsForResource
+    , ListTagsForResource
+    -- * Request Lenses
+    , ltfrResourceARN
+
+    -- * Destructuring the Response
+    , listTagsForResourceResponse
+    , ListTagsForResourceResponse
+    -- * Response Lenses
+    , ltfrrsTags
+    , ltfrrsResponseStatus
+    ) where
+
+import Network.AWS.AppStream.Types
+import Network.AWS.AppStream.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+
+-- | /See:/ 'listTagsForResource' smart constructor.
+newtype ListTagsForResource = ListTagsForResource'
+  { _ltfrResourceARN :: Text
+  } 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' - The Amazon Resource Name (ARN) of the resource.
+listTagsForResource
+    :: Text -- ^ 'ltfrResourceARN'
+    -> ListTagsForResource
+listTagsForResource pResourceARN_ =
+  ListTagsForResource' {_ltfrResourceARN = pResourceARN_}
+
+
+-- | The Amazon Resource Name (ARN) of the resource.
+ltfrResourceARN :: Lens' ListTagsForResource Text
+ltfrResourceARN = lens _ltfrResourceARN (\ s a -> s{_ltfrResourceARN = a})
+
+instance AWSRequest ListTagsForResource where
+        type Rs ListTagsForResource =
+             ListTagsForResourceResponse
+        request = postJSON appStream
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListTagsForResourceResponse' <$>
+                   (x .?> "Tags" .!@ mempty) <*> (pure (fromEnum s)))
+
+instance Hashable ListTagsForResource where
+
+instance NFData ListTagsForResource where
+
+instance ToHeaders ListTagsForResource where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.ListTagsForResource" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListTagsForResource where
+        toJSON ListTagsForResource'{..}
+          = object
+              (catMaybes
+                 [Just ("ResourceArn" .= _ltfrResourceARN)])
+
+instance ToPath ListTagsForResource where
+        toPath = const "/"
+
+instance ToQuery ListTagsForResource where
+        toQuery = const mempty
+
+-- | /See:/ 'listTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { _ltfrrsTags           :: !(Maybe (Map Text Text))
+  , _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:
+--
+-- * 'ltfrrsTags' - The information about the tags.
+--
+-- * 'ltfrrsResponseStatus' - -- | The response status code.
+listTagsForResourceResponse
+    :: Int -- ^ 'ltfrrsResponseStatus'
+    -> ListTagsForResourceResponse
+listTagsForResourceResponse pResponseStatus_ =
+  ListTagsForResourceResponse'
+    {_ltfrrsTags = Nothing, _ltfrrsResponseStatus = pResponseStatus_}
+
+
+-- | The information about the tags.
+ltfrrsTags :: Lens' ListTagsForResourceResponse (HashMap Text Text)
+ltfrrsTags = lens _ltfrrsTags (\ s a -> s{_ltfrrsTags = a}) . _Default . _Map
+
+-- | -- | The response status code.
+ltfrrsResponseStatus :: Lens' ListTagsForResourceResponse Int
+ltfrrsResponseStatus = lens _ltfrrsResponseStatus (\ s a -> s{_ltfrrsResponseStatus = a})
+
+instance NFData ListTagsForResourceResponse where
diff --git a/gen/Network/AWS/AppStream/StartFleet.hs b/gen/Network/AWS/AppStream/StartFleet.hs
--- a/gen/Network/AWS/AppStream/StartFleet.hs
+++ b/gen/Network/AWS/AppStream/StartFleet.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.StartFleet
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -62,7 +62,7 @@
 
 -- | The name of the fleet.
 staName :: Lens' StartFleet Text
-staName = lens _staName (\ s a -> s{_staName = a});
+staName = lens _staName (\ s a -> s{_staName = a})
 
 instance AWSRequest StartFleet where
         type Rs StartFleet = StartFleetResponse
@@ -115,6 +115,6 @@
 
 -- | -- | The response status code.
 sfrsResponseStatus :: Lens' StartFleetResponse Int
-sfrsResponseStatus = lens _sfrsResponseStatus (\ s a -> s{_sfrsResponseStatus = a});
+sfrsResponseStatus = lens _sfrsResponseStatus (\ s a -> s{_sfrsResponseStatus = a})
 
 instance NFData StartFleetResponse where
diff --git a/gen/Network/AWS/AppStream/StartImageBuilder.hs b/gen/Network/AWS/AppStream/StartImageBuilder.hs
--- a/gen/Network/AWS/AppStream/StartImageBuilder.hs
+++ b/gen/Network/AWS/AppStream/StartImageBuilder.hs
@@ -12,19 +12,22 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.StartImageBuilder
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Undocumented operation.
+-- Starts the specified image builder.
+--
+--
 module Network.AWS.AppStream.StartImageBuilder
     (
     -- * Creating a Request
       startImageBuilder
     , StartImageBuilder
     -- * Request Lenses
+    , sibAppstreamAgentVersion
     , sibName
 
     -- * Destructuring the Response
@@ -43,8 +46,9 @@
 import Network.AWS.Response
 
 -- | /See:/ 'startImageBuilder' smart constructor.
-newtype StartImageBuilder = StartImageBuilder'
-  { _sibName :: Text
+data StartImageBuilder = StartImageBuilder'
+  { _sibAppstreamAgentVersion :: !(Maybe Text)
+  , _sibName                  :: !Text
   } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
 
@@ -52,16 +56,23 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sibName' - Undocumented member.
+-- * 'sibAppstreamAgentVersion' - The version of the AppStream 2.0 agent to use for this image builder. To use the latest version of the AppStream 2.0 agent, specify [LATEST].
+--
+-- * 'sibName' - The name of the image builder.
 startImageBuilder
     :: Text -- ^ 'sibName'
     -> StartImageBuilder
-startImageBuilder pName_ = StartImageBuilder' {_sibName = pName_}
+startImageBuilder pName_ =
+  StartImageBuilder' {_sibAppstreamAgentVersion = Nothing, _sibName = pName_}
 
 
--- | Undocumented member.
+-- | The version of the AppStream 2.0 agent to use for this image builder. To use the latest version of the AppStream 2.0 agent, specify [LATEST].
+sibAppstreamAgentVersion :: Lens' StartImageBuilder (Maybe Text)
+sibAppstreamAgentVersion = lens _sibAppstreamAgentVersion (\ s a -> s{_sibAppstreamAgentVersion = a})
+
+-- | The name of the image builder.
 sibName :: Lens' StartImageBuilder Text
-sibName = lens _sibName (\ s a -> s{_sibName = a});
+sibName = lens _sibName (\ s a -> s{_sibName = a})
 
 instance AWSRequest StartImageBuilder where
         type Rs StartImageBuilder = StartImageBuilderResponse
@@ -88,7 +99,11 @@
 
 instance ToJSON StartImageBuilder where
         toJSON StartImageBuilder'{..}
-          = object (catMaybes [Just ("Name" .= _sibName)])
+          = object
+              (catMaybes
+                 [("AppstreamAgentVersion" .=) <$>
+                    _sibAppstreamAgentVersion,
+                  Just ("Name" .= _sibName)])
 
 instance ToPath StartImageBuilder where
         toPath = const "/"
@@ -107,7 +122,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'srsImageBuilder' - Undocumented member.
+-- * 'srsImageBuilder' - Information about the image builder.
 --
 -- * 'srsResponseStatus' - -- | The response status code.
 startImageBuilderResponse
@@ -115,15 +130,15 @@
     -> StartImageBuilderResponse
 startImageBuilderResponse pResponseStatus_ =
   StartImageBuilderResponse'
-  {_srsImageBuilder = Nothing, _srsResponseStatus = pResponseStatus_}
+    {_srsImageBuilder = Nothing, _srsResponseStatus = pResponseStatus_}
 
 
--- | Undocumented member.
+-- | Information about the image builder.
 srsImageBuilder :: Lens' StartImageBuilderResponse (Maybe ImageBuilder)
-srsImageBuilder = lens _srsImageBuilder (\ s a -> s{_srsImageBuilder = a});
+srsImageBuilder = lens _srsImageBuilder (\ s a -> s{_srsImageBuilder = a})
 
 -- | -- | The response status code.
 srsResponseStatus :: Lens' StartImageBuilderResponse Int
-srsResponseStatus = lens _srsResponseStatus (\ s a -> s{_srsResponseStatus = a});
+srsResponseStatus = lens _srsResponseStatus (\ s a -> s{_srsResponseStatus = a})
 
 instance NFData StartImageBuilderResponse where
diff --git a/gen/Network/AWS/AppStream/StopFleet.hs b/gen/Network/AWS/AppStream/StopFleet.hs
--- a/gen/Network/AWS/AppStream/StopFleet.hs
+++ b/gen/Network/AWS/AppStream/StopFleet.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.StopFleet
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -62,7 +62,7 @@
 
 -- | The name of the fleet.
 sfName :: Lens' StopFleet Text
-sfName = lens _sfName (\ s a -> s{_sfName = a});
+sfName = lens _sfName (\ s a -> s{_sfName = a})
 
 instance AWSRequest StopFleet where
         type Rs StopFleet = StopFleetResponse
@@ -115,6 +115,6 @@
 
 -- | -- | The response status code.
 storsResponseStatus :: Lens' StopFleetResponse Int
-storsResponseStatus = lens _storsResponseStatus (\ s a -> s{_storsResponseStatus = a});
+storsResponseStatus = lens _storsResponseStatus (\ s a -> s{_storsResponseStatus = a})
 
 instance NFData StopFleetResponse where
diff --git a/gen/Network/AWS/AppStream/StopImageBuilder.hs b/gen/Network/AWS/AppStream/StopImageBuilder.hs
--- a/gen/Network/AWS/AppStream/StopImageBuilder.hs
+++ b/gen/Network/AWS/AppStream/StopImageBuilder.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.StopImageBuilder
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Undocumented operation.
+-- Stops the specified image builder.
+--
+--
 module Network.AWS.AppStream.StopImageBuilder
     (
     -- * Creating a Request
@@ -52,16 +54,16 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'stoName' - Undocumented member.
+-- * 'stoName' - The name of the image builder.
 stopImageBuilder
     :: Text -- ^ 'stoName'
     -> StopImageBuilder
 stopImageBuilder pName_ = StopImageBuilder' {_stoName = pName_}
 
 
--- | Undocumented member.
+-- | The name of the image builder.
 stoName :: Lens' StopImageBuilder Text
-stoName = lens _stoName (\ s a -> s{_stoName = a});
+stoName = lens _stoName (\ s a -> s{_stoName = a})
 
 instance AWSRequest StopImageBuilder where
         type Rs StopImageBuilder = StopImageBuilderResponse
@@ -107,7 +109,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sibrsImageBuilder' - Undocumented member.
+-- * 'sibrsImageBuilder' - Information about the image builder.
 --
 -- * 'sibrsResponseStatus' - -- | The response status code.
 stopImageBuilderResponse
@@ -115,15 +117,15 @@
     -> StopImageBuilderResponse
 stopImageBuilderResponse pResponseStatus_ =
   StopImageBuilderResponse'
-  {_sibrsImageBuilder = Nothing, _sibrsResponseStatus = pResponseStatus_}
+    {_sibrsImageBuilder = Nothing, _sibrsResponseStatus = pResponseStatus_}
 
 
--- | Undocumented member.
+-- | Information about the image builder.
 sibrsImageBuilder :: Lens' StopImageBuilderResponse (Maybe ImageBuilder)
-sibrsImageBuilder = lens _sibrsImageBuilder (\ s a -> s{_sibrsImageBuilder = a});
+sibrsImageBuilder = lens _sibrsImageBuilder (\ s a -> s{_sibrsImageBuilder = a})
 
 -- | -- | The response status code.
 sibrsResponseStatus :: Lens' StopImageBuilderResponse Int
-sibrsResponseStatus = lens _sibrsResponseStatus (\ s a -> s{_sibrsResponseStatus = a});
+sibrsResponseStatus = lens _sibrsResponseStatus (\ s a -> s{_sibrsResponseStatus = a})
 
 instance NFData StopImageBuilderResponse where
diff --git a/gen/Network/AWS/AppStream/TagResource.hs b/gen/Network/AWS/AppStream/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/TagResource.hs
@@ -0,0 +1,139 @@
+{-# 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.AppStream.TagResource
+-- Copyright   : (c) 2013-2018 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds or overwrites one or more tags for the specified AppStream 2.0 resource. You can tag AppStream 2.0 image builders, images, fleets, and stacks.
+--
+--
+-- Each tag consists of a key and an optional value. If a resource already has a tag with the same key, this operation updates its value.
+--
+-- To list the current tags for your resources, use 'ListTagsForResource' . To disassociate tags from your resources, use 'UntagResource' .
+--
+-- For more information about tags, see <http://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html Tagging Your Resources> in the /Amazon AppStream 2.0 Developer Guide/ .
+--
+module Network.AWS.AppStream.TagResource
+    (
+    -- * Creating a Request
+      tagResource
+    , TagResource
+    -- * Request Lenses
+    , trResourceARN
+    , trTags
+
+    -- * Destructuring the Response
+    , tagResourceResponse
+    , TagResourceResponse
+    -- * Response Lenses
+    , trrsResponseStatus
+    ) where
+
+import Network.AWS.AppStream.Types
+import Network.AWS.AppStream.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+
+-- | /See:/ 'tagResource' smart constructor.
+data TagResource = TagResource'
+  { _trResourceARN :: !Text
+  , _trTags        :: !(Map Text Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TagResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trResourceARN' - The Amazon Resource Name (ARN) of the resource.
+--
+-- * 'trTags' - The tags to associate. A tag is a key-value pair (the value is optional). For example, @Environment=Test@ , or, if you do not specify a value, @Environment=@ .  If you do not specify a value, we set the value to an empty string.
+tagResource
+    :: Text -- ^ 'trResourceARN'
+    -> TagResource
+tagResource pResourceARN_ =
+  TagResource' {_trResourceARN = pResourceARN_, _trTags = mempty}
+
+
+-- | The Amazon Resource Name (ARN) of the resource.
+trResourceARN :: Lens' TagResource Text
+trResourceARN = lens _trResourceARN (\ s a -> s{_trResourceARN = a})
+
+-- | The tags to associate. A tag is a key-value pair (the value is optional). For example, @Environment=Test@ , or, if you do not specify a value, @Environment=@ .  If you do not specify a value, we set the value to an empty string.
+trTags :: Lens' TagResource (HashMap Text Text)
+trTags = lens _trTags (\ s a -> s{_trTags = a}) . _Map
+
+instance AWSRequest TagResource where
+        type Rs TagResource = TagResourceResponse
+        request = postJSON appStream
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 TagResourceResponse' <$> (pure (fromEnum s)))
+
+instance Hashable TagResource where
+
+instance NFData TagResource where
+
+instance ToHeaders TagResource where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.TagResource" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON TagResource where
+        toJSON TagResource'{..}
+          = object
+              (catMaybes
+                 [Just ("ResourceArn" .= _trResourceARN),
+                  Just ("Tags" .= _trTags)])
+
+instance ToPath TagResource where
+        toPath = const "/"
+
+instance ToQuery TagResource where
+        toQuery = const mempty
+
+-- | /See:/ 'tagResourceResponse' smart constructor.
+newtype TagResourceResponse = TagResourceResponse'
+  { _trrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TagResourceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trrsResponseStatus' - -- | The response status code.
+tagResourceResponse
+    :: Int -- ^ 'trrsResponseStatus'
+    -> TagResourceResponse
+tagResourceResponse pResponseStatus_ =
+  TagResourceResponse' {_trrsResponseStatus = pResponseStatus_}
+
+
+-- | -- | The response status code.
+trrsResponseStatus :: Lens' TagResourceResponse Int
+trrsResponseStatus = lens _trrsResponseStatus (\ s a -> s{_trrsResponseStatus = a})
+
+instance NFData TagResourceResponse where
diff --git a/gen/Network/AWS/AppStream/Types.hs b/gen/Network/AWS/AppStream/Types.hs
--- a/gen/Network/AWS/AppStream/Types.hs
+++ b/gen/Network/AWS/AppStream/Types.hs
@@ -4,7 +4,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.Types
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -21,6 +21,7 @@
     , _IncompatibleImageException
     , _ConcurrentModificationException
     , _OperationNotPermittedException
+    , _InvalidAccountStatusException
     , _ResourceNotFoundException
     , _InvalidParameterCombinationException
     , _ResourceNotAvailableException
@@ -60,6 +61,9 @@
     -- * SessionState
     , SessionState (..)
 
+    -- * StackAttribute
+    , StackAttribute (..)
+
     -- * StackErrorCode
     , StackErrorCode (..)
 
@@ -147,6 +151,7 @@
     , iBaseImageARN
     , iDisplayName
     , iDescription
+    , iAppstreamAgentVersion
     , iApplications
     , iName
 
@@ -166,6 +171,7 @@
     , ibDisplayName
     , ibEnableDefaultInternetAccess
     , ibDescription
+    , ibAppstreamAgentVersion
     , ibName
 
     -- * ImageBuilderStateChangeReason
@@ -206,12 +212,14 @@
     -- * Stack
     , Stack
     , stack
+    , sFeedbackURL
     , sARN
     , sCreatedTime
     , sStorageConnectors
     , sDisplayName
     , sStackErrors
     , sDescription
+    , sRedirectURL
     , sName
 
     -- * StackError
@@ -243,24 +251,24 @@
 appStream :: Service
 appStream =
   Service
-  { _svcAbbrev = "AppStream"
-  , _svcSigner = v4
-  , _svcPrefix = "appstream2"
-  , _svcVersion = "2016-12-01"
-  , _svcEndpoint = defaultEndpoint appStream
-  , _svcTimeout = Just 70
-  , _svcCheck = statusSuccess
-  , _svcError = parseJSONError "AppStream"
-  , _svcRetry = retry
-  }
+    { _svcAbbrev = "AppStream"
+    , _svcSigner = v4
+    , _svcPrefix = "appstream2"
+    , _svcVersion = "2016-12-01"
+    , _svcEndpoint = defaultEndpoint appStream
+    , _svcTimeout = Just 70
+    , _svcCheck = statusSuccess
+    , _svcError = parseJSONError "AppStream"
+    , _svcRetry = retry
+    }
   where
     retry =
       Exponential
-      { _retryBase = 5.0e-2
-      , _retryGrowth = 2
-      , _retryAttempts = 5
-      , _retryCheck = check
-      }
+        { _retryBase = 5.0e-2
+        , _retryGrowth = 2
+        , _retryAttempts = 5
+        , _retryCheck = check
+        }
     check e
       | has (hasCode "ThrottledException" . hasStatus 400) e =
         Just "throttled_exception"
@@ -269,6 +277,8 @@
         Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
       | has (hasStatus 504) e = Just "gateway_timeout"
+      | has (hasCode "RequestThrottledException" . hasStatus 400) e =
+        Just "request_throttled_exception"
       | has (hasStatus 502) e = Just "bad_gateway"
       | has (hasStatus 503) e = Just "service_unavailable"
       | has (hasStatus 500) e = Just "general_server_error"
@@ -313,6 +323,14 @@
 _OperationNotPermittedException :: AsError a => Getting (First ServiceError) a ServiceError
 _OperationNotPermittedException =
   _MatchServiceError appStream "OperationNotPermittedException"
+
+
+-- | The resource cannot be created because your AWS account is suspended. For assistance, contact AWS Support.
+--
+--
+_InvalidAccountStatusException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidAccountStatusException =
+  _MatchServiceError appStream "InvalidAccountStatusException"
 
 
 -- | The specified resource was not found.
diff --git a/gen/Network/AWS/AppStream/Types/Product.hs b/gen/Network/AWS/AppStream/Types/Product.hs
--- a/gen/Network/AWS/AppStream/Types/Product.hs
+++ b/gen/Network/AWS/AppStream/Types/Product.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.Types.Product
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -49,7 +49,7 @@
 --
 -- * 'aName' - The name of the application.
 --
--- * 'aDisplayName' - The application name displayed to end users.
+-- * 'aDisplayName' - The application name for display.
 --
 -- * 'aMetadata' - Additional attributes that describe the application.
 --
@@ -58,43 +58,43 @@
     :: Application
 application =
   Application'
-  { _aEnabled = Nothing
-  , _aLaunchPath = Nothing
-  , _aLaunchParameters = Nothing
-  , _aName = Nothing
-  , _aDisplayName = Nothing
-  , _aMetadata = Nothing
-  , _aIconURL = Nothing
-  }
+    { _aEnabled = Nothing
+    , _aLaunchPath = Nothing
+    , _aLaunchParameters = Nothing
+    , _aName = Nothing
+    , _aDisplayName = Nothing
+    , _aMetadata = Nothing
+    , _aIconURL = Nothing
+    }
 
 
 -- | If there is a problem, the application can be disabled after image creation.
 aEnabled :: Lens' Application (Maybe Bool)
-aEnabled = lens _aEnabled (\ s a -> s{_aEnabled = a});
+aEnabled = lens _aEnabled (\ s a -> s{_aEnabled = a})
 
 -- | The path to the application executable in the instance.
 aLaunchPath :: Lens' Application (Maybe Text)
-aLaunchPath = lens _aLaunchPath (\ s a -> s{_aLaunchPath = a});
+aLaunchPath = lens _aLaunchPath (\ s a -> s{_aLaunchPath = a})
 
 -- | The arguments that are passed to the application at launch.
 aLaunchParameters :: Lens' Application (Maybe Text)
-aLaunchParameters = lens _aLaunchParameters (\ s a -> s{_aLaunchParameters = a});
+aLaunchParameters = lens _aLaunchParameters (\ s a -> s{_aLaunchParameters = a})
 
 -- | The name of the application.
 aName :: Lens' Application (Maybe Text)
-aName = lens _aName (\ s a -> s{_aName = a});
+aName = lens _aName (\ s a -> s{_aName = a})
 
--- | The application name displayed to end users.
+-- | The application name for display.
 aDisplayName :: Lens' Application (Maybe Text)
-aDisplayName = lens _aDisplayName (\ s a -> s{_aDisplayName = a});
+aDisplayName = lens _aDisplayName (\ s a -> s{_aDisplayName = a})
 
 -- | Additional attributes that describe the application.
 aMetadata :: Lens' Application (HashMap Text Text)
-aMetadata = lens _aMetadata (\ s a -> s{_aMetadata = a}) . _Default . _Map;
+aMetadata = lens _aMetadata (\ s a -> s{_aMetadata = a}) . _Default . _Map
 
 -- | The URL for the application icon. This URL might be time-limited.
 aIconURL :: Lens' Application (Maybe Text)
-aIconURL = lens _aIconURL (\ s a -> s{_aIconURL = a});
+aIconURL = lens _aIconURL (\ s a -> s{_aIconURL = a})
 
 instance FromJSON Application where
         parseJSON
@@ -136,7 +136,7 @@
 
 -- | The desired number of streaming instances.
 ccDesiredInstances :: Lens' ComputeCapacity Int
-ccDesiredInstances = lens _ccDesiredInstances (\ s a -> s{_ccDesiredInstances = a});
+ccDesiredInstances = lens _ccDesiredInstances (\ s a -> s{_ccDesiredInstances = a})
 
 instance Hashable ComputeCapacity where
 
@@ -177,28 +177,28 @@
     -> ComputeCapacityStatus
 computeCapacityStatus pDesired_ =
   ComputeCapacityStatus'
-  { _ccsInUse = Nothing
-  , _ccsRunning = Nothing
-  , _ccsAvailable = Nothing
-  , _ccsDesired = pDesired_
-  }
+    { _ccsInUse = Nothing
+    , _ccsRunning = Nothing
+    , _ccsAvailable = Nothing
+    , _ccsDesired = pDesired_
+    }
 
 
 -- | The number of instances in use for streaming.
 ccsInUse :: Lens' ComputeCapacityStatus (Maybe Int)
-ccsInUse = lens _ccsInUse (\ s a -> s{_ccsInUse = a});
+ccsInUse = lens _ccsInUse (\ s a -> s{_ccsInUse = a})
 
 -- | The total number of simultaneous streaming instances that are running.
 ccsRunning :: Lens' ComputeCapacityStatus (Maybe Int)
-ccsRunning = lens _ccsRunning (\ s a -> s{_ccsRunning = a});
+ccsRunning = lens _ccsRunning (\ s a -> s{_ccsRunning = a})
 
 -- | The number of currently available instances that can be used to stream sessions.
 ccsAvailable :: Lens' ComputeCapacityStatus (Maybe Int)
-ccsAvailable = lens _ccsAvailable (\ s a -> s{_ccsAvailable = a});
+ccsAvailable = lens _ccsAvailable (\ s a -> s{_ccsAvailable = a})
 
 -- | The desired number of streaming instances.
 ccsDesired :: Lens' ComputeCapacityStatus Int
-ccsDesired = lens _ccsDesired (\ s a -> s{_ccsDesired = a});
+ccsDesired = lens _ccsDesired (\ s a -> s{_ccsDesired = a})
 
 instance FromJSON ComputeCapacityStatus where
         parseJSON
@@ -242,28 +242,28 @@
     -> DirectoryConfig
 directoryConfig pDirectoryName_ =
   DirectoryConfig'
-  { _dcCreatedTime = Nothing
-  , _dcServiceAccountCredentials = Nothing
-  , _dcOrganizationalUnitDistinguishedNames = Nothing
-  , _dcDirectoryName = pDirectoryName_
-  }
+    { _dcCreatedTime = Nothing
+    , _dcServiceAccountCredentials = Nothing
+    , _dcOrganizationalUnitDistinguishedNames = Nothing
+    , _dcDirectoryName = pDirectoryName_
+    }
 
 
 -- | The time the directory configuration was created.
 dcCreatedTime :: Lens' DirectoryConfig (Maybe UTCTime)
-dcCreatedTime = lens _dcCreatedTime (\ s a -> s{_dcCreatedTime = a}) . mapping _Time;
+dcCreatedTime = lens _dcCreatedTime (\ s a -> s{_dcCreatedTime = a}) . mapping _Time
 
 -- | The credentials for the service account used by the streaming instance to connect to the directory.
 dcServiceAccountCredentials :: Lens' DirectoryConfig (Maybe ServiceAccountCredentials)
-dcServiceAccountCredentials = lens _dcServiceAccountCredentials (\ s a -> s{_dcServiceAccountCredentials = a});
+dcServiceAccountCredentials = lens _dcServiceAccountCredentials (\ s a -> s{_dcServiceAccountCredentials = a})
 
 -- | The distinguished names of the organizational units for computer accounts.
 dcOrganizationalUnitDistinguishedNames :: Lens' DirectoryConfig [Text]
-dcOrganizationalUnitDistinguishedNames = lens _dcOrganizationalUnitDistinguishedNames (\ s a -> s{_dcOrganizationalUnitDistinguishedNames = a}) . _Default . _Coerce;
+dcOrganizationalUnitDistinguishedNames = lens _dcOrganizationalUnitDistinguishedNames (\ s a -> s{_dcOrganizationalUnitDistinguishedNames = a}) . _Default . _Coerce
 
 -- | The fully qualified name of the directory (for example, corp.example.com).
 dcDirectoryName :: Lens' DirectoryConfig Text
-dcDirectoryName = lens _dcDirectoryName (\ s a -> s{_dcDirectoryName = a});
+dcDirectoryName = lens _dcDirectoryName (\ s a -> s{_dcDirectoryName = a})
 
 instance FromJSON DirectoryConfig where
         parseJSON
@@ -281,7 +281,7 @@
 
 instance NFData DirectoryConfig where
 
--- | Contains the information needed for streaming instances to join a domain.
+-- | Contains the information needed to join a Microsoft Active Directory domain.
 --
 --
 --
@@ -303,18 +303,18 @@
     :: DomainJoinInfo
 domainJoinInfo =
   DomainJoinInfo'
-  { _djiOrganizationalUnitDistinguishedName = Nothing
-  , _djiDirectoryName = Nothing
-  }
+    { _djiOrganizationalUnitDistinguishedName = Nothing
+    , _djiDirectoryName = Nothing
+    }
 
 
 -- | The distinguished name of the organizational unit for computer accounts.
 djiOrganizationalUnitDistinguishedName :: Lens' DomainJoinInfo (Maybe Text)
-djiOrganizationalUnitDistinguishedName = lens _djiOrganizationalUnitDistinguishedName (\ s a -> s{_djiOrganizationalUnitDistinguishedName = a});
+djiOrganizationalUnitDistinguishedName = lens _djiOrganizationalUnitDistinguishedName (\ s a -> s{_djiOrganizationalUnitDistinguishedName = a})
 
 -- | The fully qualified name of the directory (for example, corp.example.com).
 djiDirectoryName :: Lens' DomainJoinInfo (Maybe Text)
-djiDirectoryName = lens _djiDirectoryName (\ s a -> s{_djiDirectoryName = a});
+djiDirectoryName = lens _djiDirectoryName (\ s a -> s{_djiDirectoryName = a})
 
 instance FromJSON DomainJoinInfo where
         parseJSON
@@ -365,7 +365,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'fDomainJoinInfo' - The information needed for streaming instances to join a domain.
+-- * 'fDomainJoinInfo' - The information needed to join a Microsoft Active Directory domain.
 --
 -- * 'fDisconnectTimeoutInSeconds' - The time after disconnection when a session is considered to have ended, in seconds. If a user who was disconnected reconnects within this time interval, the user is connected to their previous session. Specify a value between 60 and 57600.
 --
@@ -373,23 +373,23 @@
 --
 -- * 'fCreatedTime' - The time the fleet was created.
 --
--- * 'fFleetType' - Undocumented member.
+-- * 'fFleetType' - The fleet type.     * ALWAYS_ON    * Provides users with instant-on access to their apps. You are charged for all running instances in your fleet, even if no users are streaming apps.     * ON_DEMAND    * Provide users with access to applications after they connect, which takes one to two minutes. You are charged for instance streaming when users are connected and a small hourly fee for instances that are not streaming apps.
 --
 -- * 'fVPCConfig' - The VPC configuration for the fleet.
 --
 -- * 'fFleetErrors' - The fleet errors.
 --
--- * 'fDisplayName' - The fleet name displayed to end users.
+-- * 'fDisplayName' - The fleet name for display.
 --
 -- * 'fEnableDefaultInternetAccess' - Indicates whether default internet access is enabled for the fleet.
 --
--- * 'fDescription' - The description displayed to end users.
+-- * 'fDescription' - The description for display.
 --
 -- * 'fARN' - The ARN for the fleet.
 --
 -- * 'fName' - The name of the fleet.
 --
--- * 'fImageName' - The image used by the fleet.
+-- * 'fImageName' - The name of the image used to create the fleet.
 --
 -- * 'fInstanceType' - The instance type to use when launching fleet instances.
 --
@@ -406,88 +406,88 @@
     -> Fleet
 fleet pARN_ pName_ pImageName_ pInstanceType_ pComputeCapacityStatus_ pState_ =
   Fleet'
-  { _fDomainJoinInfo = Nothing
-  , _fDisconnectTimeoutInSeconds = Nothing
-  , _fMaxUserDurationInSeconds = Nothing
-  , _fCreatedTime = Nothing
-  , _fFleetType = Nothing
-  , _fVPCConfig = Nothing
-  , _fFleetErrors = Nothing
-  , _fDisplayName = Nothing
-  , _fEnableDefaultInternetAccess = Nothing
-  , _fDescription = Nothing
-  , _fARN = pARN_
-  , _fName = pName_
-  , _fImageName = pImageName_
-  , _fInstanceType = pInstanceType_
-  , _fComputeCapacityStatus = pComputeCapacityStatus_
-  , _fState = pState_
-  }
+    { _fDomainJoinInfo = Nothing
+    , _fDisconnectTimeoutInSeconds = Nothing
+    , _fMaxUserDurationInSeconds = Nothing
+    , _fCreatedTime = Nothing
+    , _fFleetType = Nothing
+    , _fVPCConfig = Nothing
+    , _fFleetErrors = Nothing
+    , _fDisplayName = Nothing
+    , _fEnableDefaultInternetAccess = Nothing
+    , _fDescription = Nothing
+    , _fARN = pARN_
+    , _fName = pName_
+    , _fImageName = pImageName_
+    , _fInstanceType = pInstanceType_
+    , _fComputeCapacityStatus = pComputeCapacityStatus_
+    , _fState = pState_
+    }
 
 
--- | The information needed for streaming instances to join a domain.
+-- | The information needed to join a Microsoft Active Directory domain.
 fDomainJoinInfo :: Lens' Fleet (Maybe DomainJoinInfo)
-fDomainJoinInfo = lens _fDomainJoinInfo (\ s a -> s{_fDomainJoinInfo = a});
+fDomainJoinInfo = lens _fDomainJoinInfo (\ s a -> s{_fDomainJoinInfo = a})
 
 -- | The time after disconnection when a session is considered to have ended, in seconds. If a user who was disconnected reconnects within this time interval, the user is connected to their previous session. Specify a value between 60 and 57600.
 fDisconnectTimeoutInSeconds :: Lens' Fleet (Maybe Int)
-fDisconnectTimeoutInSeconds = lens _fDisconnectTimeoutInSeconds (\ s a -> s{_fDisconnectTimeoutInSeconds = a});
+fDisconnectTimeoutInSeconds = lens _fDisconnectTimeoutInSeconds (\ s a -> s{_fDisconnectTimeoutInSeconds = a})
 
 -- | The maximum time that a streaming session can run, in seconds. Specify a value between 600 and 57600.
 fMaxUserDurationInSeconds :: Lens' Fleet (Maybe Int)
-fMaxUserDurationInSeconds = lens _fMaxUserDurationInSeconds (\ s a -> s{_fMaxUserDurationInSeconds = a});
+fMaxUserDurationInSeconds = lens _fMaxUserDurationInSeconds (\ s a -> s{_fMaxUserDurationInSeconds = a})
 
 -- | The time the fleet was created.
 fCreatedTime :: Lens' Fleet (Maybe UTCTime)
-fCreatedTime = lens _fCreatedTime (\ s a -> s{_fCreatedTime = a}) . mapping _Time;
+fCreatedTime = lens _fCreatedTime (\ s a -> s{_fCreatedTime = a}) . mapping _Time
 
--- | Undocumented member.
+-- | The fleet type.     * ALWAYS_ON    * Provides users with instant-on access to their apps. You are charged for all running instances in your fleet, even if no users are streaming apps.     * ON_DEMAND    * Provide users with access to applications after they connect, which takes one to two minutes. You are charged for instance streaming when users are connected and a small hourly fee for instances that are not streaming apps.
 fFleetType :: Lens' Fleet (Maybe FleetType)
-fFleetType = lens _fFleetType (\ s a -> s{_fFleetType = a});
+fFleetType = lens _fFleetType (\ s a -> s{_fFleetType = a})
 
 -- | The VPC configuration for the fleet.
 fVPCConfig :: Lens' Fleet (Maybe VPCConfig)
-fVPCConfig = lens _fVPCConfig (\ s a -> s{_fVPCConfig = a});
+fVPCConfig = lens _fVPCConfig (\ s a -> s{_fVPCConfig = a})
 
 -- | The fleet errors.
 fFleetErrors :: Lens' Fleet [FleetError]
-fFleetErrors = lens _fFleetErrors (\ s a -> s{_fFleetErrors = a}) . _Default . _Coerce;
+fFleetErrors = lens _fFleetErrors (\ s a -> s{_fFleetErrors = a}) . _Default . _Coerce
 
--- | The fleet name displayed to end users.
+-- | The fleet name for display.
 fDisplayName :: Lens' Fleet (Maybe Text)
-fDisplayName = lens _fDisplayName (\ s a -> s{_fDisplayName = a});
+fDisplayName = lens _fDisplayName (\ s a -> s{_fDisplayName = a})
 
 -- | Indicates whether default internet access is enabled for the fleet.
 fEnableDefaultInternetAccess :: Lens' Fleet (Maybe Bool)
-fEnableDefaultInternetAccess = lens _fEnableDefaultInternetAccess (\ s a -> s{_fEnableDefaultInternetAccess = a});
+fEnableDefaultInternetAccess = lens _fEnableDefaultInternetAccess (\ s a -> s{_fEnableDefaultInternetAccess = a})
 
--- | The description displayed to end users.
+-- | The description for display.
 fDescription :: Lens' Fleet (Maybe Text)
-fDescription = lens _fDescription (\ s a -> s{_fDescription = a});
+fDescription = lens _fDescription (\ s a -> s{_fDescription = a})
 
 -- | The ARN for the fleet.
 fARN :: Lens' Fleet Text
-fARN = lens _fARN (\ s a -> s{_fARN = a});
+fARN = lens _fARN (\ s a -> s{_fARN = a})
 
 -- | The name of the fleet.
 fName :: Lens' Fleet Text
-fName = lens _fName (\ s a -> s{_fName = a});
+fName = lens _fName (\ s a -> s{_fName = a})
 
--- | The image used by the fleet.
+-- | The name of the image used to create the fleet.
 fImageName :: Lens' Fleet Text
-fImageName = lens _fImageName (\ s a -> s{_fImageName = a});
+fImageName = lens _fImageName (\ s a -> s{_fImageName = a})
 
 -- | The instance type to use when launching fleet instances.
 fInstanceType :: Lens' Fleet Text
-fInstanceType = lens _fInstanceType (\ s a -> s{_fInstanceType = a});
+fInstanceType = lens _fInstanceType (\ s a -> s{_fInstanceType = a})
 
 -- | The capacity status for the fleet.
 fComputeCapacityStatus :: Lens' Fleet ComputeCapacityStatus
-fComputeCapacityStatus = lens _fComputeCapacityStatus (\ s a -> s{_fComputeCapacityStatus = a});
+fComputeCapacityStatus = lens _fComputeCapacityStatus (\ s a -> s{_fComputeCapacityStatus = a})
 
 -- | The current state for the fleet.
 fState :: Lens' Fleet FleetState
-fState = lens _fState (\ s a -> s{_fState = a});
+fState = lens _fState (\ s a -> s{_fState = a})
 
 instance FromJSON Fleet where
         parseJSON
@@ -540,11 +540,11 @@
 
 -- | The error code.
 feErrorCode :: Lens' FleetError (Maybe FleetErrorCode)
-feErrorCode = lens _feErrorCode (\ s a -> s{_feErrorCode = a});
+feErrorCode = lens _feErrorCode (\ s a -> s{_feErrorCode = a})
 
 -- | The error message.
 feErrorMessage :: Lens' FleetError (Maybe Text)
-feErrorMessage = lens _feErrorMessage (\ s a -> s{_feErrorMessage = a});
+feErrorMessage = lens _feErrorMessage (\ s a -> s{_feErrorMessage = a})
 
 instance FromJSON FleetError where
         parseJSON
@@ -574,6 +574,7 @@
   , _iBaseImageARN                :: !(Maybe Text)
   , _iDisplayName                 :: !(Maybe Text)
   , _iDescription                 :: !(Maybe Text)
+  , _iAppstreamAgentVersion       :: !(Maybe Text)
   , _iApplications                :: !(Maybe [Application])
   , _iName                        :: !Text
   } deriving (Eq, Read, Show, Data, Typeable, Generic)
@@ -601,10 +602,12 @@
 --
 -- * 'iBaseImageARN' - The ARN of the image from which this image was created.
 --
--- * 'iDisplayName' - The image name displayed to end users.
+-- * 'iDisplayName' - The image name for display.
 --
--- * 'iDescription' - The description displayed to end users.
+-- * 'iDescription' - The description for display.
 --
+-- * 'iAppstreamAgentVersion' - The version of the AppStream 2.0 agent to use for instances that are launched from this image.
+--
 -- * 'iApplications' - The applications associated with the image.
 --
 -- * 'iName' - The name of the image.
@@ -613,73 +616,78 @@
     -> Image
 image pName_ =
   Image'
-  { _iState = Nothing
-  , _iPlatform = Nothing
-  , _iPublicBaseImageReleasedDate = Nothing
-  , _iStateChangeReason = Nothing
-  , _iARN = Nothing
-  , _iCreatedTime = Nothing
-  , _iImageBuilderSupported = Nothing
-  , _iVisibility = Nothing
-  , _iBaseImageARN = Nothing
-  , _iDisplayName = Nothing
-  , _iDescription = Nothing
-  , _iApplications = Nothing
-  , _iName = pName_
-  }
+    { _iState = Nothing
+    , _iPlatform = Nothing
+    , _iPublicBaseImageReleasedDate = Nothing
+    , _iStateChangeReason = Nothing
+    , _iARN = Nothing
+    , _iCreatedTime = Nothing
+    , _iImageBuilderSupported = Nothing
+    , _iVisibility = Nothing
+    , _iBaseImageARN = Nothing
+    , _iDisplayName = Nothing
+    , _iDescription = Nothing
+    , _iAppstreamAgentVersion = Nothing
+    , _iApplications = Nothing
+    , _iName = pName_
+    }
 
 
 -- | The image starts in the @PENDING@ state. If image creation succeeds, the state is @AVAILABLE@ . If image creation fails, the state is @FAILED@ .
 iState :: Lens' Image (Maybe ImageState)
-iState = lens _iState (\ s a -> s{_iState = a});
+iState = lens _iState (\ s a -> s{_iState = a})
 
 -- | The operating system platform of the image.
 iPlatform :: Lens' Image (Maybe PlatformType)
-iPlatform = lens _iPlatform (\ s a -> s{_iPlatform = a});
+iPlatform = lens _iPlatform (\ s a -> s{_iPlatform = a})
 
 -- | The release date of the public base image. For private images, this date is the release date of the base image from which the image was created.
 iPublicBaseImageReleasedDate :: Lens' Image (Maybe UTCTime)
-iPublicBaseImageReleasedDate = lens _iPublicBaseImageReleasedDate (\ s a -> s{_iPublicBaseImageReleasedDate = a}) . mapping _Time;
+iPublicBaseImageReleasedDate = lens _iPublicBaseImageReleasedDate (\ s a -> s{_iPublicBaseImageReleasedDate = a}) . mapping _Time
 
 -- | The reason why the last state change occurred.
 iStateChangeReason :: Lens' Image (Maybe ImageStateChangeReason)
-iStateChangeReason = lens _iStateChangeReason (\ s a -> s{_iStateChangeReason = a});
+iStateChangeReason = lens _iStateChangeReason (\ s a -> s{_iStateChangeReason = a})
 
 -- | The ARN of the image.
 iARN :: Lens' Image (Maybe Text)
-iARN = lens _iARN (\ s a -> s{_iARN = a});
+iARN = lens _iARN (\ s a -> s{_iARN = a})
 
 -- | The time the image was created.
 iCreatedTime :: Lens' Image (Maybe UTCTime)
-iCreatedTime = lens _iCreatedTime (\ s a -> s{_iCreatedTime = a}) . mapping _Time;
+iCreatedTime = lens _iCreatedTime (\ s a -> s{_iCreatedTime = a}) . mapping _Time
 
 -- | Indicates whether an image builder can be launched from this image.
 iImageBuilderSupported :: Lens' Image (Maybe Bool)
-iImageBuilderSupported = lens _iImageBuilderSupported (\ s a -> s{_iImageBuilderSupported = a});
+iImageBuilderSupported = lens _iImageBuilderSupported (\ s a -> s{_iImageBuilderSupported = a})
 
 -- | Indicates whether the image is public or private.
 iVisibility :: Lens' Image (Maybe VisibilityType)
-iVisibility = lens _iVisibility (\ s a -> s{_iVisibility = a});
+iVisibility = lens _iVisibility (\ s a -> s{_iVisibility = a})
 
 -- | The ARN of the image from which this image was created.
 iBaseImageARN :: Lens' Image (Maybe Text)
-iBaseImageARN = lens _iBaseImageARN (\ s a -> s{_iBaseImageARN = a});
+iBaseImageARN = lens _iBaseImageARN (\ s a -> s{_iBaseImageARN = a})
 
--- | The image name displayed to end users.
+-- | The image name for display.
 iDisplayName :: Lens' Image (Maybe Text)
-iDisplayName = lens _iDisplayName (\ s a -> s{_iDisplayName = a});
+iDisplayName = lens _iDisplayName (\ s a -> s{_iDisplayName = a})
 
--- | The description displayed to end users.
+-- | The description for display.
 iDescription :: Lens' Image (Maybe Text)
-iDescription = lens _iDescription (\ s a -> s{_iDescription = a});
+iDescription = lens _iDescription (\ s a -> s{_iDescription = a})
 
+-- | The version of the AppStream 2.0 agent to use for instances that are launched from this image.
+iAppstreamAgentVersion :: Lens' Image (Maybe Text)
+iAppstreamAgentVersion = lens _iAppstreamAgentVersion (\ s a -> s{_iAppstreamAgentVersion = a})
+
 -- | The applications associated with the image.
 iApplications :: Lens' Image [Application]
-iApplications = lens _iApplications (\ s a -> s{_iApplications = a}) . _Default . _Coerce;
+iApplications = lens _iApplications (\ s a -> s{_iApplications = a}) . _Default . _Coerce
 
 -- | The name of the image.
 iName :: Lens' Image Text
-iName = lens _iName (\ s a -> s{_iName = a});
+iName = lens _iName (\ s a -> s{_iName = a})
 
 instance FromJSON Image where
         parseJSON
@@ -696,6 +704,7 @@
                      <*> (x .:? "BaseImageArn")
                      <*> (x .:? "DisplayName")
                      <*> (x .:? "Description")
+                     <*> (x .:? "AppstreamAgentVersion")
                      <*> (x .:? "Applications" .!= mempty)
                      <*> (x .: "Name"))
 
@@ -703,7 +712,11 @@
 
 instance NFData Image where
 
--- | /See:/ 'imageBuilder' smart constructor.
+-- | Describes a streaming instance used for editing an image. New images are created from a snapshot through an image builder.
+--
+--
+--
+-- /See:/ 'imageBuilder' smart constructor.
 data ImageBuilder = ImageBuilder'
   { _ibDomainJoinInfo              :: !(Maybe DomainJoinInfo)
   , _ibState                       :: !(Maybe ImageBuilderState)
@@ -718,6 +731,7 @@
   , _ibDisplayName                 :: !(Maybe Text)
   , _ibEnableDefaultInternetAccess :: !(Maybe Bool)
   , _ibDescription                 :: !(Maybe Text)
+  , _ibAppstreamAgentVersion       :: !(Maybe Text)
   , _ibName                        :: !Text
   } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
@@ -726,110 +740,117 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ibDomainJoinInfo' - Undocumented member.
+-- * 'ibDomainJoinInfo' - The information needed to join a Microsoft Active Directory domain.
 --
--- * 'ibState' - Undocumented member.
+-- * 'ibState' - The state of the image builder.
 --
--- * 'ibPlatform' - Undocumented member.
+-- * 'ibPlatform' - The operating system platform of the image builder.
 --
--- * 'ibStateChangeReason' - Undocumented member.
+-- * 'ibStateChangeReason' - The reason why the last state change occurred.
 --
--- * 'ibARN' - Undocumented member.
+-- * 'ibARN' - The ARN for the image builder.
 --
--- * 'ibCreatedTime' - Undocumented member.
+-- * 'ibCreatedTime' - The time stamp when the image builder was created.
 --
--- * 'ibImageBuilderErrors' - Undocumented member.
+-- * 'ibImageBuilderErrors' - The image builder errors.
 --
--- * 'ibInstanceType' - Undocumented member.
+-- * 'ibInstanceType' - The instance type for the image builder.
 --
--- * 'ibVPCConfig' - Undocumented member.
+-- * 'ibVPCConfig' - The VPC configuration of the image builder.
 --
--- * 'ibImageARN' - Undocumented member.
+-- * 'ibImageARN' - The ARN of the image from which this builder was created.
 --
--- * 'ibDisplayName' - Undocumented member.
+-- * 'ibDisplayName' - The image builder name for display.
 --
--- * 'ibEnableDefaultInternetAccess' - Undocumented member.
+-- * 'ibEnableDefaultInternetAccess' - Enables or disables default internet access for the image builder.
 --
--- * 'ibDescription' - Undocumented member.
+-- * 'ibDescription' - The description for display.
 --
--- * 'ibName' - Undocumented member.
+-- * 'ibAppstreamAgentVersion' - The version of the AppStream 2.0 agent that is currently being used by this image builder.
+--
+-- * 'ibName' - The name of the image builder.
 imageBuilder
     :: Text -- ^ 'ibName'
     -> ImageBuilder
 imageBuilder pName_ =
   ImageBuilder'
-  { _ibDomainJoinInfo = Nothing
-  , _ibState = Nothing
-  , _ibPlatform = Nothing
-  , _ibStateChangeReason = Nothing
-  , _ibARN = Nothing
-  , _ibCreatedTime = Nothing
-  , _ibImageBuilderErrors = Nothing
-  , _ibInstanceType = Nothing
-  , _ibVPCConfig = Nothing
-  , _ibImageARN = Nothing
-  , _ibDisplayName = Nothing
-  , _ibEnableDefaultInternetAccess = Nothing
-  , _ibDescription = Nothing
-  , _ibName = pName_
-  }
+    { _ibDomainJoinInfo = Nothing
+    , _ibState = Nothing
+    , _ibPlatform = Nothing
+    , _ibStateChangeReason = Nothing
+    , _ibARN = Nothing
+    , _ibCreatedTime = Nothing
+    , _ibImageBuilderErrors = Nothing
+    , _ibInstanceType = Nothing
+    , _ibVPCConfig = Nothing
+    , _ibImageARN = Nothing
+    , _ibDisplayName = Nothing
+    , _ibEnableDefaultInternetAccess = Nothing
+    , _ibDescription = Nothing
+    , _ibAppstreamAgentVersion = Nothing
+    , _ibName = pName_
+    }
 
 
--- | Undocumented member.
+-- | The information needed to join a Microsoft Active Directory domain.
 ibDomainJoinInfo :: Lens' ImageBuilder (Maybe DomainJoinInfo)
-ibDomainJoinInfo = lens _ibDomainJoinInfo (\ s a -> s{_ibDomainJoinInfo = a});
+ibDomainJoinInfo = lens _ibDomainJoinInfo (\ s a -> s{_ibDomainJoinInfo = a})
 
--- | Undocumented member.
+-- | The state of the image builder.
 ibState :: Lens' ImageBuilder (Maybe ImageBuilderState)
-ibState = lens _ibState (\ s a -> s{_ibState = a});
+ibState = lens _ibState (\ s a -> s{_ibState = a})
 
--- | Undocumented member.
+-- | The operating system platform of the image builder.
 ibPlatform :: Lens' ImageBuilder (Maybe PlatformType)
-ibPlatform = lens _ibPlatform (\ s a -> s{_ibPlatform = a});
+ibPlatform = lens _ibPlatform (\ s a -> s{_ibPlatform = a})
 
--- | Undocumented member.
+-- | The reason why the last state change occurred.
 ibStateChangeReason :: Lens' ImageBuilder (Maybe ImageBuilderStateChangeReason)
-ibStateChangeReason = lens _ibStateChangeReason (\ s a -> s{_ibStateChangeReason = a});
+ibStateChangeReason = lens _ibStateChangeReason (\ s a -> s{_ibStateChangeReason = a})
 
--- | Undocumented member.
+-- | The ARN for the image builder.
 ibARN :: Lens' ImageBuilder (Maybe Text)
-ibARN = lens _ibARN (\ s a -> s{_ibARN = a});
+ibARN = lens _ibARN (\ s a -> s{_ibARN = a})
 
--- | Undocumented member.
+-- | The time stamp when the image builder was created.
 ibCreatedTime :: Lens' ImageBuilder (Maybe UTCTime)
-ibCreatedTime = lens _ibCreatedTime (\ s a -> s{_ibCreatedTime = a}) . mapping _Time;
+ibCreatedTime = lens _ibCreatedTime (\ s a -> s{_ibCreatedTime = a}) . mapping _Time
 
--- | Undocumented member.
+-- | The image builder errors.
 ibImageBuilderErrors :: Lens' ImageBuilder [ResourceError]
-ibImageBuilderErrors = lens _ibImageBuilderErrors (\ s a -> s{_ibImageBuilderErrors = a}) . _Default . _Coerce;
+ibImageBuilderErrors = lens _ibImageBuilderErrors (\ s a -> s{_ibImageBuilderErrors = a}) . _Default . _Coerce
 
--- | Undocumented member.
+-- | The instance type for the image builder.
 ibInstanceType :: Lens' ImageBuilder (Maybe Text)
-ibInstanceType = lens _ibInstanceType (\ s a -> s{_ibInstanceType = a});
+ibInstanceType = lens _ibInstanceType (\ s a -> s{_ibInstanceType = a})
 
--- | Undocumented member.
+-- | The VPC configuration of the image builder.
 ibVPCConfig :: Lens' ImageBuilder (Maybe VPCConfig)
-ibVPCConfig = lens _ibVPCConfig (\ s a -> s{_ibVPCConfig = a});
+ibVPCConfig = lens _ibVPCConfig (\ s a -> s{_ibVPCConfig = a})
 
--- | Undocumented member.
+-- | The ARN of the image from which this builder was created.
 ibImageARN :: Lens' ImageBuilder (Maybe Text)
-ibImageARN = lens _ibImageARN (\ s a -> s{_ibImageARN = a});
+ibImageARN = lens _ibImageARN (\ s a -> s{_ibImageARN = a})
 
--- | Undocumented member.
+-- | The image builder name for display.
 ibDisplayName :: Lens' ImageBuilder (Maybe Text)
-ibDisplayName = lens _ibDisplayName (\ s a -> s{_ibDisplayName = a});
+ibDisplayName = lens _ibDisplayName (\ s a -> s{_ibDisplayName = a})
 
--- | Undocumented member.
+-- | Enables or disables default internet access for the image builder.
 ibEnableDefaultInternetAccess :: Lens' ImageBuilder (Maybe Bool)
-ibEnableDefaultInternetAccess = lens _ibEnableDefaultInternetAccess (\ s a -> s{_ibEnableDefaultInternetAccess = a});
+ibEnableDefaultInternetAccess = lens _ibEnableDefaultInternetAccess (\ s a -> s{_ibEnableDefaultInternetAccess = a})
 
--- | Undocumented member.
+-- | The description for display.
 ibDescription :: Lens' ImageBuilder (Maybe Text)
-ibDescription = lens _ibDescription (\ s a -> s{_ibDescription = a});
+ibDescription = lens _ibDescription (\ s a -> s{_ibDescription = a})
 
--- | Undocumented member.
+-- | The version of the AppStream 2.0 agent that is currently being used by this image builder.
+ibAppstreamAgentVersion :: Lens' ImageBuilder (Maybe Text)
+ibAppstreamAgentVersion = lens _ibAppstreamAgentVersion (\ s a -> s{_ibAppstreamAgentVersion = a})
+
+-- | The name of the image builder.
 ibName :: Lens' ImageBuilder Text
-ibName = lens _ibName (\ s a -> s{_ibName = a});
+ibName = lens _ibName (\ s a -> s{_ibName = a})
 
 instance FromJSON ImageBuilder where
         parseJSON
@@ -848,13 +869,18 @@
                      <*> (x .:? "DisplayName")
                      <*> (x .:? "EnableDefaultInternetAccess")
                      <*> (x .:? "Description")
+                     <*> (x .:? "AppstreamAgentVersion")
                      <*> (x .: "Name"))
 
 instance Hashable ImageBuilder where
 
 instance NFData ImageBuilder where
 
--- | /See:/ 'imageBuilderStateChangeReason' smart constructor.
+-- | Describes the reason why the last image builder state change occurred.
+--
+--
+--
+-- /See:/ 'imageBuilderStateChangeReason' smart constructor.
 data ImageBuilderStateChangeReason = ImageBuilderStateChangeReason'
   { _ibscrCode    :: !(Maybe ImageBuilderStateChangeReasonCode)
   , _ibscrMessage :: !(Maybe Text)
@@ -865,22 +891,22 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ibscrCode' - Undocumented member.
+-- * 'ibscrCode' - The state change reason code.
 --
--- * 'ibscrMessage' - Undocumented member.
+-- * 'ibscrMessage' - The state change reason message.
 imageBuilderStateChangeReason
     :: ImageBuilderStateChangeReason
 imageBuilderStateChangeReason =
   ImageBuilderStateChangeReason' {_ibscrCode = Nothing, _ibscrMessage = Nothing}
 
 
--- | Undocumented member.
+-- | The state change reason code.
 ibscrCode :: Lens' ImageBuilderStateChangeReason (Maybe ImageBuilderStateChangeReasonCode)
-ibscrCode = lens _ibscrCode (\ s a -> s{_ibscrCode = a});
+ibscrCode = lens _ibscrCode (\ s a -> s{_ibscrCode = a})
 
--- | Undocumented member.
+-- | The state change reason message.
 ibscrMessage :: Lens' ImageBuilderStateChangeReason (Maybe Text)
-ibscrMessage = lens _ibscrMessage (\ s a -> s{_ibscrMessage = a});
+ibscrMessage = lens _ibscrMessage (\ s a -> s{_ibscrMessage = a})
 
 instance FromJSON ImageBuilderStateChangeReason where
         parseJSON
@@ -893,7 +919,7 @@
 
 instance NFData ImageBuilderStateChangeReason where
 
--- | Describes the reason why the last state change occurred.
+-- | Describes the reason why the last image state change occurred.
 --
 --
 --
@@ -919,11 +945,11 @@
 
 -- | The state change reason code.
 iscrCode :: Lens' ImageStateChangeReason (Maybe ImageStateChangeReasonCode)
-iscrCode = lens _iscrCode (\ s a -> s{_iscrCode = a});
+iscrCode = lens _iscrCode (\ s a -> s{_iscrCode = a})
 
 -- | The state change reason message.
 iscrMessage :: Lens' ImageStateChangeReason (Maybe Text)
-iscrMessage = lens _iscrMessage (\ s a -> s{_iscrMessage = a});
+iscrMessage = lens _iscrMessage (\ s a -> s{_iscrMessage = a})
 
 instance FromJSON ImageStateChangeReason where
         parseJSON
@@ -936,7 +962,11 @@
 
 instance NFData ImageStateChangeReason where
 
--- | /See:/ 'resourceError' smart constructor.
+-- | Describes a resource error.
+--
+--
+--
+-- /See:/ 'resourceError' smart constructor.
 data ResourceError = ResourceError'
   { _reErrorCode      :: !(Maybe FleetErrorCode)
   , _reErrorMessage   :: !(Maybe Text)
@@ -948,32 +978,32 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'reErrorCode' - Undocumented member.
+-- * 'reErrorCode' - The error code.
 --
--- * 'reErrorMessage' - Undocumented member.
+-- * 'reErrorMessage' - The error message.
 --
--- * 'reErrorTimestamp' - Undocumented member.
+-- * 'reErrorTimestamp' - The time the error occurred.
 resourceError
     :: ResourceError
 resourceError =
   ResourceError'
-  { _reErrorCode = Nothing
-  , _reErrorMessage = Nothing
-  , _reErrorTimestamp = Nothing
-  }
+    { _reErrorCode = Nothing
+    , _reErrorMessage = Nothing
+    , _reErrorTimestamp = Nothing
+    }
 
 
--- | Undocumented member.
+-- | The error code.
 reErrorCode :: Lens' ResourceError (Maybe FleetErrorCode)
-reErrorCode = lens _reErrorCode (\ s a -> s{_reErrorCode = a});
+reErrorCode = lens _reErrorCode (\ s a -> s{_reErrorCode = a})
 
--- | Undocumented member.
+-- | The error message.
 reErrorMessage :: Lens' ResourceError (Maybe Text)
-reErrorMessage = lens _reErrorMessage (\ s a -> s{_reErrorMessage = a});
+reErrorMessage = lens _reErrorMessage (\ s a -> s{_reErrorMessage = a})
 
--- | Undocumented member.
+-- | The time the error occurred.
 reErrorTimestamp :: Lens' ResourceError (Maybe UTCTime)
-reErrorTimestamp = lens _reErrorTimestamp (\ s a -> s{_reErrorTimestamp = a}) . mapping _Time;
+reErrorTimestamp = lens _reErrorTimestamp (\ s a -> s{_reErrorTimestamp = a}) . mapping _Time
 
 instance FromJSON ResourceError where
         parseJSON
@@ -1011,18 +1041,18 @@
     -> ServiceAccountCredentials
 serviceAccountCredentials pAccountName_ pAccountPassword_ =
   ServiceAccountCredentials'
-  { _sacAccountName = _Sensitive # pAccountName_
-  , _sacAccountPassword = _Sensitive # pAccountPassword_
-  }
+    { _sacAccountName = _Sensitive # pAccountName_
+    , _sacAccountPassword = _Sensitive # pAccountPassword_
+    }
 
 
 -- | The user name of the account. This account must have the following privileges: create computer objects, join computers to the domain, and change/reset the password on descendant computer objects for the organizational units specified.
 sacAccountName :: Lens' ServiceAccountCredentials Text
-sacAccountName = lens _sacAccountName (\ s a -> s{_sacAccountName = a}) . _Sensitive;
+sacAccountName = lens _sacAccountName (\ s a -> s{_sacAccountName = a}) . _Sensitive
 
 -- | The password for the account.
 sacAccountPassword :: Lens' ServiceAccountCredentials Text
-sacAccountPassword = lens _sacAccountPassword (\ s a -> s{_sacAccountPassword = a}) . _Sensitive;
+sacAccountPassword = lens _sacAccountPassword (\ s a -> s{_sacAccountPassword = a}) . _Sensitive
 
 instance FromJSON ServiceAccountCredentials where
         parseJSON
@@ -1081,38 +1111,38 @@
     -> Session
 session pId_ pUserId_ pStackName_ pFleetName_ pState_ =
   Session'
-  { _sAuthenticationType = Nothing
-  , _sId = pId_
-  , _sUserId = pUserId_
-  , _sStackName = pStackName_
-  , _sFleetName = pFleetName_
-  , _sState = pState_
-  }
+    { _sAuthenticationType = Nothing
+    , _sId = pId_
+    , _sUserId = pUserId_
+    , _sStackName = pStackName_
+    , _sFleetName = pFleetName_
+    , _sState = pState_
+    }
 
 
 -- | The authentication method. The user is authenticated using a streaming URL (@API@ ) or SAML federation (@SAML@ ).
 sAuthenticationType :: Lens' Session (Maybe AuthenticationType)
-sAuthenticationType = lens _sAuthenticationType (\ s a -> s{_sAuthenticationType = a});
+sAuthenticationType = lens _sAuthenticationType (\ s a -> s{_sAuthenticationType = a})
 
 -- | The ID of the streaming session.
 sId :: Lens' Session Text
-sId = lens _sId (\ s a -> s{_sId = a});
+sId = lens _sId (\ s a -> s{_sId = a})
 
 -- | The identifier of the user for whom the session was created.
 sUserId :: Lens' Session Text
-sUserId = lens _sUserId (\ s a -> s{_sUserId = a});
+sUserId = lens _sUserId (\ s a -> s{_sUserId = a})
 
 -- | The name of the stack for the streaming session.
 sStackName :: Lens' Session Text
-sStackName = lens _sStackName (\ s a -> s{_sStackName = a});
+sStackName = lens _sStackName (\ s a -> s{_sStackName = a})
 
 -- | The name of the fleet for the streaming session.
 sFleetName :: Lens' Session Text
-sFleetName = lens _sFleetName (\ s a -> s{_sFleetName = a});
+sFleetName = lens _sFleetName (\ s a -> s{_sFleetName = a})
 
 -- | The current state of the streaming session.
 sState :: Lens' Session SessionState
-sState = lens _sState (\ s a -> s{_sState = a});
+sState = lens _sState (\ s a -> s{_sState = a})
 
 instance FromJSON Session where
         parseJSON
@@ -1135,12 +1165,14 @@
 --
 -- /See:/ 'stack' smart constructor.
 data Stack = Stack'
-  { _sARN               :: !(Maybe Text)
+  { _sFeedbackURL       :: !(Maybe Text)
+  , _sARN               :: !(Maybe Text)
   , _sCreatedTime       :: !(Maybe POSIX)
   , _sStorageConnectors :: !(Maybe [StorageConnector])
   , _sDisplayName       :: !(Maybe Text)
   , _sStackErrors       :: !(Maybe [StackError])
   , _sDescription       :: !(Maybe Text)
+  , _sRedirectURL       :: !(Maybe Text)
   , _sName              :: !Text
   } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
@@ -1149,72 +1181,88 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'sFeedbackURL' - The URL that users are redirected to after they click the Send Feedback link. If no URL is specified, no Send Feedback link is displayed.
+--
 -- * 'sARN' - The ARN of the stack.
 --
 -- * 'sCreatedTime' - The time the stack was created.
 --
 -- * 'sStorageConnectors' - The storage connectors to enable.
 --
--- * 'sDisplayName' - The stack name displayed to end users.
+-- * 'sDisplayName' - The stack name for display.
 --
 -- * 'sStackErrors' - The errors for the stack.
 --
--- * 'sDescription' - The description displayed to end users.
+-- * 'sDescription' - The description for display.
 --
+-- * 'sRedirectURL' - The URL that users are redirected to after their streaming session ends.
+--
 -- * 'sName' - The name of the stack.
 stack
     :: Text -- ^ 'sName'
     -> Stack
 stack pName_ =
   Stack'
-  { _sARN = Nothing
-  , _sCreatedTime = Nothing
-  , _sStorageConnectors = Nothing
-  , _sDisplayName = Nothing
-  , _sStackErrors = Nothing
-  , _sDescription = Nothing
-  , _sName = pName_
-  }
+    { _sFeedbackURL = Nothing
+    , _sARN = Nothing
+    , _sCreatedTime = Nothing
+    , _sStorageConnectors = Nothing
+    , _sDisplayName = Nothing
+    , _sStackErrors = Nothing
+    , _sDescription = Nothing
+    , _sRedirectURL = Nothing
+    , _sName = pName_
+    }
 
 
+-- | The URL that users are redirected to after they click the Send Feedback link. If no URL is specified, no Send Feedback link is displayed.
+sFeedbackURL :: Lens' Stack (Maybe Text)
+sFeedbackURL = lens _sFeedbackURL (\ s a -> s{_sFeedbackURL = a})
+
 -- | The ARN of the stack.
 sARN :: Lens' Stack (Maybe Text)
-sARN = lens _sARN (\ s a -> s{_sARN = a});
+sARN = lens _sARN (\ s a -> s{_sARN = a})
 
 -- | The time the stack was created.
 sCreatedTime :: Lens' Stack (Maybe UTCTime)
-sCreatedTime = lens _sCreatedTime (\ s a -> s{_sCreatedTime = a}) . mapping _Time;
+sCreatedTime = lens _sCreatedTime (\ s a -> s{_sCreatedTime = a}) . mapping _Time
 
 -- | The storage connectors to enable.
 sStorageConnectors :: Lens' Stack [StorageConnector]
-sStorageConnectors = lens _sStorageConnectors (\ s a -> s{_sStorageConnectors = a}) . _Default . _Coerce;
+sStorageConnectors = lens _sStorageConnectors (\ s a -> s{_sStorageConnectors = a}) . _Default . _Coerce
 
--- | The stack name displayed to end users.
+-- | The stack name for display.
 sDisplayName :: Lens' Stack (Maybe Text)
-sDisplayName = lens _sDisplayName (\ s a -> s{_sDisplayName = a});
+sDisplayName = lens _sDisplayName (\ s a -> s{_sDisplayName = a})
 
 -- | The errors for the stack.
 sStackErrors :: Lens' Stack [StackError]
-sStackErrors = lens _sStackErrors (\ s a -> s{_sStackErrors = a}) . _Default . _Coerce;
+sStackErrors = lens _sStackErrors (\ s a -> s{_sStackErrors = a}) . _Default . _Coerce
 
--- | The description displayed to end users.
+-- | The description for display.
 sDescription :: Lens' Stack (Maybe Text)
-sDescription = lens _sDescription (\ s a -> s{_sDescription = a});
+sDescription = lens _sDescription (\ s a -> s{_sDescription = a})
 
+-- | The URL that users are redirected to after their streaming session ends.
+sRedirectURL :: Lens' Stack (Maybe Text)
+sRedirectURL = lens _sRedirectURL (\ s a -> s{_sRedirectURL = a})
+
 -- | The name of the stack.
 sName :: Lens' Stack Text
-sName = lens _sName (\ s a -> s{_sName = a});
+sName = lens _sName (\ s a -> s{_sName = a})
 
 instance FromJSON Stack where
         parseJSON
           = withObject "Stack"
               (\ x ->
                  Stack' <$>
-                   (x .:? "Arn") <*> (x .:? "CreatedTime") <*>
-                     (x .:? "StorageConnectors" .!= mempty)
+                   (x .:? "FeedbackURL") <*> (x .:? "Arn") <*>
+                     (x .:? "CreatedTime")
+                     <*> (x .:? "StorageConnectors" .!= mempty)
                      <*> (x .:? "DisplayName")
                      <*> (x .:? "StackErrors" .!= mempty)
                      <*> (x .:? "Description")
+                     <*> (x .:? "RedirectURL")
                      <*> (x .: "Name"))
 
 instance Hashable Stack where
@@ -1246,11 +1294,11 @@
 
 -- | The error code.
 seErrorCode :: Lens' StackError (Maybe StackErrorCode)
-seErrorCode = lens _seErrorCode (\ s a -> s{_seErrorCode = a});
+seErrorCode = lens _seErrorCode (\ s a -> s{_seErrorCode = a})
 
 -- | The error message.
 seErrorMessage :: Lens' StackError (Maybe Text)
-seErrorMessage = lens _seErrorMessage (\ s a -> s{_seErrorMessage = a});
+seErrorMessage = lens _seErrorMessage (\ s a -> s{_seErrorMessage = a})
 
 instance FromJSON StackError where
         parseJSON
@@ -1286,16 +1334,16 @@
     -> StorageConnector
 storageConnector pConnectorType_ =
   StorageConnector'
-  {_scResourceIdentifier = Nothing, _scConnectorType = pConnectorType_}
+    {_scResourceIdentifier = Nothing, _scConnectorType = pConnectorType_}
 
 
 -- | The ARN of the storage connector.
 scResourceIdentifier :: Lens' StorageConnector (Maybe Text)
-scResourceIdentifier = lens _scResourceIdentifier (\ s a -> s{_scResourceIdentifier = a});
+scResourceIdentifier = lens _scResourceIdentifier (\ s a -> s{_scResourceIdentifier = a})
 
 -- | The type of storage connector.
 scConnectorType :: Lens' StorageConnector StorageConnectorType
-scConnectorType = lens _scConnectorType (\ s a -> s{_scConnectorType = a});
+scConnectorType = lens _scConnectorType (\ s a -> s{_scConnectorType = a})
 
 instance FromJSON StorageConnector where
         parseJSON
@@ -1341,11 +1389,11 @@
 
 -- | The security groups for the fleet.
 vcSecurityGroupIds :: Lens' VPCConfig [Text]
-vcSecurityGroupIds = lens _vcSecurityGroupIds (\ s a -> s{_vcSecurityGroupIds = a}) . _Default . _Coerce;
+vcSecurityGroupIds = lens _vcSecurityGroupIds (\ s a -> s{_vcSecurityGroupIds = a}) . _Default . _Coerce
 
 -- | The subnets to which a network interface is established from the fleet instance.
 vcSubnetIds :: Lens' VPCConfig [Text]
-vcSubnetIds = lens _vcSubnetIds (\ s a -> s{_vcSubnetIds = a}) . _Default . _Coerce;
+vcSubnetIds = lens _vcSubnetIds (\ s a -> s{_vcSubnetIds = a}) . _Default . _Coerce
 
 instance FromJSON VPCConfig where
         parseJSON
diff --git a/gen/Network/AWS/AppStream/Types/Sum.hs b/gen/Network/AWS/AppStream/Types/Sum.hs
--- a/gen/Network/AWS/AppStream/Types/Sum.hs
+++ b/gen/Network/AWS/AppStream/Types/Sum.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.Types.Sum
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -256,6 +256,7 @@
   | IBSSnapshotting
   | IBSStopped
   | IBSStopping
+  | IBSUpdatingAgent
   deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
 
@@ -269,8 +270,9 @@
         "snapshotting" -> pure IBSSnapshotting
         "stopped" -> pure IBSStopped
         "stopping" -> pure IBSStopping
+        "updating_agent" -> pure IBSUpdatingAgent
         e -> fromTextError $ "Failure parsing ImageBuilderState from value: '" <> e
-           <> "'. Accepted values: deleting, failed, pending, rebooting, running, snapshotting, stopped, stopping"
+           <> "'. Accepted values: deleting, failed, pending, rebooting, running, snapshotting, stopped, stopping, updating_agent"
 
 instance ToText ImageBuilderState where
     toText = \case
@@ -282,6 +284,7 @@
         IBSSnapshotting -> "SNAPSHOTTING"
         IBSStopped -> "STOPPED"
         IBSStopping -> "STOPPING"
+        IBSUpdatingAgent -> "UPDATING_AGENT"
 
 instance Hashable     ImageBuilderState
 instance NFData       ImageBuilderState
@@ -321,6 +324,7 @@
 
 data ImageState
   = ISAvailable
+  | ISCopying
   | ISDeleting
   | ISFailed
   | ISPending
@@ -330,15 +334,17 @@
 instance FromText ImageState where
     parser = takeLowerText >>= \case
         "available" -> pure ISAvailable
+        "copying" -> pure ISCopying
         "deleting" -> pure ISDeleting
         "failed" -> pure ISFailed
         "pending" -> pure ISPending
         e -> fromTextError $ "Failure parsing ImageState from value: '" <> e
-           <> "'. Accepted values: available, deleting, failed, pending"
+           <> "'. Accepted values: available, copying, deleting, failed, pending"
 
 instance ToText ImageState where
     toText = \case
         ISAvailable -> "AVAILABLE"
+        ISCopying -> "COPYING"
         ISDeleting -> "DELETING"
         ISFailed -> "FAILED"
         ISPending -> "PENDING"
@@ -354,6 +360,7 @@
 
 data ImageStateChangeReasonCode
   = ISCRCImageBuilderNotAvailable
+  | ISCRCImageCopyFailure
   | ISCRCInternalError
   deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
@@ -361,13 +368,15 @@
 instance FromText ImageStateChangeReasonCode where
     parser = takeLowerText >>= \case
         "image_builder_not_available" -> pure ISCRCImageBuilderNotAvailable
+        "image_copy_failure" -> pure ISCRCImageCopyFailure
         "internal_error" -> pure ISCRCInternalError
         e -> fromTextError $ "Failure parsing ImageStateChangeReasonCode from value: '" <> e
-           <> "'. Accepted values: image_builder_not_available, internal_error"
+           <> "'. Accepted values: image_builder_not_available, image_copy_failure, internal_error"
 
 instance ToText ImageStateChangeReasonCode where
     toText = \case
         ISCRCImageBuilderNotAvailable -> "IMAGE_BUILDER_NOT_AVAILABLE"
+        ISCRCImageCopyFailure -> "IMAGE_COPY_FAILURE"
         ISCRCInternalError -> "INTERNAL_ERROR"
 
 instance Hashable     ImageStateChangeReasonCode
@@ -435,6 +444,39 @@
 
 instance FromJSON SessionState where
     parseJSON = parseJSONText "SessionState"
+
+data StackAttribute
+  = FeedbackURL
+  | RedirectURL
+  | StorageConnectors
+  | ThemeName
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText StackAttribute where
+    parser = takeLowerText >>= \case
+        "feedback_url" -> pure FeedbackURL
+        "redirect_url" -> pure RedirectURL
+        "storage_connectors" -> pure StorageConnectors
+        "theme_name" -> pure ThemeName
+        e -> fromTextError $ "Failure parsing StackAttribute from value: '" <> e
+           <> "'. Accepted values: feedback_url, redirect_url, storage_connectors, theme_name"
+
+instance ToText StackAttribute where
+    toText = \case
+        FeedbackURL -> "FEEDBACK_URL"
+        RedirectURL -> "REDIRECT_URL"
+        StorageConnectors -> "STORAGE_CONNECTORS"
+        ThemeName -> "THEME_NAME"
+
+instance Hashable     StackAttribute
+instance NFData       StackAttribute
+instance ToByteString StackAttribute
+instance ToQuery      StackAttribute
+instance ToHeader     StackAttribute
+
+instance ToJSON StackAttribute where
+    toJSON = toJSONText
 
 data StackErrorCode
   = SECInternalServiceError
diff --git a/gen/Network/AWS/AppStream/UntagResource.hs b/gen/Network/AWS/AppStream/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/UntagResource.hs
@@ -0,0 +1,139 @@
+{-# 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.AppStream.UntagResource
+-- Copyright   : (c) 2013-2018 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates the specified tags from the specified AppStream 2.0 resource.
+--
+--
+-- To list the current tags for your resources, use 'ListTagsForResource' .
+--
+-- For more information about tags, see <http://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html Tagging Your Resources> in the /Amazon AppStream 2.0 Developer Guide/ .
+--
+module Network.AWS.AppStream.UntagResource
+    (
+    -- * Creating a Request
+      untagResource
+    , UntagResource
+    -- * Request Lenses
+    , urResourceARN
+    , urTagKeys
+
+    -- * Destructuring the Response
+    , untagResourceResponse
+    , UntagResourceResponse
+    -- * Response Lenses
+    , urrsResponseStatus
+    ) where
+
+import Network.AWS.AppStream.Types
+import Network.AWS.AppStream.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+
+-- | /See:/ 'untagResource' smart constructor.
+data UntagResource = UntagResource'
+  { _urResourceARN :: !Text
+  , _urTagKeys     :: !(List1 Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UntagResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urResourceARN' - The Amazon Resource Name (ARN) of the resource.
+--
+-- * 'urTagKeys' - The tag keys for the tags to disassociate.
+untagResource
+    :: Text -- ^ 'urResourceARN'
+    -> NonEmpty Text -- ^ 'urTagKeys'
+    -> UntagResource
+untagResource pResourceARN_ pTagKeys_ =
+  UntagResource'
+    {_urResourceARN = pResourceARN_, _urTagKeys = _List1 # pTagKeys_}
+
+
+-- | The Amazon Resource Name (ARN) of the resource.
+urResourceARN :: Lens' UntagResource Text
+urResourceARN = lens _urResourceARN (\ s a -> s{_urResourceARN = a})
+
+-- | The tag keys for the tags to disassociate.
+urTagKeys :: Lens' UntagResource (NonEmpty Text)
+urTagKeys = lens _urTagKeys (\ s a -> s{_urTagKeys = a}) . _List1
+
+instance AWSRequest UntagResource where
+        type Rs UntagResource = UntagResourceResponse
+        request = postJSON appStream
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 UntagResourceResponse' <$> (pure (fromEnum s)))
+
+instance Hashable UntagResource where
+
+instance NFData UntagResource where
+
+instance ToHeaders UntagResource where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.UntagResource" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UntagResource where
+        toJSON UntagResource'{..}
+          = object
+              (catMaybes
+                 [Just ("ResourceArn" .= _urResourceARN),
+                  Just ("TagKeys" .= _urTagKeys)])
+
+instance ToPath UntagResource where
+        toPath = const "/"
+
+instance ToQuery UntagResource where
+        toQuery = const mempty
+
+-- | /See:/ 'untagResourceResponse' smart constructor.
+newtype UntagResourceResponse = UntagResourceResponse'
+  { _urrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UntagResourceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urrsResponseStatus' - -- | The response status code.
+untagResourceResponse
+    :: Int -- ^ 'urrsResponseStatus'
+    -> UntagResourceResponse
+untagResourceResponse pResponseStatus_ =
+  UntagResourceResponse' {_urrsResponseStatus = pResponseStatus_}
+
+
+-- | -- | The response status code.
+urrsResponseStatus :: Lens' UntagResourceResponse Int
+urrsResponseStatus = lens _urrsResponseStatus (\ s a -> s{_urrsResponseStatus = a})
+
+instance NFData UntagResourceResponse where
diff --git a/gen/Network/AWS/AppStream/UpdateDirectoryConfig.hs b/gen/Network/AWS/AppStream/UpdateDirectoryConfig.hs
--- a/gen/Network/AWS/AppStream/UpdateDirectoryConfig.hs
+++ b/gen/Network/AWS/AppStream/UpdateDirectoryConfig.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.UpdateDirectoryConfig
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -68,23 +68,23 @@
     -> UpdateDirectoryConfig
 updateDirectoryConfig pDirectoryName_ =
   UpdateDirectoryConfig'
-  { _udcServiceAccountCredentials = Nothing
-  , _udcOrganizationalUnitDistinguishedNames = Nothing
-  , _udcDirectoryName = pDirectoryName_
-  }
+    { _udcServiceAccountCredentials = Nothing
+    , _udcOrganizationalUnitDistinguishedNames = Nothing
+    , _udcDirectoryName = pDirectoryName_
+    }
 
 
 -- | The credentials for the service account used by the streaming instance to connect to the directory.
 udcServiceAccountCredentials :: Lens' UpdateDirectoryConfig (Maybe ServiceAccountCredentials)
-udcServiceAccountCredentials = lens _udcServiceAccountCredentials (\ s a -> s{_udcServiceAccountCredentials = a});
+udcServiceAccountCredentials = lens _udcServiceAccountCredentials (\ s a -> s{_udcServiceAccountCredentials = a})
 
 -- | The distinguished names of the organizational units for computer accounts.
 udcOrganizationalUnitDistinguishedNames :: Lens' UpdateDirectoryConfig [Text]
-udcOrganizationalUnitDistinguishedNames = lens _udcOrganizationalUnitDistinguishedNames (\ s a -> s{_udcOrganizationalUnitDistinguishedNames = a}) . _Default . _Coerce;
+udcOrganizationalUnitDistinguishedNames = lens _udcOrganizationalUnitDistinguishedNames (\ s a -> s{_udcOrganizationalUnitDistinguishedNames = a}) . _Default . _Coerce
 
 -- | The name of the directory configuration.
 udcDirectoryName :: Lens' UpdateDirectoryConfig Text
-udcDirectoryName = lens _udcDirectoryName (\ s a -> s{_udcDirectoryName = a});
+udcDirectoryName = lens _udcDirectoryName (\ s a -> s{_udcDirectoryName = a})
 
 instance AWSRequest UpdateDirectoryConfig where
         type Rs UpdateDirectoryConfig =
@@ -145,15 +145,15 @@
     -> UpdateDirectoryConfigResponse
 updateDirectoryConfigResponse pResponseStatus_ =
   UpdateDirectoryConfigResponse'
-  {_udcrsDirectoryConfig = Nothing, _udcrsResponseStatus = pResponseStatus_}
+    {_udcrsDirectoryConfig = Nothing, _udcrsResponseStatus = pResponseStatus_}
 
 
 -- | Information about the directory configuration.
 udcrsDirectoryConfig :: Lens' UpdateDirectoryConfigResponse (Maybe DirectoryConfig)
-udcrsDirectoryConfig = lens _udcrsDirectoryConfig (\ s a -> s{_udcrsDirectoryConfig = a});
+udcrsDirectoryConfig = lens _udcrsDirectoryConfig (\ s a -> s{_udcrsDirectoryConfig = a})
 
 -- | -- | The response status code.
 udcrsResponseStatus :: Lens' UpdateDirectoryConfigResponse Int
-udcrsResponseStatus = lens _udcrsResponseStatus (\ s a -> s{_udcrsResponseStatus = a});
+udcrsResponseStatus = lens _udcrsResponseStatus (\ s a -> s{_udcrsResponseStatus = a})
 
 instance NFData UpdateDirectoryConfigResponse where
diff --git a/gen/Network/AWS/AppStream/UpdateFleet.hs b/gen/Network/AWS/AppStream/UpdateFleet.hs
--- a/gen/Network/AWS/AppStream/UpdateFleet.hs
+++ b/gen/Network/AWS/AppStream/UpdateFleet.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.UpdateFleet
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -80,7 +80,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ufDomainJoinInfo' - The information needed for streaming instances to join a domain.
+-- * 'ufDomainJoinInfo' - The information needed to join a Microsoft Active Directory domain.
 --
 -- * 'ufDisconnectTimeoutInSeconds' - The time after disconnection when a session is considered to have ended, in seconds. If a user who was disconnected reconnects within this time interval, the user is connected to their previous session. Specify a value between 60 and 57600.
 --
@@ -94,13 +94,13 @@
 --
 -- * 'ufVPCConfig' - The VPC configuration for the fleet.
 --
--- * 'ufDisplayName' - The fleet name displayed to end users.
+-- * 'ufDisplayName' - The fleet name for display.
 --
 -- * 'ufEnableDefaultInternetAccess' - Enables or disables default internet access for the fleet.
 --
--- * 'ufImageName' - The name of the image used by the fleet.
+-- * 'ufImageName' - The name of the image used to create the fleet.
 --
--- * 'ufDescription' - The description displayed to end users.
+-- * 'ufDescription' - The description for display.
 --
 -- * 'ufComputeCapacity' - The desired capacity for the fleet.
 --
@@ -110,73 +110,73 @@
     -> UpdateFleet
 updateFleet pName_ =
   UpdateFleet'
-  { _ufDomainJoinInfo = Nothing
-  , _ufDisconnectTimeoutInSeconds = Nothing
-  , _ufMaxUserDurationInSeconds = Nothing
-  , _ufAttributesToDelete = Nothing
-  , _ufDeleteVPCConfig = Nothing
-  , _ufInstanceType = Nothing
-  , _ufVPCConfig = Nothing
-  , _ufDisplayName = Nothing
-  , _ufEnableDefaultInternetAccess = Nothing
-  , _ufImageName = Nothing
-  , _ufDescription = Nothing
-  , _ufComputeCapacity = Nothing
-  , _ufName = pName_
-  }
+    { _ufDomainJoinInfo = Nothing
+    , _ufDisconnectTimeoutInSeconds = Nothing
+    , _ufMaxUserDurationInSeconds = Nothing
+    , _ufAttributesToDelete = Nothing
+    , _ufDeleteVPCConfig = Nothing
+    , _ufInstanceType = Nothing
+    , _ufVPCConfig = Nothing
+    , _ufDisplayName = Nothing
+    , _ufEnableDefaultInternetAccess = Nothing
+    , _ufImageName = Nothing
+    , _ufDescription = Nothing
+    , _ufComputeCapacity = Nothing
+    , _ufName = pName_
+    }
 
 
--- | The information needed for streaming instances to join a domain.
+-- | The information needed to join a Microsoft Active Directory domain.
 ufDomainJoinInfo :: Lens' UpdateFleet (Maybe DomainJoinInfo)
-ufDomainJoinInfo = lens _ufDomainJoinInfo (\ s a -> s{_ufDomainJoinInfo = a});
+ufDomainJoinInfo = lens _ufDomainJoinInfo (\ s a -> s{_ufDomainJoinInfo = a})
 
 -- | The time after disconnection when a session is considered to have ended, in seconds. If a user who was disconnected reconnects within this time interval, the user is connected to their previous session. Specify a value between 60 and 57600.
 ufDisconnectTimeoutInSeconds :: Lens' UpdateFleet (Maybe Int)
-ufDisconnectTimeoutInSeconds = lens _ufDisconnectTimeoutInSeconds (\ s a -> s{_ufDisconnectTimeoutInSeconds = a});
+ufDisconnectTimeoutInSeconds = lens _ufDisconnectTimeoutInSeconds (\ s a -> s{_ufDisconnectTimeoutInSeconds = a})
 
 -- | The maximum time that a streaming session can run, in seconds. Specify a value between 600 and 57600.
 ufMaxUserDurationInSeconds :: Lens' UpdateFleet (Maybe Int)
-ufMaxUserDurationInSeconds = lens _ufMaxUserDurationInSeconds (\ s a -> s{_ufMaxUserDurationInSeconds = a});
+ufMaxUserDurationInSeconds = lens _ufMaxUserDurationInSeconds (\ s a -> s{_ufMaxUserDurationInSeconds = a})
 
 -- | The fleet attributes to delete.
 ufAttributesToDelete :: Lens' UpdateFleet [FleetAttribute]
-ufAttributesToDelete = lens _ufAttributesToDelete (\ s a -> s{_ufAttributesToDelete = a}) . _Default . _Coerce;
+ufAttributesToDelete = lens _ufAttributesToDelete (\ s a -> s{_ufAttributesToDelete = a}) . _Default . _Coerce
 
 -- | Deletes the VPC association for the specified fleet.
 ufDeleteVPCConfig :: Lens' UpdateFleet (Maybe Bool)
-ufDeleteVPCConfig = lens _ufDeleteVPCConfig (\ s a -> s{_ufDeleteVPCConfig = a});
+ufDeleteVPCConfig = lens _ufDeleteVPCConfig (\ s a -> s{_ufDeleteVPCConfig = a})
 
 -- | The instance type to use when launching fleet instances. The following instance types are available:     * stream.standard.medium     * stream.standard.large     * stream.compute.large     * stream.compute.xlarge     * stream.compute.2xlarge     * stream.compute.4xlarge     * stream.compute.8xlarge     * stream.memory.large     * stream.memory.xlarge     * stream.memory.2xlarge     * stream.memory.4xlarge     * stream.memory.8xlarge     * stream.graphics-design.large     * stream.graphics-design.xlarge     * stream.graphics-design.2xlarge     * stream.graphics-design.4xlarge     * stream.graphics-desktop.2xlarge     * stream.graphics-pro.4xlarge     * stream.graphics-pro.8xlarge     * stream.graphics-pro.16xlarge
 ufInstanceType :: Lens' UpdateFleet (Maybe Text)
-ufInstanceType = lens _ufInstanceType (\ s a -> s{_ufInstanceType = a});
+ufInstanceType = lens _ufInstanceType (\ s a -> s{_ufInstanceType = a})
 
 -- | The VPC configuration for the fleet.
 ufVPCConfig :: Lens' UpdateFleet (Maybe VPCConfig)
-ufVPCConfig = lens _ufVPCConfig (\ s a -> s{_ufVPCConfig = a});
+ufVPCConfig = lens _ufVPCConfig (\ s a -> s{_ufVPCConfig = a})
 
--- | The fleet name displayed to end users.
+-- | The fleet name for display.
 ufDisplayName :: Lens' UpdateFleet (Maybe Text)
-ufDisplayName = lens _ufDisplayName (\ s a -> s{_ufDisplayName = a});
+ufDisplayName = lens _ufDisplayName (\ s a -> s{_ufDisplayName = a})
 
 -- | Enables or disables default internet access for the fleet.
 ufEnableDefaultInternetAccess :: Lens' UpdateFleet (Maybe Bool)
-ufEnableDefaultInternetAccess = lens _ufEnableDefaultInternetAccess (\ s a -> s{_ufEnableDefaultInternetAccess = a});
+ufEnableDefaultInternetAccess = lens _ufEnableDefaultInternetAccess (\ s a -> s{_ufEnableDefaultInternetAccess = a})
 
--- | The name of the image used by the fleet.
+-- | The name of the image used to create the fleet.
 ufImageName :: Lens' UpdateFleet (Maybe Text)
-ufImageName = lens _ufImageName (\ s a -> s{_ufImageName = a});
+ufImageName = lens _ufImageName (\ s a -> s{_ufImageName = a})
 
--- | The description displayed to end users.
+-- | The description for display.
 ufDescription :: Lens' UpdateFleet (Maybe Text)
-ufDescription = lens _ufDescription (\ s a -> s{_ufDescription = a});
+ufDescription = lens _ufDescription (\ s a -> s{_ufDescription = a})
 
 -- | The desired capacity for the fleet.
 ufComputeCapacity :: Lens' UpdateFleet (Maybe ComputeCapacity)
-ufComputeCapacity = lens _ufComputeCapacity (\ s a -> s{_ufComputeCapacity = a});
+ufComputeCapacity = lens _ufComputeCapacity (\ s a -> s{_ufComputeCapacity = a})
 
 -- | A unique name for the fleet.
 ufName :: Lens' UpdateFleet Text
-ufName = lens _ufName (\ s a -> s{_ufName = a});
+ufName = lens _ufName (\ s a -> s{_ufName = a})
 
 instance AWSRequest UpdateFleet where
         type Rs UpdateFleet = UpdateFleetResponse
@@ -247,15 +247,15 @@
     -> UpdateFleetResponse
 updateFleetResponse pResponseStatus_ =
   UpdateFleetResponse'
-  {_ufrsFleet = Nothing, _ufrsResponseStatus = pResponseStatus_}
+    {_ufrsFleet = Nothing, _ufrsResponseStatus = pResponseStatus_}
 
 
 -- | Information about the fleet.
 ufrsFleet :: Lens' UpdateFleetResponse (Maybe Fleet)
-ufrsFleet = lens _ufrsFleet (\ s a -> s{_ufrsFleet = a});
+ufrsFleet = lens _ufrsFleet (\ s a -> s{_ufrsFleet = a})
 
 -- | -- | The response status code.
 ufrsResponseStatus :: Lens' UpdateFleetResponse Int
-ufrsResponseStatus = lens _ufrsResponseStatus (\ s a -> s{_ufrsResponseStatus = a});
+ufrsResponseStatus = lens _ufrsResponseStatus (\ s a -> s{_ufrsResponseStatus = a})
 
 instance NFData UpdateFleetResponse where
diff --git a/gen/Network/AWS/AppStream/UpdateStack.hs b/gen/Network/AWS/AppStream/UpdateStack.hs
--- a/gen/Network/AWS/AppStream/UpdateStack.hs
+++ b/gen/Network/AWS/AppStream/UpdateStack.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.UpdateStack
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -27,10 +27,13 @@
       updateStack
     , UpdateStack
     -- * Request Lenses
+    , usFeedbackURL
+    , usAttributesToDelete
     , usDeleteStorageConnectors
     , usStorageConnectors
     , usDisplayName
     , usDescription
+    , usRedirectURL
     , usName
 
     -- * Destructuring the Response
@@ -50,10 +53,13 @@
 
 -- | /See:/ 'updateStack' smart constructor.
 data UpdateStack = UpdateStack'
-  { _usDeleteStorageConnectors :: !(Maybe Bool)
+  { _usFeedbackURL             :: !(Maybe Text)
+  , _usAttributesToDelete      :: !(Maybe [StackAttribute])
+  , _usDeleteStorageConnectors :: !(Maybe Bool)
   , _usStorageConnectors       :: !(Maybe [StorageConnector])
   , _usDisplayName             :: !(Maybe Text)
   , _usDescription             :: !(Maybe Text)
+  , _usRedirectURL             :: !(Maybe Text)
   , _usName                    :: !Text
   } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
@@ -62,47 +68,68 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'usFeedbackURL' - The URL that users are redirected to after they click the Send Feedback link. If no URL is specified, no Send Feedback link is displayed.
+--
+-- * 'usAttributesToDelete' - The stack attributes to delete.
+--
 -- * 'usDeleteStorageConnectors' - Deletes the storage connectors currently enabled for the stack.
 --
 -- * 'usStorageConnectors' - The storage connectors to enable.
 --
--- * 'usDisplayName' - The stack name displayed to end users.
+-- * 'usDisplayName' - The stack name for display.
 --
--- * 'usDescription' - The description displayed to end users.
+-- * 'usDescription' - The description for display.
 --
+-- * 'usRedirectURL' - The URL that users are redirected to after their streaming session ends.
+--
 -- * 'usName' - The name of the stack.
 updateStack
     :: Text -- ^ 'usName'
     -> UpdateStack
 updateStack pName_ =
   UpdateStack'
-  { _usDeleteStorageConnectors = Nothing
-  , _usStorageConnectors = Nothing
-  , _usDisplayName = Nothing
-  , _usDescription = Nothing
-  , _usName = pName_
-  }
+    { _usFeedbackURL = Nothing
+    , _usAttributesToDelete = Nothing
+    , _usDeleteStorageConnectors = Nothing
+    , _usStorageConnectors = Nothing
+    , _usDisplayName = Nothing
+    , _usDescription = Nothing
+    , _usRedirectURL = Nothing
+    , _usName = pName_
+    }
 
 
+-- | The URL that users are redirected to after they click the Send Feedback link. If no URL is specified, no Send Feedback link is displayed.
+usFeedbackURL :: Lens' UpdateStack (Maybe Text)
+usFeedbackURL = lens _usFeedbackURL (\ s a -> s{_usFeedbackURL = a})
+
+-- | The stack attributes to delete.
+usAttributesToDelete :: Lens' UpdateStack [StackAttribute]
+usAttributesToDelete = lens _usAttributesToDelete (\ s a -> s{_usAttributesToDelete = a}) . _Default . _Coerce
+
 -- | Deletes the storage connectors currently enabled for the stack.
 usDeleteStorageConnectors :: Lens' UpdateStack (Maybe Bool)
-usDeleteStorageConnectors = lens _usDeleteStorageConnectors (\ s a -> s{_usDeleteStorageConnectors = a});
+usDeleteStorageConnectors = lens _usDeleteStorageConnectors (\ s a -> s{_usDeleteStorageConnectors = a})
 
 -- | The storage connectors to enable.
 usStorageConnectors :: Lens' UpdateStack [StorageConnector]
-usStorageConnectors = lens _usStorageConnectors (\ s a -> s{_usStorageConnectors = a}) . _Default . _Coerce;
+usStorageConnectors = lens _usStorageConnectors (\ s a -> s{_usStorageConnectors = a}) . _Default . _Coerce
 
--- | The stack name displayed to end users.
+-- | The stack name for display.
 usDisplayName :: Lens' UpdateStack (Maybe Text)
-usDisplayName = lens _usDisplayName (\ s a -> s{_usDisplayName = a});
+usDisplayName = lens _usDisplayName (\ s a -> s{_usDisplayName = a})
 
--- | The description displayed to end users.
+-- | The description for display.
 usDescription :: Lens' UpdateStack (Maybe Text)
-usDescription = lens _usDescription (\ s a -> s{_usDescription = a});
+usDescription = lens _usDescription (\ s a -> s{_usDescription = a})
 
+-- | The URL that users are redirected to after their streaming session ends.
+usRedirectURL :: Lens' UpdateStack (Maybe Text)
+usRedirectURL = lens _usRedirectURL (\ s a -> s{_usRedirectURL = a})
+
 -- | The name of the stack.
 usName :: Lens' UpdateStack Text
-usName = lens _usName (\ s a -> s{_usName = a});
+usName = lens _usName (\ s a -> s{_usName = a})
 
 instance AWSRequest UpdateStack where
         type Rs UpdateStack = UpdateStackResponse
@@ -131,11 +158,14 @@
         toJSON UpdateStack'{..}
           = object
               (catMaybes
-                 [("DeleteStorageConnectors" .=) <$>
+                 [("FeedbackURL" .=) <$> _usFeedbackURL,
+                  ("AttributesToDelete" .=) <$> _usAttributesToDelete,
+                  ("DeleteStorageConnectors" .=) <$>
                     _usDeleteStorageConnectors,
                   ("StorageConnectors" .=) <$> _usStorageConnectors,
                   ("DisplayName" .=) <$> _usDisplayName,
                   ("Description" .=) <$> _usDescription,
+                  ("RedirectURL" .=) <$> _usRedirectURL,
                   Just ("Name" .= _usName)])
 
 instance ToPath UpdateStack where
@@ -163,15 +193,15 @@
     -> UpdateStackResponse
 updateStackResponse pResponseStatus_ =
   UpdateStackResponse'
-  {_usrsStack = Nothing, _usrsResponseStatus = pResponseStatus_}
+    {_usrsStack = Nothing, _usrsResponseStatus = pResponseStatus_}
 
 
 -- | Information about the stack.
 usrsStack :: Lens' UpdateStackResponse (Maybe Stack)
-usrsStack = lens _usrsStack (\ s a -> s{_usrsStack = a});
+usrsStack = lens _usrsStack (\ s a -> s{_usrsStack = a})
 
 -- | -- | The response status code.
 usrsResponseStatus :: Lens' UpdateStackResponse Int
-usrsResponseStatus = lens _usrsResponseStatus (\ s a -> s{_usrsResponseStatus = a});
+usrsResponseStatus = lens _usrsResponseStatus (\ s a -> s{_usrsResponseStatus = a})
 
 instance NFData UpdateStackResponse where
diff --git a/gen/Network/AWS/AppStream/Waiters.hs b/gen/Network/AWS/AppStream/Waiters.hs
--- a/gen/Network/AWS/AppStream/Waiters.hs
+++ b/gen/Network/AWS/AppStream/Waiters.hs
@@ -7,7 +7,7 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.Waiters
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -15,7 +15,57 @@
 --
 module Network.AWS.AppStream.Waiters where
 
+import Network.AWS.AppStream.DescribeFleets
+import Network.AWS.AppStream.DescribeFleets
 import Network.AWS.AppStream.Types
 import Network.AWS.Lens
 import Network.AWS.Prelude
 import Network.AWS.Waiter
+
+-- | Polls 'Network.AWS.AppStream.DescribeFleets' every 30 seconds until a successful state is reached. An error is returned after 40 failed checks.
+fleetStopped :: Wait DescribeFleets
+fleetStopped =
+  Wait
+    { _waitName = "FleetStopped"
+    , _waitAttempts = 40
+    , _waitDelay = 30
+    , _waitAcceptors =
+        [ matchAll
+            "INACTIVE"
+            AcceptSuccess
+            (folding (concatOf dfsrsFleets) . fState . to toTextCI)
+        , matchAny
+            "PENDING_ACTIVATE"
+            AcceptFailure
+            (folding (concatOf dfsrsFleets) . fState . to toTextCI)
+        , matchAny
+            "ACTIVE"
+            AcceptFailure
+            (folding (concatOf dfsrsFleets) . fState . to toTextCI)
+        ]
+    }
+
+
+-- | Polls 'Network.AWS.AppStream.DescribeFleets' every 30 seconds until a successful state is reached. An error is returned after 40 failed checks.
+fleetStarted :: Wait DescribeFleets
+fleetStarted =
+  Wait
+    { _waitName = "FleetStarted"
+    , _waitAttempts = 40
+    , _waitDelay = 30
+    , _waitAcceptors =
+        [ matchAll
+            "ACTIVE"
+            AcceptSuccess
+            (folding (concatOf dfsrsFleets) . fState . to toTextCI)
+        , matchAny
+            "PENDING_DEACTIVATE"
+            AcceptFailure
+            (folding (concatOf dfsrsFleets) . fState . to toTextCI)
+        , matchAny
+            "INACTIVE"
+            AcceptFailure
+            (folding (concatOf dfsrsFleets) . fState . to toTextCI)
+        ]
+    }
+
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Test/AWS/AppStream.hs b/test/Test/AWS/AppStream.hs
--- a/test/Test/AWS/AppStream.hs
+++ b/test/Test/AWS/AppStream.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Test.AWS.AppStream
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Test/AWS/AppStream/Internal.hs b/test/Test/AWS/AppStream/Internal.hs
--- a/test/Test/AWS/AppStream/Internal.hs
+++ b/test/Test/AWS/AppStream/Internal.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Test.AWS.AppStream.Internal
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Test/AWS/Gen/AppStream.hs b/test/Test/AWS/Gen/AppStream.hs
--- a/test/Test/AWS/Gen/AppStream.hs
+++ b/test/Test/AWS/Gen/AppStream.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Test.AWS.Gen.AppStream
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -61,6 +61,9 @@
 --         , requestCreateImageBuilder $
 --             createImageBuilder
 --
+--         , requestListTagsForResource $
+--             listTagsForResource
+--
 --         , requestDescribeDirectoryConfigs $
 --             describeDirectoryConfigs
 --
@@ -97,12 +100,21 @@
 --         , requestCreateStack $
 --             createStack
 --
+--         , requestCopyImage $
+--             copyImage
+--
 --         , requestExpireSession $
 --             expireSession
 --
+--         , requestTagResource $
+--             tagResource
+--
 --         , requestCreateStreamingURL $
 --             createStreamingURL
 --
+--         , requestUntagResource $
+--             untagResource
+--
 --         , requestStartFleet $
 --             startFleet
 --
@@ -151,6 +163,9 @@
 --         , responseCreateImageBuilder $
 --             createImageBuilderResponse
 --
+--         , responseListTagsForResource $
+--             listTagsForResourceResponse
+--
 --         , responseDescribeDirectoryConfigs $
 --             describeDirectoryConfigsResponse
 --
@@ -187,12 +202,21 @@
 --         , responseCreateStack $
 --             createStackResponse
 --
+--         , responseCopyImage $
+--             copyImageResponse
+--
 --         , responseExpireSession $
 --             expireSessionResponse
 --
+--         , responseTagResource $
+--             tagResourceResponse
+--
 --         , responseCreateStreamingURL $
 --             createStreamingURLResponse
 --
+--         , responseUntagResource $
+--             untagResourceResponse
+--
 --         , responseStartFleet $
 --             startFleetResponse
 --
@@ -265,6 +289,11 @@
     "CreateImageBuilder"
     "fixture/CreateImageBuilder.yaml"
 
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource = req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
 requestDescribeDirectoryConfigs :: DescribeDirectoryConfigs -> TestTree
 requestDescribeDirectoryConfigs = req
     "DescribeDirectoryConfigs"
@@ -325,16 +354,31 @@
     "CreateStack"
     "fixture/CreateStack.yaml"
 
+requestCopyImage :: CopyImage -> TestTree
+requestCopyImage = req
+    "CopyImage"
+    "fixture/CopyImage.yaml"
+
 requestExpireSession :: ExpireSession -> TestTree
 requestExpireSession = req
     "ExpireSession"
     "fixture/ExpireSession.yaml"
 
+requestTagResource :: TagResource -> TestTree
+requestTagResource = req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
 requestCreateStreamingURL :: CreateStreamingURL -> TestTree
 requestCreateStreamingURL = req
     "CreateStreamingURL"
     "fixture/CreateStreamingURL.yaml"
 
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource = req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
 requestStartFleet :: StartFleet -> TestTree
 requestStartFleet = req
     "StartFleet"
@@ -434,6 +478,13 @@
     appStream
     (Proxy :: Proxy CreateImageBuilder)
 
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource = res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    appStream
+    (Proxy :: Proxy ListTagsForResource)
+
 responseDescribeDirectoryConfigs :: DescribeDirectoryConfigsResponse -> TestTree
 responseDescribeDirectoryConfigs = res
     "DescribeDirectoryConfigsResponse"
@@ -518,6 +569,13 @@
     appStream
     (Proxy :: Proxy CreateStack)
 
+responseCopyImage :: CopyImageResponse -> TestTree
+responseCopyImage = res
+    "CopyImageResponse"
+    "fixture/CopyImageResponse.proto"
+    appStream
+    (Proxy :: Proxy CopyImage)
+
 responseExpireSession :: ExpireSessionResponse -> TestTree
 responseExpireSession = res
     "ExpireSessionResponse"
@@ -525,12 +583,26 @@
     appStream
     (Proxy :: Proxy ExpireSession)
 
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource = res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    appStream
+    (Proxy :: Proxy TagResource)
+
 responseCreateStreamingURL :: CreateStreamingURLResponse -> TestTree
 responseCreateStreamingURL = res
     "CreateStreamingURLResponse"
     "fixture/CreateStreamingURLResponse.proto"
     appStream
     (Proxy :: Proxy CreateStreamingURL)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource = res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    appStream
+    (Proxy :: Proxy UntagResource)
 
 responseStartFleet :: StartFleetResponse -> TestTree
 responseStartFleet = res
