diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.5`
+`1.5.0`
 
 
 ## Description
diff --git a/amazonka-appstream.cabal b/amazonka-appstream.cabal
--- a/amazonka-appstream.cabal
+++ b/amazonka-appstream.cabal
@@ -1,13 +1,13 @@
 name:                  amazonka-appstream
-version:               1.4.5
+version:               1.5.0
 synopsis:              Amazon AppStream SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
-license:               OtherLicense
+license:               MPL-2.0
 license-file:          LICENSE
 author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2016 Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+copyright:             Copyright (c) 2013-2017 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -29,24 +29,37 @@
     to get started.
 
 source-repository head
-    type:     git
-    location: git://github.com/brendanhay/amazonka.git
+    type:              git
+    location:          git://github.com/brendanhay/amazonka.git
+    subdir:            amazonka-appstream
 
 library
     default-language:  Haskell2010
     hs-source-dirs:    src gen
 
-    ghc-options:       -Wall
+    ghc-options:
+        -Wall
+        -fwarn-incomplete-uni-patterns
+        -fwarn-incomplete-record-updates
+        -funbox-strict-fields
 
     exposed-modules:
           Network.AWS.AppStream
         , Network.AWS.AppStream.AssociateFleet
+        , Network.AWS.AppStream.CreateDirectoryConfig
         , Network.AWS.AppStream.CreateFleet
+        , Network.AWS.AppStream.CreateImageBuilder
+        , Network.AWS.AppStream.CreateImageBuilderStreamingURL
         , Network.AWS.AppStream.CreateStack
         , Network.AWS.AppStream.CreateStreamingURL
+        , Network.AWS.AppStream.DeleteDirectoryConfig
         , Network.AWS.AppStream.DeleteFleet
+        , Network.AWS.AppStream.DeleteImage
+        , Network.AWS.AppStream.DeleteImageBuilder
         , Network.AWS.AppStream.DeleteStack
+        , Network.AWS.AppStream.DescribeDirectoryConfigs
         , Network.AWS.AppStream.DescribeFleets
+        , Network.AWS.AppStream.DescribeImageBuilders
         , Network.AWS.AppStream.DescribeImages
         , Network.AWS.AppStream.DescribeSessions
         , Network.AWS.AppStream.DescribeStacks
@@ -55,8 +68,11 @@
         , Network.AWS.AppStream.ListAssociatedFleets
         , Network.AWS.AppStream.ListAssociatedStacks
         , Network.AWS.AppStream.StartFleet
+        , Network.AWS.AppStream.StartImageBuilder
         , Network.AWS.AppStream.StopFleet
+        , Network.AWS.AppStream.StopImageBuilder
         , Network.AWS.AppStream.Types
+        , Network.AWS.AppStream.UpdateDirectoryConfig
         , Network.AWS.AppStream.UpdateFleet
         , Network.AWS.AppStream.UpdateStack
         , Network.AWS.AppStream.Waiters
@@ -66,7 +82,7 @@
         , Network.AWS.AppStream.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.5.*
+          amazonka-core == 1.5.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-appstream-test
@@ -86,9 +102,9 @@
         , Test.AWS.AppStream.Internal
 
     build-depends:
-          amazonka-core == 1.4.5.*
-        , amazonka-test == 1.4.5.*
-        , amazonka-appstream == 1.4.5.*
+          amazonka-core == 1.5.0.*
+        , amazonka-test == 1.5.0.*
+        , amazonka-appstream
         , base
         , bytestring
         , tasty
diff --git a/fixture/CreateDirectoryConfig.yaml b/fixture/CreateDirectoryConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDirectoryConfig.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/CreateDirectoryConfigResponse.proto b/fixture/CreateDirectoryConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDirectoryConfigResponse.proto
diff --git a/fixture/CreateImageBuilder.yaml b/fixture/CreateImageBuilder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateImageBuilder.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/CreateImageBuilderResponse.proto b/fixture/CreateImageBuilderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateImageBuilderResponse.proto
diff --git a/fixture/CreateImageBuilderStreamingURL.yaml b/fixture/CreateImageBuilderStreamingURL.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateImageBuilderStreamingURL.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/CreateImageBuilderStreamingURLResponse.proto b/fixture/CreateImageBuilderStreamingURLResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateImageBuilderStreamingURLResponse.proto
diff --git a/fixture/DeleteDirectoryConfig.yaml b/fixture/DeleteDirectoryConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDirectoryConfig.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/DeleteDirectoryConfigResponse.proto b/fixture/DeleteDirectoryConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDirectoryConfigResponse.proto
diff --git a/fixture/DeleteImage.yaml b/fixture/DeleteImage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteImage.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/DeleteImageBuilder.yaml b/fixture/DeleteImageBuilder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteImageBuilder.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/DeleteImageBuilderResponse.proto b/fixture/DeleteImageBuilderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteImageBuilderResponse.proto
diff --git a/fixture/DeleteImageResponse.proto b/fixture/DeleteImageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteImageResponse.proto
diff --git a/fixture/DescribeDirectoryConfigs.yaml b/fixture/DescribeDirectoryConfigs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDirectoryConfigs.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/DescribeDirectoryConfigsResponse.proto b/fixture/DescribeDirectoryConfigsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDirectoryConfigsResponse.proto
diff --git a/fixture/DescribeImageBuilders.yaml b/fixture/DescribeImageBuilders.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeImageBuilders.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/DescribeImageBuildersResponse.proto b/fixture/DescribeImageBuildersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeImageBuildersResponse.proto
diff --git a/fixture/StartImageBuilder.yaml b/fixture/StartImageBuilder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartImageBuilder.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/StartImageBuilderResponse.proto b/fixture/StartImageBuilderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartImageBuilderResponse.proto
diff --git a/fixture/StopImageBuilder.yaml b/fixture/StopImageBuilder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopImageBuilder.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/StopImageBuilderResponse.proto b/fixture/StopImageBuilderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopImageBuilderResponse.proto
diff --git a/fixture/UpdateDirectoryConfig.yaml b/fixture/UpdateDirectoryConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDirectoryConfig.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/UpdateDirectoryConfigResponse.proto b/fixture/UpdateDirectoryConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDirectoryConfigResponse.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,15 +5,15 @@
 
 -- |
 -- Module      : Network.AWS.AppStream
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- __Amazon AppStream 2.0__
 --
--- API documentation for Amazon AppStream 2.0.
+-- You can use Amazon AppStream 2.0 to stream desktop applications to any device running a web browser, without rewriting them.
 --
 module Network.AWS.AppStream
     (
@@ -29,12 +29,21 @@
     -- ** ResourceAlreadyExistsException
     , _ResourceAlreadyExistsException
 
+    -- ** IncompatibleImageException
+    , _IncompatibleImageException
+
+    -- ** ConcurrentModificationException
+    , _ConcurrentModificationException
+
     -- ** OperationNotPermittedException
     , _OperationNotPermittedException
 
     -- ** ResourceNotFoundException
     , _ResourceNotFoundException
 
+    -- ** InvalidParameterCombinationException
+    , _InvalidParameterCombinationException
+
     -- ** ResourceNotAvailableException
     , _ResourceNotAvailableException
 
@@ -62,6 +71,9 @@
     -- ** UpdateStack
     , module Network.AWS.AppStream.UpdateStack
 
+    -- ** CreateDirectoryConfig
+    , module Network.AWS.AppStream.CreateDirectoryConfig
+
     -- ** ListAssociatedStacks
     , module Network.AWS.AppStream.ListAssociatedStacks
 
@@ -71,9 +83,21 @@
     -- ** UpdateFleet
     , module Network.AWS.AppStream.UpdateFleet
 
+    -- ** DeleteImageBuilder
+    , module Network.AWS.AppStream.DeleteImageBuilder
+
     -- ** AssociateFleet
     , module Network.AWS.AppStream.AssociateFleet
 
+    -- ** CreateImageBuilder
+    , module Network.AWS.AppStream.CreateImageBuilder
+
+    -- ** DescribeDirectoryConfigs
+    , module Network.AWS.AppStream.DescribeDirectoryConfigs
+
+    -- ** CreateImageBuilderStreamingURL
+    , module Network.AWS.AppStream.CreateImageBuilderStreamingURL
+
     -- ** DescribeSessions
     , module Network.AWS.AppStream.DescribeSessions
 
@@ -83,9 +107,21 @@
     -- ** DescribeFleets
     , module Network.AWS.AppStream.DescribeFleets
 
+    -- ** DescribeImageBuilders
+    , module Network.AWS.AppStream.DescribeImageBuilders
+
     -- ** StopFleet
     , module Network.AWS.AppStream.StopFleet
 
+    -- ** StartImageBuilder
+    , module Network.AWS.AppStream.StartImageBuilder
+
+    -- ** DeleteDirectoryConfig
+    , module Network.AWS.AppStream.DeleteDirectoryConfig
+
+    -- ** UpdateDirectoryConfig
+    , module Network.AWS.AppStream.UpdateDirectoryConfig
+
     -- ** CreateFleet
     , module Network.AWS.AppStream.CreateFleet
 
@@ -101,17 +137,38 @@
     -- ** StartFleet
     , module Network.AWS.AppStream.StartFleet
 
+    -- ** StopImageBuilder
+    , module Network.AWS.AppStream.StopImageBuilder
+
+    -- ** DeleteImage
+    , module Network.AWS.AppStream.DeleteImage
+
     -- ** DescribeImages
     , module Network.AWS.AppStream.DescribeImages
 
     -- * Types
 
+    -- ** AuthenticationType
+    , AuthenticationType (..)
+
+    -- ** FleetAttribute
+    , FleetAttribute (..)
+
     -- ** FleetErrorCode
     , FleetErrorCode (..)
 
     -- ** FleetState
     , FleetState (..)
 
+    -- ** FleetType
+    , FleetType (..)
+
+    -- ** ImageBuilderState
+    , ImageBuilderState (..)
+
+    -- ** ImageBuilderStateChangeReasonCode
+    , ImageBuilderStateChangeReasonCode (..)
+
     -- ** ImageState
     , ImageState (..)
 
@@ -124,6 +181,12 @@
     -- ** SessionState
     , SessionState (..)
 
+    -- ** StackErrorCode
+    , StackErrorCode (..)
+
+    -- ** StorageConnectorType
+    , StorageConnectorType (..)
+
     -- ** VisibilityType
     , VisibilityType (..)
 
@@ -151,15 +214,32 @@
     , ccsAvailable
     , ccsDesired
 
+    -- ** DirectoryConfig
+    , DirectoryConfig
+    , directoryConfig
+    , dcCreatedTime
+    , dcServiceAccountCredentials
+    , dcOrganizationalUnitDistinguishedNames
+    , dcDirectoryName
+
+    -- ** DomainJoinInfo
+    , DomainJoinInfo
+    , domainJoinInfo
+    , djiOrganizationalUnitDistinguishedName
+    , djiDirectoryName
+
     -- ** Fleet
     , Fleet
     , fleet
+    , fDomainJoinInfo
     , fDisconnectTimeoutInSeconds
     , fMaxUserDurationInSeconds
     , fCreatedTime
+    , fFleetType
     , fVPCConfig
     , fFleetErrors
     , fDisplayName
+    , fEnableDefaultInternetAccess
     , fDescription
     , fARN
     , fName
@@ -179,9 +259,11 @@
     , image
     , iState
     , iPlatform
+    , iPublicBaseImageReleasedDate
     , iStateChangeReason
     , iARN
     , iCreatedTime
+    , iImageBuilderSupported
     , iVisibility
     , iBaseImageARN
     , iDisplayName
@@ -189,15 +271,53 @@
     , iApplications
     , iName
 
+    -- ** ImageBuilder
+    , ImageBuilder
+    , imageBuilder
+    , ibDomainJoinInfo
+    , ibState
+    , ibPlatform
+    , ibStateChangeReason
+    , ibARN
+    , ibCreatedTime
+    , ibImageBuilderErrors
+    , ibInstanceType
+    , ibVPCConfig
+    , ibImageARN
+    , ibDisplayName
+    , ibEnableDefaultInternetAccess
+    , ibDescription
+    , ibName
+
+    -- ** ImageBuilderStateChangeReason
+    , ImageBuilderStateChangeReason
+    , imageBuilderStateChangeReason
+    , ibscrCode
+    , ibscrMessage
+
     -- ** ImageStateChangeReason
     , ImageStateChangeReason
     , imageStateChangeReason
     , iscrCode
     , iscrMessage
 
+    -- ** ResourceError
+    , ResourceError
+    , resourceError
+    , reErrorCode
+    , reErrorMessage
+    , reErrorTimestamp
+
+    -- ** ServiceAccountCredentials
+    , ServiceAccountCredentials
+    , serviceAccountCredentials
+    , sacAccountName
+    , sacAccountPassword
+
     -- ** Session
     , Session
     , session
+    , sAuthenticationType
     , sId
     , sUserId
     , sStackName
@@ -209,36 +329,62 @@
     , stack
     , sARN
     , sCreatedTime
+    , sStorageConnectors
     , sDisplayName
+    , sStackErrors
     , sDescription
     , sName
 
+    -- ** StackError
+    , StackError
+    , stackError
+    , seErrorCode
+    , seErrorMessage
+
+    -- ** StorageConnector
+    , StorageConnector
+    , storageConnector
+    , scResourceIdentifier
+    , scConnectorType
+
     -- ** VPCConfig
     , VPCConfig
     , vpcConfig
+    , vcSecurityGroupIds
     , vcSubnetIds
     ) where
 
-import           Network.AWS.AppStream.AssociateFleet
-import           Network.AWS.AppStream.CreateFleet
-import           Network.AWS.AppStream.CreateStack
-import           Network.AWS.AppStream.CreateStreamingURL
-import           Network.AWS.AppStream.DeleteFleet
-import           Network.AWS.AppStream.DeleteStack
-import           Network.AWS.AppStream.DescribeFleets
-import           Network.AWS.AppStream.DescribeImages
-import           Network.AWS.AppStream.DescribeSessions
-import           Network.AWS.AppStream.DescribeStacks
-import           Network.AWS.AppStream.DisassociateFleet
-import           Network.AWS.AppStream.ExpireSession
-import           Network.AWS.AppStream.ListAssociatedFleets
-import           Network.AWS.AppStream.ListAssociatedStacks
-import           Network.AWS.AppStream.StartFleet
-import           Network.AWS.AppStream.StopFleet
-import           Network.AWS.AppStream.Types
-import           Network.AWS.AppStream.UpdateFleet
-import           Network.AWS.AppStream.UpdateStack
-import           Network.AWS.AppStream.Waiters
+import Network.AWS.AppStream.AssociateFleet
+import Network.AWS.AppStream.CreateDirectoryConfig
+import Network.AWS.AppStream.CreateFleet
+import Network.AWS.AppStream.CreateImageBuilder
+import Network.AWS.AppStream.CreateImageBuilderStreamingURL
+import Network.AWS.AppStream.CreateStack
+import Network.AWS.AppStream.CreateStreamingURL
+import Network.AWS.AppStream.DeleteDirectoryConfig
+import Network.AWS.AppStream.DeleteFleet
+import Network.AWS.AppStream.DeleteImage
+import Network.AWS.AppStream.DeleteImageBuilder
+import Network.AWS.AppStream.DeleteStack
+import Network.AWS.AppStream.DescribeDirectoryConfigs
+import Network.AWS.AppStream.DescribeFleets
+import Network.AWS.AppStream.DescribeImageBuilders
+import Network.AWS.AppStream.DescribeImages
+import Network.AWS.AppStream.DescribeSessions
+import Network.AWS.AppStream.DescribeStacks
+import Network.AWS.AppStream.DisassociateFleet
+import Network.AWS.AppStream.ExpireSession
+import Network.AWS.AppStream.ListAssociatedFleets
+import Network.AWS.AppStream.ListAssociatedStacks
+import Network.AWS.AppStream.StartFleet
+import Network.AWS.AppStream.StartImageBuilder
+import Network.AWS.AppStream.StopFleet
+import Network.AWS.AppStream.StopImageBuilder
+import Network.AWS.AppStream.Types
+import Network.AWS.AppStream.UpdateDirectoryConfig
+import Network.AWS.AppStream.UpdateFleet
+import Network.AWS.AppStream.UpdateStack
+import Network.AWS.AppStream.Waiters
 
 {- $errors
 Error matchers are designed for use with the functions provided by
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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.AssociateFleet
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Associate a fleet to a stack.
+-- Associates the specified fleet with the specified stack.
 --
 --
 module Network.AWS.AppStream.AssociateFleet
@@ -37,41 +37,40 @@
     , afrsResponseStatus
     ) 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
+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:/ 'associateFleet' smart constructor.
 data AssociateFleet = AssociateFleet'
-    { _afFleetName :: !Text
-    , _afStackName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _afFleetName :: !Text
+  , _afStackName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AssociateFleet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'afFleetName' - The name of the fleet to associate.
+-- * 'afFleetName' - The name of the fleet.
 --
--- * 'afStackName' - The name of the stack to which the fleet is associated.
+-- * 'afStackName' - The name of the stack.
 associateFleet
     :: Text -- ^ 'afFleetName'
     -> Text -- ^ 'afStackName'
     -> AssociateFleet
 associateFleet pFleetName_ pStackName_ =
-    AssociateFleet'
-    { _afFleetName = pFleetName_
-    , _afStackName = pStackName_
-    }
+  AssociateFleet' {_afFleetName = pFleetName_, _afStackName = pStackName_}
 
--- | The name of the fleet to associate.
+
+-- | The name of the fleet.
 afFleetName :: Lens' AssociateFleet Text
 afFleetName = lens _afFleetName (\ s a -> s{_afFleetName = a});
 
--- | The name of the stack to which the fleet is associated.
+-- | The name of the stack.
 afStackName :: Lens' AssociateFleet Text
 afStackName = lens _afStackName (\ s a -> s{_afStackName = a});
 
@@ -83,9 +82,9 @@
               (\ s h x ->
                  AssociateFleetResponse' <$> (pure (fromEnum s)))
 
-instance Hashable AssociateFleet
+instance Hashable AssociateFleet where
 
-instance NFData AssociateFleet
+instance NFData AssociateFleet where
 
 instance ToHeaders AssociateFleet where
         toHeaders
@@ -112,9 +111,10 @@
 
 -- | /See:/ 'associateFleetResponse' smart constructor.
 newtype AssociateFleetResponse = AssociateFleetResponse'
-    { _afrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _afrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AssociateFleetResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -124,12 +124,11 @@
     :: Int -- ^ 'afrsResponseStatus'
     -> AssociateFleetResponse
 associateFleetResponse pResponseStatus_ =
-    AssociateFleetResponse'
-    { _afrsResponseStatus = pResponseStatus_
-    }
+  AssociateFleetResponse' {_afrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 afrsResponseStatus :: Lens' AssociateFleetResponse Int
 afrsResponseStatus = lens _afrsResponseStatus (\ s a -> s{_afrsResponseStatus = a});
 
-instance NFData AssociateFleetResponse
+instance NFData AssociateFleetResponse where
diff --git a/gen/Network/AWS/AppStream/CreateDirectoryConfig.hs b/gen/Network/AWS/AppStream/CreateDirectoryConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/CreateDirectoryConfig.hs
@@ -0,0 +1,162 @@
+{-# 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.CreateDirectoryConfig
+-- Copyright   : (c) 2013-2017 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)
+--
+-- Creates a directory configuration.
+--
+--
+module Network.AWS.AppStream.CreateDirectoryConfig
+    (
+    -- * Creating a Request
+      createDirectoryConfig
+    , CreateDirectoryConfig
+    -- * Request Lenses
+    , cdcDirectoryName
+    , cdcOrganizationalUnitDistinguishedNames
+    , cdcServiceAccountCredentials
+
+    -- * Destructuring the Response
+    , createDirectoryConfigResponse
+    , CreateDirectoryConfigResponse
+    -- * Response Lenses
+    , cdcrsDirectoryConfig
+    , cdcrsResponseStatus
+    ) 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:/ 'createDirectoryConfig' smart constructor.
+data CreateDirectoryConfig = CreateDirectoryConfig'
+  { _cdcDirectoryName                        :: !Text
+  , _cdcOrganizationalUnitDistinguishedNames :: ![Text]
+  , _cdcServiceAccountCredentials            :: !ServiceAccountCredentials
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateDirectoryConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdcDirectoryName' - The fully qualified name of the directory (for example, corp.example.com).
+--
+-- * 'cdcOrganizationalUnitDistinguishedNames' - The distinguished names of the organizational units for computer accounts.
+--
+-- * 'cdcServiceAccountCredentials' - The credentials for the service account used by the streaming instance to connect to the directory.
+createDirectoryConfig
+    :: Text -- ^ 'cdcDirectoryName'
+    -> ServiceAccountCredentials -- ^ 'cdcServiceAccountCredentials'
+    -> CreateDirectoryConfig
+createDirectoryConfig pDirectoryName_ pServiceAccountCredentials_ =
+  CreateDirectoryConfig'
+  { _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});
+
+-- | The distinguished names of the organizational units for computer accounts.
+cdcOrganizationalUnitDistinguishedNames :: Lens' CreateDirectoryConfig [Text]
+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});
+
+instance AWSRequest CreateDirectoryConfig where
+        type Rs CreateDirectoryConfig =
+             CreateDirectoryConfigResponse
+        request = postJSON appStream
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateDirectoryConfigResponse' <$>
+                   (x .?> "DirectoryConfig") <*> (pure (fromEnum s)))
+
+instance Hashable CreateDirectoryConfig where
+
+instance NFData CreateDirectoryConfig where
+
+instance ToHeaders CreateDirectoryConfig where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.CreateDirectoryConfig" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CreateDirectoryConfig where
+        toJSON CreateDirectoryConfig'{..}
+          = object
+              (catMaybes
+                 [Just ("DirectoryName" .= _cdcDirectoryName),
+                  Just
+                    ("OrganizationalUnitDistinguishedNames" .=
+                       _cdcOrganizationalUnitDistinguishedNames),
+                  Just
+                    ("ServiceAccountCredentials" .=
+                       _cdcServiceAccountCredentials)])
+
+instance ToPath CreateDirectoryConfig where
+        toPath = const "/"
+
+instance ToQuery CreateDirectoryConfig where
+        toQuery = const mempty
+
+-- | /See:/ 'createDirectoryConfigResponse' smart constructor.
+data CreateDirectoryConfigResponse = CreateDirectoryConfigResponse'
+  { _cdcrsDirectoryConfig :: !(Maybe DirectoryConfig)
+  , _cdcrsResponseStatus  :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateDirectoryConfigResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdcrsDirectoryConfig' - Information about the directory configuration.
+--
+-- * 'cdcrsResponseStatus' - -- | The response status code.
+createDirectoryConfigResponse
+    :: Int -- ^ 'cdcrsResponseStatus'
+    -> CreateDirectoryConfigResponse
+createDirectoryConfigResponse pResponseStatus_ =
+  CreateDirectoryConfigResponse'
+  {_cdcrsDirectoryConfig = Nothing, _cdcrsResponseStatus = pResponseStatus_}
+
+
+-- | Information about the directory configuration.
+cdcrsDirectoryConfig :: Lens' CreateDirectoryConfigResponse (Maybe DirectoryConfig)
+cdcrsDirectoryConfig = lens _cdcrsDirectoryConfig (\ s a -> s{_cdcrsDirectoryConfig = a});
+
+-- | -- | The response status code.
+cdcrsResponseStatus :: Lens' CreateDirectoryConfigResponse Int
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.CreateFleet
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Creates a new fleet.
+-- Creates a fleet.
 --
 --
 module Network.AWS.AppStream.CreateFleet
@@ -27,10 +27,13 @@
       createFleet
     , CreateFleet
     -- * Request Lenses
+    , cfDomainJoinInfo
     , cfDisconnectTimeoutInSeconds
     , cfMaxUserDurationInSeconds
+    , cfFleetType
     , cfVPCConfig
     , cfDisplayName
+    , cfEnableDefaultInternetAccess
     , cfDescription
     , cfName
     , cfImageName
@@ -45,51 +48,57 @@
     , cfrsResponseStatus
     ) 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
+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
 
--- | Contains the parameters for the new fleet to create.
---
---
---
--- /See:/ 'createFleet' smart constructor.
+-- | /See:/ 'createFleet' smart constructor.
 data CreateFleet = CreateFleet'
-    { _cfDisconnectTimeoutInSeconds :: !(Maybe Int)
-    , _cfMaxUserDurationInSeconds   :: !(Maybe Int)
-    , _cfVPCConfig                  :: !(Maybe VPCConfig)
-    , _cfDisplayName                :: !(Maybe Text)
-    , _cfDescription                :: !(Maybe Text)
-    , _cfName                       :: !Text
-    , _cfImageName                  :: !Text
-    , _cfInstanceType               :: !Text
-    , _cfComputeCapacity            :: !ComputeCapacity
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cfDomainJoinInfo              :: !(Maybe DomainJoinInfo)
+  , _cfDisconnectTimeoutInSeconds  :: !(Maybe Int)
+  , _cfMaxUserDurationInSeconds    :: !(Maybe Int)
+  , _cfFleetType                   :: !(Maybe FleetType)
+  , _cfVPCConfig                   :: !(Maybe VPCConfig)
+  , _cfDisplayName                 :: !(Maybe Text)
+  , _cfEnableDefaultInternetAccess :: !(Maybe Bool)
+  , _cfDescription                 :: !(Maybe Text)
+  , _cfName                        :: !Text
+  , _cfImageName                   :: !Text
+  , _cfInstanceType                :: !Text
+  , _cfComputeCapacity             :: !ComputeCapacity
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateFleet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cfDisconnectTimeoutInSeconds' - The time after disconnection when a session is considered to have ended. If a user who got disconnected reconnects within this timeout interval, the user is connected back to his/her previous session.
+-- * 'cfDomainJoinInfo' - The information needed for streaming instances to join a domain.
 --
--- * 'cfMaxUserDurationInSeconds' - The maximum time up to which a streaming session can run.
+-- * '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.
+--
 -- * 'cfVPCConfig' - The VPC configuration for the fleet.
 --
--- * 'cfDisplayName' - The display name of the fleet.
+-- * 'cfDisplayName' - The fleet name displayed to end users.
 --
--- * 'cfDescription' - The description of the fleet.
+-- * 'cfEnableDefaultInternetAccess' - Enables or disables default internet access for the fleet.
 --
--- * 'cfName' - A unique identifier for the fleet.
+-- * 'cfDescription' - The description displayed to end users.
 --
--- * 'cfImageName' - Unique name of the image used by the fleet.
+-- * 'cfName' - A unique name for the fleet.
 --
--- * 'cfInstanceType' - The instance type of compute resources for the fleet. Fleet instances are launched from this instance type.
+-- * 'cfImageName' - The name of the image used by the fleet.
 --
--- * 'cfComputeCapacity' - The parameters for the capacity allocated to 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
+--
+-- * 'cfComputeCapacity' - The desired capacity for the fleet.
 createFleet
     :: Text -- ^ 'cfName'
     -> Text -- ^ 'cfImageName'
@@ -97,51 +106,67 @@
     -> ComputeCapacity -- ^ 'cfComputeCapacity'
     -> CreateFleet
 createFleet pName_ pImageName_ pInstanceType_ pComputeCapacity_ =
-    CreateFleet'
-    { _cfDisconnectTimeoutInSeconds = Nothing
-    , _cfMaxUserDurationInSeconds = Nothing
-    , _cfVPCConfig = Nothing
-    , _cfDisplayName = Nothing
-    , _cfDescription = Nothing
-    , _cfName = pName_
-    , _cfImageName = pImageName_
-    , _cfInstanceType = pInstanceType_
-    , _cfComputeCapacity = 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_
+  }
 
--- | The time after disconnection when a session is considered to have ended. If a user who got disconnected reconnects within this timeout interval, the user is connected back to his/her previous session.
+
+-- | The information needed for streaming instances to join a domain.
+cfDomainJoinInfo :: Lens' CreateFleet (Maybe DomainJoinInfo)
+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});
 
--- | The maximum time up to which a streaming session can run.
+-- | 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});
 
+-- | Undocumented member.
+cfFleetType :: Lens' CreateFleet (Maybe FleetType)
+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});
 
--- | The display name of the fleet.
+-- | The fleet name displayed to end users.
 cfDisplayName :: Lens' CreateFleet (Maybe Text)
 cfDisplayName = lens _cfDisplayName (\ s a -> s{_cfDisplayName = a});
 
--- | The description of the fleet.
+-- | Enables or disables default internet access for the fleet.
+cfEnableDefaultInternetAccess :: Lens' CreateFleet (Maybe Bool)
+cfEnableDefaultInternetAccess = lens _cfEnableDefaultInternetAccess (\ s a -> s{_cfEnableDefaultInternetAccess = a});
+
+-- | The description displayed to end users.
 cfDescription :: Lens' CreateFleet (Maybe Text)
 cfDescription = lens _cfDescription (\ s a -> s{_cfDescription = a});
 
--- | A unique identifier for the fleet.
+-- | A unique name for the fleet.
 cfName :: Lens' CreateFleet Text
 cfName = lens _cfName (\ s a -> s{_cfName = a});
 
--- | Unique name of the image used by the fleet.
+-- | The name of the image used by the fleet.
 cfImageName :: Lens' CreateFleet Text
 cfImageName = lens _cfImageName (\ s a -> s{_cfImageName = a});
 
--- | The instance type of compute resources for the fleet. Fleet instances are launched from this instance type.
+-- | 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});
 
--- | The parameters for the capacity allocated to the fleet.
+-- | The desired capacity for the fleet.
 cfComputeCapacity :: Lens' CreateFleet ComputeCapacity
 cfComputeCapacity = lens _cfComputeCapacity (\ s a -> s{_cfComputeCapacity = a});
 
@@ -154,9 +179,9 @@
                  CreateFleetResponse' <$>
                    (x .?> "Fleet") <*> (pure (fromEnum s)))
 
-instance Hashable CreateFleet
+instance Hashable CreateFleet where
 
-instance NFData CreateFleet
+instance NFData CreateFleet where
 
 instance ToHeaders CreateFleet where
         toHeaders
@@ -172,12 +197,16 @@
         toJSON CreateFleet'{..}
           = object
               (catMaybes
-                 [("DisconnectTimeoutInSeconds" .=) <$>
+                 [("DomainJoinInfo" .=) <$> _cfDomainJoinInfo,
+                  ("DisconnectTimeoutInSeconds" .=) <$>
                     _cfDisconnectTimeoutInSeconds,
                   ("MaxUserDurationInSeconds" .=) <$>
                     _cfMaxUserDurationInSeconds,
+                  ("FleetType" .=) <$> _cfFleetType,
                   ("VpcConfig" .=) <$> _cfVPCConfig,
                   ("DisplayName" .=) <$> _cfDisplayName,
+                  ("EnableDefaultInternetAccess" .=) <$>
+                    _cfEnableDefaultInternetAccess,
                   ("Description" .=) <$> _cfDescription,
                   Just ("Name" .= _cfName),
                   Just ("ImageName" .= _cfImageName),
@@ -192,27 +221,27 @@
 
 -- | /See:/ 'createFleetResponse' smart constructor.
 data CreateFleetResponse = CreateFleetResponse'
-    { _cfrsFleet          :: !(Maybe Fleet)
-    , _cfrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cfrsFleet          :: !(Maybe Fleet)
+  , _cfrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateFleetResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cfrsFleet' - The details for the created fleet.
+-- * 'cfrsFleet' - Information about the fleet.
 --
 -- * 'cfrsResponseStatus' - -- | The response status code.
 createFleetResponse
     :: Int -- ^ 'cfrsResponseStatus'
     -> CreateFleetResponse
 createFleetResponse pResponseStatus_ =
-    CreateFleetResponse'
-    { _cfrsFleet = Nothing
-    , _cfrsResponseStatus = pResponseStatus_
-    }
+  CreateFleetResponse'
+  {_cfrsFleet = Nothing, _cfrsResponseStatus = pResponseStatus_}
 
--- | The details for the created fleet.
+
+-- | Information about the fleet.
 cfrsFleet :: Lens' CreateFleetResponse (Maybe Fleet)
 cfrsFleet = lens _cfrsFleet (\ s a -> s{_cfrsFleet = a});
 
@@ -220,4 +249,4 @@
 cfrsResponseStatus :: Lens' CreateFleetResponse Int
 cfrsResponseStatus = lens _cfrsResponseStatus (\ s a -> s{_cfrsResponseStatus = a});
 
-instance NFData CreateFleetResponse
+instance NFData CreateFleetResponse where
diff --git a/gen/Network/AWS/AppStream/CreateImageBuilder.hs b/gen/Network/AWS/AppStream/CreateImageBuilder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/CreateImageBuilder.hs
@@ -0,0 +1,208 @@
+{-# 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.CreateImageBuilder
+-- Copyright   : (c) 2013-2017 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.
+module Network.AWS.AppStream.CreateImageBuilder
+    (
+    -- * Creating a Request
+      createImageBuilder
+    , CreateImageBuilder
+    -- * Request Lenses
+    , cibDomainJoinInfo
+    , cibVPCConfig
+    , cibDisplayName
+    , cibEnableDefaultInternetAccess
+    , cibDescription
+    , cibName
+    , cibImageName
+    , cibInstanceType
+
+    -- * Destructuring the Response
+    , createImageBuilderResponse
+    , CreateImageBuilderResponse
+    -- * Response Lenses
+    , cibrsImageBuilder
+    , cibrsResponseStatus
+    ) 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:/ 'createImageBuilder' smart constructor.
+data CreateImageBuilder = CreateImageBuilder'
+  { _cibDomainJoinInfo              :: !(Maybe DomainJoinInfo)
+  , _cibVPCConfig                   :: !(Maybe VPCConfig)
+  , _cibDisplayName                 :: !(Maybe Text)
+  , _cibEnableDefaultInternetAccess :: !(Maybe Bool)
+  , _cibDescription                 :: !(Maybe Text)
+  , _cibName                        :: !Text
+  , _cibImageName                   :: !Text
+  , _cibInstanceType                :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateImageBuilder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cibDomainJoinInfo' - Undocumented member.
+--
+-- * 'cibVPCConfig' - Undocumented member.
+--
+-- * 'cibDisplayName' - Undocumented member.
+--
+-- * 'cibEnableDefaultInternetAccess' - Undocumented member.
+--
+-- * 'cibDescription' - Undocumented member.
+--
+-- * 'cibName' - Undocumented member.
+--
+-- * 'cibImageName' - Undocumented member.
+--
+-- * 'cibInstanceType' - Undocumented member.
+createImageBuilder
+    :: Text -- ^ 'cibName'
+    -> Text -- ^ 'cibImageName'
+    -> Text -- ^ 'cibInstanceType'
+    -> CreateImageBuilder
+createImageBuilder pName_ pImageName_ pInstanceType_ =
+  CreateImageBuilder'
+  { _cibDomainJoinInfo = Nothing
+  , _cibVPCConfig = Nothing
+  , _cibDisplayName = Nothing
+  , _cibEnableDefaultInternetAccess = Nothing
+  , _cibDescription = Nothing
+  , _cibName = pName_
+  , _cibImageName = pImageName_
+  , _cibInstanceType = pInstanceType_
+  }
+
+
+-- | Undocumented member.
+cibDomainJoinInfo :: Lens' CreateImageBuilder (Maybe DomainJoinInfo)
+cibDomainJoinInfo = lens _cibDomainJoinInfo (\ s a -> s{_cibDomainJoinInfo = a});
+
+-- | Undocumented member.
+cibVPCConfig :: Lens' CreateImageBuilder (Maybe VPCConfig)
+cibVPCConfig = lens _cibVPCConfig (\ s a -> s{_cibVPCConfig = a});
+
+-- | Undocumented member.
+cibDisplayName :: Lens' CreateImageBuilder (Maybe Text)
+cibDisplayName = lens _cibDisplayName (\ s a -> s{_cibDisplayName = a});
+
+-- | Undocumented member.
+cibEnableDefaultInternetAccess :: Lens' CreateImageBuilder (Maybe Bool)
+cibEnableDefaultInternetAccess = lens _cibEnableDefaultInternetAccess (\ s a -> s{_cibEnableDefaultInternetAccess = a});
+
+-- | Undocumented member.
+cibDescription :: Lens' CreateImageBuilder (Maybe Text)
+cibDescription = lens _cibDescription (\ s a -> s{_cibDescription = a});
+
+-- | Undocumented member.
+cibName :: Lens' CreateImageBuilder Text
+cibName = lens _cibName (\ s a -> s{_cibName = a});
+
+-- | Undocumented member.
+cibImageName :: Lens' CreateImageBuilder Text
+cibImageName = lens _cibImageName (\ s a -> s{_cibImageName = a});
+
+-- | Undocumented member.
+cibInstanceType :: Lens' CreateImageBuilder Text
+cibInstanceType = lens _cibInstanceType (\ s a -> s{_cibInstanceType = a});
+
+instance AWSRequest CreateImageBuilder where
+        type Rs CreateImageBuilder =
+             CreateImageBuilderResponse
+        request = postJSON appStream
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateImageBuilderResponse' <$>
+                   (x .?> "ImageBuilder") <*> (pure (fromEnum s)))
+
+instance Hashable CreateImageBuilder where
+
+instance NFData CreateImageBuilder where
+
+instance ToHeaders CreateImageBuilder where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.CreateImageBuilder" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CreateImageBuilder where
+        toJSON CreateImageBuilder'{..}
+          = object
+              (catMaybes
+                 [("DomainJoinInfo" .=) <$> _cibDomainJoinInfo,
+                  ("VpcConfig" .=) <$> _cibVPCConfig,
+                  ("DisplayName" .=) <$> _cibDisplayName,
+                  ("EnableDefaultInternetAccess" .=) <$>
+                    _cibEnableDefaultInternetAccess,
+                  ("Description" .=) <$> _cibDescription,
+                  Just ("Name" .= _cibName),
+                  Just ("ImageName" .= _cibImageName),
+                  Just ("InstanceType" .= _cibInstanceType)])
+
+instance ToPath CreateImageBuilder where
+        toPath = const "/"
+
+instance ToQuery CreateImageBuilder where
+        toQuery = const mempty
+
+-- | /See:/ 'createImageBuilderResponse' smart constructor.
+data CreateImageBuilderResponse = CreateImageBuilderResponse'
+  { _cibrsImageBuilder   :: !(Maybe ImageBuilder)
+  , _cibrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateImageBuilderResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cibrsImageBuilder' - Undocumented member.
+--
+-- * 'cibrsResponseStatus' - -- | The response status code.
+createImageBuilderResponse
+    :: Int -- ^ 'cibrsResponseStatus'
+    -> CreateImageBuilderResponse
+createImageBuilderResponse pResponseStatus_ =
+  CreateImageBuilderResponse'
+  {_cibrsImageBuilder = Nothing, _cibrsResponseStatus = pResponseStatus_}
+
+
+-- | Undocumented member.
+cibrsImageBuilder :: Lens' CreateImageBuilderResponse (Maybe ImageBuilder)
+cibrsImageBuilder = lens _cibrsImageBuilder (\ s a -> s{_cibrsImageBuilder = a});
+
+-- | -- | The response status code.
+cibrsResponseStatus :: Lens' CreateImageBuilderResponse Int
+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
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/CreateImageBuilderStreamingURL.hs
@@ -0,0 +1,160 @@
+{-# 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.CreateImageBuilderStreamingURL
+-- Copyright   : (c) 2013-2017 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.
+module Network.AWS.AppStream.CreateImageBuilderStreamingURL
+    (
+    -- * Creating a Request
+      createImageBuilderStreamingURL
+    , CreateImageBuilderStreamingURL
+    -- * Request Lenses
+    , cibsuValidity
+    , cibsuName
+
+    -- * Destructuring the Response
+    , createImageBuilderStreamingURLResponse
+    , CreateImageBuilderStreamingURLResponse
+    -- * Response Lenses
+    , cibsursStreamingURL
+    , cibsursExpires
+    , cibsursResponseStatus
+    ) 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:/ 'createImageBuilderStreamingURL' smart constructor.
+data CreateImageBuilderStreamingURL = CreateImageBuilderStreamingURL'
+  { _cibsuValidity :: !(Maybe Integer)
+  , _cibsuName     :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateImageBuilderStreamingURL' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cibsuValidity' - Undocumented member.
+--
+-- * 'cibsuName' - Undocumented member.
+createImageBuilderStreamingURL
+    :: Text -- ^ 'cibsuName'
+    -> CreateImageBuilderStreamingURL
+createImageBuilderStreamingURL pName_ =
+  CreateImageBuilderStreamingURL'
+  {_cibsuValidity = Nothing, _cibsuName = pName_}
+
+
+-- | Undocumented member.
+cibsuValidity :: Lens' CreateImageBuilderStreamingURL (Maybe Integer)
+cibsuValidity = lens _cibsuValidity (\ s a -> s{_cibsuValidity = a});
+
+-- | Undocumented member.
+cibsuName :: Lens' CreateImageBuilderStreamingURL Text
+cibsuName = lens _cibsuName (\ s a -> s{_cibsuName = a});
+
+instance AWSRequest CreateImageBuilderStreamingURL
+         where
+        type Rs CreateImageBuilderStreamingURL =
+             CreateImageBuilderStreamingURLResponse
+        request = postJSON appStream
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateImageBuilderStreamingURLResponse' <$>
+                   (x .?> "StreamingURL") <*> (x .?> "Expires") <*>
+                     (pure (fromEnum s)))
+
+instance Hashable CreateImageBuilderStreamingURL
+         where
+
+instance NFData CreateImageBuilderStreamingURL where
+
+instance ToHeaders CreateImageBuilderStreamingURL
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.CreateImageBuilderStreamingURL"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CreateImageBuilderStreamingURL where
+        toJSON CreateImageBuilderStreamingURL'{..}
+          = object
+              (catMaybes
+                 [("Validity" .=) <$> _cibsuValidity,
+                  Just ("Name" .= _cibsuName)])
+
+instance ToPath CreateImageBuilderStreamingURL where
+        toPath = const "/"
+
+instance ToQuery CreateImageBuilderStreamingURL where
+        toQuery = const mempty
+
+-- | /See:/ 'createImageBuilderStreamingURLResponse' smart constructor.
+data CreateImageBuilderStreamingURLResponse = CreateImageBuilderStreamingURLResponse'
+  { _cibsursStreamingURL   :: !(Maybe Text)
+  , _cibsursExpires        :: !(Maybe POSIX)
+  , _cibsursResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateImageBuilderStreamingURLResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cibsursStreamingURL' - Undocumented member.
+--
+-- * 'cibsursExpires' - Undocumented member.
+--
+-- * 'cibsursResponseStatus' - -- | The response status code.
+createImageBuilderStreamingURLResponse
+    :: Int -- ^ 'cibsursResponseStatus'
+    -> CreateImageBuilderStreamingURLResponse
+createImageBuilderStreamingURLResponse pResponseStatus_ =
+  CreateImageBuilderStreamingURLResponse'
+  { _cibsursStreamingURL = Nothing
+  , _cibsursExpires = Nothing
+  , _cibsursResponseStatus = pResponseStatus_
+  }
+
+
+-- | Undocumented member.
+cibsursStreamingURL :: Lens' CreateImageBuilderStreamingURLResponse (Maybe Text)
+cibsursStreamingURL = lens _cibsursStreamingURL (\ s a -> s{_cibsursStreamingURL = a});
+
+-- | Undocumented member.
+cibsursExpires :: Lens' CreateImageBuilderStreamingURLResponse (Maybe UTCTime)
+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});
+
+instance NFData
+           CreateImageBuilderStreamingURLResponse
+         where
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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.CreateStack
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Create a new stack.
+-- Creates a stack.
 --
 --
 module Network.AWS.AppStream.CreateStack
@@ -27,6 +27,7 @@
       createStack
     , CreateStack
     -- * Request Lenses
+    , csStorageConnectors
     , csDisplayName
     , csDescription
     , csName
@@ -39,48 +40,58 @@
     , csrsResponseStatus
     ) 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
+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:/ 'createStack' smart constructor.
 data CreateStack = CreateStack'
-    { _csDisplayName :: !(Maybe Text)
-    , _csDescription :: !(Maybe Text)
-    , _csName        :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _csStorageConnectors :: !(Maybe [StorageConnector])
+  , _csDisplayName       :: !(Maybe Text)
+  , _csDescription       :: !(Maybe Text)
+  , _csName              :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateStack' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csDisplayName' - The name displayed to end users on the AppStream 2.0 portal.
+-- * 'csStorageConnectors' - The storage connectors to enable.
 --
--- * 'csDescription' - The description displayed to end users on the AppStream 2.0 portal.
+-- * 'csDisplayName' - The stack name displayed to end users.
 --
--- * 'csName' - The unique identifier for this stack.
+-- * 'csDescription' - The description displayed to end users.
+--
+-- * 'csName' - The name of the stack.
 createStack
     :: Text -- ^ 'csName'
     -> CreateStack
 createStack pName_ =
-    CreateStack'
-    { _csDisplayName = Nothing
-    , _csDescription = Nothing
-    , _csName = pName_
-    }
+  CreateStack'
+  { _csStorageConnectors = Nothing
+  , _csDisplayName = Nothing
+  , _csDescription = Nothing
+  , _csName = pName_
+  }
 
--- | The name displayed to end users on the AppStream 2.0 portal.
+
+-- | The storage connectors to enable.
+csStorageConnectors :: Lens' CreateStack [StorageConnector]
+csStorageConnectors = lens _csStorageConnectors (\ s a -> s{_csStorageConnectors = a}) . _Default . _Coerce;
+
+-- | The stack name displayed to end users.
 csDisplayName :: Lens' CreateStack (Maybe Text)
 csDisplayName = lens _csDisplayName (\ s a -> s{_csDisplayName = a});
 
--- | The description displayed to end users on the AppStream 2.0 portal.
+-- | The description displayed to end users.
 csDescription :: Lens' CreateStack (Maybe Text)
 csDescription = lens _csDescription (\ s a -> s{_csDescription = a});
 
--- | The unique identifier for this stack.
+-- | The name of the stack.
 csName :: Lens' CreateStack Text
 csName = lens _csName (\ s a -> s{_csName = a});
 
@@ -93,9 +104,9 @@
                  CreateStackResponse' <$>
                    (x .?> "Stack") <*> (pure (fromEnum s)))
 
-instance Hashable CreateStack
+instance Hashable CreateStack where
 
-instance NFData CreateStack
+instance NFData CreateStack where
 
 instance ToHeaders CreateStack where
         toHeaders
@@ -111,7 +122,8 @@
         toJSON CreateStack'{..}
           = object
               (catMaybes
-                 [("DisplayName" .=) <$> _csDisplayName,
+                 [("StorageConnectors" .=) <$> _csStorageConnectors,
+                  ("DisplayName" .=) <$> _csDisplayName,
                   ("Description" .=) <$> _csDescription,
                   Just ("Name" .= _csName)])
 
@@ -123,27 +135,27 @@
 
 -- | /See:/ 'createStackResponse' smart constructor.
 data CreateStackResponse = CreateStackResponse'
-    { _csrsStack          :: !(Maybe Stack)
-    , _csrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _csrsStack          :: !(Maybe Stack)
+  , _csrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateStackResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csrsStack' - The details for the created stack.
+-- * 'csrsStack' - Information about the stack.
 --
 -- * 'csrsResponseStatus' - -- | The response status code.
 createStackResponse
     :: Int -- ^ 'csrsResponseStatus'
     -> CreateStackResponse
 createStackResponse pResponseStatus_ =
-    CreateStackResponse'
-    { _csrsStack = Nothing
-    , _csrsResponseStatus = pResponseStatus_
-    }
+  CreateStackResponse'
+  {_csrsStack = Nothing, _csrsResponseStatus = pResponseStatus_}
 
--- | The details for the created stack.
+
+-- | Information about the stack.
 csrsStack :: Lens' CreateStackResponse (Maybe Stack)
 csrsStack = lens _csrsStack (\ s a -> s{_csrsStack = a});
 
@@ -151,4 +163,4 @@
 csrsResponseStatus :: Lens' CreateStackResponse Int
 csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a});
 
-instance NFData CreateStackResponse
+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,15 +12,17 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.CreateStreamingURL
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Creates a URL to start an AppStream 2.0 streaming session for a user. By default, the URL is valid only for 1 minute from the time that it is generated.
+-- 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
@@ -43,54 +45,56 @@
     , csursResponseStatus
     ) 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
+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:/ 'createStreamingURL' smart constructor.
 data CreateStreamingURL = CreateStreamingURL'
-    { _csuSessionContext :: !(Maybe Text)
-    , _csuApplicationId  :: !(Maybe Text)
-    , _csuValidity       :: !(Maybe Integer)
-    , _csuStackName      :: !Text
-    , _csuFleetName      :: !Text
-    , _csuUserId         :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _csuSessionContext :: !(Maybe Text)
+  , _csuApplicationId  :: !(Maybe Text)
+  , _csuValidity       :: !(Maybe Integer)
+  , _csuStackName      :: !Text
+  , _csuFleetName      :: !Text
+  , _csuUserId         :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateStreamingURL' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csuSessionContext' - The sessionContext of the streaming URL.
+-- * 'csuSessionContext' - The session context of the streaming URL.
 --
 -- * 'csuApplicationId' - The ID of the application that must be launched after the session starts.
 --
--- * 'csuValidity' - The validity duration of the URL in seconds. After this duration, the URL returned by this operation becomes invalid.
+-- * 'csuValidity' - The time that the streaming URL will be valid, in seconds. Specify a value between 1 and 604800 seconds.
 --
--- * 'csuStackName' - The stack for which the URL is generated.
+-- * 'csuStackName' - The name of the stack.
 --
--- * 'csuFleetName' - The fleet for which the URL is generated.
+-- * 'csuFleetName' - The name of the fleet.
 --
--- * 'csuUserId' - A unique user ID for whom the URL is generated.
+-- * 'csuUserId' - The ID of the user.
 createStreamingURL
     :: Text -- ^ 'csuStackName'
     -> Text -- ^ 'csuFleetName'
     -> Text -- ^ 'csuUserId'
     -> CreateStreamingURL
 createStreamingURL pStackName_ pFleetName_ pUserId_ =
-    CreateStreamingURL'
-    { _csuSessionContext = Nothing
-    , _csuApplicationId = Nothing
-    , _csuValidity = Nothing
-    , _csuStackName = pStackName_
-    , _csuFleetName = pFleetName_
-    , _csuUserId = pUserId_
-    }
+  CreateStreamingURL'
+  { _csuSessionContext = Nothing
+  , _csuApplicationId = Nothing
+  , _csuValidity = Nothing
+  , _csuStackName = pStackName_
+  , _csuFleetName = pFleetName_
+  , _csuUserId = pUserId_
+  }
 
--- | The sessionContext of the streaming URL.
+
+-- | The session context of the streaming URL.
 csuSessionContext :: Lens' CreateStreamingURL (Maybe Text)
 csuSessionContext = lens _csuSessionContext (\ s a -> s{_csuSessionContext = a});
 
@@ -98,19 +102,19 @@
 csuApplicationId :: Lens' CreateStreamingURL (Maybe Text)
 csuApplicationId = lens _csuApplicationId (\ s a -> s{_csuApplicationId = a});
 
--- | The validity duration of the URL in seconds. After this duration, the URL returned by this operation becomes invalid.
+-- | The time that the streaming URL will be valid, in seconds. Specify a value between 1 and 604800 seconds.
 csuValidity :: Lens' CreateStreamingURL (Maybe Integer)
 csuValidity = lens _csuValidity (\ s a -> s{_csuValidity = a});
 
--- | The stack for which the URL is generated.
+-- | The name of the stack.
 csuStackName :: Lens' CreateStreamingURL Text
 csuStackName = lens _csuStackName (\ s a -> s{_csuStackName = a});
 
--- | The fleet for which the URL is generated.
+-- | The name of the fleet.
 csuFleetName :: Lens' CreateStreamingURL Text
 csuFleetName = lens _csuFleetName (\ s a -> s{_csuFleetName = a});
 
--- | A unique user ID for whom the URL is generated.
+-- | The ID of the user.
 csuUserId :: Lens' CreateStreamingURL Text
 csuUserId = lens _csuUserId (\ s a -> s{_csuUserId = a});
 
@@ -125,9 +129,9 @@
                    (x .?> "StreamingURL") <*> (x .?> "Expires") <*>
                      (pure (fromEnum s)))
 
-instance Hashable CreateStreamingURL
+instance Hashable CreateStreamingURL where
 
-instance NFData CreateStreamingURL
+instance NFData CreateStreamingURL where
 
 instance ToHeaders CreateStreamingURL where
         toHeaders
@@ -158,35 +162,37 @@
 
 -- | /See:/ 'createStreamingURLResponse' smart constructor.
 data CreateStreamingURLResponse = CreateStreamingURLResponse'
-    { _csursStreamingURL   :: !(Maybe Text)
-    , _csursExpires        :: !(Maybe POSIX)
-    , _csursResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _csursStreamingURL   :: !(Maybe Text)
+  , _csursExpires        :: !(Maybe POSIX)
+  , _csursResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateStreamingURLResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'csursStreamingURL' - The URL to start the AppStream 2.0 streaming session.
 --
--- * 'csursExpires' - Elapsed seconds after the Unix epoch, at which time this URL expires.
+-- * 'csursExpires' - The elapsed time, in seconds after the Unix epoch, when this URL expires.
 --
 -- * 'csursResponseStatus' - -- | The response status code.
 createStreamingURLResponse
     :: Int -- ^ 'csursResponseStatus'
     -> CreateStreamingURLResponse
 createStreamingURLResponse pResponseStatus_ =
-    CreateStreamingURLResponse'
-    { _csursStreamingURL = Nothing
-    , _csursExpires = Nothing
-    , _csursResponseStatus = pResponseStatus_
-    }
+  CreateStreamingURLResponse'
+  { _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});
 
--- | Elapsed seconds after the Unix epoch, at which time this URL expires.
+-- | 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;
 
@@ -194,4 +200,4 @@
 csursResponseStatus :: Lens' CreateStreamingURLResponse Int
 csursResponseStatus = lens _csursResponseStatus (\ s a -> s{_csursResponseStatus = a});
 
-instance NFData CreateStreamingURLResponse
+instance NFData CreateStreamingURLResponse where
diff --git a/gen/Network/AWS/AppStream/DeleteDirectoryConfig.hs b/gen/Network/AWS/AppStream/DeleteDirectoryConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/DeleteDirectoryConfig.hs
@@ -0,0 +1,126 @@
+{-# 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.DeleteDirectoryConfig
+-- Copyright   : (c) 2013-2017 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)
+--
+-- Deletes the specified directory configuration.
+--
+--
+module Network.AWS.AppStream.DeleteDirectoryConfig
+    (
+    -- * Creating a Request
+      deleteDirectoryConfig
+    , DeleteDirectoryConfig
+    -- * Request Lenses
+    , ddcDirectoryName
+
+    -- * Destructuring the Response
+    , deleteDirectoryConfigResponse
+    , DeleteDirectoryConfigResponse
+    -- * Response Lenses
+    , delrsResponseStatus
+    ) 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:/ 'deleteDirectoryConfig' smart constructor.
+newtype DeleteDirectoryConfig = DeleteDirectoryConfig'
+  { _ddcDirectoryName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeleteDirectoryConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddcDirectoryName' - The name of the directory configuration.
+deleteDirectoryConfig
+    :: Text -- ^ 'ddcDirectoryName'
+    -> DeleteDirectoryConfig
+deleteDirectoryConfig pDirectoryName_ =
+  DeleteDirectoryConfig' {_ddcDirectoryName = pDirectoryName_}
+
+
+-- | The name of the directory configuration.
+ddcDirectoryName :: Lens' DeleteDirectoryConfig Text
+ddcDirectoryName = lens _ddcDirectoryName (\ s a -> s{_ddcDirectoryName = a});
+
+instance AWSRequest DeleteDirectoryConfig where
+        type Rs DeleteDirectoryConfig =
+             DeleteDirectoryConfigResponse
+        request = postJSON appStream
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeleteDirectoryConfigResponse' <$>
+                   (pure (fromEnum s)))
+
+instance Hashable DeleteDirectoryConfig where
+
+instance NFData DeleteDirectoryConfig where
+
+instance ToHeaders DeleteDirectoryConfig where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.DeleteDirectoryConfig" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteDirectoryConfig where
+        toJSON DeleteDirectoryConfig'{..}
+          = object
+              (catMaybes
+                 [Just ("DirectoryName" .= _ddcDirectoryName)])
+
+instance ToPath DeleteDirectoryConfig where
+        toPath = const "/"
+
+instance ToQuery DeleteDirectoryConfig where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteDirectoryConfigResponse' smart constructor.
+newtype DeleteDirectoryConfigResponse = DeleteDirectoryConfigResponse'
+  { _delrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeleteDirectoryConfigResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'delrsResponseStatus' - -- | The response status code.
+deleteDirectoryConfigResponse
+    :: Int -- ^ 'delrsResponseStatus'
+    -> DeleteDirectoryConfigResponse
+deleteDirectoryConfigResponse pResponseStatus_ =
+  DeleteDirectoryConfigResponse' {_delrsResponseStatus = pResponseStatus_}
+
+
+-- | -- | The response status code.
+delrsResponseStatus :: Lens' DeleteDirectoryConfigResponse Int
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DeleteFleet
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Deletes a fleet.
+-- Deletes the specified fleet.
 --
 --
 module Network.AWS.AppStream.DeleteFleet
@@ -36,32 +36,31 @@
     , dfrsResponseStatus
     ) 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
+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:/ 'deleteFleet' smart constructor.
 newtype DeleteFleet = DeleteFleet'
-    { _dfName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dfName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteFleet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dfName' - The name of the fleet to be deleted.
+-- * 'dfName' - The name of the fleet.
 deleteFleet
     :: Text -- ^ 'dfName'
     -> DeleteFleet
-deleteFleet pName_ =
-    DeleteFleet'
-    { _dfName = pName_
-    }
+deleteFleet pName_ = DeleteFleet' {_dfName = pName_}
 
--- | The name of the fleet to be deleted.
+
+-- | The name of the fleet.
 dfName :: Lens' DeleteFleet Text
 dfName = lens _dfName (\ s a -> s{_dfName = a});
 
@@ -73,9 +72,9 @@
               (\ s h x ->
                  DeleteFleetResponse' <$> (pure (fromEnum s)))
 
-instance Hashable DeleteFleet
+instance Hashable DeleteFleet where
 
-instance NFData DeleteFleet
+instance NFData DeleteFleet where
 
 instance ToHeaders DeleteFleet where
         toHeaders
@@ -99,9 +98,10 @@
 
 -- | /See:/ 'deleteFleetResponse' smart constructor.
 newtype DeleteFleetResponse = DeleteFleetResponse'
-    { _dfrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dfrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteFleetResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -111,12 +111,11 @@
     :: Int -- ^ 'dfrsResponseStatus'
     -> DeleteFleetResponse
 deleteFleetResponse pResponseStatus_ =
-    DeleteFleetResponse'
-    { _dfrsResponseStatus = pResponseStatus_
-    }
+  DeleteFleetResponse' {_dfrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 dfrsResponseStatus :: Lens' DeleteFleetResponse Int
 dfrsResponseStatus = lens _dfrsResponseStatus (\ s a -> s{_dfrsResponseStatus = a});
 
-instance NFData DeleteFleetResponse
+instance NFData DeleteFleetResponse where
diff --git a/gen/Network/AWS/AppStream/DeleteImage.hs b/gen/Network/AWS/AppStream/DeleteImage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/DeleteImage.hs
@@ -0,0 +1,129 @@
+{-# 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.DeleteImage
+-- Copyright   : (c) 2013-2017 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.
+module Network.AWS.AppStream.DeleteImage
+    (
+    -- * Creating a Request
+      deleteImage
+    , DeleteImage
+    -- * Request Lenses
+    , diName
+
+    -- * Destructuring the Response
+    , deleteImageResponse
+    , DeleteImageResponse
+    -- * Response Lenses
+    , dirsImage
+    , dirsResponseStatus
+    ) 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:/ 'deleteImage' smart constructor.
+newtype DeleteImage = DeleteImage'
+  { _diName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeleteImage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'diName' - Undocumented member.
+deleteImage
+    :: Text -- ^ 'diName'
+    -> DeleteImage
+deleteImage pName_ = DeleteImage' {_diName = pName_}
+
+
+-- | Undocumented member.
+diName :: Lens' DeleteImage Text
+diName = lens _diName (\ s a -> s{_diName = a});
+
+instance AWSRequest DeleteImage where
+        type Rs DeleteImage = DeleteImageResponse
+        request = postJSON appStream
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteImageResponse' <$>
+                   (x .?> "Image") <*> (pure (fromEnum s)))
+
+instance Hashable DeleteImage where
+
+instance NFData DeleteImage where
+
+instance ToHeaders DeleteImage where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.DeleteImage" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteImage where
+        toJSON DeleteImage'{..}
+          = object (catMaybes [Just ("Name" .= _diName)])
+
+instance ToPath DeleteImage where
+        toPath = const "/"
+
+instance ToQuery DeleteImage where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteImageResponse' smart constructor.
+data DeleteImageResponse = DeleteImageResponse'
+  { _dirsImage          :: !(Maybe Image)
+  , _dirsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeleteImageResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dirsImage' - Undocumented member.
+--
+-- * 'dirsResponseStatus' - -- | The response status code.
+deleteImageResponse
+    :: Int -- ^ 'dirsResponseStatus'
+    -> DeleteImageResponse
+deleteImageResponse pResponseStatus_ =
+  DeleteImageResponse'
+  {_dirsImage = Nothing, _dirsResponseStatus = pResponseStatus_}
+
+
+-- | Undocumented member.
+dirsImage :: Lens' DeleteImageResponse (Maybe Image)
+dirsImage = lens _dirsImage (\ s a -> s{_dirsImage = a});
+
+-- | -- | The response status code.
+dirsResponseStatus :: Lens' DeleteImageResponse Int
+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
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/DeleteImageBuilder.hs
@@ -0,0 +1,130 @@
+{-# 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.DeleteImageBuilder
+-- Copyright   : (c) 2013-2017 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.
+module Network.AWS.AppStream.DeleteImageBuilder
+    (
+    -- * Creating a Request
+      deleteImageBuilder
+    , DeleteImageBuilder
+    -- * Request Lenses
+    , dibName
+
+    -- * Destructuring the Response
+    , deleteImageBuilderResponse
+    , DeleteImageBuilderResponse
+    -- * Response Lenses
+    , dibrsImageBuilder
+    , dibrsResponseStatus
+    ) 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:/ 'deleteImageBuilder' smart constructor.
+newtype DeleteImageBuilder = DeleteImageBuilder'
+  { _dibName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeleteImageBuilder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dibName' - Undocumented member.
+deleteImageBuilder
+    :: Text -- ^ 'dibName'
+    -> DeleteImageBuilder
+deleteImageBuilder pName_ = DeleteImageBuilder' {_dibName = pName_}
+
+
+-- | Undocumented member.
+dibName :: Lens' DeleteImageBuilder Text
+dibName = lens _dibName (\ s a -> s{_dibName = a});
+
+instance AWSRequest DeleteImageBuilder where
+        type Rs DeleteImageBuilder =
+             DeleteImageBuilderResponse
+        request = postJSON appStream
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteImageBuilderResponse' <$>
+                   (x .?> "ImageBuilder") <*> (pure (fromEnum s)))
+
+instance Hashable DeleteImageBuilder where
+
+instance NFData DeleteImageBuilder where
+
+instance ToHeaders DeleteImageBuilder where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.DeleteImageBuilder" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteImageBuilder where
+        toJSON DeleteImageBuilder'{..}
+          = object (catMaybes [Just ("Name" .= _dibName)])
+
+instance ToPath DeleteImageBuilder where
+        toPath = const "/"
+
+instance ToQuery DeleteImageBuilder where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteImageBuilderResponse' smart constructor.
+data DeleteImageBuilderResponse = DeleteImageBuilderResponse'
+  { _dibrsImageBuilder   :: !(Maybe ImageBuilder)
+  , _dibrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeleteImageBuilderResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dibrsImageBuilder' - Undocumented member.
+--
+-- * 'dibrsResponseStatus' - -- | The response status code.
+deleteImageBuilderResponse
+    :: Int -- ^ 'dibrsResponseStatus'
+    -> DeleteImageBuilderResponse
+deleteImageBuilderResponse pResponseStatus_ =
+  DeleteImageBuilderResponse'
+  {_dibrsImageBuilder = Nothing, _dibrsResponseStatus = pResponseStatus_}
+
+
+-- | Undocumented member.
+dibrsImageBuilder :: Lens' DeleteImageBuilderResponse (Maybe ImageBuilder)
+dibrsImageBuilder = lens _dibrsImageBuilder (\ s a -> s{_dibrsImageBuilder = a});
+
+-- | -- | The response status code.
+dibrsResponseStatus :: Lens' DeleteImageBuilderResponse Int
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DeleteStack
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Deletes the stack. After this operation completes, the environment can no longer be activated, and any reservations made for the stack are released.
+-- Deletes the specified stack. After this operation completes, the environment can no longer be activated and any reservations made for the stack are released.
 --
 --
 module Network.AWS.AppStream.DeleteStack
@@ -36,32 +36,31 @@
     , dsrsResponseStatus
     ) 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
+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:/ 'deleteStack' smart constructor.
 newtype DeleteStack = DeleteStack'
-    { _dsName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteStack' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dsName' - The name of the stack to delete.
+-- * 'dsName' - The name of the stack.
 deleteStack
     :: Text -- ^ 'dsName'
     -> DeleteStack
-deleteStack pName_ =
-    DeleteStack'
-    { _dsName = pName_
-    }
+deleteStack pName_ = DeleteStack' {_dsName = pName_}
 
--- | The name of the stack to delete.
+
+-- | The name of the stack.
 dsName :: Lens' DeleteStack Text
 dsName = lens _dsName (\ s a -> s{_dsName = a});
 
@@ -73,9 +72,9 @@
               (\ s h x ->
                  DeleteStackResponse' <$> (pure (fromEnum s)))
 
-instance Hashable DeleteStack
+instance Hashable DeleteStack where
 
-instance NFData DeleteStack
+instance NFData DeleteStack where
 
 instance ToHeaders DeleteStack where
         toHeaders
@@ -99,9 +98,10 @@
 
 -- | /See:/ 'deleteStackResponse' smart constructor.
 newtype DeleteStackResponse = DeleteStackResponse'
-    { _dsrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteStackResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -111,12 +111,11 @@
     :: Int -- ^ 'dsrsResponseStatus'
     -> DeleteStackResponse
 deleteStackResponse pResponseStatus_ =
-    DeleteStackResponse'
-    { _dsrsResponseStatus = pResponseStatus_
-    }
+  DeleteStackResponse' {_dsrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 dsrsResponseStatus :: Lens' DeleteStackResponse Int
 dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a});
 
-instance NFData DeleteStackResponse
+instance NFData DeleteStackResponse where
diff --git a/gen/Network/AWS/AppStream/DescribeDirectoryConfigs.hs b/gen/Network/AWS/AppStream/DescribeDirectoryConfigs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/DescribeDirectoryConfigs.hs
@@ -0,0 +1,170 @@
+{-# 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.DescribeDirectoryConfigs
+-- Copyright   : (c) 2013-2017 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.
+--
+--
+module Network.AWS.AppStream.DescribeDirectoryConfigs
+    (
+    -- * Creating a Request
+      describeDirectoryConfigs
+    , DescribeDirectoryConfigs
+    -- * Request Lenses
+    , ddcNextToken
+    , ddcDirectoryNames
+    , ddcMaxResults
+
+    -- * Destructuring the Response
+    , describeDirectoryConfigsResponse
+    , DescribeDirectoryConfigsResponse
+    -- * Response Lenses
+    , ddcrsNextToken
+    , ddcrsDirectoryConfigs
+    , ddcrsResponseStatus
+    ) 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:/ 'describeDirectoryConfigs' smart constructor.
+data DescribeDirectoryConfigs = DescribeDirectoryConfigs'
+  { _ddcNextToken      :: !(Maybe Text)
+  , _ddcDirectoryNames :: !(Maybe [Text])
+  , _ddcMaxResults     :: !(Maybe Int)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeDirectoryConfigs' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddcNextToken' - 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.
+--
+-- * 'ddcDirectoryNames' - The directory names.
+--
+-- * 'ddcMaxResults' - The maximum size of each page of results.
+describeDirectoryConfigs
+    :: DescribeDirectoryConfigs
+describeDirectoryConfigs =
+  DescribeDirectoryConfigs'
+  { _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});
+
+-- | The directory names.
+ddcDirectoryNames :: Lens' DescribeDirectoryConfigs [Text]
+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});
+
+instance AWSRequest DescribeDirectoryConfigs where
+        type Rs DescribeDirectoryConfigs =
+             DescribeDirectoryConfigsResponse
+        request = postJSON appStream
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeDirectoryConfigsResponse' <$>
+                   (x .?> "NextToken") <*>
+                     (x .?> "DirectoryConfigs" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance Hashable DescribeDirectoryConfigs where
+
+instance NFData DescribeDirectoryConfigs where
+
+instance ToHeaders DescribeDirectoryConfigs where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.DescribeDirectoryConfigs"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeDirectoryConfigs where
+        toJSON DescribeDirectoryConfigs'{..}
+          = object
+              (catMaybes
+                 [("NextToken" .=) <$> _ddcNextToken,
+                  ("DirectoryNames" .=) <$> _ddcDirectoryNames,
+                  ("MaxResults" .=) <$> _ddcMaxResults])
+
+instance ToPath DescribeDirectoryConfigs where
+        toPath = const "/"
+
+instance ToQuery DescribeDirectoryConfigs where
+        toQuery = const mempty
+
+-- | /See:/ 'describeDirectoryConfigsResponse' smart constructor.
+data DescribeDirectoryConfigsResponse = DescribeDirectoryConfigsResponse'
+  { _ddcrsNextToken        :: !(Maybe Text)
+  , _ddcrsDirectoryConfigs :: !(Maybe [DirectoryConfig])
+  , _ddcrsResponseStatus   :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeDirectoryConfigsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * '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.
+--
+-- * 'ddcrsResponseStatus' - -- | The response status code.
+describeDirectoryConfigsResponse
+    :: Int -- ^ 'ddcrsResponseStatus'
+    -> DescribeDirectoryConfigsResponse
+describeDirectoryConfigsResponse pResponseStatus_ =
+  DescribeDirectoryConfigsResponse'
+  { _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});
+
+-- | Information about the directory configurations.
+ddcrsDirectoryConfigs :: Lens' DescribeDirectoryConfigsResponse [DirectoryConfig]
+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});
+
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DescribeFleets
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- If fleet names are provided, this operation describes the specified fleets; otherwise, all the fleets in the account are described.
+-- Describes the specified fleets or all fleets in the account.
 --
 --
 module Network.AWS.AppStream.DescribeFleets
@@ -39,39 +39,37 @@
     , dfsrsResponseStatus
     ) 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
+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:/ 'describeFleets' smart constructor.
 data DescribeFleets = DescribeFleets'
-    { _dfNextToken :: !(Maybe Text)
-    , _dfNames     :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dfNextToken :: !(Maybe Text)
+  , _dfNames     :: !(Maybe [Text])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeFleets' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'dfNextToken' - 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.
 --
--- * 'dfNames' - The fleet names to describe. Use null to describe all the fleets for the AWS account.
+-- * 'dfNames' - The names of the fleets to describe.
 describeFleets
     :: DescribeFleets
-describeFleets =
-    DescribeFleets'
-    { _dfNextToken = Nothing
-    , _dfNames = Nothing
-    }
+describeFleets = DescribeFleets' {_dfNextToken = Nothing, _dfNames = 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.
 dfNextToken :: Lens' DescribeFleets (Maybe Text)
 dfNextToken = lens _dfNextToken (\ s a -> s{_dfNextToken = a});
 
--- | The fleet names to describe. Use null to describe all the fleets for the AWS account.
+-- | The names of the fleets to describe.
 dfNames :: Lens' DescribeFleets [Text]
 dfNames = lens _dfNames (\ s a -> s{_dfNames = a}) . _Default . _Coerce;
 
@@ -85,9 +83,9 @@
                    (x .?> "NextToken") <*> (x .?> "Fleets" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeFleets
+instance Hashable DescribeFleets where
 
-instance NFData DescribeFleets
+instance NFData DescribeFleets where
 
 instance ToHeaders DescribeFleets where
         toHeaders
@@ -114,35 +112,37 @@
 
 -- | /See:/ 'describeFleetsResponse' smart constructor.
 data DescribeFleetsResponse = DescribeFleetsResponse'
-    { _dfsrsNextToken      :: !(Maybe Text)
-    , _dfsrsFleets         :: !(Maybe [Fleet])
-    , _dfsrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dfsrsNextToken      :: !(Maybe Text)
+  , _dfsrsFleets         :: !(Maybe [Fleet])
+  , _dfsrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeFleetsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'dfsrsNextToken' - 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.
 --
--- * 'dfsrsFleets' - The list of fleet details.
+-- * 'dfsrsFleets' - Information about the fleets.
 --
 -- * 'dfsrsResponseStatus' - -- | The response status code.
 describeFleetsResponse
     :: Int -- ^ 'dfsrsResponseStatus'
     -> DescribeFleetsResponse
 describeFleetsResponse pResponseStatus_ =
-    DescribeFleetsResponse'
-    { _dfsrsNextToken = Nothing
-    , _dfsrsFleets = Nothing
-    , _dfsrsResponseStatus = pResponseStatus_
-    }
+  DescribeFleetsResponse'
+  { _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});
 
--- | The list of fleet details.
+-- | Information about the fleets.
 dfsrsFleets :: Lens' DescribeFleetsResponse [Fleet]
 dfsrsFleets = lens _dfsrsFleets (\ s a -> s{_dfsrsFleets = a}) . _Default . _Coerce;
 
@@ -150,4 +150,4 @@
 dfsrsResponseStatus :: Lens' DescribeFleetsResponse Int
 dfsrsResponseStatus = lens _dfsrsResponseStatus (\ s a -> s{_dfsrsResponseStatus = a});
 
-instance NFData DescribeFleetsResponse
+instance NFData DescribeFleetsResponse where
diff --git a/gen/Network/AWS/AppStream/DescribeImageBuilders.hs b/gen/Network/AWS/AppStream/DescribeImageBuilders.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/DescribeImageBuilders.hs
@@ -0,0 +1,164 @@
+{-# 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.DescribeImageBuilders
+-- Copyright   : (c) 2013-2017 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.
+module Network.AWS.AppStream.DescribeImageBuilders
+    (
+    -- * Creating a Request
+      describeImageBuilders
+    , DescribeImageBuilders
+    -- * Request Lenses
+    , dibNextToken
+    , dibNames
+    , dibMaxResults
+
+    -- * Destructuring the Response
+    , describeImageBuildersResponse
+    , DescribeImageBuildersResponse
+    -- * Response Lenses
+    , dibsrsImageBuilders
+    , dibsrsNextToken
+    , dibsrsResponseStatus
+    ) 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:/ 'describeImageBuilders' smart constructor.
+data DescribeImageBuilders = DescribeImageBuilders'
+  { _dibNextToken  :: !(Maybe Text)
+  , _dibNames      :: !(Maybe [Text])
+  , _dibMaxResults :: !(Maybe Int)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeImageBuilders' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dibNextToken' - Undocumented member.
+--
+-- * 'dibNames' - Undocumented member.
+--
+-- * 'dibMaxResults' - Undocumented member.
+describeImageBuilders
+    :: DescribeImageBuilders
+describeImageBuilders =
+  DescribeImageBuilders'
+  {_dibNextToken = Nothing, _dibNames = Nothing, _dibMaxResults = Nothing}
+
+
+-- | Undocumented member.
+dibNextToken :: Lens' DescribeImageBuilders (Maybe Text)
+dibNextToken = lens _dibNextToken (\ s a -> s{_dibNextToken = a});
+
+-- | Undocumented member.
+dibNames :: Lens' DescribeImageBuilders [Text]
+dibNames = lens _dibNames (\ s a -> s{_dibNames = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+dibMaxResults :: Lens' DescribeImageBuilders (Maybe Int)
+dibMaxResults = lens _dibMaxResults (\ s a -> s{_dibMaxResults = a});
+
+instance AWSRequest DescribeImageBuilders where
+        type Rs DescribeImageBuilders =
+             DescribeImageBuildersResponse
+        request = postJSON appStream
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeImageBuildersResponse' <$>
+                   (x .?> "ImageBuilders" .!@ mempty) <*>
+                     (x .?> "NextToken")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable DescribeImageBuilders where
+
+instance NFData DescribeImageBuilders where
+
+instance ToHeaders DescribeImageBuilders where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.DescribeImageBuilders" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeImageBuilders where
+        toJSON DescribeImageBuilders'{..}
+          = object
+              (catMaybes
+                 [("NextToken" .=) <$> _dibNextToken,
+                  ("Names" .=) <$> _dibNames,
+                  ("MaxResults" .=) <$> _dibMaxResults])
+
+instance ToPath DescribeImageBuilders where
+        toPath = const "/"
+
+instance ToQuery DescribeImageBuilders where
+        toQuery = const mempty
+
+-- | /See:/ 'describeImageBuildersResponse' smart constructor.
+data DescribeImageBuildersResponse = DescribeImageBuildersResponse'
+  { _dibsrsImageBuilders  :: !(Maybe [ImageBuilder])
+  , _dibsrsNextToken      :: !(Maybe Text)
+  , _dibsrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeImageBuildersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dibsrsImageBuilders' - Undocumented member.
+--
+-- * 'dibsrsNextToken' - Undocumented member.
+--
+-- * 'dibsrsResponseStatus' - -- | The response status code.
+describeImageBuildersResponse
+    :: Int -- ^ 'dibsrsResponseStatus'
+    -> DescribeImageBuildersResponse
+describeImageBuildersResponse pResponseStatus_ =
+  DescribeImageBuildersResponse'
+  { _dibsrsImageBuilders = Nothing
+  , _dibsrsNextToken = Nothing
+  , _dibsrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | Undocumented member.
+dibsrsImageBuilders :: Lens' DescribeImageBuildersResponse [ImageBuilder]
+dibsrsImageBuilders = lens _dibsrsImageBuilders (\ s a -> s{_dibsrsImageBuilders = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+dibsrsNextToken :: Lens' DescribeImageBuildersResponse (Maybe Text)
+dibsrsNextToken = lens _dibsrsNextToken (\ s a -> s{_dibsrsNextToken = a});
+
+-- | -- | The response status code.
+dibsrsResponseStatus :: Lens' DescribeImageBuildersResponse Int
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DescribeImages
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes the images. If a list of names is not provided, all images in your account are returned. This operation does not return a paginated result.
+-- Describes the specified images or all images in the account.
 --
 --
 module Network.AWS.AppStream.DescribeImages
@@ -33,35 +33,34 @@
     , describeImagesResponse
     , DescribeImagesResponse
     -- * Response Lenses
-    , dirsImages
-    , dirsResponseStatus
+    , disrsImages
+    , disrsResponseStatus
     ) 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
+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:/ 'describeImages' smart constructor.
 newtype DescribeImages = DescribeImages'
-    { _diNames :: Maybe [Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _diNames :: Maybe [Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeImages' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'diNames' - A specific list of images to describe.
+-- * 'diNames' - The names of the images to describe.
 describeImages
     :: DescribeImages
-describeImages =
-    DescribeImages'
-    { _diNames = Nothing
-    }
+describeImages = DescribeImages' {_diNames = Nothing}
 
--- | A specific list of images to describe.
+
+-- | The names of the images to describe.
 diNames :: Lens' DescribeImages [Text]
 diNames = lens _diNames (\ s a -> s{_diNames = a}) . _Default . _Coerce;
 
@@ -74,9 +73,9 @@
                  DescribeImagesResponse' <$>
                    (x .?> "Images" .!@ mempty) <*> (pure (fromEnum s)))
 
-instance Hashable DescribeImages
+instance Hashable DescribeImages where
 
-instance NFData DescribeImages
+instance NFData DescribeImages where
 
 instance ToHeaders DescribeImages where
         toHeaders
@@ -100,32 +99,32 @@
 
 -- | /See:/ 'describeImagesResponse' smart constructor.
 data DescribeImagesResponse = DescribeImagesResponse'
-    { _dirsImages         :: !(Maybe [Image])
-    , _dirsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _disrsImages         :: !(Maybe [Image])
+  , _disrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeImagesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dirsImages' - The list of images.
+-- * 'disrsImages' - Information about the images.
 --
--- * 'dirsResponseStatus' - -- | The response status code.
+-- * 'disrsResponseStatus' - -- | The response status code.
 describeImagesResponse
-    :: Int -- ^ 'dirsResponseStatus'
+    :: Int -- ^ 'disrsResponseStatus'
     -> DescribeImagesResponse
 describeImagesResponse pResponseStatus_ =
-    DescribeImagesResponse'
-    { _dirsImages = Nothing
-    , _dirsResponseStatus = pResponseStatus_
-    }
+  DescribeImagesResponse'
+  {_disrsImages = Nothing, _disrsResponseStatus = pResponseStatus_}
 
--- | The list of images.
-dirsImages :: Lens' DescribeImagesResponse [Image]
-dirsImages = lens _dirsImages (\ s a -> s{_dirsImages = a}) . _Default . _Coerce;
 
+-- | Information about the images.
+disrsImages :: Lens' DescribeImagesResponse [Image]
+disrsImages = lens _disrsImages (\ s a -> s{_disrsImages = a}) . _Default . _Coerce;
+
 -- | -- | The response status code.
-dirsResponseStatus :: Lens' DescribeImagesResponse Int
-dirsResponseStatus = lens _dirsResponseStatus (\ s a -> s{_dirsResponseStatus = a});
+disrsResponseStatus :: Lens' DescribeImagesResponse Int
+disrsResponseStatus = lens _disrsResponseStatus (\ s a -> s{_disrsResponseStatus = a});
 
-instance NFData DescribeImagesResponse
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DescribeSessions
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes the streaming sessions for a stack and a fleet. If a user ID is provided, this operation returns streaming sessions for only that user. Pass this value for the @nextToken@ parameter in a subsequent call to this operation to retrieve the next set of items.
+-- Describes the streaming sessions for the specified stack and fleet. If a user ID is provided, only the streaming sessions for only that user are returned. If an authentication type is not provided, the default is to authenticate users using a streaming URL.
 --
 --
 module Network.AWS.AppStream.DescribeSessions
@@ -30,6 +30,7 @@
     , dsUserId
     , dsNextToken
     , dsLimit
+    , dsAuthenticationType
     , dsStackName
     , dsFleetName
 
@@ -42,49 +43,55 @@
     , dssrsResponseStatus
     ) 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
+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:/ 'describeSessions' smart constructor.
 data DescribeSessions = DescribeSessions'
-    { _dsUserId    :: !(Maybe Text)
-    , _dsNextToken :: !(Maybe Text)
-    , _dsLimit     :: !(Maybe Int)
-    , _dsStackName :: !Text
-    , _dsFleetName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsUserId             :: !(Maybe Text)
+  , _dsNextToken          :: !(Maybe Text)
+  , _dsLimit              :: !(Maybe Int)
+  , _dsAuthenticationType :: !(Maybe AuthenticationType)
+  , _dsStackName          :: !Text
+  , _dsFleetName          :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeSessions' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dsUserId' - The user for whom to list sessions. Use null to describe all the sessions for the stack and fleet.
+-- * 'dsUserId' - The user ID.
 --
 -- * 'dsNextToken' - 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.
 --
--- * 'dsLimit' - The size of each page of results. The default value is 20 and the maximum supported value is 50.
+-- * 'dsLimit' - The size of each page of results. The default value is 20 and the maximum value is 50.
 --
--- * 'dsStackName' - The name of the stack for which to list sessions.
+-- * '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.
 --
--- * 'dsFleetName' - The name of the fleet for which to list sessions.
+-- * 'dsStackName' - The name of the stack.
+--
+-- * 'dsFleetName' - The name of the fleet.
 describeSessions
     :: Text -- ^ 'dsStackName'
     -> Text -- ^ 'dsFleetName'
     -> DescribeSessions
 describeSessions pStackName_ pFleetName_ =
-    DescribeSessions'
-    { _dsUserId = Nothing
-    , _dsNextToken = Nothing
-    , _dsLimit = Nothing
-    , _dsStackName = pStackName_
-    , _dsFleetName = pFleetName_
-    }
+  DescribeSessions'
+  { _dsUserId = Nothing
+  , _dsNextToken = Nothing
+  , _dsLimit = Nothing
+  , _dsAuthenticationType = Nothing
+  , _dsStackName = pStackName_
+  , _dsFleetName = pFleetName_
+  }
 
--- | The user for whom to list sessions. Use null to describe all the sessions for the stack and fleet.
+
+-- | The user ID.
 dsUserId :: Lens' DescribeSessions (Maybe Text)
 dsUserId = lens _dsUserId (\ s a -> s{_dsUserId = a});
 
@@ -92,15 +99,19 @@
 dsNextToken :: Lens' DescribeSessions (Maybe Text)
 dsNextToken = lens _dsNextToken (\ s a -> s{_dsNextToken = a});
 
--- | The size of each page of results. The default value is 20 and the maximum supported value is 50.
+-- | 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});
 
--- | The name of the stack for which to list sessions.
+-- | 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});
+
+-- | The name of the stack.
 dsStackName :: Lens' DescribeSessions Text
 dsStackName = lens _dsStackName (\ s a -> s{_dsStackName = a});
 
--- | The name of the fleet for which to list sessions.
+-- | The name of the fleet.
 dsFleetName :: Lens' DescribeSessions Text
 dsFleetName = lens _dsFleetName (\ s a -> s{_dsFleetName = a});
 
@@ -114,9 +125,9 @@
                    (x .?> "NextToken") <*> (x .?> "Sessions" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeSessions
+instance Hashable DescribeSessions where
 
-instance NFData DescribeSessions
+instance NFData DescribeSessions where
 
 instance ToHeaders DescribeSessions where
         toHeaders
@@ -135,6 +146,7 @@
                  [("UserId" .=) <$> _dsUserId,
                   ("NextToken" .=) <$> _dsNextToken,
                   ("Limit" .=) <$> _dsLimit,
+                  ("AuthenticationType" .=) <$> _dsAuthenticationType,
                   Just ("StackName" .= _dsStackName),
                   Just ("FleetName" .= _dsFleetName)])
 
@@ -146,35 +158,37 @@
 
 -- | /See:/ 'describeSessionsResponse' smart constructor.
 data DescribeSessionsResponse = DescribeSessionsResponse'
-    { _dssrsNextToken      :: !(Maybe Text)
-    , _dssrsSessions       :: !(Maybe [Session])
-    , _dssrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dssrsNextToken      :: !(Maybe Text)
+  , _dssrsSessions       :: !(Maybe [Session])
+  , _dssrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeSessionsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'dssrsNextToken' - 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.
 --
--- * 'dssrsSessions' - The list of streaming sessions.
+-- * 'dssrsSessions' - Information about the streaming sessions.
 --
 -- * 'dssrsResponseStatus' - -- | The response status code.
 describeSessionsResponse
     :: Int -- ^ 'dssrsResponseStatus'
     -> DescribeSessionsResponse
 describeSessionsResponse pResponseStatus_ =
-    DescribeSessionsResponse'
-    { _dssrsNextToken = Nothing
-    , _dssrsSessions = Nothing
-    , _dssrsResponseStatus = pResponseStatus_
-    }
+  DescribeSessionsResponse'
+  { _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});
 
--- | The list of streaming sessions.
+-- | Information about the streaming sessions.
 dssrsSessions :: Lens' DescribeSessionsResponse [Session]
 dssrsSessions = lens _dssrsSessions (\ s a -> s{_dssrsSessions = a}) . _Default . _Coerce;
 
@@ -182,4 +196,4 @@
 dssrsResponseStatus :: Lens' DescribeSessionsResponse Int
 dssrsResponseStatus = lens _dssrsResponseStatus (\ s a -> s{_dssrsResponseStatus = a});
 
-instance NFData DescribeSessionsResponse
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DescribeStacks
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- If stack names are not provided, this operation describes the specified stacks; otherwise, all stacks in the account are described. Pass the @nextToken@ value in a subsequent call to this operation to retrieve the next set of items.
+-- Describes the specified stacks or all stacks in the account.
 --
 --
 module Network.AWS.AppStream.DescribeStacks
@@ -39,39 +39,37 @@
     , desrsResponseStatus
     ) 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
+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:/ 'describeStacks' smart constructor.
 data DescribeStacks = DescribeStacks'
-    { _dNextToken :: !(Maybe Text)
-    , _dNames     :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dNextToken :: !(Maybe Text)
+  , _dNames     :: !(Maybe [Text])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeStacks' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'dNextToken' - 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.
 --
--- * 'dNames' - The stack names to describe. Use null to describe all the stacks for the AWS account.
+-- * 'dNames' - The names of the stacks to describe.
 describeStacks
     :: DescribeStacks
-describeStacks =
-    DescribeStacks'
-    { _dNextToken = Nothing
-    , _dNames = Nothing
-    }
+describeStacks = DescribeStacks' {_dNextToken = Nothing, _dNames = 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.
 dNextToken :: Lens' DescribeStacks (Maybe Text)
 dNextToken = lens _dNextToken (\ s a -> s{_dNextToken = a});
 
--- | The stack names to describe. Use null to describe all the stacks for the AWS account.
+-- | The names of the stacks to describe.
 dNames :: Lens' DescribeStacks [Text]
 dNames = lens _dNames (\ s a -> s{_dNames = a}) . _Default . _Coerce;
 
@@ -85,9 +83,9 @@
                    (x .?> "NextToken") <*> (x .?> "Stacks" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeStacks
+instance Hashable DescribeStacks where
 
-instance NFData DescribeStacks
+instance NFData DescribeStacks where
 
 instance ToHeaders DescribeStacks where
         toHeaders
@@ -114,35 +112,37 @@
 
 -- | /See:/ 'describeStacksResponse' smart constructor.
 data DescribeStacksResponse = DescribeStacksResponse'
-    { _desrsNextToken      :: !(Maybe Text)
-    , _desrsStacks         :: !(Maybe [Stack])
-    , _desrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _desrsNextToken      :: !(Maybe Text)
+  , _desrsStacks         :: !(Maybe [Stack])
+  , _desrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeStacksResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'desrsNextToken' - 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.
 --
--- * 'desrsStacks' - The list of stack details.
+-- * 'desrsStacks' - Information about the stacks.
 --
 -- * 'desrsResponseStatus' - -- | The response status code.
 describeStacksResponse
     :: Int -- ^ 'desrsResponseStatus'
     -> DescribeStacksResponse
 describeStacksResponse pResponseStatus_ =
-    DescribeStacksResponse'
-    { _desrsNextToken = Nothing
-    , _desrsStacks = Nothing
-    , _desrsResponseStatus = pResponseStatus_
-    }
+  DescribeStacksResponse'
+  { _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});
 
--- | The list of stack details.
+-- | Information about the stacks.
 desrsStacks :: Lens' DescribeStacksResponse [Stack]
 desrsStacks = lens _desrsStacks (\ s a -> s{_desrsStacks = a}) . _Default . _Coerce;
 
@@ -150,4 +150,4 @@
 desrsResponseStatus :: Lens' DescribeStacksResponse Int
 desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a});
 
-instance NFData DescribeStacksResponse
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.DisassociateFleet
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Disassociates a fleet from a stack.
+-- Disassociates the specified fleet from the specified stack.
 --
 --
 module Network.AWS.AppStream.DisassociateFleet
@@ -37,41 +37,40 @@
     , drsResponseStatus
     ) 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
+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:/ 'disassociateFleet' smart constructor.
 data DisassociateFleet = DisassociateFleet'
-    { _dfFleetName :: !Text
-    , _dfStackName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dfFleetName :: !Text
+  , _dfStackName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DisassociateFleet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dfFleetName' - The name of the fleet to disassociate.
+-- * 'dfFleetName' - The name of the fleet.
 --
--- * 'dfStackName' - The name of the stack with which the fleet is associated.
+-- * 'dfStackName' - The name of the stack.
 disassociateFleet
     :: Text -- ^ 'dfFleetName'
     -> Text -- ^ 'dfStackName'
     -> DisassociateFleet
 disassociateFleet pFleetName_ pStackName_ =
-    DisassociateFleet'
-    { _dfFleetName = pFleetName_
-    , _dfStackName = pStackName_
-    }
+  DisassociateFleet' {_dfFleetName = pFleetName_, _dfStackName = pStackName_}
 
--- | The name of the fleet to disassociate.
+
+-- | The name of the fleet.
 dfFleetName :: Lens' DisassociateFleet Text
 dfFleetName = lens _dfFleetName (\ s a -> s{_dfFleetName = a});
 
--- | The name of the stack with which the fleet is associated.
+-- | The name of the stack.
 dfStackName :: Lens' DisassociateFleet Text
 dfStackName = lens _dfStackName (\ s a -> s{_dfStackName = a});
 
@@ -83,9 +82,9 @@
               (\ s h x ->
                  DisassociateFleetResponse' <$> (pure (fromEnum s)))
 
-instance Hashable DisassociateFleet
+instance Hashable DisassociateFleet where
 
-instance NFData DisassociateFleet
+instance NFData DisassociateFleet where
 
 instance ToHeaders DisassociateFleet where
         toHeaders
@@ -112,9 +111,10 @@
 
 -- | /See:/ 'disassociateFleetResponse' smart constructor.
 newtype DisassociateFleetResponse = DisassociateFleetResponse'
-    { _drsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _drsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DisassociateFleetResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -124,12 +124,11 @@
     :: Int -- ^ 'drsResponseStatus'
     -> DisassociateFleetResponse
 disassociateFleetResponse pResponseStatus_ =
-    DisassociateFleetResponse'
-    { _drsResponseStatus = pResponseStatus_
-    }
+  DisassociateFleetResponse' {_drsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 drsResponseStatus :: Lens' DisassociateFleetResponse Int
 drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
 
-instance NFData DisassociateFleetResponse
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.ExpireSession
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- This operation immediately stops a streaming session.
+-- Stops the specified streaming session.
 --
 --
 module Network.AWS.AppStream.ExpireSession
@@ -36,32 +36,31 @@
     , esrsResponseStatus
     ) 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
+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:/ 'expireSession' smart constructor.
 newtype ExpireSession = ExpireSession'
-    { _esSessionId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _esSessionId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ExpireSession' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'esSessionId' - The unique identifier of the streaming session to be stopped.
+-- * 'esSessionId' - The ID of the streaming session.
 expireSession
     :: Text -- ^ 'esSessionId'
     -> ExpireSession
-expireSession pSessionId_ =
-    ExpireSession'
-    { _esSessionId = pSessionId_
-    }
+expireSession pSessionId_ = ExpireSession' {_esSessionId = pSessionId_}
 
--- | The unique identifier of the streaming session to be stopped.
+
+-- | The ID of the streaming session.
 esSessionId :: Lens' ExpireSession Text
 esSessionId = lens _esSessionId (\ s a -> s{_esSessionId = a});
 
@@ -73,9 +72,9 @@
               (\ s h x ->
                  ExpireSessionResponse' <$> (pure (fromEnum s)))
 
-instance Hashable ExpireSession
+instance Hashable ExpireSession where
 
-instance NFData ExpireSession
+instance NFData ExpireSession where
 
 instance ToHeaders ExpireSession where
         toHeaders
@@ -100,9 +99,10 @@
 
 -- | /See:/ 'expireSessionResponse' smart constructor.
 newtype ExpireSessionResponse = ExpireSessionResponse'
-    { _esrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _esrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ExpireSessionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -112,12 +112,11 @@
     :: Int -- ^ 'esrsResponseStatus'
     -> ExpireSessionResponse
 expireSessionResponse pResponseStatus_ =
-    ExpireSessionResponse'
-    { _esrsResponseStatus = pResponseStatus_
-    }
+  ExpireSessionResponse' {_esrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 esrsResponseStatus :: Lens' ExpireSessionResponse Int
 esrsResponseStatus = lens _esrsResponseStatus (\ s a -> s{_esrsResponseStatus = a});
 
-instance NFData ExpireSessionResponse
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.ListAssociatedFleets
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Lists all fleets associated with the stack.
+-- Lists the fleets associated with the specified stack.
 --
 --
 module Network.AWS.AppStream.ListAssociatedFleets
@@ -39,40 +39,39 @@
     , lafrsResponseStatus
     ) 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
+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:/ 'listAssociatedFleets' smart constructor.
 data ListAssociatedFleets = ListAssociatedFleets'
-    { _lafNextToken :: !(Maybe Text)
-    , _lafStackName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lafNextToken :: !(Maybe Text)
+  , _lafStackName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListAssociatedFleets' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'lafNextToken' - 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.
 --
--- * 'lafStackName' - The name of the stack whose associated fleets are listed.
+-- * 'lafStackName' - The name of the stack.
 listAssociatedFleets
     :: Text -- ^ 'lafStackName'
     -> ListAssociatedFleets
 listAssociatedFleets pStackName_ =
-    ListAssociatedFleets'
-    { _lafNextToken = Nothing
-    , _lafStackName = pStackName_
-    }
+  ListAssociatedFleets' {_lafNextToken = Nothing, _lafStackName = pStackName_}
 
+
 -- | 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});
 
--- | The name of the stack whose associated fleets are listed.
+-- | The name of the stack.
 lafStackName :: Lens' ListAssociatedFleets Text
 lafStackName = lens _lafStackName (\ s a -> s{_lafStackName = a});
 
@@ -87,9 +86,9 @@
                    (x .?> "NextToken") <*> (x .?> "Names" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListAssociatedFleets
+instance Hashable ListAssociatedFleets where
 
-instance NFData ListAssociatedFleets
+instance NFData ListAssociatedFleets where
 
 instance ToHeaders ListAssociatedFleets where
         toHeaders
@@ -114,41 +113,39 @@
 instance ToQuery ListAssociatedFleets where
         toQuery = const mempty
 
--- | The response from a successful operation.
---
---
---
--- /See:/ 'listAssociatedFleetsResponse' smart constructor.
+-- | /See:/ 'listAssociatedFleetsResponse' smart constructor.
 data ListAssociatedFleetsResponse = ListAssociatedFleetsResponse'
-    { _lafrsNextToken      :: !(Maybe Text)
-    , _lafrsNames          :: !(Maybe [Text])
-    , _lafrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lafrsNextToken      :: !(Maybe Text)
+  , _lafrsNames          :: !(Maybe [Text])
+  , _lafrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListAssociatedFleetsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'lafrsNextToken' - 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.
 --
--- * 'lafrsNames' - The names of associated fleets.
+-- * 'lafrsNames' - The names of the fleets.
 --
 -- * 'lafrsResponseStatus' - -- | The response status code.
 listAssociatedFleetsResponse
     :: Int -- ^ 'lafrsResponseStatus'
     -> ListAssociatedFleetsResponse
 listAssociatedFleetsResponse pResponseStatus_ =
-    ListAssociatedFleetsResponse'
-    { _lafrsNextToken = Nothing
-    , _lafrsNames = Nothing
-    , _lafrsResponseStatus = pResponseStatus_
-    }
+  ListAssociatedFleetsResponse'
+  { _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});
 
--- | The names of associated fleets.
+-- | The names of the fleets.
 lafrsNames :: Lens' ListAssociatedFleetsResponse [Text]
 lafrsNames = lens _lafrsNames (\ s a -> s{_lafrsNames = a}) . _Default . _Coerce;
 
@@ -156,4 +153,4 @@
 lafrsResponseStatus :: Lens' ListAssociatedFleetsResponse Int
 lafrsResponseStatus = lens _lafrsResponseStatus (\ s a -> s{_lafrsResponseStatus = a});
 
-instance NFData ListAssociatedFleetsResponse
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.ListAssociatedStacks
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Lists all stacks to which the specified fleet is associated.
+-- Lists the stacks associated with the specified fleet.
 --
 --
 module Network.AWS.AppStream.ListAssociatedStacks
@@ -39,40 +39,39 @@
     , lasrsResponseStatus
     ) 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
+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:/ 'listAssociatedStacks' smart constructor.
 data ListAssociatedStacks = ListAssociatedStacks'
-    { _lasNextToken :: !(Maybe Text)
-    , _lasFleetName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lasNextToken :: !(Maybe Text)
+  , _lasFleetName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListAssociatedStacks' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'lasNextToken' - 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.
 --
--- * 'lasFleetName' - The name of the fleet whose associated stacks are listed.
+-- * 'lasFleetName' - The name of the fleet.
 listAssociatedStacks
     :: Text -- ^ 'lasFleetName'
     -> ListAssociatedStacks
 listAssociatedStacks pFleetName_ =
-    ListAssociatedStacks'
-    { _lasNextToken = Nothing
-    , _lasFleetName = pFleetName_
-    }
+  ListAssociatedStacks' {_lasNextToken = Nothing, _lasFleetName = pFleetName_}
 
+
 -- | 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});
 
--- | The name of the fleet whose associated stacks are listed.
+-- | The name of the fleet.
 lasFleetName :: Lens' ListAssociatedStacks Text
 lasFleetName = lens _lasFleetName (\ s a -> s{_lasFleetName = a});
 
@@ -87,9 +86,9 @@
                    (x .?> "NextToken") <*> (x .?> "Names" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListAssociatedStacks
+instance Hashable ListAssociatedStacks where
 
-instance NFData ListAssociatedStacks
+instance NFData ListAssociatedStacks where
 
 instance ToHeaders ListAssociatedStacks where
         toHeaders
@@ -114,41 +113,39 @@
 instance ToQuery ListAssociatedStacks where
         toQuery = const mempty
 
--- | The response from a successful operation.
---
---
---
--- /See:/ 'listAssociatedStacksResponse' smart constructor.
+-- | /See:/ 'listAssociatedStacksResponse' smart constructor.
 data ListAssociatedStacksResponse = ListAssociatedStacksResponse'
-    { _lasrsNextToken      :: !(Maybe Text)
-    , _lasrsNames          :: !(Maybe [Text])
-    , _lasrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lasrsNextToken      :: !(Maybe Text)
+  , _lasrsNames          :: !(Maybe [Text])
+  , _lasrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListAssociatedStacksResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'lasrsNextToken' - 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.
 --
--- * 'lasrsNames' - The names of associated stacks.
+-- * 'lasrsNames' - The names of the stacks.
 --
 -- * 'lasrsResponseStatus' - -- | The response status code.
 listAssociatedStacksResponse
     :: Int -- ^ 'lasrsResponseStatus'
     -> ListAssociatedStacksResponse
 listAssociatedStacksResponse pResponseStatus_ =
-    ListAssociatedStacksResponse'
-    { _lasrsNextToken = Nothing
-    , _lasrsNames = Nothing
-    , _lasrsResponseStatus = pResponseStatus_
-    }
+  ListAssociatedStacksResponse'
+  { _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});
 
--- | The names of associated stacks.
+-- | The names of the stacks.
 lasrsNames :: Lens' ListAssociatedStacksResponse [Text]
 lasrsNames = lens _lasrsNames (\ s a -> s{_lasrsNames = a}) . _Default . _Coerce;
 
@@ -156,4 +153,4 @@
 lasrsResponseStatus :: Lens' ListAssociatedStacksResponse Int
 lasrsResponseStatus = lens _lasrsResponseStatus (\ s a -> s{_lasrsResponseStatus = a});
 
-instance NFData ListAssociatedStacksResponse
+instance NFData ListAssociatedStacksResponse 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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.StartFleet
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Starts a fleet.
+-- Starts the specified fleet.
 --
 --
 module Network.AWS.AppStream.StartFleet
@@ -36,32 +36,31 @@
     , sfrsResponseStatus
     ) 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
+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:/ 'startFleet' smart constructor.
 newtype StartFleet = StartFleet'
-    { _staName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _staName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StartFleet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'staName' - The name of the fleet to start.
+-- * 'staName' - The name of the fleet.
 startFleet
     :: Text -- ^ 'staName'
     -> StartFleet
-startFleet pName_ =
-    StartFleet'
-    { _staName = pName_
-    }
+startFleet pName_ = StartFleet' {_staName = pName_}
 
--- | The name of the fleet to start.
+
+-- | The name of the fleet.
 staName :: Lens' StartFleet Text
 staName = lens _staName (\ s a -> s{_staName = a});
 
@@ -73,9 +72,9 @@
               (\ s h x ->
                  StartFleetResponse' <$> (pure (fromEnum s)))
 
-instance Hashable StartFleet
+instance Hashable StartFleet where
 
-instance NFData StartFleet
+instance NFData StartFleet where
 
 instance ToHeaders StartFleet where
         toHeaders
@@ -98,9 +97,10 @@
 
 -- | /See:/ 'startFleetResponse' smart constructor.
 newtype StartFleetResponse = StartFleetResponse'
-    { _sfrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _sfrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StartFleetResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,12 +110,11 @@
     :: Int -- ^ 'sfrsResponseStatus'
     -> StartFleetResponse
 startFleetResponse pResponseStatus_ =
-    StartFleetResponse'
-    { _sfrsResponseStatus = pResponseStatus_
-    }
+  StartFleetResponse' {_sfrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 sfrsResponseStatus :: Lens' StartFleetResponse Int
 sfrsResponseStatus = lens _sfrsResponseStatus (\ s a -> s{_sfrsResponseStatus = a});
 
-instance NFData StartFleetResponse
+instance NFData StartFleetResponse where
diff --git a/gen/Network/AWS/AppStream/StartImageBuilder.hs b/gen/Network/AWS/AppStream/StartImageBuilder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/StartImageBuilder.hs
@@ -0,0 +1,129 @@
+{-# 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.StartImageBuilder
+-- Copyright   : (c) 2013-2017 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.
+module Network.AWS.AppStream.StartImageBuilder
+    (
+    -- * Creating a Request
+      startImageBuilder
+    , StartImageBuilder
+    -- * Request Lenses
+    , sibName
+
+    -- * Destructuring the Response
+    , startImageBuilderResponse
+    , StartImageBuilderResponse
+    -- * Response Lenses
+    , srsImageBuilder
+    , srsResponseStatus
+    ) 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:/ 'startImageBuilder' smart constructor.
+newtype StartImageBuilder = StartImageBuilder'
+  { _sibName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StartImageBuilder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sibName' - Undocumented member.
+startImageBuilder
+    :: Text -- ^ 'sibName'
+    -> StartImageBuilder
+startImageBuilder pName_ = StartImageBuilder' {_sibName = pName_}
+
+
+-- | Undocumented member.
+sibName :: Lens' StartImageBuilder Text
+sibName = lens _sibName (\ s a -> s{_sibName = a});
+
+instance AWSRequest StartImageBuilder where
+        type Rs StartImageBuilder = StartImageBuilderResponse
+        request = postJSON appStream
+        response
+          = receiveJSON
+              (\ s h x ->
+                 StartImageBuilderResponse' <$>
+                   (x .?> "ImageBuilder") <*> (pure (fromEnum s)))
+
+instance Hashable StartImageBuilder where
+
+instance NFData StartImageBuilder where
+
+instance ToHeaders StartImageBuilder where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.StartImageBuilder" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON StartImageBuilder where
+        toJSON StartImageBuilder'{..}
+          = object (catMaybes [Just ("Name" .= _sibName)])
+
+instance ToPath StartImageBuilder where
+        toPath = const "/"
+
+instance ToQuery StartImageBuilder where
+        toQuery = const mempty
+
+-- | /See:/ 'startImageBuilderResponse' smart constructor.
+data StartImageBuilderResponse = StartImageBuilderResponse'
+  { _srsImageBuilder   :: !(Maybe ImageBuilder)
+  , _srsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StartImageBuilderResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srsImageBuilder' - Undocumented member.
+--
+-- * 'srsResponseStatus' - -- | The response status code.
+startImageBuilderResponse
+    :: Int -- ^ 'srsResponseStatus'
+    -> StartImageBuilderResponse
+startImageBuilderResponse pResponseStatus_ =
+  StartImageBuilderResponse'
+  {_srsImageBuilder = Nothing, _srsResponseStatus = pResponseStatus_}
+
+
+-- | Undocumented member.
+srsImageBuilder :: Lens' StartImageBuilderResponse (Maybe ImageBuilder)
+srsImageBuilder = lens _srsImageBuilder (\ s a -> s{_srsImageBuilder = a});
+
+-- | -- | The response status code.
+srsResponseStatus :: Lens' StartImageBuilderResponse Int
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.StopFleet
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Stops a fleet.
+-- Stops the specified fleet.
 --
 --
 module Network.AWS.AppStream.StopFleet
@@ -33,35 +33,34 @@
     , stopFleetResponse
     , StopFleetResponse
     -- * Response Lenses
-    , srsResponseStatus
+    , storsResponseStatus
     ) 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
+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:/ 'stopFleet' smart constructor.
 newtype StopFleet = StopFleet'
-    { _sfName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _sfName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StopFleet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sfName' - The name of the fleet to stop.
+-- * 'sfName' - The name of the fleet.
 stopFleet
     :: Text -- ^ 'sfName'
     -> StopFleet
-stopFleet pName_ =
-    StopFleet'
-    { _sfName = pName_
-    }
+stopFleet pName_ = StopFleet' {_sfName = pName_}
 
--- | The name of the fleet to stop.
+
+-- | The name of the fleet.
 sfName :: Lens' StopFleet Text
 sfName = lens _sfName (\ s a -> s{_sfName = a});
 
@@ -73,9 +72,9 @@
               (\ s h x ->
                  StopFleetResponse' <$> (pure (fromEnum s)))
 
-instance Hashable StopFleet
+instance Hashable StopFleet where
 
-instance NFData StopFleet
+instance NFData StopFleet where
 
 instance ToHeaders StopFleet where
         toHeaders
@@ -98,24 +97,24 @@
 
 -- | /See:/ 'stopFleetResponse' smart constructor.
 newtype StopFleetResponse = StopFleetResponse'
-    { _srsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _storsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StopFleetResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'srsResponseStatus' - -- | The response status code.
+-- * 'storsResponseStatus' - -- | The response status code.
 stopFleetResponse
-    :: Int -- ^ 'srsResponseStatus'
+    :: Int -- ^ 'storsResponseStatus'
     -> StopFleetResponse
 stopFleetResponse pResponseStatus_ =
-    StopFleetResponse'
-    { _srsResponseStatus = pResponseStatus_
-    }
+  StopFleetResponse' {_storsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
-srsResponseStatus :: Lens' StopFleetResponse Int
-srsResponseStatus = lens _srsResponseStatus (\ s a -> s{_srsResponseStatus = a});
+storsResponseStatus :: Lens' StopFleetResponse Int
+storsResponseStatus = lens _storsResponseStatus (\ s a -> s{_storsResponseStatus = a});
 
-instance NFData StopFleetResponse
+instance NFData StopFleetResponse where
diff --git a/gen/Network/AWS/AppStream/StopImageBuilder.hs b/gen/Network/AWS/AppStream/StopImageBuilder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/StopImageBuilder.hs
@@ -0,0 +1,129 @@
+{-# 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.StopImageBuilder
+-- Copyright   : (c) 2013-2017 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.
+module Network.AWS.AppStream.StopImageBuilder
+    (
+    -- * Creating a Request
+      stopImageBuilder
+    , StopImageBuilder
+    -- * Request Lenses
+    , stoName
+
+    -- * Destructuring the Response
+    , stopImageBuilderResponse
+    , StopImageBuilderResponse
+    -- * Response Lenses
+    , sibrsImageBuilder
+    , sibrsResponseStatus
+    ) 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:/ 'stopImageBuilder' smart constructor.
+newtype StopImageBuilder = StopImageBuilder'
+  { _stoName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StopImageBuilder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'stoName' - Undocumented member.
+stopImageBuilder
+    :: Text -- ^ 'stoName'
+    -> StopImageBuilder
+stopImageBuilder pName_ = StopImageBuilder' {_stoName = pName_}
+
+
+-- | Undocumented member.
+stoName :: Lens' StopImageBuilder Text
+stoName = lens _stoName (\ s a -> s{_stoName = a});
+
+instance AWSRequest StopImageBuilder where
+        type Rs StopImageBuilder = StopImageBuilderResponse
+        request = postJSON appStream
+        response
+          = receiveJSON
+              (\ s h x ->
+                 StopImageBuilderResponse' <$>
+                   (x .?> "ImageBuilder") <*> (pure (fromEnum s)))
+
+instance Hashable StopImageBuilder where
+
+instance NFData StopImageBuilder where
+
+instance ToHeaders StopImageBuilder where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.StopImageBuilder" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON StopImageBuilder where
+        toJSON StopImageBuilder'{..}
+          = object (catMaybes [Just ("Name" .= _stoName)])
+
+instance ToPath StopImageBuilder where
+        toPath = const "/"
+
+instance ToQuery StopImageBuilder where
+        toQuery = const mempty
+
+-- | /See:/ 'stopImageBuilderResponse' smart constructor.
+data StopImageBuilderResponse = StopImageBuilderResponse'
+  { _sibrsImageBuilder   :: !(Maybe ImageBuilder)
+  , _sibrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StopImageBuilderResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sibrsImageBuilder' - Undocumented member.
+--
+-- * 'sibrsResponseStatus' - -- | The response status code.
+stopImageBuilderResponse
+    :: Int -- ^ 'sibrsResponseStatus'
+    -> StopImageBuilderResponse
+stopImageBuilderResponse pResponseStatus_ =
+  StopImageBuilderResponse'
+  {_sibrsImageBuilder = Nothing, _sibrsResponseStatus = pResponseStatus_}
+
+
+-- | Undocumented member.
+sibrsImageBuilder :: Lens' StopImageBuilderResponse (Maybe ImageBuilder)
+sibrsImageBuilder = lens _sibrsImageBuilder (\ s a -> s{_sibrsImageBuilder = a});
+
+-- | -- | The response status code.
+sibrsResponseStatus :: Lens' StopImageBuilderResponse Int
+sibrsResponseStatus = lens _sibrsResponseStatus (\ s a -> s{_sibrsResponseStatus = a});
+
+instance NFData StopImageBuilderResponse 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,9 +4,9 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.Types
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -18,18 +18,36 @@
     -- * Errors
     , _InvalidRoleException
     , _ResourceAlreadyExistsException
+    , _IncompatibleImageException
+    , _ConcurrentModificationException
     , _OperationNotPermittedException
     , _ResourceNotFoundException
+    , _InvalidParameterCombinationException
     , _ResourceNotAvailableException
     , _LimitExceededException
     , _ResourceInUseException
 
+    -- * AuthenticationType
+    , AuthenticationType (..)
+
+    -- * FleetAttribute
+    , FleetAttribute (..)
+
     -- * FleetErrorCode
     , FleetErrorCode (..)
 
     -- * FleetState
     , FleetState (..)
 
+    -- * FleetType
+    , FleetType (..)
+
+    -- * ImageBuilderState
+    , ImageBuilderState (..)
+
+    -- * ImageBuilderStateChangeReasonCode
+    , ImageBuilderStateChangeReasonCode (..)
+
     -- * ImageState
     , ImageState (..)
 
@@ -42,6 +60,12 @@
     -- * SessionState
     , SessionState (..)
 
+    -- * StackErrorCode
+    , StackErrorCode (..)
+
+    -- * StorageConnectorType
+    , StorageConnectorType (..)
+
     -- * VisibilityType
     , VisibilityType (..)
 
@@ -69,15 +93,32 @@
     , ccsAvailable
     , ccsDesired
 
+    -- * DirectoryConfig
+    , DirectoryConfig
+    , directoryConfig
+    , dcCreatedTime
+    , dcServiceAccountCredentials
+    , dcOrganizationalUnitDistinguishedNames
+    , dcDirectoryName
+
+    -- * DomainJoinInfo
+    , DomainJoinInfo
+    , domainJoinInfo
+    , djiOrganizationalUnitDistinguishedName
+    , djiDirectoryName
+
     -- * Fleet
     , Fleet
     , fleet
+    , fDomainJoinInfo
     , fDisconnectTimeoutInSeconds
     , fMaxUserDurationInSeconds
     , fCreatedTime
+    , fFleetType
     , fVPCConfig
     , fFleetErrors
     , fDisplayName
+    , fEnableDefaultInternetAccess
     , fDescription
     , fARN
     , fName
@@ -97,9 +138,11 @@
     , image
     , iState
     , iPlatform
+    , iPublicBaseImageReleasedDate
     , iStateChangeReason
     , iARN
     , iCreatedTime
+    , iImageBuilderSupported
     , iVisibility
     , iBaseImageARN
     , iDisplayName
@@ -107,15 +150,53 @@
     , iApplications
     , iName
 
+    -- * ImageBuilder
+    , ImageBuilder
+    , imageBuilder
+    , ibDomainJoinInfo
+    , ibState
+    , ibPlatform
+    , ibStateChangeReason
+    , ibARN
+    , ibCreatedTime
+    , ibImageBuilderErrors
+    , ibInstanceType
+    , ibVPCConfig
+    , ibImageARN
+    , ibDisplayName
+    , ibEnableDefaultInternetAccess
+    , ibDescription
+    , ibName
+
+    -- * ImageBuilderStateChangeReason
+    , ImageBuilderStateChangeReason
+    , imageBuilderStateChangeReason
+    , ibscrCode
+    , ibscrMessage
+
     -- * ImageStateChangeReason
     , ImageStateChangeReason
     , imageStateChangeReason
     , iscrCode
     , iscrMessage
 
+    -- * ResourceError
+    , ResourceError
+    , resourceError
+    , reErrorCode
+    , reErrorMessage
+    , reErrorTimestamp
+
+    -- * ServiceAccountCredentials
+    , ServiceAccountCredentials
+    , serviceAccountCredentials
+    , sacAccountName
+    , sacAccountPassword
+
     -- * Session
     , Session
     , session
+    , sAuthenticationType
     , sId
     , sUserId
     , sStackName
@@ -127,48 +208,65 @@
     , stack
     , sARN
     , sCreatedTime
+    , sStorageConnectors
     , sDisplayName
+    , sStackErrors
     , sDescription
     , sName
 
+    -- * StackError
+    , StackError
+    , stackError
+    , seErrorCode
+    , seErrorMessage
+
+    -- * StorageConnector
+    , StorageConnector
+    , storageConnector
+    , scResourceIdentifier
+    , scConnectorType
+
     -- * VPCConfig
     , VPCConfig
     , vpcConfig
+    , vcSecurityGroupIds
     , vcSubnetIds
     ) where
 
-import           Network.AWS.AppStream.Types.Product
-import           Network.AWS.AppStream.Types.Sum
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Sign.V4
+import Network.AWS.AppStream.Types.Product
+import Network.AWS.AppStream.Types.Sum
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Sign.V4
 
 -- | API version @2016-12-01@ of the Amazon AppStream SDK configuration.
 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
-    }
+  Service
+  { _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
-        }
+      Exponential
+      { _retryBase = 5.0e-2
+      , _retryGrowth = 2
+      , _retryAttempts = 5
+      , _retryCheck = check
+      }
     check e
+      | has (hasCode "ThrottledException" . hasStatus 400) e =
+        Just "throttled_exception"
       | has (hasStatus 429) e = Just "too_many_requests"
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
-          Just "throttling_exception"
+        Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
       | has (hasStatus 504) e = Just "gateway_timeout"
       | has (hasStatus 502) e = Just "bad_gateway"
@@ -177,48 +275,80 @@
       | has (hasStatus 509) e = Just "limit_exceeded"
       | otherwise = Nothing
 
+
 -- | The specified role is invalid.
 --
 --
 _InvalidRoleException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidRoleException = _ServiceError . hasCode "InvalidRoleException"
+_InvalidRoleException = _MatchServiceError appStream "InvalidRoleException"
 
+
 -- | The specified resource already exists.
 --
 --
 _ResourceAlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError
 _ResourceAlreadyExistsException =
-    _ServiceError . hasCode "ResourceAlreadyExistsException"
+  _MatchServiceError appStream "ResourceAlreadyExistsException"
 
+
+-- | The image does not support storage connectors.
+--
+--
+_IncompatibleImageException :: AsError a => Getting (First ServiceError) a ServiceError
+_IncompatibleImageException =
+  _MatchServiceError appStream "IncompatibleImageException"
+
+
+-- | An API error occurred. Wait a few minutes and try again.
+--
+--
+_ConcurrentModificationException :: AsError a => Getting (First ServiceError) a ServiceError
+_ConcurrentModificationException =
+  _MatchServiceError appStream "ConcurrentModificationException"
+
+
 -- | The attempted operation is not permitted.
 --
 --
 _OperationNotPermittedException :: AsError a => Getting (First ServiceError) a ServiceError
 _OperationNotPermittedException =
-    _ServiceError . hasCode "OperationNotPermittedException"
+  _MatchServiceError appStream "OperationNotPermittedException"
 
+
 -- | The specified resource was not found.
 --
 --
 _ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _ResourceNotFoundException =
-    _ServiceError . hasCode "ResourceNotFoundException"
+  _MatchServiceError appStream "ResourceNotFoundException"
 
+
+-- | Indicates an incorrect combination of parameters, or a missing parameter.
+--
+--
+_InvalidParameterCombinationException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidParameterCombinationException =
+  _MatchServiceError appStream "InvalidParameterCombinationException"
+
+
 -- | The specified resource exists and is not in use, but isn't available.
 --
 --
 _ResourceNotAvailableException :: AsError a => Getting (First ServiceError) a ServiceError
 _ResourceNotAvailableException =
-    _ServiceError . hasCode "ResourceNotAvailableException"
+  _MatchServiceError appStream "ResourceNotAvailableException"
 
+
 -- | The requested limit exceeds the permitted limit for an account.
 --
 --
 _LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
-_LimitExceededException = _ServiceError . hasCode "LimitExceededException"
+_LimitExceededException = _MatchServiceError appStream "LimitExceededException"
 
+
 -- | The specified resource is in use.
 --
 --
 _ResourceInUseException :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceInUseException = _ServiceError . hasCode "ResourceInUseException"
+_ResourceInUseException = _MatchServiceError appStream "ResourceInUseException"
+
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,754 +9,1359 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.Types.Product
--- Copyright   : (c) 2013-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.AppStream.Types.Product where
-
-import           Network.AWS.AppStream.Types.Sum
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-
--- | An entry for a single application in the application catalog.
---
---
---
--- /See:/ 'application' smart constructor.
-data Application = Application'
-    { _aEnabled          :: !(Maybe Bool)
-    , _aLaunchPath       :: !(Maybe Text)
-    , _aLaunchParameters :: !(Maybe Text)
-    , _aName             :: !(Maybe Text)
-    , _aDisplayName      :: !(Maybe Text)
-    , _aMetadata         :: !(Maybe (Map Text Text))
-    , _aIconURL          :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Application' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aEnabled' - An application can be disabled after image creation if there is a problem.
---
--- * 'aLaunchPath' - The path to the application executable in the instance.
---
--- * 'aLaunchParameters' - A list of arguments that are passed to the application at launch.
---
--- * 'aName' - The unique identifier for the application.
---
--- * 'aDisplayName' - The name of the application shown to the end users.
---
--- * 'aMetadata' - Additional attributes that describes the application.
---
--- * 'aIconURL' - The URL for the application icon. This URL may be time-limited.
-application
-    :: Application
-application =
-    Application'
-    { _aEnabled = Nothing
-    , _aLaunchPath = Nothing
-    , _aLaunchParameters = Nothing
-    , _aName = Nothing
-    , _aDisplayName = Nothing
-    , _aMetadata = Nothing
-    , _aIconURL = Nothing
-    }
-
--- | An application can be disabled after image creation if there is a problem.
-aEnabled :: Lens' Application (Maybe Bool)
-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});
-
--- | A list of arguments that are passed to the application at launch.
-aLaunchParameters :: Lens' Application (Maybe Text)
-aLaunchParameters = lens _aLaunchParameters (\ s a -> s{_aLaunchParameters = a});
-
--- | The unique identifier for the application.
-aName :: Lens' Application (Maybe Text)
-aName = lens _aName (\ s a -> s{_aName = a});
-
--- | The name of the application shown to the end users.
-aDisplayName :: Lens' Application (Maybe Text)
-aDisplayName = lens _aDisplayName (\ s a -> s{_aDisplayName = a});
-
--- | Additional attributes that describes the application.
-aMetadata :: Lens' Application (HashMap Text Text)
-aMetadata = lens _aMetadata (\ s a -> s{_aMetadata = a}) . _Default . _Map;
-
--- | The URL for the application icon. This URL may be time-limited.
-aIconURL :: Lens' Application (Maybe Text)
-aIconURL = lens _aIconURL (\ s a -> s{_aIconURL = a});
-
-instance FromJSON Application where
-        parseJSON
-          = withObject "Application"
-              (\ x ->
-                 Application' <$>
-                   (x .:? "Enabled") <*> (x .:? "LaunchPath") <*>
-                     (x .:? "LaunchParameters")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "DisplayName")
-                     <*> (x .:? "Metadata" .!= mempty)
-                     <*> (x .:? "IconURL"))
-
-instance Hashable Application
-
-instance NFData Application
-
--- | The capacity configuration for the fleet.
---
---
---
--- /See:/ 'computeCapacity' smart constructor.
-newtype ComputeCapacity = ComputeCapacity'
-    { _ccDesiredInstances :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ComputeCapacity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccDesiredInstances' - The desired number of streaming instances.
-computeCapacity
-    :: Int -- ^ 'ccDesiredInstances'
-    -> ComputeCapacity
-computeCapacity pDesiredInstances_ =
-    ComputeCapacity'
-    { _ccDesiredInstances = pDesiredInstances_
-    }
-
--- | The desired number of streaming instances.
-ccDesiredInstances :: Lens' ComputeCapacity Int
-ccDesiredInstances = lens _ccDesiredInstances (\ s a -> s{_ccDesiredInstances = a});
-
-instance Hashable ComputeCapacity
-
-instance NFData ComputeCapacity
-
-instance ToJSON ComputeCapacity where
-        toJSON ComputeCapacity'{..}
-          = object
-              (catMaybes
-                 [Just ("DesiredInstances" .= _ccDesiredInstances)])
-
--- | The capacity information for the fleet.
---
---
---
--- /See:/ 'computeCapacityStatus' smart constructor.
-data ComputeCapacityStatus = ComputeCapacityStatus'
-    { _ccsInUse     :: !(Maybe Int)
-    , _ccsRunning   :: !(Maybe Int)
-    , _ccsAvailable :: !(Maybe Int)
-    , _ccsDesired   :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ComputeCapacityStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccsInUse' - The number of instances that are being used for streaming.
---
--- * 'ccsRunning' - The total number of simultaneous streaming instances that are running.
---
--- * 'ccsAvailable' - The number of currently available instances that can be used to stream sessions.
---
--- * 'ccsDesired' - The desired number of streaming instances.
-computeCapacityStatus
-    :: Int -- ^ 'ccsDesired'
-    -> ComputeCapacityStatus
-computeCapacityStatus pDesired_ =
-    ComputeCapacityStatus'
-    { _ccsInUse = Nothing
-    , _ccsRunning = Nothing
-    , _ccsAvailable = Nothing
-    , _ccsDesired = pDesired_
-    }
-
--- | The number of instances that are being used for streaming.
-ccsInUse :: Lens' ComputeCapacityStatus (Maybe Int)
-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});
-
--- | 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});
-
--- | The desired number of streaming instances.
-ccsDesired :: Lens' ComputeCapacityStatus Int
-ccsDesired = lens _ccsDesired (\ s a -> s{_ccsDesired = a});
-
-instance FromJSON ComputeCapacityStatus where
-        parseJSON
-          = withObject "ComputeCapacityStatus"
-              (\ x ->
-                 ComputeCapacityStatus' <$>
-                   (x .:? "InUse") <*> (x .:? "Running") <*>
-                     (x .:? "Available")
-                     <*> (x .: "Desired"))
-
-instance Hashable ComputeCapacityStatus
-
-instance NFData ComputeCapacityStatus
-
--- | Contains the parameters for a fleet.
---
---
---
--- /See:/ 'fleet' smart constructor.
-data Fleet = Fleet'
-    { _fDisconnectTimeoutInSeconds :: !(Maybe Int)
-    , _fMaxUserDurationInSeconds   :: !(Maybe Int)
-    , _fCreatedTime                :: !(Maybe POSIX)
-    , _fVPCConfig                  :: !(Maybe VPCConfig)
-    , _fFleetErrors                :: !(Maybe [FleetError])
-    , _fDisplayName                :: !(Maybe Text)
-    , _fDescription                :: !(Maybe Text)
-    , _fARN                        :: !Text
-    , _fName                       :: !Text
-    , _fImageName                  :: !Text
-    , _fInstanceType               :: !Text
-    , _fComputeCapacityStatus      :: !ComputeCapacityStatus
-    , _fState                      :: !FleetState
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Fleet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fDisconnectTimeoutInSeconds' - The time after disconnection when a session is considered to have ended. When a user reconnects after a disconnection, the user is connected to the same session and instance within this time interval.
---
--- * 'fMaxUserDurationInSeconds' - The maximum time during which a streaming session can run.
---
--- * 'fCreatedTime' - The time at which the fleet was created.
---
--- * 'fVPCConfig' - The VPC configuration for the fleet.
---
--- * 'fFleetErrors' - The list of fleet errors is appended to this list.
---
--- * 'fDisplayName' - The name displayed to end users on the AppStream 2.0 portal.
---
--- * 'fDescription' - The description displayed to end users on the AppStream 2.0 portal.
---
--- * 'fARN' - The ARN for the fleet.
---
--- * 'fName' - The name of the fleet.
---
--- * 'fImageName' - The image used by the fleet.
---
--- * 'fInstanceType' - The instance type of compute resources for the fleet. The fleet instances are launched from this instance type.
---
--- * 'fComputeCapacityStatus' - The capacity information for the fleet.
---
--- * 'fState' - The current state for the fleet.
-fleet
-    :: Text -- ^ 'fARN'
-    -> Text -- ^ 'fName'
-    -> Text -- ^ 'fImageName'
-    -> Text -- ^ 'fInstanceType'
-    -> ComputeCapacityStatus -- ^ 'fComputeCapacityStatus'
-    -> FleetState -- ^ 'fState'
-    -> Fleet
-fleet pARN_ pName_ pImageName_ pInstanceType_ pComputeCapacityStatus_ pState_ =
-    Fleet'
-    { _fDisconnectTimeoutInSeconds = Nothing
-    , _fMaxUserDurationInSeconds = Nothing
-    , _fCreatedTime = Nothing
-    , _fVPCConfig = Nothing
-    , _fFleetErrors = Nothing
-    , _fDisplayName = Nothing
-    , _fDescription = Nothing
-    , _fARN = pARN_
-    , _fName = pName_
-    , _fImageName = pImageName_
-    , _fInstanceType = pInstanceType_
-    , _fComputeCapacityStatus = pComputeCapacityStatus_
-    , _fState = pState_
-    }
-
--- | The time after disconnection when a session is considered to have ended. When a user reconnects after a disconnection, the user is connected to the same session and instance within this time interval.
-fDisconnectTimeoutInSeconds :: Lens' Fleet (Maybe Int)
-fDisconnectTimeoutInSeconds = lens _fDisconnectTimeoutInSeconds (\ s a -> s{_fDisconnectTimeoutInSeconds = a});
-
--- | The maximum time during which a streaming session can run.
-fMaxUserDurationInSeconds :: Lens' Fleet (Maybe Int)
-fMaxUserDurationInSeconds = lens _fMaxUserDurationInSeconds (\ s a -> s{_fMaxUserDurationInSeconds = a});
-
--- | The time at which the fleet was created.
-fCreatedTime :: Lens' Fleet (Maybe UTCTime)
-fCreatedTime = lens _fCreatedTime (\ s a -> s{_fCreatedTime = a}) . mapping _Time;
-
--- | The VPC configuration for the fleet.
-fVPCConfig :: Lens' Fleet (Maybe VPCConfig)
-fVPCConfig = lens _fVPCConfig (\ s a -> s{_fVPCConfig = a});
-
--- | The list of fleet errors is appended to this list.
-fFleetErrors :: Lens' Fleet [FleetError]
-fFleetErrors = lens _fFleetErrors (\ s a -> s{_fFleetErrors = a}) . _Default . _Coerce;
-
--- | The name displayed to end users on the AppStream 2.0 portal.
-fDisplayName :: Lens' Fleet (Maybe Text)
-fDisplayName = lens _fDisplayName (\ s a -> s{_fDisplayName = a});
-
--- | The description displayed to end users on the AppStream 2.0 portal.
-fDescription :: Lens' Fleet (Maybe Text)
-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});
-
--- | The name of the fleet.
-fName :: Lens' Fleet Text
-fName = lens _fName (\ s a -> s{_fName = a});
-
--- | The image used by the fleet.
-fImageName :: Lens' Fleet Text
-fImageName = lens _fImageName (\ s a -> s{_fImageName = a});
-
--- | The instance type of compute resources for the fleet. The fleet instances are launched from this instance type.
-fInstanceType :: Lens' Fleet Text
-fInstanceType = lens _fInstanceType (\ s a -> s{_fInstanceType = a});
-
--- | The capacity information for the fleet.
-fComputeCapacityStatus :: Lens' Fleet ComputeCapacityStatus
-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});
-
-instance FromJSON Fleet where
-        parseJSON
-          = withObject "Fleet"
-              (\ x ->
-                 Fleet' <$>
-                   (x .:? "DisconnectTimeoutInSeconds") <*>
-                     (x .:? "MaxUserDurationInSeconds")
-                     <*> (x .:? "CreatedTime")
-                     <*> (x .:? "VpcConfig")
-                     <*> (x .:? "FleetErrors" .!= mempty)
-                     <*> (x .:? "DisplayName")
-                     <*> (x .:? "Description")
-                     <*> (x .: "Arn")
-                     <*> (x .: "Name")
-                     <*> (x .: "ImageName")
-                     <*> (x .: "InstanceType")
-                     <*> (x .: "ComputeCapacityStatus")
-                     <*> (x .: "State"))
-
-instance Hashable Fleet
-
-instance NFData Fleet
-
--- | The details of the fleet error.
---
---
---
--- /See:/ 'fleetError' smart constructor.
-data FleetError = FleetError'
-    { _feErrorCode    :: !(Maybe FleetErrorCode)
-    , _feErrorMessage :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FleetError' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'feErrorCode' - The error code for the fleet error.
---
--- * 'feErrorMessage' - The error message generated when the fleet has errors.
-fleetError
-    :: FleetError
-fleetError =
-    FleetError'
-    { _feErrorCode = Nothing
-    , _feErrorMessage = Nothing
-    }
-
--- | The error code for the fleet error.
-feErrorCode :: Lens' FleetError (Maybe FleetErrorCode)
-feErrorCode = lens _feErrorCode (\ s a -> s{_feErrorCode = a});
-
--- | The error message generated when the fleet has errors.
-feErrorMessage :: Lens' FleetError (Maybe Text)
-feErrorMessage = lens _feErrorMessage (\ s a -> s{_feErrorMessage = a});
-
-instance FromJSON FleetError where
-        parseJSON
-          = withObject "FleetError"
-              (\ x ->
-                 FleetError' <$>
-                   (x .:? "ErrorCode") <*> (x .:? "ErrorMessage"))
-
-instance Hashable FleetError
-
-instance NFData FleetError
-
--- | New streaming instances are booted from images. The image stores the application catalog and is connected to fleets.
---
---
---
--- /See:/ 'image' smart constructor.
-data Image = Image'
-    { _iState             :: !(Maybe ImageState)
-    , _iPlatform          :: !(Maybe PlatformType)
-    , _iStateChangeReason :: !(Maybe ImageStateChangeReason)
-    , _iARN               :: !(Maybe Text)
-    , _iCreatedTime       :: !(Maybe POSIX)
-    , _iVisibility        :: !(Maybe VisibilityType)
-    , _iBaseImageARN      :: !(Maybe Text)
-    , _iDisplayName       :: !(Maybe Text)
-    , _iDescription       :: !(Maybe Text)
-    , _iApplications      :: !(Maybe [Application])
-    , _iName              :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Image' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iState' - The image starts in the __PENDING__ state, and then moves to __AVAILABLE__ if image creation succeeds and __FAILED__ if image creation has failed.
---
--- * 'iPlatform' - The operating system platform of the image.
---
--- * 'iStateChangeReason' - The reason why the last state change occurred.
---
--- * 'iARN' - The ARN for the image.
---
--- * 'iCreatedTime' - The timestamp when the image was created.
---
--- * 'iVisibility' - The visibility of an image to the user; images can be public or private.
---
--- * 'iBaseImageARN' - The source image ARN from which this image was created.
---
--- * 'iDisplayName' - The display name for the image.
---
--- * 'iDescription' - A meaningful description for the image.
---
--- * 'iApplications' - The applications associated with an image.
---
--- * 'iName' - The unique identifier for the image.
-image
-    :: Text -- ^ 'iName'
-    -> Image
-image pName_ =
-    Image'
-    { _iState = Nothing
-    , _iPlatform = Nothing
-    , _iStateChangeReason = Nothing
-    , _iARN = Nothing
-    , _iCreatedTime = Nothing
-    , _iVisibility = Nothing
-    , _iBaseImageARN = Nothing
-    , _iDisplayName = Nothing
-    , _iDescription = Nothing
-    , _iApplications = Nothing
-    , _iName = pName_
-    }
-
--- | The image starts in the __PENDING__ state, and then moves to __AVAILABLE__ if image creation succeeds and __FAILED__ if image creation has failed.
-iState :: Lens' Image (Maybe ImageState)
-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});
-
--- | The reason why the last state change occurred.
-iStateChangeReason :: Lens' Image (Maybe ImageStateChangeReason)
-iStateChangeReason = lens _iStateChangeReason (\ s a -> s{_iStateChangeReason = a});
-
--- | The ARN for the image.
-iARN :: Lens' Image (Maybe Text)
-iARN = lens _iARN (\ s a -> s{_iARN = a});
-
--- | The timestamp when the image was created.
-iCreatedTime :: Lens' Image (Maybe UTCTime)
-iCreatedTime = lens _iCreatedTime (\ s a -> s{_iCreatedTime = a}) . mapping _Time;
-
--- | The visibility of an image to the user; images can be public or private.
-iVisibility :: Lens' Image (Maybe VisibilityType)
-iVisibility = lens _iVisibility (\ s a -> s{_iVisibility = a});
-
--- | The source image ARN from which this image was created.
-iBaseImageARN :: Lens' Image (Maybe Text)
-iBaseImageARN = lens _iBaseImageARN (\ s a -> s{_iBaseImageARN = a});
-
--- | The display name for the image.
-iDisplayName :: Lens' Image (Maybe Text)
-iDisplayName = lens _iDisplayName (\ s a -> s{_iDisplayName = a});
-
--- | A meaningful description for the image.
-iDescription :: Lens' Image (Maybe Text)
-iDescription = lens _iDescription (\ s a -> s{_iDescription = a});
-
--- | The applications associated with an image.
-iApplications :: Lens' Image [Application]
-iApplications = lens _iApplications (\ s a -> s{_iApplications = a}) . _Default . _Coerce;
-
--- | The unique identifier for the image.
-iName :: Lens' Image Text
-iName = lens _iName (\ s a -> s{_iName = a});
-
-instance FromJSON Image where
-        parseJSON
-          = withObject "Image"
-              (\ x ->
-                 Image' <$>
-                   (x .:? "State") <*> (x .:? "Platform") <*>
-                     (x .:? "StateChangeReason")
-                     <*> (x .:? "Arn")
-                     <*> (x .:? "CreatedTime")
-                     <*> (x .:? "Visibility")
-                     <*> (x .:? "BaseImageArn")
-                     <*> (x .:? "DisplayName")
-                     <*> (x .:? "Description")
-                     <*> (x .:? "Applications" .!= mempty)
-                     <*> (x .: "Name"))
-
-instance Hashable Image
-
-instance NFData Image
-
--- | The reason why the last state change occurred.
---
---
---
--- /See:/ 'imageStateChangeReason' smart constructor.
-data ImageStateChangeReason = ImageStateChangeReason'
-    { _iscrCode    :: !(Maybe ImageStateChangeReasonCode)
-    , _iscrMessage :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImageStateChangeReason' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iscrCode' - The state change reason code of the image.
---
--- * 'iscrMessage' - The state change reason message to the end user.
-imageStateChangeReason
-    :: ImageStateChangeReason
-imageStateChangeReason =
-    ImageStateChangeReason'
-    { _iscrCode = Nothing
-    , _iscrMessage = Nothing
-    }
-
--- | The state change reason code of the image.
-iscrCode :: Lens' ImageStateChangeReason (Maybe ImageStateChangeReasonCode)
-iscrCode = lens _iscrCode (\ s a -> s{_iscrCode = a});
-
--- | The state change reason message to the end user.
-iscrMessage :: Lens' ImageStateChangeReason (Maybe Text)
-iscrMessage = lens _iscrMessage (\ s a -> s{_iscrMessage = a});
-
-instance FromJSON ImageStateChangeReason where
-        parseJSON
-          = withObject "ImageStateChangeReason"
-              (\ x ->
-                 ImageStateChangeReason' <$>
-                   (x .:? "Code") <*> (x .:? "Message"))
-
-instance Hashable ImageStateChangeReason
-
-instance NFData ImageStateChangeReason
-
--- | Contains the parameters for a streaming session.
---
---
---
--- /See:/ 'session' smart constructor.
-data Session = Session'
-    { _sId        :: !Text
-    , _sUserId    :: !Text
-    , _sStackName :: !Text
-    , _sFleetName :: !Text
-    , _sState     :: !SessionState
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Session' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sId' - The unique ID for a streaming session.
---
--- * 'sUserId' - The identifier of the user for whom the session was created.
---
--- * 'sStackName' - The name of the stack for which the streaming session was created.
---
--- * 'sFleetName' - The name of the fleet for which the streaming session was created.
---
--- * 'sState' - The current state of the streaming session.
-session
-    :: Text -- ^ 'sId'
-    -> Text -- ^ 'sUserId'
-    -> Text -- ^ 'sStackName'
-    -> Text -- ^ 'sFleetName'
-    -> SessionState -- ^ 'sState'
-    -> Session
-session pId_ pUserId_ pStackName_ pFleetName_ pState_ =
-    Session'
-    { _sId = pId_
-    , _sUserId = pUserId_
-    , _sStackName = pStackName_
-    , _sFleetName = pFleetName_
-    , _sState = pState_
-    }
-
--- | The unique ID for a streaming session.
-sId :: Lens' Session Text
-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});
-
--- | The name of the stack for which the streaming session was created.
-sStackName :: Lens' Session Text
-sStackName = lens _sStackName (\ s a -> s{_sStackName = a});
-
--- | The name of the fleet for which the streaming session was created.
-sFleetName :: Lens' Session Text
-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});
-
-instance FromJSON Session where
-        parseJSON
-          = withObject "Session"
-              (\ x ->
-                 Session' <$>
-                   (x .: "Id") <*> (x .: "UserId") <*>
-                     (x .: "StackName")
-                     <*> (x .: "FleetName")
-                     <*> (x .: "State"))
-
-instance Hashable Session
-
-instance NFData Session
-
--- | Details about a stack.
---
---
---
--- /See:/ 'stack' smart constructor.
-data Stack = Stack'
-    { _sARN         :: !(Maybe Text)
-    , _sCreatedTime :: !(Maybe POSIX)
-    , _sDisplayName :: !(Maybe Text)
-    , _sDescription :: !(Maybe Text)
-    , _sName        :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Stack' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sARN' - The ARN of the stack.
---
--- * 'sCreatedTime' - The timestamp when the stack was created.
---
--- * 'sDisplayName' - A display name for the stack.
---
--- * 'sDescription' - A meaningful description for the stack.
---
--- * 'sName' - The unique identifier of the stack.
-stack
-    :: Text -- ^ 'sName'
-    -> Stack
-stack pName_ =
-    Stack'
-    { _sARN = Nothing
-    , _sCreatedTime = Nothing
-    , _sDisplayName = Nothing
-    , _sDescription = Nothing
-    , _sName = pName_
-    }
-
--- | The ARN of the stack.
-sARN :: Lens' Stack (Maybe Text)
-sARN = lens _sARN (\ s a -> s{_sARN = a});
-
--- | The timestamp when the stack was created.
-sCreatedTime :: Lens' Stack (Maybe UTCTime)
-sCreatedTime = lens _sCreatedTime (\ s a -> s{_sCreatedTime = a}) . mapping _Time;
-
--- | A display name for the stack.
-sDisplayName :: Lens' Stack (Maybe Text)
-sDisplayName = lens _sDisplayName (\ s a -> s{_sDisplayName = a});
-
--- | A meaningful description for the stack.
-sDescription :: Lens' Stack (Maybe Text)
-sDescription = lens _sDescription (\ s a -> s{_sDescription = a});
-
--- | The unique identifier of the stack.
-sName :: Lens' Stack Text
-sName = lens _sName (\ s a -> s{_sName = a});
-
-instance FromJSON Stack where
-        parseJSON
-          = withObject "Stack"
-              (\ x ->
-                 Stack' <$>
-                   (x .:? "Arn") <*> (x .:? "CreatedTime") <*>
-                     (x .:? "DisplayName")
-                     <*> (x .:? "Description")
-                     <*> (x .: "Name"))
-
-instance Hashable Stack
-
-instance NFData Stack
-
--- | The VPC in which the fleet is launched.
---
---
---
--- /See:/ 'vpcConfig' smart constructor.
-newtype VPCConfig = VPCConfig'
-    { _vcSubnetIds :: List1 Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPCConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vcSubnetIds' - The list of subnets to which a network interface is established from the fleet instance.
-vpcConfig
-    :: NonEmpty Text -- ^ 'vcSubnetIds'
-    -> VPCConfig
-vpcConfig pSubnetIds_ =
-    VPCConfig'
-    { _vcSubnetIds = _List1 # pSubnetIds_
-    }
-
--- | The list of subnets to which a network interface is established from the fleet instance.
-vcSubnetIds :: Lens' VPCConfig (NonEmpty Text)
-vcSubnetIds = lens _vcSubnetIds (\ s a -> s{_vcSubnetIds = a}) . _List1;
-
-instance FromJSON VPCConfig where
-        parseJSON
-          = withObject "VPCConfig"
-              (\ x -> VPCConfig' <$> (x .: "SubnetIds"))
-
-instance Hashable VPCConfig
-
-instance NFData VPCConfig
-
-instance ToJSON VPCConfig where
-        toJSON VPCConfig'{..}
-          = object
-              (catMaybes [Just ("SubnetIds" .= _vcSubnetIds)])
+-- Copyright   : (c) 2013-2017 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)
+--
+module Network.AWS.AppStream.Types.Product where
+
+import Network.AWS.AppStream.Types.Sum
+import Network.AWS.Lens
+import Network.AWS.Prelude
+
+-- | Describes an application in the application catalog.
+--
+--
+--
+-- /See:/ 'application' smart constructor.
+data Application = Application'
+  { _aEnabled          :: !(Maybe Bool)
+  , _aLaunchPath       :: !(Maybe Text)
+  , _aLaunchParameters :: !(Maybe Text)
+  , _aName             :: !(Maybe Text)
+  , _aDisplayName      :: !(Maybe Text)
+  , _aMetadata         :: !(Maybe (Map Text Text))
+  , _aIconURL          :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Application' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aEnabled' - If there is a problem, the application can be disabled after image creation.
+--
+-- * 'aLaunchPath' - The path to the application executable in the instance.
+--
+-- * 'aLaunchParameters' - The arguments that are passed to the application at launch.
+--
+-- * 'aName' - The name of the application.
+--
+-- * 'aDisplayName' - The application name displayed to end users.
+--
+-- * 'aMetadata' - Additional attributes that describe the application.
+--
+-- * 'aIconURL' - The URL for the application icon. This URL might be time-limited.
+application
+    :: Application
+application =
+  Application'
+  { _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});
+
+-- | The path to the application executable in the instance.
+aLaunchPath :: Lens' Application (Maybe Text)
+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});
+
+-- | The name of the application.
+aName :: Lens' Application (Maybe Text)
+aName = lens _aName (\ s a -> s{_aName = a});
+
+-- | The application name displayed to end users.
+aDisplayName :: Lens' Application (Maybe Text)
+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;
+
+-- | 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});
+
+instance FromJSON Application where
+        parseJSON
+          = withObject "Application"
+              (\ x ->
+                 Application' <$>
+                   (x .:? "Enabled") <*> (x .:? "LaunchPath") <*>
+                     (x .:? "LaunchParameters")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "DisplayName")
+                     <*> (x .:? "Metadata" .!= mempty)
+                     <*> (x .:? "IconURL"))
+
+instance Hashable Application where
+
+instance NFData Application where
+
+-- | Describes the capacity for a fleet.
+--
+--
+--
+-- /See:/ 'computeCapacity' smart constructor.
+newtype ComputeCapacity = ComputeCapacity'
+  { _ccDesiredInstances :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ComputeCapacity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccDesiredInstances' - The desired number of streaming instances.
+computeCapacity
+    :: Int -- ^ 'ccDesiredInstances'
+    -> ComputeCapacity
+computeCapacity pDesiredInstances_ =
+  ComputeCapacity' {_ccDesiredInstances = pDesiredInstances_}
+
+
+-- | The desired number of streaming instances.
+ccDesiredInstances :: Lens' ComputeCapacity Int
+ccDesiredInstances = lens _ccDesiredInstances (\ s a -> s{_ccDesiredInstances = a});
+
+instance Hashable ComputeCapacity where
+
+instance NFData ComputeCapacity where
+
+instance ToJSON ComputeCapacity where
+        toJSON ComputeCapacity'{..}
+          = object
+              (catMaybes
+                 [Just ("DesiredInstances" .= _ccDesiredInstances)])
+
+-- | Describes the capacity status for a fleet.
+--
+--
+--
+-- /See:/ 'computeCapacityStatus' smart constructor.
+data ComputeCapacityStatus = ComputeCapacityStatus'
+  { _ccsInUse     :: !(Maybe Int)
+  , _ccsRunning   :: !(Maybe Int)
+  , _ccsAvailable :: !(Maybe Int)
+  , _ccsDesired   :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ComputeCapacityStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccsInUse' - The number of instances in use for streaming.
+--
+-- * 'ccsRunning' - The total number of simultaneous streaming instances that are running.
+--
+-- * 'ccsAvailable' - The number of currently available instances that can be used to stream sessions.
+--
+-- * 'ccsDesired' - The desired number of streaming instances.
+computeCapacityStatus
+    :: Int -- ^ 'ccsDesired'
+    -> ComputeCapacityStatus
+computeCapacityStatus pDesired_ =
+  ComputeCapacityStatus'
+  { _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});
+
+-- | The total number of simultaneous streaming instances that are running.
+ccsRunning :: Lens' ComputeCapacityStatus (Maybe Int)
+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});
+
+-- | The desired number of streaming instances.
+ccsDesired :: Lens' ComputeCapacityStatus Int
+ccsDesired = lens _ccsDesired (\ s a -> s{_ccsDesired = a});
+
+instance FromJSON ComputeCapacityStatus where
+        parseJSON
+          = withObject "ComputeCapacityStatus"
+              (\ x ->
+                 ComputeCapacityStatus' <$>
+                   (x .:? "InUse") <*> (x .:? "Running") <*>
+                     (x .:? "Available")
+                     <*> (x .: "Desired"))
+
+instance Hashable ComputeCapacityStatus where
+
+instance NFData ComputeCapacityStatus where
+
+-- | Configuration information for the directory used to join domains.
+--
+--
+--
+-- /See:/ 'directoryConfig' smart constructor.
+data DirectoryConfig = DirectoryConfig'
+  { _dcCreatedTime :: !(Maybe POSIX)
+  , _dcServiceAccountCredentials :: !(Maybe ServiceAccountCredentials)
+  , _dcOrganizationalUnitDistinguishedNames :: !(Maybe [Text])
+  , _dcDirectoryName :: !Text
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DirectoryConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcCreatedTime' - The time the directory configuration was created.
+--
+-- * 'dcServiceAccountCredentials' - The credentials for the service account used by the streaming instance to connect to the directory.
+--
+-- * 'dcOrganizationalUnitDistinguishedNames' - The distinguished names of the organizational units for computer accounts.
+--
+-- * 'dcDirectoryName' - The fully qualified name of the directory (for example, corp.example.com).
+directoryConfig
+    :: Text -- ^ 'dcDirectoryName'
+    -> DirectoryConfig
+directoryConfig pDirectoryName_ =
+  DirectoryConfig'
+  { _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;
+
+-- | 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});
+
+-- | The distinguished names of the organizational units for computer accounts.
+dcOrganizationalUnitDistinguishedNames :: Lens' DirectoryConfig [Text]
+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});
+
+instance FromJSON DirectoryConfig where
+        parseJSON
+          = withObject "DirectoryConfig"
+              (\ x ->
+                 DirectoryConfig' <$>
+                   (x .:? "CreatedTime") <*>
+                     (x .:? "ServiceAccountCredentials")
+                     <*>
+                     (x .:? "OrganizationalUnitDistinguishedNames" .!=
+                        mempty)
+                     <*> (x .: "DirectoryName"))
+
+instance Hashable DirectoryConfig where
+
+instance NFData DirectoryConfig where
+
+-- | Contains the information needed for streaming instances to join a domain.
+--
+--
+--
+-- /See:/ 'domainJoinInfo' smart constructor.
+data DomainJoinInfo = DomainJoinInfo'
+  { _djiOrganizationalUnitDistinguishedName :: !(Maybe Text)
+  , _djiDirectoryName                       :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DomainJoinInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'djiOrganizationalUnitDistinguishedName' - The distinguished name of the organizational unit for computer accounts.
+--
+-- * 'djiDirectoryName' - The fully qualified name of the directory (for example, corp.example.com).
+domainJoinInfo
+    :: DomainJoinInfo
+domainJoinInfo =
+  DomainJoinInfo'
+  { _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});
+
+-- | 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});
+
+instance FromJSON DomainJoinInfo where
+        parseJSON
+          = withObject "DomainJoinInfo"
+              (\ x ->
+                 DomainJoinInfo' <$>
+                   (x .:? "OrganizationalUnitDistinguishedName") <*>
+                     (x .:? "DirectoryName"))
+
+instance Hashable DomainJoinInfo where
+
+instance NFData DomainJoinInfo where
+
+instance ToJSON DomainJoinInfo where
+        toJSON DomainJoinInfo'{..}
+          = object
+              (catMaybes
+                 [("OrganizationalUnitDistinguishedName" .=) <$>
+                    _djiOrganizationalUnitDistinguishedName,
+                  ("DirectoryName" .=) <$> _djiDirectoryName])
+
+-- | Contains the parameters for a fleet.
+--
+--
+--
+-- /See:/ 'fleet' smart constructor.
+data Fleet = Fleet'
+  { _fDomainJoinInfo              :: !(Maybe DomainJoinInfo)
+  , _fDisconnectTimeoutInSeconds  :: !(Maybe Int)
+  , _fMaxUserDurationInSeconds    :: !(Maybe Int)
+  , _fCreatedTime                 :: !(Maybe POSIX)
+  , _fFleetType                   :: !(Maybe FleetType)
+  , _fVPCConfig                   :: !(Maybe VPCConfig)
+  , _fFleetErrors                 :: !(Maybe [FleetError])
+  , _fDisplayName                 :: !(Maybe Text)
+  , _fEnableDefaultInternetAccess :: !(Maybe Bool)
+  , _fDescription                 :: !(Maybe Text)
+  , _fARN                         :: !Text
+  , _fName                        :: !Text
+  , _fImageName                   :: !Text
+  , _fInstanceType                :: !Text
+  , _fComputeCapacityStatus       :: !ComputeCapacityStatus
+  , _fState                       :: !FleetState
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Fleet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fDomainJoinInfo' - The information needed for streaming instances to join a 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.
+--
+-- * 'fMaxUserDurationInSeconds' - The maximum time that a streaming session can run, in seconds. Specify a value between 600 and 57600.
+--
+-- * 'fCreatedTime' - The time the fleet was created.
+--
+-- * 'fFleetType' - Undocumented member.
+--
+-- * 'fVPCConfig' - The VPC configuration for the fleet.
+--
+-- * 'fFleetErrors' - The fleet errors.
+--
+-- * 'fDisplayName' - The fleet name displayed to end users.
+--
+-- * 'fEnableDefaultInternetAccess' - Indicates whether default internet access is enabled for the fleet.
+--
+-- * 'fDescription' - The description displayed to end users.
+--
+-- * 'fARN' - The ARN for the fleet.
+--
+-- * 'fName' - The name of the fleet.
+--
+-- * 'fImageName' - The image used by the fleet.
+--
+-- * 'fInstanceType' - The instance type to use when launching fleet instances.
+--
+-- * 'fComputeCapacityStatus' - The capacity status for the fleet.
+--
+-- * 'fState' - The current state for the fleet.
+fleet
+    :: Text -- ^ 'fARN'
+    -> Text -- ^ 'fName'
+    -> Text -- ^ 'fImageName'
+    -> Text -- ^ 'fInstanceType'
+    -> ComputeCapacityStatus -- ^ 'fComputeCapacityStatus'
+    -> FleetState -- ^ 'fState'
+    -> 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_
+  }
+
+
+-- | The information needed for streaming instances to join a domain.
+fDomainJoinInfo :: Lens' Fleet (Maybe DomainJoinInfo)
+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});
+
+-- | 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});
+
+-- | The time the fleet was created.
+fCreatedTime :: Lens' Fleet (Maybe UTCTime)
+fCreatedTime = lens _fCreatedTime (\ s a -> s{_fCreatedTime = a}) . mapping _Time;
+
+-- | Undocumented member.
+fFleetType :: Lens' Fleet (Maybe FleetType)
+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});
+
+-- | The fleet errors.
+fFleetErrors :: Lens' Fleet [FleetError]
+fFleetErrors = lens _fFleetErrors (\ s a -> s{_fFleetErrors = a}) . _Default . _Coerce;
+
+-- | The fleet name displayed to end users.
+fDisplayName :: Lens' Fleet (Maybe Text)
+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});
+
+-- | The description displayed to end users.
+fDescription :: Lens' Fleet (Maybe Text)
+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});
+
+-- | The name of the fleet.
+fName :: Lens' Fleet Text
+fName = lens _fName (\ s a -> s{_fName = a});
+
+-- | The image used by the fleet.
+fImageName :: Lens' Fleet Text
+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});
+
+-- | The capacity status for the fleet.
+fComputeCapacityStatus :: Lens' Fleet ComputeCapacityStatus
+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});
+
+instance FromJSON Fleet where
+        parseJSON
+          = withObject "Fleet"
+              (\ x ->
+                 Fleet' <$>
+                   (x .:? "DomainJoinInfo") <*>
+                     (x .:? "DisconnectTimeoutInSeconds")
+                     <*> (x .:? "MaxUserDurationInSeconds")
+                     <*> (x .:? "CreatedTime")
+                     <*> (x .:? "FleetType")
+                     <*> (x .:? "VpcConfig")
+                     <*> (x .:? "FleetErrors" .!= mempty)
+                     <*> (x .:? "DisplayName")
+                     <*> (x .:? "EnableDefaultInternetAccess")
+                     <*> (x .:? "Description")
+                     <*> (x .: "Arn")
+                     <*> (x .: "Name")
+                     <*> (x .: "ImageName")
+                     <*> (x .: "InstanceType")
+                     <*> (x .: "ComputeCapacityStatus")
+                     <*> (x .: "State"))
+
+instance Hashable Fleet where
+
+instance NFData Fleet where
+
+-- | Describes a fleet error.
+--
+--
+--
+-- /See:/ 'fleetError' smart constructor.
+data FleetError = FleetError'
+  { _feErrorCode    :: !(Maybe FleetErrorCode)
+  , _feErrorMessage :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FleetError' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'feErrorCode' - The error code.
+--
+-- * 'feErrorMessage' - The error message.
+fleetError
+    :: FleetError
+fleetError = FleetError' {_feErrorCode = Nothing, _feErrorMessage = Nothing}
+
+
+-- | The error code.
+feErrorCode :: Lens' FleetError (Maybe FleetErrorCode)
+feErrorCode = lens _feErrorCode (\ s a -> s{_feErrorCode = a});
+
+-- | The error message.
+feErrorMessage :: Lens' FleetError (Maybe Text)
+feErrorMessage = lens _feErrorMessage (\ s a -> s{_feErrorMessage = a});
+
+instance FromJSON FleetError where
+        parseJSON
+          = withObject "FleetError"
+              (\ x ->
+                 FleetError' <$>
+                   (x .:? "ErrorCode") <*> (x .:? "ErrorMessage"))
+
+instance Hashable FleetError where
+
+instance NFData FleetError where
+
+-- | Describes an image.
+--
+--
+--
+-- /See:/ 'image' smart constructor.
+data Image = Image'
+  { _iState                       :: !(Maybe ImageState)
+  , _iPlatform                    :: !(Maybe PlatformType)
+  , _iPublicBaseImageReleasedDate :: !(Maybe POSIX)
+  , _iStateChangeReason           :: !(Maybe ImageStateChangeReason)
+  , _iARN                         :: !(Maybe Text)
+  , _iCreatedTime                 :: !(Maybe POSIX)
+  , _iImageBuilderSupported       :: !(Maybe Bool)
+  , _iVisibility                  :: !(Maybe VisibilityType)
+  , _iBaseImageARN                :: !(Maybe Text)
+  , _iDisplayName                 :: !(Maybe Text)
+  , _iDescription                 :: !(Maybe Text)
+  , _iApplications                :: !(Maybe [Application])
+  , _iName                        :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Image' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iState' - The image starts in the @PENDING@ state. If image creation succeeds, the state is @AVAILABLE@ . If image creation fails, the state is @FAILED@ .
+--
+-- * 'iPlatform' - The operating system platform of the image.
+--
+-- * 'iPublicBaseImageReleasedDate' - 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.
+--
+-- * 'iStateChangeReason' - The reason why the last state change occurred.
+--
+-- * 'iARN' - The ARN of the image.
+--
+-- * 'iCreatedTime' - The time the image was created.
+--
+-- * 'iImageBuilderSupported' - Indicates whether an image builder can be launched from this image.
+--
+-- * 'iVisibility' - Indicates whether the image is public or private.
+--
+-- * 'iBaseImageARN' - The ARN of the image from which this image was created.
+--
+-- * 'iDisplayName' - The image name displayed to end users.
+--
+-- * 'iDescription' - The description displayed to end users.
+--
+-- * 'iApplications' - The applications associated with the image.
+--
+-- * 'iName' - The name of the image.
+image
+    :: Text -- ^ 'iName'
+    -> 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_
+  }
+
+
+-- | 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});
+
+-- | The operating system platform of the image.
+iPlatform :: Lens' Image (Maybe PlatformType)
+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;
+
+-- | The reason why the last state change occurred.
+iStateChangeReason :: Lens' Image (Maybe ImageStateChangeReason)
+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});
+
+-- | The time the image was created.
+iCreatedTime :: Lens' Image (Maybe UTCTime)
+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});
+
+-- | Indicates whether the image is public or private.
+iVisibility :: Lens' Image (Maybe VisibilityType)
+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});
+
+-- | The image name displayed to end users.
+iDisplayName :: Lens' Image (Maybe Text)
+iDisplayName = lens _iDisplayName (\ s a -> s{_iDisplayName = a});
+
+-- | The description displayed to end users.
+iDescription :: Lens' Image (Maybe Text)
+iDescription = lens _iDescription (\ s a -> s{_iDescription = a});
+
+-- | The applications associated with the image.
+iApplications :: Lens' Image [Application]
+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});
+
+instance FromJSON Image where
+        parseJSON
+          = withObject "Image"
+              (\ x ->
+                 Image' <$>
+                   (x .:? "State") <*> (x .:? "Platform") <*>
+                     (x .:? "PublicBaseImageReleasedDate")
+                     <*> (x .:? "StateChangeReason")
+                     <*> (x .:? "Arn")
+                     <*> (x .:? "CreatedTime")
+                     <*> (x .:? "ImageBuilderSupported")
+                     <*> (x .:? "Visibility")
+                     <*> (x .:? "BaseImageArn")
+                     <*> (x .:? "DisplayName")
+                     <*> (x .:? "Description")
+                     <*> (x .:? "Applications" .!= mempty)
+                     <*> (x .: "Name"))
+
+instance Hashable Image where
+
+instance NFData Image where
+
+-- | /See:/ 'imageBuilder' smart constructor.
+data ImageBuilder = ImageBuilder'
+  { _ibDomainJoinInfo              :: !(Maybe DomainJoinInfo)
+  , _ibState                       :: !(Maybe ImageBuilderState)
+  , _ibPlatform                    :: !(Maybe PlatformType)
+  , _ibStateChangeReason           :: !(Maybe ImageBuilderStateChangeReason)
+  , _ibARN                         :: !(Maybe Text)
+  , _ibCreatedTime                 :: !(Maybe POSIX)
+  , _ibImageBuilderErrors          :: !(Maybe [ResourceError])
+  , _ibInstanceType                :: !(Maybe Text)
+  , _ibVPCConfig                   :: !(Maybe VPCConfig)
+  , _ibImageARN                    :: !(Maybe Text)
+  , _ibDisplayName                 :: !(Maybe Text)
+  , _ibEnableDefaultInternetAccess :: !(Maybe Bool)
+  , _ibDescription                 :: !(Maybe Text)
+  , _ibName                        :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ImageBuilder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ibDomainJoinInfo' - Undocumented member.
+--
+-- * 'ibState' - Undocumented member.
+--
+-- * 'ibPlatform' - Undocumented member.
+--
+-- * 'ibStateChangeReason' - Undocumented member.
+--
+-- * 'ibARN' - Undocumented member.
+--
+-- * 'ibCreatedTime' - Undocumented member.
+--
+-- * 'ibImageBuilderErrors' - Undocumented member.
+--
+-- * 'ibInstanceType' - Undocumented member.
+--
+-- * 'ibVPCConfig' - Undocumented member.
+--
+-- * 'ibImageARN' - Undocumented member.
+--
+-- * 'ibDisplayName' - Undocumented member.
+--
+-- * 'ibEnableDefaultInternetAccess' - Undocumented member.
+--
+-- * 'ibDescription' - Undocumented member.
+--
+-- * 'ibName' - Undocumented member.
+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_
+  }
+
+
+-- | Undocumented member.
+ibDomainJoinInfo :: Lens' ImageBuilder (Maybe DomainJoinInfo)
+ibDomainJoinInfo = lens _ibDomainJoinInfo (\ s a -> s{_ibDomainJoinInfo = a});
+
+-- | Undocumented member.
+ibState :: Lens' ImageBuilder (Maybe ImageBuilderState)
+ibState = lens _ibState (\ s a -> s{_ibState = a});
+
+-- | Undocumented member.
+ibPlatform :: Lens' ImageBuilder (Maybe PlatformType)
+ibPlatform = lens _ibPlatform (\ s a -> s{_ibPlatform = a});
+
+-- | Undocumented member.
+ibStateChangeReason :: Lens' ImageBuilder (Maybe ImageBuilderStateChangeReason)
+ibStateChangeReason = lens _ibStateChangeReason (\ s a -> s{_ibStateChangeReason = a});
+
+-- | Undocumented member.
+ibARN :: Lens' ImageBuilder (Maybe Text)
+ibARN = lens _ibARN (\ s a -> s{_ibARN = a});
+
+-- | Undocumented member.
+ibCreatedTime :: Lens' ImageBuilder (Maybe UTCTime)
+ibCreatedTime = lens _ibCreatedTime (\ s a -> s{_ibCreatedTime = a}) . mapping _Time;
+
+-- | Undocumented member.
+ibImageBuilderErrors :: Lens' ImageBuilder [ResourceError]
+ibImageBuilderErrors = lens _ibImageBuilderErrors (\ s a -> s{_ibImageBuilderErrors = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+ibInstanceType :: Lens' ImageBuilder (Maybe Text)
+ibInstanceType = lens _ibInstanceType (\ s a -> s{_ibInstanceType = a});
+
+-- | Undocumented member.
+ibVPCConfig :: Lens' ImageBuilder (Maybe VPCConfig)
+ibVPCConfig = lens _ibVPCConfig (\ s a -> s{_ibVPCConfig = a});
+
+-- | Undocumented member.
+ibImageARN :: Lens' ImageBuilder (Maybe Text)
+ibImageARN = lens _ibImageARN (\ s a -> s{_ibImageARN = a});
+
+-- | Undocumented member.
+ibDisplayName :: Lens' ImageBuilder (Maybe Text)
+ibDisplayName = lens _ibDisplayName (\ s a -> s{_ibDisplayName = a});
+
+-- | Undocumented member.
+ibEnableDefaultInternetAccess :: Lens' ImageBuilder (Maybe Bool)
+ibEnableDefaultInternetAccess = lens _ibEnableDefaultInternetAccess (\ s a -> s{_ibEnableDefaultInternetAccess = a});
+
+-- | Undocumented member.
+ibDescription :: Lens' ImageBuilder (Maybe Text)
+ibDescription = lens _ibDescription (\ s a -> s{_ibDescription = a});
+
+-- | Undocumented member.
+ibName :: Lens' ImageBuilder Text
+ibName = lens _ibName (\ s a -> s{_ibName = a});
+
+instance FromJSON ImageBuilder where
+        parseJSON
+          = withObject "ImageBuilder"
+              (\ x ->
+                 ImageBuilder' <$>
+                   (x .:? "DomainJoinInfo") <*> (x .:? "State") <*>
+                     (x .:? "Platform")
+                     <*> (x .:? "StateChangeReason")
+                     <*> (x .:? "Arn")
+                     <*> (x .:? "CreatedTime")
+                     <*> (x .:? "ImageBuilderErrors" .!= mempty)
+                     <*> (x .:? "InstanceType")
+                     <*> (x .:? "VpcConfig")
+                     <*> (x .:? "ImageArn")
+                     <*> (x .:? "DisplayName")
+                     <*> (x .:? "EnableDefaultInternetAccess")
+                     <*> (x .:? "Description")
+                     <*> (x .: "Name"))
+
+instance Hashable ImageBuilder where
+
+instance NFData ImageBuilder where
+
+-- | /See:/ 'imageBuilderStateChangeReason' smart constructor.
+data ImageBuilderStateChangeReason = ImageBuilderStateChangeReason'
+  { _ibscrCode    :: !(Maybe ImageBuilderStateChangeReasonCode)
+  , _ibscrMessage :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ImageBuilderStateChangeReason' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ibscrCode' - Undocumented member.
+--
+-- * 'ibscrMessage' - Undocumented member.
+imageBuilderStateChangeReason
+    :: ImageBuilderStateChangeReason
+imageBuilderStateChangeReason =
+  ImageBuilderStateChangeReason' {_ibscrCode = Nothing, _ibscrMessage = Nothing}
+
+
+-- | Undocumented member.
+ibscrCode :: Lens' ImageBuilderStateChangeReason (Maybe ImageBuilderStateChangeReasonCode)
+ibscrCode = lens _ibscrCode (\ s a -> s{_ibscrCode = a});
+
+-- | Undocumented member.
+ibscrMessage :: Lens' ImageBuilderStateChangeReason (Maybe Text)
+ibscrMessage = lens _ibscrMessage (\ s a -> s{_ibscrMessage = a});
+
+instance FromJSON ImageBuilderStateChangeReason where
+        parseJSON
+          = withObject "ImageBuilderStateChangeReason"
+              (\ x ->
+                 ImageBuilderStateChangeReason' <$>
+                   (x .:? "Code") <*> (x .:? "Message"))
+
+instance Hashable ImageBuilderStateChangeReason where
+
+instance NFData ImageBuilderStateChangeReason where
+
+-- | Describes the reason why the last state change occurred.
+--
+--
+--
+-- /See:/ 'imageStateChangeReason' smart constructor.
+data ImageStateChangeReason = ImageStateChangeReason'
+  { _iscrCode    :: !(Maybe ImageStateChangeReasonCode)
+  , _iscrMessage :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ImageStateChangeReason' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iscrCode' - The state change reason code.
+--
+-- * 'iscrMessage' - The state change reason message.
+imageStateChangeReason
+    :: ImageStateChangeReason
+imageStateChangeReason =
+  ImageStateChangeReason' {_iscrCode = Nothing, _iscrMessage = Nothing}
+
+
+-- | The state change reason code.
+iscrCode :: Lens' ImageStateChangeReason (Maybe ImageStateChangeReasonCode)
+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});
+
+instance FromJSON ImageStateChangeReason where
+        parseJSON
+          = withObject "ImageStateChangeReason"
+              (\ x ->
+                 ImageStateChangeReason' <$>
+                   (x .:? "Code") <*> (x .:? "Message"))
+
+instance Hashable ImageStateChangeReason where
+
+instance NFData ImageStateChangeReason where
+
+-- | /See:/ 'resourceError' smart constructor.
+data ResourceError = ResourceError'
+  { _reErrorCode      :: !(Maybe FleetErrorCode)
+  , _reErrorMessage   :: !(Maybe Text)
+  , _reErrorTimestamp :: !(Maybe POSIX)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ResourceError' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'reErrorCode' - Undocumented member.
+--
+-- * 'reErrorMessage' - Undocumented member.
+--
+-- * 'reErrorTimestamp' - Undocumented member.
+resourceError
+    :: ResourceError
+resourceError =
+  ResourceError'
+  { _reErrorCode = Nothing
+  , _reErrorMessage = Nothing
+  , _reErrorTimestamp = Nothing
+  }
+
+
+-- | Undocumented member.
+reErrorCode :: Lens' ResourceError (Maybe FleetErrorCode)
+reErrorCode = lens _reErrorCode (\ s a -> s{_reErrorCode = a});
+
+-- | Undocumented member.
+reErrorMessage :: Lens' ResourceError (Maybe Text)
+reErrorMessage = lens _reErrorMessage (\ s a -> s{_reErrorMessage = a});
+
+-- | Undocumented member.
+reErrorTimestamp :: Lens' ResourceError (Maybe UTCTime)
+reErrorTimestamp = lens _reErrorTimestamp (\ s a -> s{_reErrorTimestamp = a}) . mapping _Time;
+
+instance FromJSON ResourceError where
+        parseJSON
+          = withObject "ResourceError"
+              (\ x ->
+                 ResourceError' <$>
+                   (x .:? "ErrorCode") <*> (x .:? "ErrorMessage") <*>
+                     (x .:? "ErrorTimestamp"))
+
+instance Hashable ResourceError where
+
+instance NFData ResourceError where
+
+-- | Describes the credentials for the service account used by the streaming instance to connect to the directory.
+--
+--
+--
+-- /See:/ 'serviceAccountCredentials' smart constructor.
+data ServiceAccountCredentials = ServiceAccountCredentials'
+  { _sacAccountName     :: !(Sensitive Text)
+  , _sacAccountPassword :: !(Sensitive Text)
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ServiceAccountCredentials' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sacAccountName' - 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.
+--
+-- * 'sacAccountPassword' - The password for the account.
+serviceAccountCredentials
+    :: Text -- ^ 'sacAccountName'
+    -> Text -- ^ 'sacAccountPassword'
+    -> ServiceAccountCredentials
+serviceAccountCredentials pAccountName_ pAccountPassword_ =
+  ServiceAccountCredentials'
+  { _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;
+
+-- | The password for the account.
+sacAccountPassword :: Lens' ServiceAccountCredentials Text
+sacAccountPassword = lens _sacAccountPassword (\ s a -> s{_sacAccountPassword = a}) . _Sensitive;
+
+instance FromJSON ServiceAccountCredentials where
+        parseJSON
+          = withObject "ServiceAccountCredentials"
+              (\ x ->
+                 ServiceAccountCredentials' <$>
+                   (x .: "AccountName") <*> (x .: "AccountPassword"))
+
+instance Hashable ServiceAccountCredentials where
+
+instance NFData ServiceAccountCredentials where
+
+instance ToJSON ServiceAccountCredentials where
+        toJSON ServiceAccountCredentials'{..}
+          = object
+              (catMaybes
+                 [Just ("AccountName" .= _sacAccountName),
+                  Just ("AccountPassword" .= _sacAccountPassword)])
+
+-- | Describes a streaming session.
+--
+--
+--
+-- /See:/ 'session' smart constructor.
+data Session = Session'
+  { _sAuthenticationType :: !(Maybe AuthenticationType)
+  , _sId                 :: !Text
+  , _sUserId             :: !Text
+  , _sStackName          :: !Text
+  , _sFleetName          :: !Text
+  , _sState              :: !SessionState
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Session' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sAuthenticationType' - The authentication method. The user is authenticated using a streaming URL (@API@ ) or SAML federation (@SAML@ ).
+--
+-- * 'sId' - The ID of the streaming session.
+--
+-- * 'sUserId' - The identifier of the user for whom the session was created.
+--
+-- * 'sStackName' - The name of the stack for the streaming session.
+--
+-- * 'sFleetName' - The name of the fleet for the streaming session.
+--
+-- * 'sState' - The current state of the streaming session.
+session
+    :: Text -- ^ 'sId'
+    -> Text -- ^ 'sUserId'
+    -> Text -- ^ 'sStackName'
+    -> Text -- ^ 'sFleetName'
+    -> SessionState -- ^ 'sState'
+    -> Session
+session pId_ pUserId_ pStackName_ pFleetName_ pState_ =
+  Session'
+  { _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});
+
+-- | The ID of the streaming session.
+sId :: Lens' Session Text
+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});
+
+-- | The name of the stack for the streaming session.
+sStackName :: Lens' Session Text
+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});
+
+-- | The current state of the streaming session.
+sState :: Lens' Session SessionState
+sState = lens _sState (\ s a -> s{_sState = a});
+
+instance FromJSON Session where
+        parseJSON
+          = withObject "Session"
+              (\ x ->
+                 Session' <$>
+                   (x .:? "AuthenticationType") <*> (x .: "Id") <*>
+                     (x .: "UserId")
+                     <*> (x .: "StackName")
+                     <*> (x .: "FleetName")
+                     <*> (x .: "State"))
+
+instance Hashable Session where
+
+instance NFData Session where
+
+-- | Describes a stack.
+--
+--
+--
+-- /See:/ 'stack' smart constructor.
+data Stack = Stack'
+  { _sARN               :: !(Maybe Text)
+  , _sCreatedTime       :: !(Maybe POSIX)
+  , _sStorageConnectors :: !(Maybe [StorageConnector])
+  , _sDisplayName       :: !(Maybe Text)
+  , _sStackErrors       :: !(Maybe [StackError])
+  , _sDescription       :: !(Maybe Text)
+  , _sName              :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Stack' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * '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.
+--
+-- * 'sStackErrors' - The errors for the stack.
+--
+-- * 'sDescription' - The description displayed to end users.
+--
+-- * '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_
+  }
+
+
+-- | The ARN of the stack.
+sARN :: Lens' Stack (Maybe Text)
+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;
+
+-- | The storage connectors to enable.
+sStorageConnectors :: Lens' Stack [StorageConnector]
+sStorageConnectors = lens _sStorageConnectors (\ s a -> s{_sStorageConnectors = a}) . _Default . _Coerce;
+
+-- | The stack name displayed to end users.
+sDisplayName :: Lens' Stack (Maybe Text)
+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;
+
+-- | The description displayed to end users.
+sDescription :: Lens' Stack (Maybe Text)
+sDescription = lens _sDescription (\ s a -> s{_sDescription = a});
+
+-- | The name of the stack.
+sName :: Lens' Stack Text
+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 .:? "DisplayName")
+                     <*> (x .:? "StackErrors" .!= mempty)
+                     <*> (x .:? "Description")
+                     <*> (x .: "Name"))
+
+instance Hashable Stack where
+
+instance NFData Stack where
+
+-- | Describes a stack error.
+--
+--
+--
+-- /See:/ 'stackError' smart constructor.
+data StackError = StackError'
+  { _seErrorCode    :: !(Maybe StackErrorCode)
+  , _seErrorMessage :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StackError' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'seErrorCode' - The error code.
+--
+-- * 'seErrorMessage' - The error message.
+stackError
+    :: StackError
+stackError = StackError' {_seErrorCode = Nothing, _seErrorMessage = Nothing}
+
+
+-- | The error code.
+seErrorCode :: Lens' StackError (Maybe StackErrorCode)
+seErrorCode = lens _seErrorCode (\ s a -> s{_seErrorCode = a});
+
+-- | The error message.
+seErrorMessage :: Lens' StackError (Maybe Text)
+seErrorMessage = lens _seErrorMessage (\ s a -> s{_seErrorMessage = a});
+
+instance FromJSON StackError where
+        parseJSON
+          = withObject "StackError"
+              (\ x ->
+                 StackError' <$>
+                   (x .:? "ErrorCode") <*> (x .:? "ErrorMessage"))
+
+instance Hashable StackError where
+
+instance NFData StackError where
+
+-- | Describes a storage connector.
+--
+--
+--
+-- /See:/ 'storageConnector' smart constructor.
+data StorageConnector = StorageConnector'
+  { _scResourceIdentifier :: !(Maybe Text)
+  , _scConnectorType      :: !StorageConnectorType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StorageConnector' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scResourceIdentifier' - The ARN of the storage connector.
+--
+-- * 'scConnectorType' - The type of storage connector.
+storageConnector
+    :: StorageConnectorType -- ^ 'scConnectorType'
+    -> StorageConnector
+storageConnector pConnectorType_ =
+  StorageConnector'
+  {_scResourceIdentifier = Nothing, _scConnectorType = pConnectorType_}
+
+
+-- | The ARN of the storage connector.
+scResourceIdentifier :: Lens' StorageConnector (Maybe Text)
+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});
+
+instance FromJSON StorageConnector where
+        parseJSON
+          = withObject "StorageConnector"
+              (\ x ->
+                 StorageConnector' <$>
+                   (x .:? "ResourceIdentifier") <*>
+                     (x .: "ConnectorType"))
+
+instance Hashable StorageConnector where
+
+instance NFData StorageConnector where
+
+instance ToJSON StorageConnector where
+        toJSON StorageConnector'{..}
+          = object
+              (catMaybes
+                 [("ResourceIdentifier" .=) <$> _scResourceIdentifier,
+                  Just ("ConnectorType" .= _scConnectorType)])
+
+-- | Describes VPC configuration information.
+--
+--
+--
+-- /See:/ 'vpcConfig' smart constructor.
+data VPCConfig = VPCConfig'
+  { _vcSecurityGroupIds :: !(Maybe [Text])
+  , _vcSubnetIds        :: !(Maybe [Text])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'VPCConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vcSecurityGroupIds' - The security groups for the fleet.
+--
+-- * 'vcSubnetIds' - The subnets to which a network interface is established from the fleet instance.
+vpcConfig
+    :: VPCConfig
+vpcConfig = VPCConfig' {_vcSecurityGroupIds = Nothing, _vcSubnetIds = Nothing}
+
+
+-- | The security groups for the fleet.
+vcSecurityGroupIds :: Lens' VPCConfig [Text]
+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;
+
+instance FromJSON VPCConfig where
+        parseJSON
+          = withObject "VPCConfig"
+              (\ x ->
+                 VPCConfig' <$>
+                   (x .:? "SecurityGroupIds" .!= mempty) <*>
+                     (x .:? "SubnetIds" .!= mempty))
+
+instance Hashable VPCConfig where
+
+instance NFData VPCConfig where
+
+instance ToJSON VPCConfig where
+        toJSON VPCConfig'{..}
+          = object
+              (catMaybes
+                 [("SecurityGroupIds" .=) <$> _vcSecurityGroupIds,
+                  ("SubnetIds" .=) <$> _vcSubnetIds])
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,57 +9,169 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.Types.Sum
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.AppStream.Types.Sum where
 
-import           Network.AWS.Prelude
+import Network.AWS.Prelude
 
+data AuthenticationType
+  = API
+  | Saml
+  | Userpool
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText AuthenticationType where
+    parser = takeLowerText >>= \case
+        "api" -> pure API
+        "saml" -> pure Saml
+        "userpool" -> pure Userpool
+        e -> fromTextError $ "Failure parsing AuthenticationType from value: '" <> e
+           <> "'. Accepted values: api, saml, userpool"
+
+instance ToText AuthenticationType where
+    toText = \case
+        API -> "API"
+        Saml -> "SAML"
+        Userpool -> "USERPOOL"
+
+instance Hashable     AuthenticationType
+instance NFData       AuthenticationType
+instance ToByteString AuthenticationType
+instance ToQuery      AuthenticationType
+instance ToHeader     AuthenticationType
+
+instance ToJSON AuthenticationType where
+    toJSON = toJSONText
+
+instance FromJSON AuthenticationType where
+    parseJSON = parseJSONText "AuthenticationType"
+
+-- | The fleet attribute.
+--
+--
+data FleetAttribute
+  = DomainJoinInfo
+  | VPCConfiguration
+  | VPCConfigurationSecurityGroupIds
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText FleetAttribute where
+    parser = takeLowerText >>= \case
+        "domain_join_info" -> pure DomainJoinInfo
+        "vpc_configuration" -> pure VPCConfiguration
+        "vpc_configuration_security_group_ids" -> pure VPCConfigurationSecurityGroupIds
+        e -> fromTextError $ "Failure parsing FleetAttribute from value: '" <> e
+           <> "'. Accepted values: domain_join_info, vpc_configuration, vpc_configuration_security_group_ids"
+
+instance ToText FleetAttribute where
+    toText = \case
+        DomainJoinInfo -> "DOMAIN_JOIN_INFO"
+        VPCConfiguration -> "VPC_CONFIGURATION"
+        VPCConfigurationSecurityGroupIds -> "VPC_CONFIGURATION_SECURITY_GROUP_IDS"
+
+instance Hashable     FleetAttribute
+instance NFData       FleetAttribute
+instance ToByteString FleetAttribute
+instance ToQuery      FleetAttribute
+instance ToHeader     FleetAttribute
+
+instance ToJSON FleetAttribute where
+    toJSON = toJSONText
+
 data FleetErrorCode
-    = IAMServiceRoleIsMissing
-    | IAMServiceRoleMissingDescribeSubnetAction
-    | IAMServiceRoleMissingEniCreateAction
-    | IAMServiceRoleMissingEniDeleteAction
-    | IAMServiceRoleMissingEniDescribeAction
-    | ImageNotFound
-    | InternalServiceError
-    | InvalidSubnetConfiguration
-    | NetworkInterfaceLimitExceeded
-    | SubnetHasInsufficientIPAddresses
-    | SubnetNotFound
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = DomainJoinErrorAccessDenied
+  | DomainJoinErrorDsMachineAccountQuotaExceeded
+  | DomainJoinErrorFileNotFound
+  | DomainJoinErrorInvalidParameter
+  | DomainJoinErrorLogonFailure
+  | DomainJoinErrorMoreData
+  | DomainJoinErrorNoSuchDomain
+  | DomainJoinErrorNotSupported
+  | DomainJoinInternalServiceError
+  | DomainJoinNerrInvalidWorkgroupName
+  | DomainJoinNerrPasswordExpired
+  | DomainJoinNerrWorkstationNotStarted
+  | IAMServiceRoleIsMissing
+  | IAMServiceRoleMissingDescribeSecurityGroupsAction
+  | IAMServiceRoleMissingDescribeSubnetAction
+  | IAMServiceRoleMissingEniCreateAction
+  | IAMServiceRoleMissingEniDeleteAction
+  | IAMServiceRoleMissingEniDescribeAction
+  | IgwNotAttached
+  | ImageNotFound
+  | InternalServiceError
+  | InvalidSubnetConfiguration
+  | NetworkInterfaceLimitExceeded
+  | SecurityGroupsNotFound
+  | SubnetHasInsufficientIPAddresses
+  | SubnetNotFound
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText FleetErrorCode where
     parser = takeLowerText >>= \case
+        "domain_join_error_access_denied" -> pure DomainJoinErrorAccessDenied
+        "domain_join_error_ds_machine_account_quota_exceeded" -> pure DomainJoinErrorDsMachineAccountQuotaExceeded
+        "domain_join_error_file_not_found" -> pure DomainJoinErrorFileNotFound
+        "domain_join_error_invalid_parameter" -> pure DomainJoinErrorInvalidParameter
+        "domain_join_error_logon_failure" -> pure DomainJoinErrorLogonFailure
+        "domain_join_error_more_data" -> pure DomainJoinErrorMoreData
+        "domain_join_error_no_such_domain" -> pure DomainJoinErrorNoSuchDomain
+        "domain_join_error_not_supported" -> pure DomainJoinErrorNotSupported
+        "domain_join_internal_service_error" -> pure DomainJoinInternalServiceError
+        "domain_join_nerr_invalid_workgroup_name" -> pure DomainJoinNerrInvalidWorkgroupName
+        "domain_join_nerr_password_expired" -> pure DomainJoinNerrPasswordExpired
+        "domain_join_nerr_workstation_not_started" -> pure DomainJoinNerrWorkstationNotStarted
         "iam_service_role_is_missing" -> pure IAMServiceRoleIsMissing
+        "iam_service_role_missing_describe_security_groups_action" -> pure IAMServiceRoleMissingDescribeSecurityGroupsAction
         "iam_service_role_missing_describe_subnet_action" -> pure IAMServiceRoleMissingDescribeSubnetAction
         "iam_service_role_missing_eni_create_action" -> pure IAMServiceRoleMissingEniCreateAction
         "iam_service_role_missing_eni_delete_action" -> pure IAMServiceRoleMissingEniDeleteAction
         "iam_service_role_missing_eni_describe_action" -> pure IAMServiceRoleMissingEniDescribeAction
+        "igw_not_attached" -> pure IgwNotAttached
         "image_not_found" -> pure ImageNotFound
         "internal_service_error" -> pure InternalServiceError
         "invalid_subnet_configuration" -> pure InvalidSubnetConfiguration
         "network_interface_limit_exceeded" -> pure NetworkInterfaceLimitExceeded
+        "security_groups_not_found" -> pure SecurityGroupsNotFound
         "subnet_has_insufficient_ip_addresses" -> pure SubnetHasInsufficientIPAddresses
         "subnet_not_found" -> pure SubnetNotFound
         e -> fromTextError $ "Failure parsing FleetErrorCode from value: '" <> e
-           <> "'. Accepted values: iam_service_role_is_missing, iam_service_role_missing_describe_subnet_action, iam_service_role_missing_eni_create_action, iam_service_role_missing_eni_delete_action, iam_service_role_missing_eni_describe_action, image_not_found, internal_service_error, invalid_subnet_configuration, network_interface_limit_exceeded, subnet_has_insufficient_ip_addresses, subnet_not_found"
+           <> "'. Accepted values: domain_join_error_access_denied, domain_join_error_ds_machine_account_quota_exceeded, domain_join_error_file_not_found, domain_join_error_invalid_parameter, domain_join_error_logon_failure, domain_join_error_more_data, domain_join_error_no_such_domain, domain_join_error_not_supported, domain_join_internal_service_error, domain_join_nerr_invalid_workgroup_name, domain_join_nerr_password_expired, domain_join_nerr_workstation_not_started, iam_service_role_is_missing, iam_service_role_missing_describe_security_groups_action, iam_service_role_missing_describe_subnet_action, iam_service_role_missing_eni_create_action, iam_service_role_missing_eni_delete_action, iam_service_role_missing_eni_describe_action, igw_not_attached, image_not_found, internal_service_error, invalid_subnet_configuration, network_interface_limit_exceeded, security_groups_not_found, subnet_has_insufficient_ip_addresses, subnet_not_found"
 
 instance ToText FleetErrorCode where
     toText = \case
+        DomainJoinErrorAccessDenied -> "DOMAIN_JOIN_ERROR_ACCESS_DENIED"
+        DomainJoinErrorDsMachineAccountQuotaExceeded -> "DOMAIN_JOIN_ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED"
+        DomainJoinErrorFileNotFound -> "DOMAIN_JOIN_ERROR_FILE_NOT_FOUND"
+        DomainJoinErrorInvalidParameter -> "DOMAIN_JOIN_ERROR_INVALID_PARAMETER"
+        DomainJoinErrorLogonFailure -> "DOMAIN_JOIN_ERROR_LOGON_FAILURE"
+        DomainJoinErrorMoreData -> "DOMAIN_JOIN_ERROR_MORE_DATA"
+        DomainJoinErrorNoSuchDomain -> "DOMAIN_JOIN_ERROR_NO_SUCH_DOMAIN"
+        DomainJoinErrorNotSupported -> "DOMAIN_JOIN_ERROR_NOT_SUPPORTED"
+        DomainJoinInternalServiceError -> "DOMAIN_JOIN_INTERNAL_SERVICE_ERROR"
+        DomainJoinNerrInvalidWorkgroupName -> "DOMAIN_JOIN_NERR_INVALID_WORKGROUP_NAME"
+        DomainJoinNerrPasswordExpired -> "DOMAIN_JOIN_NERR_PASSWORD_EXPIRED"
+        DomainJoinNerrWorkstationNotStarted -> "DOMAIN_JOIN_NERR_WORKSTATION_NOT_STARTED"
         IAMServiceRoleIsMissing -> "IAM_SERVICE_ROLE_IS_MISSING"
+        IAMServiceRoleMissingDescribeSecurityGroupsAction -> "IAM_SERVICE_ROLE_MISSING_DESCRIBE_SECURITY_GROUPS_ACTION"
         IAMServiceRoleMissingDescribeSubnetAction -> "IAM_SERVICE_ROLE_MISSING_DESCRIBE_SUBNET_ACTION"
         IAMServiceRoleMissingEniCreateAction -> "IAM_SERVICE_ROLE_MISSING_ENI_CREATE_ACTION"
         IAMServiceRoleMissingEniDeleteAction -> "IAM_SERVICE_ROLE_MISSING_ENI_DELETE_ACTION"
         IAMServiceRoleMissingEniDescribeAction -> "IAM_SERVICE_ROLE_MISSING_ENI_DESCRIBE_ACTION"
+        IgwNotAttached -> "IGW_NOT_ATTACHED"
         ImageNotFound -> "IMAGE_NOT_FOUND"
         InternalServiceError -> "INTERNAL_SERVICE_ERROR"
         InvalidSubnetConfiguration -> "INVALID_SUBNET_CONFIGURATION"
         NetworkInterfaceLimitExceeded -> "NETWORK_INTERFACE_LIMIT_EXCEEDED"
+        SecurityGroupsNotFound -> "SECURITY_GROUPS_NOT_FOUND"
         SubnetHasInsufficientIPAddresses -> "SUBNET_HAS_INSUFFICIENT_IP_ADDRESSES"
         SubnetNotFound -> "SUBNET_NOT_FOUND"
 
@@ -73,12 +185,13 @@
     parseJSON = parseJSONText "FleetErrorCode"
 
 data FleetState
-    = Running
-    | Starting
-    | Stopped
-    | Stopping
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Running
+  | Starting
+  | Stopped
+  | Stopping
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText FleetState where
     parser = takeLowerText >>= \case
         "running" -> pure Running
@@ -104,13 +217,116 @@
 instance FromJSON FleetState where
     parseJSON = parseJSONText "FleetState"
 
+data FleetType
+  = AlwaysOn
+  | OnDemand
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText FleetType where
+    parser = takeLowerText >>= \case
+        "always_on" -> pure AlwaysOn
+        "on_demand" -> pure OnDemand
+        e -> fromTextError $ "Failure parsing FleetType from value: '" <> e
+           <> "'. Accepted values: always_on, on_demand"
+
+instance ToText FleetType where
+    toText = \case
+        AlwaysOn -> "ALWAYS_ON"
+        OnDemand -> "ON_DEMAND"
+
+instance Hashable     FleetType
+instance NFData       FleetType
+instance ToByteString FleetType
+instance ToQuery      FleetType
+instance ToHeader     FleetType
+
+instance ToJSON FleetType where
+    toJSON = toJSONText
+
+instance FromJSON FleetType where
+    parseJSON = parseJSONText "FleetType"
+
+data ImageBuilderState
+  = IBSDeleting
+  | IBSFailed
+  | IBSPending
+  | IBSRebooting
+  | IBSRunning
+  | IBSSnapshotting
+  | IBSStopped
+  | IBSStopping
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText ImageBuilderState where
+    parser = takeLowerText >>= \case
+        "deleting" -> pure IBSDeleting
+        "failed" -> pure IBSFailed
+        "pending" -> pure IBSPending
+        "rebooting" -> pure IBSRebooting
+        "running" -> pure IBSRunning
+        "snapshotting" -> pure IBSSnapshotting
+        "stopped" -> pure IBSStopped
+        "stopping" -> pure IBSStopping
+        e -> fromTextError $ "Failure parsing ImageBuilderState from value: '" <> e
+           <> "'. Accepted values: deleting, failed, pending, rebooting, running, snapshotting, stopped, stopping"
+
+instance ToText ImageBuilderState where
+    toText = \case
+        IBSDeleting -> "DELETING"
+        IBSFailed -> "FAILED"
+        IBSPending -> "PENDING"
+        IBSRebooting -> "REBOOTING"
+        IBSRunning -> "RUNNING"
+        IBSSnapshotting -> "SNAPSHOTTING"
+        IBSStopped -> "STOPPED"
+        IBSStopping -> "STOPPING"
+
+instance Hashable     ImageBuilderState
+instance NFData       ImageBuilderState
+instance ToByteString ImageBuilderState
+instance ToQuery      ImageBuilderState
+instance ToHeader     ImageBuilderState
+
+instance FromJSON ImageBuilderState where
+    parseJSON = parseJSONText "ImageBuilderState"
+
+data ImageBuilderStateChangeReasonCode
+  = ImageUnavailable
+  | InternalError
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText ImageBuilderStateChangeReasonCode where
+    parser = takeLowerText >>= \case
+        "image_unavailable" -> pure ImageUnavailable
+        "internal_error" -> pure InternalError
+        e -> fromTextError $ "Failure parsing ImageBuilderStateChangeReasonCode from value: '" <> e
+           <> "'. Accepted values: image_unavailable, internal_error"
+
+instance ToText ImageBuilderStateChangeReasonCode where
+    toText = \case
+        ImageUnavailable -> "IMAGE_UNAVAILABLE"
+        InternalError -> "INTERNAL_ERROR"
+
+instance Hashable     ImageBuilderStateChangeReasonCode
+instance NFData       ImageBuilderStateChangeReasonCode
+instance ToByteString ImageBuilderStateChangeReasonCode
+instance ToQuery      ImageBuilderStateChangeReasonCode
+instance ToHeader     ImageBuilderStateChangeReasonCode
+
+instance FromJSON ImageBuilderStateChangeReasonCode where
+    parseJSON = parseJSONText "ImageBuilderStateChangeReasonCode"
+
 data ImageState
-    = ISAvailable
-    | ISDeleting
-    | ISFailed
-    | ISPending
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = ISAvailable
+  | ISDeleting
+  | ISFailed
+  | ISPending
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ImageState where
     parser = takeLowerText >>= \case
         "available" -> pure ISAvailable
@@ -137,21 +353,22 @@
     parseJSON = parseJSONText "ImageState"
 
 data ImageStateChangeReasonCode
-    = ImageBuilderNotAvailable
-    | InternalError
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = ISCRCImageBuilderNotAvailable
+  | ISCRCInternalError
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ImageStateChangeReasonCode where
     parser = takeLowerText >>= \case
-        "image_builder_not_available" -> pure ImageBuilderNotAvailable
-        "internal_error" -> pure InternalError
+        "image_builder_not_available" -> pure ISCRCImageBuilderNotAvailable
+        "internal_error" -> pure ISCRCInternalError
         e -> fromTextError $ "Failure parsing ImageStateChangeReasonCode from value: '" <> e
            <> "'. Accepted values: image_builder_not_available, internal_error"
 
 instance ToText ImageStateChangeReasonCode where
     toText = \case
-        ImageBuilderNotAvailable -> "IMAGE_BUILDER_NOT_AVAILABLE"
-        InternalError -> "INTERNAL_ERROR"
+        ISCRCImageBuilderNotAvailable -> "IMAGE_BUILDER_NOT_AVAILABLE"
+        ISCRCInternalError -> "INTERNAL_ERROR"
 
 instance Hashable     ImageStateChangeReasonCode
 instance NFData       ImageStateChangeReasonCode
@@ -163,9 +380,10 @@
     parseJSON = parseJSONText "ImageStateChangeReasonCode"
 
 data PlatformType =
-    Windows
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  Windows
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText PlatformType where
     parser = takeLowerText >>= \case
         "windows" -> pure Windows
@@ -189,11 +407,12 @@
 --
 --
 data SessionState
-    = Active
-    | Expired
-    | Pending
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Active
+  | Expired
+  | Pending
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText SessionState where
     parser = takeLowerText >>= \case
         "active" -> pure Active
@@ -217,10 +436,68 @@
 instance FromJSON SessionState where
     parseJSON = parseJSONText "SessionState"
 
+data StackErrorCode
+  = SECInternalServiceError
+  | SECStorageConnectorError
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText StackErrorCode where
+    parser = takeLowerText >>= \case
+        "internal_service_error" -> pure SECInternalServiceError
+        "storage_connector_error" -> pure SECStorageConnectorError
+        e -> fromTextError $ "Failure parsing StackErrorCode from value: '" <> e
+           <> "'. Accepted values: internal_service_error, storage_connector_error"
+
+instance ToText StackErrorCode where
+    toText = \case
+        SECInternalServiceError -> "INTERNAL_SERVICE_ERROR"
+        SECStorageConnectorError -> "STORAGE_CONNECTOR_ERROR"
+
+instance Hashable     StackErrorCode
+instance NFData       StackErrorCode
+instance ToByteString StackErrorCode
+instance ToQuery      StackErrorCode
+instance ToHeader     StackErrorCode
+
+instance FromJSON StackErrorCode where
+    parseJSON = parseJSONText "StackErrorCode"
+
+-- | The type of storage connector.
+--
+--
+data StorageConnectorType =
+  Homefolders
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText StorageConnectorType where
+    parser = takeLowerText >>= \case
+        "homefolders" -> pure Homefolders
+        e -> fromTextError $ "Failure parsing StorageConnectorType from value: '" <> e
+           <> "'. Accepted values: homefolders"
+
+instance ToText StorageConnectorType where
+    toText = \case
+        Homefolders -> "HOMEFOLDERS"
+
+instance Hashable     StorageConnectorType
+instance NFData       StorageConnectorType
+instance ToByteString StorageConnectorType
+instance ToQuery      StorageConnectorType
+instance ToHeader     StorageConnectorType
+
+instance ToJSON StorageConnectorType where
+    toJSON = toJSONText
+
+instance FromJSON StorageConnectorType where
+    parseJSON = parseJSONText "StorageConnectorType"
+
 data VisibilityType
-    = Private
-    | Public
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Private
+  | Public
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
 
 instance FromText VisibilityType where
     parser = takeLowerText >>= \case
diff --git a/gen/Network/AWS/AppStream/UpdateDirectoryConfig.hs b/gen/Network/AWS/AppStream/UpdateDirectoryConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AppStream/UpdateDirectoryConfig.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.AppStream.UpdateDirectoryConfig
+-- Copyright   : (c) 2013-2017 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)
+--
+-- Updates the specified directory configuration.
+--
+--
+module Network.AWS.AppStream.UpdateDirectoryConfig
+    (
+    -- * Creating a Request
+      updateDirectoryConfig
+    , UpdateDirectoryConfig
+    -- * Request Lenses
+    , udcServiceAccountCredentials
+    , udcOrganizationalUnitDistinguishedNames
+    , udcDirectoryName
+
+    -- * Destructuring the Response
+    , updateDirectoryConfigResponse
+    , UpdateDirectoryConfigResponse
+    -- * Response Lenses
+    , udcrsDirectoryConfig
+    , udcrsResponseStatus
+    ) 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:/ 'updateDirectoryConfig' smart constructor.
+data UpdateDirectoryConfig = UpdateDirectoryConfig'
+  { _udcServiceAccountCredentials :: !(Maybe ServiceAccountCredentials)
+  , _udcOrganizationalUnitDistinguishedNames :: !(Maybe [Text])
+  , _udcDirectoryName :: !Text
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UpdateDirectoryConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'udcServiceAccountCredentials' - The credentials for the service account used by the streaming instance to connect to the directory.
+--
+-- * 'udcOrganizationalUnitDistinguishedNames' - The distinguished names of the organizational units for computer accounts.
+--
+-- * 'udcDirectoryName' - The name of the directory configuration.
+updateDirectoryConfig
+    :: Text -- ^ 'udcDirectoryName'
+    -> UpdateDirectoryConfig
+updateDirectoryConfig pDirectoryName_ =
+  UpdateDirectoryConfig'
+  { _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});
+
+-- | The distinguished names of the organizational units for computer accounts.
+udcOrganizationalUnitDistinguishedNames :: Lens' UpdateDirectoryConfig [Text]
+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});
+
+instance AWSRequest UpdateDirectoryConfig where
+        type Rs UpdateDirectoryConfig =
+             UpdateDirectoryConfigResponse
+        request = postJSON appStream
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateDirectoryConfigResponse' <$>
+                   (x .?> "DirectoryConfig") <*> (pure (fromEnum s)))
+
+instance Hashable UpdateDirectoryConfig where
+
+instance NFData UpdateDirectoryConfig where
+
+instance ToHeaders UpdateDirectoryConfig where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("PhotonAdminProxyService.UpdateDirectoryConfig" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UpdateDirectoryConfig where
+        toJSON UpdateDirectoryConfig'{..}
+          = object
+              (catMaybes
+                 [("ServiceAccountCredentials" .=) <$>
+                    _udcServiceAccountCredentials,
+                  ("OrganizationalUnitDistinguishedNames" .=) <$>
+                    _udcOrganizationalUnitDistinguishedNames,
+                  Just ("DirectoryName" .= _udcDirectoryName)])
+
+instance ToPath UpdateDirectoryConfig where
+        toPath = const "/"
+
+instance ToQuery UpdateDirectoryConfig where
+        toQuery = const mempty
+
+-- | /See:/ 'updateDirectoryConfigResponse' smart constructor.
+data UpdateDirectoryConfigResponse = UpdateDirectoryConfigResponse'
+  { _udcrsDirectoryConfig :: !(Maybe DirectoryConfig)
+  , _udcrsResponseStatus  :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UpdateDirectoryConfigResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'udcrsDirectoryConfig' - Information about the directory configuration.
+--
+-- * 'udcrsResponseStatus' - -- | The response status code.
+updateDirectoryConfigResponse
+    :: Int -- ^ 'udcrsResponseStatus'
+    -> UpdateDirectoryConfigResponse
+updateDirectoryConfigResponse pResponseStatus_ =
+  UpdateDirectoryConfigResponse'
+  {_udcrsDirectoryConfig = Nothing, _udcrsResponseStatus = pResponseStatus_}
+
+
+-- | Information about the directory configuration.
+udcrsDirectoryConfig :: Lens' UpdateDirectoryConfigResponse (Maybe DirectoryConfig)
+udcrsDirectoryConfig = lens _udcrsDirectoryConfig (\ s a -> s{_udcrsDirectoryConfig = a});
+
+-- | -- | The response status code.
+udcrsResponseStatus :: Lens' UpdateDirectoryConfigResponse Int
+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,27 +12,32 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.UpdateFleet
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Updates an existing fleet. All the attributes except the fleet name can be updated in the __STOPPED__ state. Only __ComputeCapacity__ and __ImageName__ can be updated in any other state.
+-- Updates the specified fleet.
 --
 --
+-- If the fleet is in the @STOPPED@ state, you can update any attribute except the fleet name. If the fleet is in the @RUNNING@ state, you can update the @DisplayName@ and @ComputeCapacity@ attributes. If the fleet is in the @STARTING@ or @STOPPING@ state, you can't update it.
+--
 module Network.AWS.AppStream.UpdateFleet
     (
     -- * Creating a Request
       updateFleet
     , UpdateFleet
     -- * Request Lenses
+    , ufDomainJoinInfo
     , ufDisconnectTimeoutInSeconds
     , ufMaxUserDurationInSeconds
+    , ufAttributesToDelete
     , ufDeleteVPCConfig
     , ufInstanceType
     , ufVPCConfig
     , ufDisplayName
+    , ufEnableDefaultInternetAccess
     , ufImageName
     , ufDescription
     , ufComputeCapacity
@@ -46,80 +51,102 @@
     , ufrsResponseStatus
     ) 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
+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:/ 'updateFleet' smart constructor.
 data UpdateFleet = UpdateFleet'
-    { _ufDisconnectTimeoutInSeconds :: !(Maybe Int)
-    , _ufMaxUserDurationInSeconds   :: !(Maybe Int)
-    , _ufDeleteVPCConfig            :: !(Maybe Bool)
-    , _ufInstanceType               :: !(Maybe Text)
-    , _ufVPCConfig                  :: !(Maybe VPCConfig)
-    , _ufDisplayName                :: !(Maybe Text)
-    , _ufImageName                  :: !(Maybe Text)
-    , _ufDescription                :: !(Maybe Text)
-    , _ufComputeCapacity            :: !(Maybe ComputeCapacity)
-    , _ufName                       :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ufDomainJoinInfo              :: !(Maybe DomainJoinInfo)
+  , _ufDisconnectTimeoutInSeconds  :: !(Maybe Int)
+  , _ufMaxUserDurationInSeconds    :: !(Maybe Int)
+  , _ufAttributesToDelete          :: !(Maybe [FleetAttribute])
+  , _ufDeleteVPCConfig             :: !(Maybe Bool)
+  , _ufInstanceType                :: !(Maybe Text)
+  , _ufVPCConfig                   :: !(Maybe VPCConfig)
+  , _ufDisplayName                 :: !(Maybe Text)
+  , _ufEnableDefaultInternetAccess :: !(Maybe Bool)
+  , _ufImageName                   :: !(Maybe Text)
+  , _ufDescription                 :: !(Maybe Text)
+  , _ufComputeCapacity             :: !(Maybe ComputeCapacity)
+  , _ufName                        :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateFleet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ufDisconnectTimeoutInSeconds' - The time after disconnection when a session is considered to have ended. When the user reconnects after a disconnection, the user is connected to the same instance within this time interval.
+-- * 'ufDomainJoinInfo' - The information needed for streaming instances to join a domain.
 --
--- * 'ufMaxUserDurationInSeconds' - The maximum time during which a streaming session can run.
+-- * '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.
 --
--- * 'ufDeleteVPCConfig' - Delete the VPC association for the specified fleet.
+-- * 'ufMaxUserDurationInSeconds' - The maximum time that a streaming session can run, in seconds. Specify a value between 600 and 57600.
 --
--- * 'ufInstanceType' - The instance type of compute resources for the fleet. Fleet instances are launched from this instance type.
+-- * 'ufAttributesToDelete' - The fleet attributes to delete.
 --
+-- * 'ufDeleteVPCConfig' - Deletes the VPC association for the specified fleet.
+--
+-- * 'ufInstanceType' - 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
+--
 -- * 'ufVPCConfig' - The VPC configuration for the fleet.
 --
--- * 'ufDisplayName' - The name displayed to end users on the AppStream 2.0 portal.
+-- * 'ufDisplayName' - The fleet name displayed to end users.
 --
--- * 'ufImageName' - The image name from which a fleet is created.
+-- * 'ufEnableDefaultInternetAccess' - Enables or disables default internet access for the fleet.
 --
--- * 'ufDescription' - The description displayed to end users on the AppStream 2.0 portal.
+-- * 'ufImageName' - The name of the image used by the fleet.
 --
--- * 'ufComputeCapacity' - The parameters for the capacity allocated to the fleet.
+-- * 'ufDescription' - The description displayed to end users.
 --
--- * 'ufName' - The name of the fleet.
+-- * 'ufComputeCapacity' - The desired capacity for the fleet.
+--
+-- * 'ufName' - A unique name for the fleet.
 updateFleet
     :: Text -- ^ 'ufName'
     -> UpdateFleet
 updateFleet pName_ =
-    UpdateFleet'
-    { _ufDisconnectTimeoutInSeconds = Nothing
-    , _ufMaxUserDurationInSeconds = Nothing
-    , _ufDeleteVPCConfig = Nothing
-    , _ufInstanceType = Nothing
-    , _ufVPCConfig = Nothing
-    , _ufDisplayName = Nothing
-    , _ufImageName = Nothing
-    , _ufDescription = Nothing
-    , _ufComputeCapacity = Nothing
-    , _ufName = 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_
+  }
 
--- | The time after disconnection when a session is considered to have ended. When the user reconnects after a disconnection, the user is connected to the same instance within this time interval.
+
+-- | The information needed for streaming instances to join a domain.
+ufDomainJoinInfo :: Lens' UpdateFleet (Maybe DomainJoinInfo)
+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});
 
--- | The maximum time during which a streaming session can run.
+-- | 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});
 
--- | Delete the VPC association for the specified fleet.
+-- | The fleet attributes to delete.
+ufAttributesToDelete :: Lens' UpdateFleet [FleetAttribute]
+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});
 
--- | The instance type of compute resources for the fleet. Fleet instances are launched from this instance type.
+-- | 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});
 
@@ -127,23 +154,27 @@
 ufVPCConfig :: Lens' UpdateFleet (Maybe VPCConfig)
 ufVPCConfig = lens _ufVPCConfig (\ s a -> s{_ufVPCConfig = a});
 
--- | The name displayed to end users on the AppStream 2.0 portal.
+-- | The fleet name displayed to end users.
 ufDisplayName :: Lens' UpdateFleet (Maybe Text)
 ufDisplayName = lens _ufDisplayName (\ s a -> s{_ufDisplayName = a});
 
--- | The image name from which a fleet is created.
+-- | Enables or disables default internet access for the fleet.
+ufEnableDefaultInternetAccess :: Lens' UpdateFleet (Maybe Bool)
+ufEnableDefaultInternetAccess = lens _ufEnableDefaultInternetAccess (\ s a -> s{_ufEnableDefaultInternetAccess = a});
+
+-- | The name of the image used by the fleet.
 ufImageName :: Lens' UpdateFleet (Maybe Text)
 ufImageName = lens _ufImageName (\ s a -> s{_ufImageName = a});
 
--- | The description displayed to end users on the AppStream 2.0 portal.
+-- | The description displayed to end users.
 ufDescription :: Lens' UpdateFleet (Maybe Text)
 ufDescription = lens _ufDescription (\ s a -> s{_ufDescription = a});
 
--- | The parameters for the capacity allocated to the fleet.
+-- | The desired capacity for the fleet.
 ufComputeCapacity :: Lens' UpdateFleet (Maybe ComputeCapacity)
 ufComputeCapacity = lens _ufComputeCapacity (\ s a -> s{_ufComputeCapacity = a});
 
--- | The name of the fleet.
+-- | A unique name for the fleet.
 ufName :: Lens' UpdateFleet Text
 ufName = lens _ufName (\ s a -> s{_ufName = a});
 
@@ -156,9 +187,9 @@
                  UpdateFleetResponse' <$>
                    (x .?> "Fleet") <*> (pure (fromEnum s)))
 
-instance Hashable UpdateFleet
+instance Hashable UpdateFleet where
 
-instance NFData UpdateFleet
+instance NFData UpdateFleet where
 
 instance ToHeaders UpdateFleet where
         toHeaders
@@ -174,14 +205,18 @@
         toJSON UpdateFleet'{..}
           = object
               (catMaybes
-                 [("DisconnectTimeoutInSeconds" .=) <$>
+                 [("DomainJoinInfo" .=) <$> _ufDomainJoinInfo,
+                  ("DisconnectTimeoutInSeconds" .=) <$>
                     _ufDisconnectTimeoutInSeconds,
                   ("MaxUserDurationInSeconds" .=) <$>
                     _ufMaxUserDurationInSeconds,
+                  ("AttributesToDelete" .=) <$> _ufAttributesToDelete,
                   ("DeleteVpcConfig" .=) <$> _ufDeleteVPCConfig,
                   ("InstanceType" .=) <$> _ufInstanceType,
                   ("VpcConfig" .=) <$> _ufVPCConfig,
                   ("DisplayName" .=) <$> _ufDisplayName,
+                  ("EnableDefaultInternetAccess" .=) <$>
+                    _ufEnableDefaultInternetAccess,
                   ("ImageName" .=) <$> _ufImageName,
                   ("Description" .=) <$> _ufDescription,
                   ("ComputeCapacity" .=) <$> _ufComputeCapacity,
@@ -195,27 +230,27 @@
 
 -- | /See:/ 'updateFleetResponse' smart constructor.
 data UpdateFleetResponse = UpdateFleetResponse'
-    { _ufrsFleet          :: !(Maybe Fleet)
-    , _ufrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ufrsFleet          :: !(Maybe Fleet)
+  , _ufrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateFleetResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ufrsFleet' - A list of fleet details.
+-- * 'ufrsFleet' - Information about the fleet.
 --
 -- * 'ufrsResponseStatus' - -- | The response status code.
 updateFleetResponse
     :: Int -- ^ 'ufrsResponseStatus'
     -> UpdateFleetResponse
 updateFleetResponse pResponseStatus_ =
-    UpdateFleetResponse'
-    { _ufrsFleet = Nothing
-    , _ufrsResponseStatus = pResponseStatus_
-    }
+  UpdateFleetResponse'
+  {_ufrsFleet = Nothing, _ufrsResponseStatus = pResponseStatus_}
 
--- | A list of fleet details.
+
+-- | Information about the fleet.
 ufrsFleet :: Lens' UpdateFleetResponse (Maybe Fleet)
 ufrsFleet = lens _ufrsFleet (\ s a -> s{_ufrsFleet = a});
 
@@ -223,4 +258,4 @@
 ufrsResponseStatus :: Lens' UpdateFleetResponse Int
 ufrsResponseStatus = lens _ufrsResponseStatus (\ s a -> s{_ufrsResponseStatus = a});
 
-instance NFData UpdateFleetResponse
+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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.UpdateStack
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Updates the specified fields in the stack with the specified name.
+-- Updates the specified stack.
 --
 --
 module Network.AWS.AppStream.UpdateStack
@@ -27,6 +27,8 @@
       updateStack
     , UpdateStack
     -- * Request Lenses
+    , usDeleteStorageConnectors
+    , usStorageConnectors
     , usDisplayName
     , usDescription
     , usName
@@ -39,48 +41,66 @@
     , usrsResponseStatus
     ) 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
+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:/ 'updateStack' smart constructor.
 data UpdateStack = UpdateStack'
-    { _usDisplayName :: !(Maybe Text)
-    , _usDescription :: !(Maybe Text)
-    , _usName        :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _usDeleteStorageConnectors :: !(Maybe Bool)
+  , _usStorageConnectors       :: !(Maybe [StorageConnector])
+  , _usDisplayName             :: !(Maybe Text)
+  , _usDescription             :: !(Maybe Text)
+  , _usName                    :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateStack' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'usDisplayName' - The name displayed to end users on the AppStream 2.0 portal.
+-- * 'usDeleteStorageConnectors' - Deletes the storage connectors currently enabled for the stack.
 --
--- * 'usDescription' - The description displayed to end users on the AppStream 2.0 portal.
+-- * 'usStorageConnectors' - The storage connectors to enable.
 --
--- * 'usName' - The name of the stack to update.
+-- * 'usDisplayName' - The stack name displayed to end users.
+--
+-- * 'usDescription' - The description displayed to end users.
+--
+-- * 'usName' - The name of the stack.
 updateStack
     :: Text -- ^ 'usName'
     -> UpdateStack
 updateStack pName_ =
-    UpdateStack'
-    { _usDisplayName = Nothing
-    , _usDescription = Nothing
-    , _usName = pName_
-    }
+  UpdateStack'
+  { _usDeleteStorageConnectors = Nothing
+  , _usStorageConnectors = Nothing
+  , _usDisplayName = Nothing
+  , _usDescription = Nothing
+  , _usName = pName_
+  }
 
--- | The name displayed to end users on the AppStream 2.0 portal.
+
+-- | Deletes the storage connectors currently enabled for the stack.
+usDeleteStorageConnectors :: Lens' UpdateStack (Maybe Bool)
+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;
+
+-- | The stack name displayed to end users.
 usDisplayName :: Lens' UpdateStack (Maybe Text)
 usDisplayName = lens _usDisplayName (\ s a -> s{_usDisplayName = a});
 
--- | The description displayed to end users on the AppStream 2.0 portal.
+-- | The description displayed to end users.
 usDescription :: Lens' UpdateStack (Maybe Text)
 usDescription = lens _usDescription (\ s a -> s{_usDescription = a});
 
--- | The name of the stack to update.
+-- | The name of the stack.
 usName :: Lens' UpdateStack Text
 usName = lens _usName (\ s a -> s{_usName = a});
 
@@ -93,9 +113,9 @@
                  UpdateStackResponse' <$>
                    (x .?> "Stack") <*> (pure (fromEnum s)))
 
-instance Hashable UpdateStack
+instance Hashable UpdateStack where
 
-instance NFData UpdateStack
+instance NFData UpdateStack where
 
 instance ToHeaders UpdateStack where
         toHeaders
@@ -111,7 +131,10 @@
         toJSON UpdateStack'{..}
           = object
               (catMaybes
-                 [("DisplayName" .=) <$> _usDisplayName,
+                 [("DeleteStorageConnectors" .=) <$>
+                    _usDeleteStorageConnectors,
+                  ("StorageConnectors" .=) <$> _usStorageConnectors,
+                  ("DisplayName" .=) <$> _usDisplayName,
                   ("Description" .=) <$> _usDescription,
                   Just ("Name" .= _usName)])
 
@@ -123,27 +146,27 @@
 
 -- | /See:/ 'updateStackResponse' smart constructor.
 data UpdateStackResponse = UpdateStackResponse'
-    { _usrsStack          :: !(Maybe Stack)
-    , _usrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _usrsStack          :: !(Maybe Stack)
+  , _usrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateStackResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'usrsStack' - A list of stack details.
+-- * 'usrsStack' - Information about the stack.
 --
 -- * 'usrsResponseStatus' - -- | The response status code.
 updateStackResponse
     :: Int -- ^ 'usrsResponseStatus'
     -> UpdateStackResponse
 updateStackResponse pResponseStatus_ =
-    UpdateStackResponse'
-    { _usrsStack = Nothing
-    , _usrsResponseStatus = pResponseStatus_
-    }
+  UpdateStackResponse'
+  {_usrsStack = Nothing, _usrsResponseStatus = pResponseStatus_}
 
--- | A list of stack details.
+
+-- | Information about the stack.
 usrsStack :: Lens' UpdateStackResponse (Maybe Stack)
 usrsStack = lens _usrsStack (\ s a -> s{_usrsStack = a});
 
@@ -151,4 +174,4 @@
 usrsResponseStatus :: Lens' UpdateStackResponse Int
 usrsResponseStatus = lens _usrsResponseStatus (\ s a -> s{_usrsResponseStatus = a});
 
-instance NFData UpdateStackResponse
+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,15 +7,15 @@
 
 -- |
 -- Module      : Network.AWS.AppStream.Waiters
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.AppStream.Waiters where
 
-import           Network.AWS.AppStream.Types
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Waiter
+import Network.AWS.AppStream.Types
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,9 +2,9 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
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,20 +5,20 @@
 
 -- |
 -- Module      : Test.AWS.Gen.AppStream
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Test.AWS.Gen.AppStream where
 
 import Data.Proxy
+import Network.AWS.AppStream
+import Test.AWS.AppStream.Internal
 import Test.AWS.Fixture
 import Test.AWS.Prelude
 import Test.Tasty
-import Network.AWS.AppStream
-import Test.AWS.AppStream.Internal
 
 -- Auto-generated: the actual test selection needs to be manually placed into
 -- the top-level so that real test data can be incrementally added.
@@ -40,6 +40,9 @@
 --         , requestUpdateStack $
 --             updateStack
 --
+--         , requestCreateDirectoryConfig $
+--             createDirectoryConfig
+--
 --         , requestListAssociatedStacks $
 --             listAssociatedStacks
 --
@@ -49,9 +52,21 @@
 --         , requestUpdateFleet $
 --             updateFleet
 --
+--         , requestDeleteImageBuilder $
+--             deleteImageBuilder
+--
 --         , requestAssociateFleet $
 --             associateFleet
 --
+--         , requestCreateImageBuilder $
+--             createImageBuilder
+--
+--         , requestDescribeDirectoryConfigs $
+--             describeDirectoryConfigs
+--
+--         , requestCreateImageBuilderStreamingURL $
+--             createImageBuilderStreamingURL
+--
 --         , requestDescribeSessions $
 --             describeSessions
 --
@@ -61,9 +76,21 @@
 --         , requestDescribeFleets $
 --             describeFleets
 --
+--         , requestDescribeImageBuilders $
+--             describeImageBuilders
+--
 --         , requestStopFleet $
 --             stopFleet
 --
+--         , requestStartImageBuilder $
+--             startImageBuilder
+--
+--         , requestDeleteDirectoryConfig $
+--             deleteDirectoryConfig
+--
+--         , requestUpdateDirectoryConfig $
+--             updateDirectoryConfig
+--
 --         , requestCreateFleet $
 --             createFleet
 --
@@ -79,6 +106,12 @@
 --         , requestStartFleet $
 --             startFleet
 --
+--         , requestStopImageBuilder $
+--             stopImageBuilder
+--
+--         , requestDeleteImage $
+--             deleteImage
+--
 --         , requestDescribeImages $
 --             describeImages
 --
@@ -97,6 +130,9 @@
 --         , responseUpdateStack $
 --             updateStackResponse
 --
+--         , responseCreateDirectoryConfig $
+--             createDirectoryConfigResponse
+--
 --         , responseListAssociatedStacks $
 --             listAssociatedStacksResponse
 --
@@ -106,9 +142,21 @@
 --         , responseUpdateFleet $
 --             updateFleetResponse
 --
+--         , responseDeleteImageBuilder $
+--             deleteImageBuilderResponse
+--
 --         , responseAssociateFleet $
 --             associateFleetResponse
 --
+--         , responseCreateImageBuilder $
+--             createImageBuilderResponse
+--
+--         , responseDescribeDirectoryConfigs $
+--             describeDirectoryConfigsResponse
+--
+--         , responseCreateImageBuilderStreamingURL $
+--             createImageBuilderStreamingURLResponse
+--
 --         , responseDescribeSessions $
 --             describeSessionsResponse
 --
@@ -118,9 +166,21 @@
 --         , responseDescribeFleets $
 --             describeFleetsResponse
 --
+--         , responseDescribeImageBuilders $
+--             describeImageBuildersResponse
+--
 --         , responseStopFleet $
 --             stopFleetResponse
 --
+--         , responseStartImageBuilder $
+--             startImageBuilderResponse
+--
+--         , responseDeleteDirectoryConfig $
+--             deleteDirectoryConfigResponse
+--
+--         , responseUpdateDirectoryConfig $
+--             updateDirectoryConfigResponse
+--
 --         , responseCreateFleet $
 --             createFleetResponse
 --
@@ -136,6 +196,12 @@
 --         , responseStartFleet $
 --             startFleetResponse
 --
+--         , responseStopImageBuilder $
+--             stopImageBuilderResponse
+--
+--         , responseDeleteImage $
+--             deleteImageResponse
+--
 --         , responseDescribeImages $
 --             describeImagesResponse
 --
@@ -164,6 +230,11 @@
     "UpdateStack"
     "fixture/UpdateStack.yaml"
 
+requestCreateDirectoryConfig :: CreateDirectoryConfig -> TestTree
+requestCreateDirectoryConfig = req
+    "CreateDirectoryConfig"
+    "fixture/CreateDirectoryConfig.yaml"
+
 requestListAssociatedStacks :: ListAssociatedStacks -> TestTree
 requestListAssociatedStacks = req
     "ListAssociatedStacks"
@@ -179,11 +250,31 @@
     "UpdateFleet"
     "fixture/UpdateFleet.yaml"
 
+requestDeleteImageBuilder :: DeleteImageBuilder -> TestTree
+requestDeleteImageBuilder = req
+    "DeleteImageBuilder"
+    "fixture/DeleteImageBuilder.yaml"
+
 requestAssociateFleet :: AssociateFleet -> TestTree
 requestAssociateFleet = req
     "AssociateFleet"
     "fixture/AssociateFleet.yaml"
 
+requestCreateImageBuilder :: CreateImageBuilder -> TestTree
+requestCreateImageBuilder = req
+    "CreateImageBuilder"
+    "fixture/CreateImageBuilder.yaml"
+
+requestDescribeDirectoryConfigs :: DescribeDirectoryConfigs -> TestTree
+requestDescribeDirectoryConfigs = req
+    "DescribeDirectoryConfigs"
+    "fixture/DescribeDirectoryConfigs.yaml"
+
+requestCreateImageBuilderStreamingURL :: CreateImageBuilderStreamingURL -> TestTree
+requestCreateImageBuilderStreamingURL = req
+    "CreateImageBuilderStreamingURL"
+    "fixture/CreateImageBuilderStreamingURL.yaml"
+
 requestDescribeSessions :: DescribeSessions -> TestTree
 requestDescribeSessions = req
     "DescribeSessions"
@@ -199,11 +290,31 @@
     "DescribeFleets"
     "fixture/DescribeFleets.yaml"
 
+requestDescribeImageBuilders :: DescribeImageBuilders -> TestTree
+requestDescribeImageBuilders = req
+    "DescribeImageBuilders"
+    "fixture/DescribeImageBuilders.yaml"
+
 requestStopFleet :: StopFleet -> TestTree
 requestStopFleet = req
     "StopFleet"
     "fixture/StopFleet.yaml"
 
+requestStartImageBuilder :: StartImageBuilder -> TestTree
+requestStartImageBuilder = req
+    "StartImageBuilder"
+    "fixture/StartImageBuilder.yaml"
+
+requestDeleteDirectoryConfig :: DeleteDirectoryConfig -> TestTree
+requestDeleteDirectoryConfig = req
+    "DeleteDirectoryConfig"
+    "fixture/DeleteDirectoryConfig.yaml"
+
+requestUpdateDirectoryConfig :: UpdateDirectoryConfig -> TestTree
+requestUpdateDirectoryConfig = req
+    "UpdateDirectoryConfig"
+    "fixture/UpdateDirectoryConfig.yaml"
+
 requestCreateFleet :: CreateFleet -> TestTree
 requestCreateFleet = req
     "CreateFleet"
@@ -229,6 +340,16 @@
     "StartFleet"
     "fixture/StartFleet.yaml"
 
+requestStopImageBuilder :: StopImageBuilder -> TestTree
+requestStopImageBuilder = req
+    "StopImageBuilder"
+    "fixture/StopImageBuilder.yaml"
+
+requestDeleteImage :: DeleteImage -> TestTree
+requestDeleteImage = req
+    "DeleteImage"
+    "fixture/DeleteImage.yaml"
+
 requestDescribeImages :: DescribeImages -> TestTree
 requestDescribeImages = req
     "DescribeImages"
@@ -264,6 +385,13 @@
     appStream
     (Proxy :: Proxy UpdateStack)
 
+responseCreateDirectoryConfig :: CreateDirectoryConfigResponse -> TestTree
+responseCreateDirectoryConfig = res
+    "CreateDirectoryConfigResponse"
+    "fixture/CreateDirectoryConfigResponse.proto"
+    appStream
+    (Proxy :: Proxy CreateDirectoryConfig)
+
 responseListAssociatedStacks :: ListAssociatedStacksResponse -> TestTree
 responseListAssociatedStacks = res
     "ListAssociatedStacksResponse"
@@ -285,6 +413,13 @@
     appStream
     (Proxy :: Proxy UpdateFleet)
 
+responseDeleteImageBuilder :: DeleteImageBuilderResponse -> TestTree
+responseDeleteImageBuilder = res
+    "DeleteImageBuilderResponse"
+    "fixture/DeleteImageBuilderResponse.proto"
+    appStream
+    (Proxy :: Proxy DeleteImageBuilder)
+
 responseAssociateFleet :: AssociateFleetResponse -> TestTree
 responseAssociateFleet = res
     "AssociateFleetResponse"
@@ -292,6 +427,27 @@
     appStream
     (Proxy :: Proxy AssociateFleet)
 
+responseCreateImageBuilder :: CreateImageBuilderResponse -> TestTree
+responseCreateImageBuilder = res
+    "CreateImageBuilderResponse"
+    "fixture/CreateImageBuilderResponse.proto"
+    appStream
+    (Proxy :: Proxy CreateImageBuilder)
+
+responseDescribeDirectoryConfigs :: DescribeDirectoryConfigsResponse -> TestTree
+responseDescribeDirectoryConfigs = res
+    "DescribeDirectoryConfigsResponse"
+    "fixture/DescribeDirectoryConfigsResponse.proto"
+    appStream
+    (Proxy :: Proxy DescribeDirectoryConfigs)
+
+responseCreateImageBuilderStreamingURL :: CreateImageBuilderStreamingURLResponse -> TestTree
+responseCreateImageBuilderStreamingURL = res
+    "CreateImageBuilderStreamingURLResponse"
+    "fixture/CreateImageBuilderStreamingURLResponse.proto"
+    appStream
+    (Proxy :: Proxy CreateImageBuilderStreamingURL)
+
 responseDescribeSessions :: DescribeSessionsResponse -> TestTree
 responseDescribeSessions = res
     "DescribeSessionsResponse"
@@ -313,6 +469,13 @@
     appStream
     (Proxy :: Proxy DescribeFleets)
 
+responseDescribeImageBuilders :: DescribeImageBuildersResponse -> TestTree
+responseDescribeImageBuilders = res
+    "DescribeImageBuildersResponse"
+    "fixture/DescribeImageBuildersResponse.proto"
+    appStream
+    (Proxy :: Proxy DescribeImageBuilders)
+
 responseStopFleet :: StopFleetResponse -> TestTree
 responseStopFleet = res
     "StopFleetResponse"
@@ -320,6 +483,27 @@
     appStream
     (Proxy :: Proxy StopFleet)
 
+responseStartImageBuilder :: StartImageBuilderResponse -> TestTree
+responseStartImageBuilder = res
+    "StartImageBuilderResponse"
+    "fixture/StartImageBuilderResponse.proto"
+    appStream
+    (Proxy :: Proxy StartImageBuilder)
+
+responseDeleteDirectoryConfig :: DeleteDirectoryConfigResponse -> TestTree
+responseDeleteDirectoryConfig = res
+    "DeleteDirectoryConfigResponse"
+    "fixture/DeleteDirectoryConfigResponse.proto"
+    appStream
+    (Proxy :: Proxy DeleteDirectoryConfig)
+
+responseUpdateDirectoryConfig :: UpdateDirectoryConfigResponse -> TestTree
+responseUpdateDirectoryConfig = res
+    "UpdateDirectoryConfigResponse"
+    "fixture/UpdateDirectoryConfigResponse.proto"
+    appStream
+    (Proxy :: Proxy UpdateDirectoryConfig)
+
 responseCreateFleet :: CreateFleetResponse -> TestTree
 responseCreateFleet = res
     "CreateFleetResponse"
@@ -354,6 +538,20 @@
     "fixture/StartFleetResponse.proto"
     appStream
     (Proxy :: Proxy StartFleet)
+
+responseStopImageBuilder :: StopImageBuilderResponse -> TestTree
+responseStopImageBuilder = res
+    "StopImageBuilderResponse"
+    "fixture/StopImageBuilderResponse.proto"
+    appStream
+    (Proxy :: Proxy StopImageBuilder)
+
+responseDeleteImage :: DeleteImageResponse -> TestTree
+responseDeleteImage = res
+    "DeleteImageResponse"
+    "fixture/DeleteImageResponse.proto"
+    appStream
+    (Proxy :: Proxy DeleteImage)
 
 responseDescribeImages :: DescribeImagesResponse -> TestTree
 responseDescribeImages = res
