diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,14 +8,14 @@
 
 ## Version
 
-`1.4.3`
+`1.4.4`
 
 
 ## Description
 
 Amazon WorkSpaces Service
 
-This is the /Amazon WorkSpaces API Reference/. This guide provides detailed information about Amazon WorkSpaces operations, data types, parameters, and errors.
+This reference provides detailed information about the Amazon WorkSpaces operations.
 
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-workspaces)
 and the [AWS API Reference](https://aws.amazon.com/documentation/).
diff --git a/amazonka-workspaces.cabal b/amazonka-workspaces.cabal
--- a/amazonka-workspaces.cabal
+++ b/amazonka-workspaces.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-workspaces
-version:               1.4.3
+version:               1.4.4
 synopsis:              Amazon WorkSpaces SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -11,11 +11,11 @@
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto
+extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
 description:
     Amazon WorkSpaces Service
 
-    This is the /Amazon WorkSpaces API Reference/. This guide provides detailed information about Amazon WorkSpaces operations, data types, parameters, and errors.
+    This reference provides detailed information about the Amazon WorkSpaces operations.
     .
     The types from this library are intended to be used with
     <http://hackage.haskell.org/package/amazonka amazonka>, which provides
@@ -43,12 +43,19 @@
 
     exposed-modules:
           Network.AWS.WorkSpaces
+        , Network.AWS.WorkSpaces.CreateTags
         , Network.AWS.WorkSpaces.CreateWorkspaces
+        , Network.AWS.WorkSpaces.DeleteTags
+        , Network.AWS.WorkSpaces.DescribeTags
         , Network.AWS.WorkSpaces.DescribeWorkspaceBundles
         , Network.AWS.WorkSpaces.DescribeWorkspaceDirectories
         , Network.AWS.WorkSpaces.DescribeWorkspaces
+        , Network.AWS.WorkSpaces.DescribeWorkspacesConnectionStatus
+        , Network.AWS.WorkSpaces.ModifyWorkspaceProperties
         , Network.AWS.WorkSpaces.RebootWorkspaces
         , Network.AWS.WorkSpaces.RebuildWorkspaces
+        , Network.AWS.WorkSpaces.StartWorkspaces
+        , Network.AWS.WorkSpaces.StopWorkspaces
         , Network.AWS.WorkSpaces.TerminateWorkspaces
         , Network.AWS.WorkSpaces.Types
         , Network.AWS.WorkSpaces.Waiters
@@ -58,7 +65,7 @@
         , Network.AWS.WorkSpaces.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.3.*
+          amazonka-core == 1.4.4.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-workspaces-test
@@ -78,9 +85,9 @@
         , Test.AWS.WorkSpaces.Internal
 
     build-depends:
-          amazonka-core == 1.4.3.*
-        , amazonka-test == 1.4.3.*
-        , amazonka-workspaces == 1.4.3.*
+          amazonka-core == 1.4.4.*
+        , amazonka-test == 1.4.4.*
+        , amazonka-workspaces == 1.4.4.*
         , base
         , bytestring
         , tasty
diff --git a/fixture/DescribeWorkspacesConnectionStatus.yaml b/fixture/DescribeWorkspacesConnectionStatus.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeWorkspacesConnectionStatus.yaml
diff --git a/fixture/DescribeWorkspacesConnectionStatusResponse.proto b/fixture/DescribeWorkspacesConnectionStatusResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeWorkspacesConnectionStatusResponse.proto
diff --git a/fixture/ModifyWorkspaceProperties.yaml b/fixture/ModifyWorkspaceProperties.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyWorkspaceProperties.yaml
diff --git a/fixture/ModifyWorkspacePropertiesResponse.proto b/fixture/ModifyWorkspacePropertiesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyWorkspacePropertiesResponse.proto
diff --git a/fixture/StartWorkspaces.yaml b/fixture/StartWorkspaces.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartWorkspaces.yaml
diff --git a/fixture/StartWorkspacesResponse.proto b/fixture/StartWorkspacesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartWorkspacesResponse.proto
diff --git a/fixture/StopWorkspaces.yaml b/fixture/StopWorkspaces.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopWorkspaces.yaml
diff --git a/fixture/StopWorkspacesResponse.proto b/fixture/StopWorkspacesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopWorkspacesResponse.proto
diff --git a/gen/Network/AWS/WorkSpaces.hs b/gen/Network/AWS/WorkSpaces.hs
--- a/gen/Network/AWS/WorkSpaces.hs
+++ b/gen/Network/AWS/WorkSpaces.hs
@@ -13,7 +13,7 @@
 --
 -- Amazon WorkSpaces Service
 --
--- This is the /Amazon WorkSpaces API Reference/. This guide provides detailed information about Amazon WorkSpaces operations, data types, parameters, and errors.
+-- This reference provides detailed information about the Amazon WorkSpaces operations.
 module Network.AWS.WorkSpaces
     (
     -- * Service Configuration
@@ -22,21 +22,42 @@
     -- * Errors
     -- $errors
 
+    -- ** AccessDeniedException
+    , _AccessDeniedException
+
     -- ** ResourceUnavailableException
     , _ResourceUnavailableException
 
     -- ** InvalidParameterValuesException
     , _InvalidParameterValuesException
 
+    -- ** OperationInProgressException
+    , _OperationInProgressException
+
     -- ** ResourceLimitExceededException
     , _ResourceLimitExceededException
 
+    -- ** InvalidResourceStateException
+    , _InvalidResourceStateException
+
+    -- ** UnsupportedWorkspaceConfigurationException
+    , _UnsupportedWorkspaceConfigurationException
+
+    -- ** ResourceNotFoundException
+    , _ResourceNotFoundException
+
     -- * Waiters
     -- $waiters
 
     -- * Operations
     -- $operations
 
+    -- ** ModifyWorkspaceProperties
+    , module Network.AWS.WorkSpaces.ModifyWorkspaceProperties
+
+    -- ** DescribeTags
+    , module Network.AWS.WorkSpaces.DescribeTags
+
     -- ** DescribeWorkspaceDirectories
     , module Network.AWS.WorkSpaces.DescribeWorkspaceDirectories
 
@@ -46,6 +67,18 @@
     -- ** RebuildWorkspaces
     , module Network.AWS.WorkSpaces.RebuildWorkspaces
 
+    -- ** CreateTags
+    , module Network.AWS.WorkSpaces.CreateTags
+
+    -- ** DeleteTags
+    , module Network.AWS.WorkSpaces.DeleteTags
+
+    -- ** StopWorkspaces
+    , module Network.AWS.WorkSpaces.StopWorkspaces
+
+    -- ** DescribeWorkspacesConnectionStatus
+    , module Network.AWS.WorkSpaces.DescribeWorkspacesConnectionStatus
+
     -- ** RebootWorkspaces
     , module Network.AWS.WorkSpaces.RebootWorkspaces
 
@@ -58,11 +91,20 @@
     -- ** DescribeWorkspaces
     , module Network.AWS.WorkSpaces.DescribeWorkspaces
 
+    -- ** StartWorkspaces
+    , module Network.AWS.WorkSpaces.StartWorkspaces
+
     -- * Types
 
     -- ** Compute
     , Compute (..)
 
+    -- ** ConnectionState
+    , ConnectionState (..)
+
+    -- ** RunningMode
+    , RunningMode (..)
+
     -- ** WorkspaceDirectoryState
     , WorkspaceDirectoryState (..)
 
@@ -110,6 +152,22 @@
     , rebuildRequest
     , rrWorkspaceId
 
+    -- ** StartRequest
+    , StartRequest
+    , startRequest
+    , sWorkspaceId
+
+    -- ** StopRequest
+    , StopRequest
+    , stopRequest
+    , srWorkspaceId
+
+    -- ** Tag
+    , Tag
+    , tag
+    , tagValue
+    , tagKey
+
     -- ** TerminateRequest
     , TerminateRequest
     , terminateRequest
@@ -129,6 +187,7 @@
     , wUserName
     , wSubnetId
     , wBundleId
+    , wWorkspaceProperties
     , wRootVolumeEncryptionEnabled
     , wErrorCode
     , wVolumeEncryptionKey
@@ -147,6 +206,14 @@
     , wbUserStorage
     , wbDescription
 
+    -- ** WorkspaceConnectionStatus
+    , WorkspaceConnectionStatus
+    , workspaceConnectionStatus
+    , wcsLastKnownUserConnectionTimestamp
+    , wcsConnectionStateCheckTimestamp
+    , wcsWorkspaceId
+    , wcsConnectionState
+
     -- ** WorkspaceDirectory
     , WorkspaceDirectory
     , workspaceDirectory
@@ -163,23 +230,38 @@
     , wdDNSIPAddresses
     , wdDirectoryName
 
+    -- ** WorkspaceProperties
+    , WorkspaceProperties
+    , workspaceProperties
+    , wpRunningMode
+    , wpRunningModeAutoStopTimeoutInMinutes
+
     -- ** WorkspaceRequest
     , WorkspaceRequest
     , workspaceRequest
+    , wrWorkspaceProperties
     , wrRootVolumeEncryptionEnabled
     , wrVolumeEncryptionKey
     , wrUserVolumeEncryptionEnabled
+    , wrTags
     , wrDirectoryId
     , wrUserName
     , wrBundleId
     ) where
 
+import           Network.AWS.WorkSpaces.CreateTags
 import           Network.AWS.WorkSpaces.CreateWorkspaces
+import           Network.AWS.WorkSpaces.DeleteTags
+import           Network.AWS.WorkSpaces.DescribeTags
 import           Network.AWS.WorkSpaces.DescribeWorkspaceBundles
 import           Network.AWS.WorkSpaces.DescribeWorkspaceDirectories
 import           Network.AWS.WorkSpaces.DescribeWorkspaces
+import           Network.AWS.WorkSpaces.DescribeWorkspacesConnectionStatus
+import           Network.AWS.WorkSpaces.ModifyWorkspaceProperties
 import           Network.AWS.WorkSpaces.RebootWorkspaces
 import           Network.AWS.WorkSpaces.RebuildWorkspaces
+import           Network.AWS.WorkSpaces.StartWorkspaces
+import           Network.AWS.WorkSpaces.StopWorkspaces
 import           Network.AWS.WorkSpaces.TerminateWorkspaces
 import           Network.AWS.WorkSpaces.Types
 import           Network.AWS.WorkSpaces.Waiters
diff --git a/gen/Network/AWS/WorkSpaces/CreateTags.hs b/gen/Network/AWS/WorkSpaces/CreateTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/WorkSpaces/CreateTags.hs
@@ -0,0 +1,135 @@
+{-# 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.WorkSpaces.CreateTags
+-- 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)
+--
+-- Creates tags for a WorkSpace.
+module Network.AWS.WorkSpaces.CreateTags
+    (
+    -- * Creating a Request
+      createTags
+    , CreateTags
+    -- * Request Lenses
+    , ctResourceId
+    , ctTags
+
+    -- * Destructuring the Response
+    , createTagsResponse
+    , CreateTagsResponse
+    -- * Response Lenses
+    , ctrsResponseStatus
+    ) where
+
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.WorkSpaces.Types
+import           Network.AWS.WorkSpaces.Types.Product
+
+-- | The request of the < CreateTags> operation.
+--
+-- /See:/ 'createTags' smart constructor.
+data CreateTags = CreateTags'
+    { _ctResourceId :: !Text
+    , _ctTags       :: ![Tag]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateTags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ctResourceId'
+--
+-- * 'ctTags'
+createTags
+    :: Text -- ^ 'ctResourceId'
+    -> CreateTags
+createTags pResourceId_ =
+    CreateTags'
+    { _ctResourceId = pResourceId_
+    , _ctTags = mempty
+    }
+
+-- | The resource ID of the request.
+ctResourceId :: Lens' CreateTags Text
+ctResourceId = lens _ctResourceId (\ s a -> s{_ctResourceId = a});
+
+-- | The tags of the request.
+ctTags :: Lens' CreateTags [Tag]
+ctTags = lens _ctTags (\ s a -> s{_ctTags = a}) . _Coerce;
+
+instance AWSRequest CreateTags where
+        type Rs CreateTags = CreateTagsResponse
+        request = postJSON workSpaces
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 CreateTagsResponse' <$> (pure (fromEnum s)))
+
+instance Hashable CreateTags
+
+instance NFData CreateTags
+
+instance ToHeaders CreateTags where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("WorkspacesService.CreateTags" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CreateTags where
+        toJSON CreateTags'{..}
+          = object
+              (catMaybes
+                 [Just ("ResourceId" .= _ctResourceId),
+                  Just ("Tags" .= _ctTags)])
+
+instance ToPath CreateTags where
+        toPath = const "/"
+
+instance ToQuery CreateTags where
+        toQuery = const mempty
+
+-- | The result of the < CreateTags> operation.
+--
+-- /See:/ 'createTagsResponse' smart constructor.
+newtype CreateTagsResponse = CreateTagsResponse'
+    { _ctrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateTagsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ctrsResponseStatus'
+createTagsResponse
+    :: Int -- ^ 'ctrsResponseStatus'
+    -> CreateTagsResponse
+createTagsResponse pResponseStatus_ =
+    CreateTagsResponse'
+    { _ctrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+ctrsResponseStatus :: Lens' CreateTagsResponse Int
+ctrsResponseStatus = lens _ctrsResponseStatus (\ s a -> s{_ctrsResponseStatus = a});
+
+instance NFData CreateTagsResponse
diff --git a/gen/Network/AWS/WorkSpaces/DeleteTags.hs b/gen/Network/AWS/WorkSpaces/DeleteTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/WorkSpaces/DeleteTags.hs
@@ -0,0 +1,135 @@
+{-# 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.WorkSpaces.DeleteTags
+-- 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)
+--
+-- Deletes tags from a WorkSpace.
+module Network.AWS.WorkSpaces.DeleteTags
+    (
+    -- * Creating a Request
+      deleteTags
+    , DeleteTags
+    -- * Request Lenses
+    , dResourceId
+    , dTagKeys
+
+    -- * Destructuring the Response
+    , deleteTagsResponse
+    , DeleteTagsResponse
+    -- * Response Lenses
+    , drsResponseStatus
+    ) where
+
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.WorkSpaces.Types
+import           Network.AWS.WorkSpaces.Types.Product
+
+-- | The request of the < DeleteTags> operation.
+--
+-- /See:/ 'deleteTags' smart constructor.
+data DeleteTags = DeleteTags'
+    { _dResourceId :: !Text
+    , _dTagKeys    :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteTags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dResourceId'
+--
+-- * 'dTagKeys'
+deleteTags
+    :: Text -- ^ 'dResourceId'
+    -> DeleteTags
+deleteTags pResourceId_ =
+    DeleteTags'
+    { _dResourceId = pResourceId_
+    , _dTagKeys = mempty
+    }
+
+-- | The resource ID of the request.
+dResourceId :: Lens' DeleteTags Text
+dResourceId = lens _dResourceId (\ s a -> s{_dResourceId = a});
+
+-- | The tag keys of the request.
+dTagKeys :: Lens' DeleteTags [Text]
+dTagKeys = lens _dTagKeys (\ s a -> s{_dTagKeys = a}) . _Coerce;
+
+instance AWSRequest DeleteTags where
+        type Rs DeleteTags = DeleteTagsResponse
+        request = postJSON workSpaces
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeleteTagsResponse' <$> (pure (fromEnum s)))
+
+instance Hashable DeleteTags
+
+instance NFData DeleteTags
+
+instance ToHeaders DeleteTags where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("WorkspacesService.DeleteTags" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteTags where
+        toJSON DeleteTags'{..}
+          = object
+              (catMaybes
+                 [Just ("ResourceId" .= _dResourceId),
+                  Just ("TagKeys" .= _dTagKeys)])
+
+instance ToPath DeleteTags where
+        toPath = const "/"
+
+instance ToQuery DeleteTags where
+        toQuery = const mempty
+
+-- | The result of the < DeleteTags> operation.
+--
+-- /See:/ 'deleteTagsResponse' smart constructor.
+newtype DeleteTagsResponse = DeleteTagsResponse'
+    { _drsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteTagsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsResponseStatus'
+deleteTagsResponse
+    :: Int -- ^ 'drsResponseStatus'
+    -> DeleteTagsResponse
+deleteTagsResponse pResponseStatus_ =
+    DeleteTagsResponse'
+    { _drsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+drsResponseStatus :: Lens' DeleteTagsResponse Int
+drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
+
+instance NFData DeleteTagsResponse
diff --git a/gen/Network/AWS/WorkSpaces/DescribeTags.hs b/gen/Network/AWS/WorkSpaces/DescribeTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/WorkSpaces/DescribeTags.hs
@@ -0,0 +1,134 @@
+{-# 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.WorkSpaces.DescribeTags
+-- 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)
+--
+-- Describes tags for a WorkSpace.
+module Network.AWS.WorkSpaces.DescribeTags
+    (
+    -- * Creating a Request
+      describeTags
+    , DescribeTags
+    -- * Request Lenses
+    , dtResourceId
+
+    -- * Destructuring the Response
+    , describeTagsResponse
+    , DescribeTagsResponse
+    -- * Response Lenses
+    , dtrsTagList
+    , dtrsResponseStatus
+    ) where
+
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.WorkSpaces.Types
+import           Network.AWS.WorkSpaces.Types.Product
+
+-- | The request of the < DescribeTags> operation.
+--
+-- /See:/ 'describeTags' smart constructor.
+newtype DescribeTags = DescribeTags'
+    { _dtResourceId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeTags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtResourceId'
+describeTags
+    :: Text -- ^ 'dtResourceId'
+    -> DescribeTags
+describeTags pResourceId_ =
+    DescribeTags'
+    { _dtResourceId = pResourceId_
+    }
+
+-- | The resource ID of the request.
+dtResourceId :: Lens' DescribeTags Text
+dtResourceId = lens _dtResourceId (\ s a -> s{_dtResourceId = a});
+
+instance AWSRequest DescribeTags where
+        type Rs DescribeTags = DescribeTagsResponse
+        request = postJSON workSpaces
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeTagsResponse' <$>
+                   (x .?> "TagList" .!@ mempty) <*> (pure (fromEnum s)))
+
+instance Hashable DescribeTags
+
+instance NFData DescribeTags
+
+instance ToHeaders DescribeTags where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("WorkspacesService.DescribeTags" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeTags where
+        toJSON DescribeTags'{..}
+          = object
+              (catMaybes [Just ("ResourceId" .= _dtResourceId)])
+
+instance ToPath DescribeTags where
+        toPath = const "/"
+
+instance ToQuery DescribeTags where
+        toQuery = const mempty
+
+-- | The result of the < DescribeTags> operation.
+--
+-- /See:/ 'describeTagsResponse' smart constructor.
+data DescribeTagsResponse = DescribeTagsResponse'
+    { _dtrsTagList        :: !(Maybe [Tag])
+    , _dtrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeTagsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtrsTagList'
+--
+-- * 'dtrsResponseStatus'
+describeTagsResponse
+    :: Int -- ^ 'dtrsResponseStatus'
+    -> DescribeTagsResponse
+describeTagsResponse pResponseStatus_ =
+    DescribeTagsResponse'
+    { _dtrsTagList = Nothing
+    , _dtrsResponseStatus = pResponseStatus_
+    }
+
+-- | The list of tags.
+dtrsTagList :: Lens' DescribeTagsResponse [Tag]
+dtrsTagList = lens _dtrsTagList (\ s a -> s{_dtrsTagList = a}) . _Default . _Coerce;
+
+-- | The response status code.
+dtrsResponseStatus :: Lens' DescribeTagsResponse Int
+dtrsResponseStatus = lens _dtrsResponseStatus (\ s a -> s{_dtrsResponseStatus = a});
+
+instance NFData DescribeTagsResponse
diff --git a/gen/Network/AWS/WorkSpaces/DescribeWorkspaceBundles.hs b/gen/Network/AWS/WorkSpaces/DescribeWorkspaceBundles.hs
--- a/gen/Network/AWS/WorkSpaces/DescribeWorkspaceBundles.hs
+++ b/gen/Network/AWS/WorkSpaces/DescribeWorkspaceBundles.hs
@@ -84,8 +84,10 @@
 --
 -- This contains one of the following values:
 --
--- -   null - Retrieves the bundles that belong to the account making the call.
--- -   'AMAZON' - Retrieves the bundles that are provided by AWS.
+-- -   null- Retrieves the bundles that belong to the account making the call.
+--
+-- -   'AMAZON'- Retrieves the bundles that are provided by AWS.
+--
 dwbOwner :: Lens' DescribeWorkspaceBundles (Maybe Text)
 dwbOwner = lens _dwbOwner (\ s a -> s{_dwbOwner = a});
 
@@ -164,7 +166,7 @@
 dwbrsBundles :: Lens' DescribeWorkspaceBundlesResponse [WorkspaceBundle]
 dwbrsBundles = lens _dwbrsBundles (\ s a -> s{_dwbrsBundles = a}) . _Default . _Coerce;
 
--- | If not null, more results are available. Pass this value for the 'NextToken' parameter in a subsequent call to this operation to retrieve the next set of items. This token is valid for one day and must be used within that timeframe.
+-- | If not null, more results are available. Pass this value for the 'NextToken' parameter in a subsequent call to this operation to retrieve the next set of items. This token is valid for one day and must be used within that time frame.
 dwbrsNextToken :: Lens' DescribeWorkspaceBundlesResponse (Maybe Text)
 dwbrsNextToken = lens _dwbrsNextToken (\ s a -> s{_dwbrsNextToken = a});
 
diff --git a/gen/Network/AWS/WorkSpaces/DescribeWorkspaceDirectories.hs b/gen/Network/AWS/WorkSpaces/DescribeWorkspaceDirectories.hs
--- a/gen/Network/AWS/WorkSpaces/DescribeWorkspaceDirectories.hs
+++ b/gen/Network/AWS/WorkSpaces/DescribeWorkspaceDirectories.hs
@@ -149,7 +149,7 @@
 dwdrsDirectories :: Lens' DescribeWorkspaceDirectoriesResponse [WorkspaceDirectory]
 dwdrsDirectories = lens _dwdrsDirectories (\ s a -> s{_dwdrsDirectories = a}) . _Default . _Coerce;
 
--- | If not null, more results are available. Pass this value for the 'NextToken' parameter in a subsequent call to this operation to retrieve the next set of items. This token is valid for one day and must be used within that timeframe.
+-- | If not null, more results are available. Pass this value for the 'NextToken' parameter in a subsequent call to this operation to retrieve the next set of items. This token is valid for one day and must be used within that time frame.
 dwdrsNextToken :: Lens' DescribeWorkspaceDirectoriesResponse (Maybe Text)
 dwdrsNextToken = lens _dwdrsNextToken (\ s a -> s{_dwdrsNextToken = a});
 
diff --git a/gen/Network/AWS/WorkSpaces/DescribeWorkspaces.hs b/gen/Network/AWS/WorkSpaces/DescribeWorkspaces.hs
--- a/gen/Network/AWS/WorkSpaces/DescribeWorkspaces.hs
+++ b/gen/Network/AWS/WorkSpaces/DescribeWorkspaces.hs
@@ -97,11 +97,11 @@
 
 -- | An array of strings that contain the identifiers of the WorkSpaces for which to retrieve information. This parameter cannot be combined with any other filter parameter.
 --
--- Because the < CreateWorkspaces> operation is asynchronous, the identifier returned by < CreateWorkspaces> is not immediately available. If you immediately call < DescribeWorkspaces> with this identifier, no information will be returned.
+-- Because the < CreateWorkspaces> operation is asynchronous, the identifier it returns is not immediately available. If you immediately call < DescribeWorkspaces> with this identifier, no information is returned.
 dwWorkspaceIds :: Lens' DescribeWorkspaces (Maybe (NonEmpty Text))
 dwWorkspaceIds = lens _dwWorkspaceIds (\ s a -> s{_dwWorkspaceIds = a}) . mapping _List1;
 
--- | Used with the 'DirectoryId' parameter to specify the directory user for which to obtain the WorkSpace.
+-- | Used with the 'DirectoryId' parameter to specify the directory user for whom to obtain the WorkSpace.
 dwUserName :: Lens' DescribeWorkspaces (Maybe Text)
 dwUserName = lens _dwUserName (\ s a -> s{_dwUserName = a});
 
@@ -188,7 +188,7 @@
     , _dwrsResponseStatus = pResponseStatus_
     }
 
--- | If not null, more results are available. Pass this value for the 'NextToken' parameter in a subsequent call to this operation to retrieve the next set of items. This token is valid for one day and must be used within that timeframe.
+-- | If not null, more results are available. Pass this value for the 'NextToken' parameter in a subsequent call to this operation to retrieve the next set of items. This token is valid for one day and must be used within that time frame.
 dwrsNextToken :: Lens' DescribeWorkspacesResponse (Maybe Text)
 dwrsNextToken = lens _dwrsNextToken (\ s a -> s{_dwrsNextToken = a});
 
diff --git a/gen/Network/AWS/WorkSpaces/DescribeWorkspacesConnectionStatus.hs b/gen/Network/AWS/WorkSpaces/DescribeWorkspacesConnectionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/WorkSpaces/DescribeWorkspacesConnectionStatus.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.WorkSpaces.DescribeWorkspacesConnectionStatus
+-- 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)
+--
+-- Describes the connection status of a specified WorkSpace.
+module Network.AWS.WorkSpaces.DescribeWorkspacesConnectionStatus
+    (
+    -- * Creating a Request
+      describeWorkspacesConnectionStatus
+    , DescribeWorkspacesConnectionStatus
+    -- * Request Lenses
+    , dwcsWorkspaceIds
+    , dwcsNextToken
+
+    -- * Destructuring the Response
+    , describeWorkspacesConnectionStatusResponse
+    , DescribeWorkspacesConnectionStatusResponse
+    -- * Response Lenses
+    , dwcsrsNextToken
+    , dwcsrsWorkspacesConnectionStatus
+    , dwcsrsResponseStatus
+    ) where
+
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.WorkSpaces.Types
+import           Network.AWS.WorkSpaces.Types.Product
+
+-- | /See:/ 'describeWorkspacesConnectionStatus' smart constructor.
+data DescribeWorkspacesConnectionStatus = DescribeWorkspacesConnectionStatus'
+    { _dwcsWorkspaceIds :: !(Maybe (List1 Text))
+    , _dwcsNextToken    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeWorkspacesConnectionStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dwcsWorkspaceIds'
+--
+-- * 'dwcsNextToken'
+describeWorkspacesConnectionStatus
+    :: DescribeWorkspacesConnectionStatus
+describeWorkspacesConnectionStatus =
+    DescribeWorkspacesConnectionStatus'
+    { _dwcsWorkspaceIds = Nothing
+    , _dwcsNextToken = Nothing
+    }
+
+-- | An array of strings that contain the identifiers of the WorkSpaces.
+dwcsWorkspaceIds :: Lens' DescribeWorkspacesConnectionStatus (Maybe (NonEmpty Text))
+dwcsWorkspaceIds = lens _dwcsWorkspaceIds (\ s a -> s{_dwcsWorkspaceIds = a}) . mapping _List1;
+
+-- | The next token of the request.
+dwcsNextToken :: Lens' DescribeWorkspacesConnectionStatus (Maybe Text)
+dwcsNextToken = lens _dwcsNextToken (\ s a -> s{_dwcsNextToken = a});
+
+instance AWSRequest
+         DescribeWorkspacesConnectionStatus where
+        type Rs DescribeWorkspacesConnectionStatus =
+             DescribeWorkspacesConnectionStatusResponse
+        request = postJSON workSpaces
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeWorkspacesConnectionStatusResponse' <$>
+                   (x .?> "NextToken") <*>
+                     (x .?> "WorkspacesConnectionStatus" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance Hashable DescribeWorkspacesConnectionStatus
+
+instance NFData DescribeWorkspacesConnectionStatus
+
+instance ToHeaders DescribeWorkspacesConnectionStatus
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("WorkspacesService.DescribeWorkspacesConnectionStatus"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeWorkspacesConnectionStatus
+         where
+        toJSON DescribeWorkspacesConnectionStatus'{..}
+          = object
+              (catMaybes
+                 [("WorkspaceIds" .=) <$> _dwcsWorkspaceIds,
+                  ("NextToken" .=) <$> _dwcsNextToken])
+
+instance ToPath DescribeWorkspacesConnectionStatus
+         where
+        toPath = const "/"
+
+instance ToQuery DescribeWorkspacesConnectionStatus
+         where
+        toQuery = const mempty
+
+-- | /See:/ 'describeWorkspacesConnectionStatusResponse' smart constructor.
+data DescribeWorkspacesConnectionStatusResponse = DescribeWorkspacesConnectionStatusResponse'
+    { _dwcsrsNextToken                  :: !(Maybe Text)
+    , _dwcsrsWorkspacesConnectionStatus :: !(Maybe [WorkspaceConnectionStatus])
+    , _dwcsrsResponseStatus             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeWorkspacesConnectionStatusResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dwcsrsNextToken'
+--
+-- * 'dwcsrsWorkspacesConnectionStatus'
+--
+-- * 'dwcsrsResponseStatus'
+describeWorkspacesConnectionStatusResponse
+    :: Int -- ^ 'dwcsrsResponseStatus'
+    -> DescribeWorkspacesConnectionStatusResponse
+describeWorkspacesConnectionStatusResponse pResponseStatus_ =
+    DescribeWorkspacesConnectionStatusResponse'
+    { _dwcsrsNextToken = Nothing
+    , _dwcsrsWorkspacesConnectionStatus = Nothing
+    , _dwcsrsResponseStatus = pResponseStatus_
+    }
+
+-- | The next token of the result.
+dwcsrsNextToken :: Lens' DescribeWorkspacesConnectionStatusResponse (Maybe Text)
+dwcsrsNextToken = lens _dwcsrsNextToken (\ s a -> s{_dwcsrsNextToken = a});
+
+-- | The connection status of the WorkSpace.
+dwcsrsWorkspacesConnectionStatus :: Lens' DescribeWorkspacesConnectionStatusResponse [WorkspaceConnectionStatus]
+dwcsrsWorkspacesConnectionStatus = lens _dwcsrsWorkspacesConnectionStatus (\ s a -> s{_dwcsrsWorkspacesConnectionStatus = a}) . _Default . _Coerce;
+
+-- | The response status code.
+dwcsrsResponseStatus :: Lens' DescribeWorkspacesConnectionStatusResponse Int
+dwcsrsResponseStatus = lens _dwcsrsResponseStatus (\ s a -> s{_dwcsrsResponseStatus = a});
+
+instance NFData
+         DescribeWorkspacesConnectionStatusResponse
diff --git a/gen/Network/AWS/WorkSpaces/ModifyWorkspaceProperties.hs b/gen/Network/AWS/WorkSpaces/ModifyWorkspaceProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/WorkSpaces/ModifyWorkspaceProperties.hs
@@ -0,0 +1,136 @@
+{-# 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.WorkSpaces.ModifyWorkspaceProperties
+-- 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)
+--
+-- Modifies the WorkSpace properties, including the RunningMode and AutoStop time.
+module Network.AWS.WorkSpaces.ModifyWorkspaceProperties
+    (
+    -- * Creating a Request
+      modifyWorkspaceProperties
+    , ModifyWorkspaceProperties
+    -- * Request Lenses
+    , mwpWorkspaceId
+    , mwpWorkspaceProperties
+
+    -- * Destructuring the Response
+    , modifyWorkspacePropertiesResponse
+    , ModifyWorkspacePropertiesResponse
+    -- * Response Lenses
+    , mwprsResponseStatus
+    ) where
+
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.WorkSpaces.Types
+import           Network.AWS.WorkSpaces.Types.Product
+
+-- | /See:/ 'modifyWorkspaceProperties' smart constructor.
+data ModifyWorkspaceProperties = ModifyWorkspaceProperties'
+    { _mwpWorkspaceId         :: !Text
+    , _mwpWorkspaceProperties :: !WorkspaceProperties
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyWorkspaceProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpWorkspaceId'
+--
+-- * 'mwpWorkspaceProperties'
+modifyWorkspaceProperties
+    :: Text -- ^ 'mwpWorkspaceId'
+    -> WorkspaceProperties -- ^ 'mwpWorkspaceProperties'
+    -> ModifyWorkspaceProperties
+modifyWorkspaceProperties pWorkspaceId_ pWorkspaceProperties_ =
+    ModifyWorkspaceProperties'
+    { _mwpWorkspaceId = pWorkspaceId_
+    , _mwpWorkspaceProperties = pWorkspaceProperties_
+    }
+
+-- | The ID of the WorkSpace.
+mwpWorkspaceId :: Lens' ModifyWorkspaceProperties Text
+mwpWorkspaceId = lens _mwpWorkspaceId (\ s a -> s{_mwpWorkspaceId = a});
+
+-- | The WorkSpace properties of the request.
+mwpWorkspaceProperties :: Lens' ModifyWorkspaceProperties WorkspaceProperties
+mwpWorkspaceProperties = lens _mwpWorkspaceProperties (\ s a -> s{_mwpWorkspaceProperties = a});
+
+instance AWSRequest ModifyWorkspaceProperties where
+        type Rs ModifyWorkspaceProperties =
+             ModifyWorkspacePropertiesResponse
+        request = postJSON workSpaces
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 ModifyWorkspacePropertiesResponse' <$>
+                   (pure (fromEnum s)))
+
+instance Hashable ModifyWorkspaceProperties
+
+instance NFData ModifyWorkspaceProperties
+
+instance ToHeaders ModifyWorkspaceProperties where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("WorkspacesService.ModifyWorkspaceProperties" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ModifyWorkspaceProperties where
+        toJSON ModifyWorkspaceProperties'{..}
+          = object
+              (catMaybes
+                 [Just ("WorkspaceId" .= _mwpWorkspaceId),
+                  Just
+                    ("WorkspaceProperties" .= _mwpWorkspaceProperties)])
+
+instance ToPath ModifyWorkspaceProperties where
+        toPath = const "/"
+
+instance ToQuery ModifyWorkspaceProperties where
+        toQuery = const mempty
+
+-- | /See:/ 'modifyWorkspacePropertiesResponse' smart constructor.
+newtype ModifyWorkspacePropertiesResponse = ModifyWorkspacePropertiesResponse'
+    { _mwprsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyWorkspacePropertiesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwprsResponseStatus'
+modifyWorkspacePropertiesResponse
+    :: Int -- ^ 'mwprsResponseStatus'
+    -> ModifyWorkspacePropertiesResponse
+modifyWorkspacePropertiesResponse pResponseStatus_ =
+    ModifyWorkspacePropertiesResponse'
+    { _mwprsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+mwprsResponseStatus :: Lens' ModifyWorkspacePropertiesResponse Int
+mwprsResponseStatus = lens _mwprsResponseStatus (\ s a -> s{_mwprsResponseStatus = a});
+
+instance NFData ModifyWorkspacePropertiesResponse
diff --git a/gen/Network/AWS/WorkSpaces/RebootWorkspaces.hs b/gen/Network/AWS/WorkSpaces/RebootWorkspaces.hs
--- a/gen/Network/AWS/WorkSpaces/RebootWorkspaces.hs
+++ b/gen/Network/AWS/WorkSpaces/RebootWorkspaces.hs
@@ -22,7 +22,7 @@
 --
 -- To be able to reboot a WorkSpace, the WorkSpace must have a __State__ of 'AVAILABLE', 'IMPAIRED', or 'INOPERABLE'.
 --
--- This operation is asynchronous and will return before the WorkSpaces have rebooted.
+-- This operation is asynchronous and returns before the WorkSpaces have rebooted.
 module Network.AWS.WorkSpaces.RebootWorkspaces
     (
     -- * Creating a Request
@@ -131,7 +131,7 @@
     , _rrsResponseStatus = pResponseStatus_
     }
 
--- | An array of structures that represent any WorkSpaces that could not be rebooted.
+-- | An array of structures representing any WorkSpaces that could not be rebooted.
 rrsFailedRequests :: Lens' RebootWorkspacesResponse [FailedWorkspaceChangeRequest]
 rrsFailedRequests = lens _rrsFailedRequests (\ s a -> s{_rrsFailedRequests = a}) . _Default . _Coerce;
 
diff --git a/gen/Network/AWS/WorkSpaces/RebuildWorkspaces.hs b/gen/Network/AWS/WorkSpaces/RebuildWorkspaces.hs
--- a/gen/Network/AWS/WorkSpaces/RebuildWorkspaces.hs
+++ b/gen/Network/AWS/WorkSpaces/RebuildWorkspaces.hs
@@ -23,11 +23,12 @@
 -- Rebuilding a WorkSpace is a potentially destructive action that can result in the loss of data. Rebuilding a WorkSpace causes the following to occur:
 --
 -- -   The system is restored to the image of the bundle that the WorkSpace is created from. Any applications that have been installed, or system settings that have been made since the WorkSpace was created will be lost.
+--
 -- -   The data drive (D drive) is re-created from the last automatic snapshot taken of the data drive. The current contents of the data drive are overwritten. Automatic snapshots of the data drive are taken every 12 hours, so the snapshot can be as much as 12 hours old.
 --
 -- To be able to rebuild a WorkSpace, the WorkSpace must have a __State__ of 'AVAILABLE' or 'ERROR'.
 --
--- This operation is asynchronous and will return before the WorkSpaces have been completely rebuilt.
+-- This operation is asynchronous and returns before the WorkSpaces have been completely rebuilt.
 module Network.AWS.WorkSpaces.RebuildWorkspaces
     (
     -- * Creating a Request
@@ -137,7 +138,7 @@
     , _rwrsResponseStatus = pResponseStatus_
     }
 
--- | An array of structures that represent any WorkSpaces that could not be rebuilt.
+-- | An array of structures representing any WorkSpaces that could not be rebuilt.
 rwrsFailedRequests :: Lens' RebuildWorkspacesResponse [FailedWorkspaceChangeRequest]
 rwrsFailedRequests = lens _rwrsFailedRequests (\ s a -> s{_rwrsFailedRequests = a}) . _Default . _Coerce;
 
diff --git a/gen/Network/AWS/WorkSpaces/StartWorkspaces.hs b/gen/Network/AWS/WorkSpaces/StartWorkspaces.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/WorkSpaces/StartWorkspaces.hs
@@ -0,0 +1,134 @@
+{-# 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.WorkSpaces.StartWorkspaces
+-- 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)
+--
+-- Starts the specified WorkSpaces. The API only works with WorkSpaces that have RunningMode configured as AutoStop and the State set to “STOPPED.”
+module Network.AWS.WorkSpaces.StartWorkspaces
+    (
+    -- * Creating a Request
+      startWorkspaces
+    , StartWorkspaces
+    -- * Request Lenses
+    , swStartWorkspaceRequests
+
+    -- * Destructuring the Response
+    , startWorkspacesResponse
+    , StartWorkspacesResponse
+    -- * Response Lenses
+    , swrsFailedRequests
+    , swrsResponseStatus
+    ) where
+
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.WorkSpaces.Types
+import           Network.AWS.WorkSpaces.Types.Product
+
+-- | /See:/ 'startWorkspaces' smart constructor.
+newtype StartWorkspaces = StartWorkspaces'
+    { _swStartWorkspaceRequests :: List1 StartRequest
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StartWorkspaces' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'swStartWorkspaceRequests'
+startWorkspaces
+    :: NonEmpty StartRequest -- ^ 'swStartWorkspaceRequests'
+    -> StartWorkspaces
+startWorkspaces pStartWorkspaceRequests_ =
+    StartWorkspaces'
+    { _swStartWorkspaceRequests = _List1 # pStartWorkspaceRequests_
+    }
+
+-- | The requests.
+swStartWorkspaceRequests :: Lens' StartWorkspaces (NonEmpty StartRequest)
+swStartWorkspaceRequests = lens _swStartWorkspaceRequests (\ s a -> s{_swStartWorkspaceRequests = a}) . _List1;
+
+instance AWSRequest StartWorkspaces where
+        type Rs StartWorkspaces = StartWorkspacesResponse
+        request = postJSON workSpaces
+        response
+          = receiveJSON
+              (\ s h x ->
+                 StartWorkspacesResponse' <$>
+                   (x .?> "FailedRequests" .!@ mempty) <*>
+                     (pure (fromEnum s)))
+
+instance Hashable StartWorkspaces
+
+instance NFData StartWorkspaces
+
+instance ToHeaders StartWorkspaces where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("WorkspacesService.StartWorkspaces" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON StartWorkspaces where
+        toJSON StartWorkspaces'{..}
+          = object
+              (catMaybes
+                 [Just
+                    ("StartWorkspaceRequests" .=
+                       _swStartWorkspaceRequests)])
+
+instance ToPath StartWorkspaces where
+        toPath = const "/"
+
+instance ToQuery StartWorkspaces where
+        toQuery = const mempty
+
+-- | /See:/ 'startWorkspacesResponse' smart constructor.
+data StartWorkspacesResponse = StartWorkspacesResponse'
+    { _swrsFailedRequests :: !(Maybe [FailedWorkspaceChangeRequest])
+    , _swrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StartWorkspacesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'swrsFailedRequests'
+--
+-- * 'swrsResponseStatus'
+startWorkspacesResponse
+    :: Int -- ^ 'swrsResponseStatus'
+    -> StartWorkspacesResponse
+startWorkspacesResponse pResponseStatus_ =
+    StartWorkspacesResponse'
+    { _swrsFailedRequests = Nothing
+    , _swrsResponseStatus = pResponseStatus_
+    }
+
+-- | The failed requests.
+swrsFailedRequests :: Lens' StartWorkspacesResponse [FailedWorkspaceChangeRequest]
+swrsFailedRequests = lens _swrsFailedRequests (\ s a -> s{_swrsFailedRequests = a}) . _Default . _Coerce;
+
+-- | The response status code.
+swrsResponseStatus :: Lens' StartWorkspacesResponse Int
+swrsResponseStatus = lens _swrsResponseStatus (\ s a -> s{_swrsResponseStatus = a});
+
+instance NFData StartWorkspacesResponse
diff --git a/gen/Network/AWS/WorkSpaces/StopWorkspaces.hs b/gen/Network/AWS/WorkSpaces/StopWorkspaces.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/WorkSpaces/StopWorkspaces.hs
@@ -0,0 +1,134 @@
+{-# 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.WorkSpaces.StopWorkspaces
+-- 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)
+--
+-- Stops the specified WorkSpaces. The API only works with WorkSpaces that have RunningMode configured as AutoStop and the State set to AVAILABLE, IMPAIRED, UNHEALTHY, or ERROR.
+module Network.AWS.WorkSpaces.StopWorkspaces
+    (
+    -- * Creating a Request
+      stopWorkspaces
+    , StopWorkspaces
+    -- * Request Lenses
+    , swStopWorkspaceRequests
+
+    -- * Destructuring the Response
+    , stopWorkspacesResponse
+    , StopWorkspacesResponse
+    -- * Response Lenses
+    , srsFailedRequests
+    , srsResponseStatus
+    ) where
+
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.WorkSpaces.Types
+import           Network.AWS.WorkSpaces.Types.Product
+
+-- | /See:/ 'stopWorkspaces' smart constructor.
+newtype StopWorkspaces = StopWorkspaces'
+    { _swStopWorkspaceRequests :: List1 StopRequest
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StopWorkspaces' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'swStopWorkspaceRequests'
+stopWorkspaces
+    :: NonEmpty StopRequest -- ^ 'swStopWorkspaceRequests'
+    -> StopWorkspaces
+stopWorkspaces pStopWorkspaceRequests_ =
+    StopWorkspaces'
+    { _swStopWorkspaceRequests = _List1 # pStopWorkspaceRequests_
+    }
+
+-- | The requests.
+swStopWorkspaceRequests :: Lens' StopWorkspaces (NonEmpty StopRequest)
+swStopWorkspaceRequests = lens _swStopWorkspaceRequests (\ s a -> s{_swStopWorkspaceRequests = a}) . _List1;
+
+instance AWSRequest StopWorkspaces where
+        type Rs StopWorkspaces = StopWorkspacesResponse
+        request = postJSON workSpaces
+        response
+          = receiveJSON
+              (\ s h x ->
+                 StopWorkspacesResponse' <$>
+                   (x .?> "FailedRequests" .!@ mempty) <*>
+                     (pure (fromEnum s)))
+
+instance Hashable StopWorkspaces
+
+instance NFData StopWorkspaces
+
+instance ToHeaders StopWorkspaces where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("WorkspacesService.StopWorkspaces" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON StopWorkspaces where
+        toJSON StopWorkspaces'{..}
+          = object
+              (catMaybes
+                 [Just
+                    ("StopWorkspaceRequests" .=
+                       _swStopWorkspaceRequests)])
+
+instance ToPath StopWorkspaces where
+        toPath = const "/"
+
+instance ToQuery StopWorkspaces where
+        toQuery = const mempty
+
+-- | /See:/ 'stopWorkspacesResponse' smart constructor.
+data StopWorkspacesResponse = StopWorkspacesResponse'
+    { _srsFailedRequests :: !(Maybe [FailedWorkspaceChangeRequest])
+    , _srsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StopWorkspacesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srsFailedRequests'
+--
+-- * 'srsResponseStatus'
+stopWorkspacesResponse
+    :: Int -- ^ 'srsResponseStatus'
+    -> StopWorkspacesResponse
+stopWorkspacesResponse pResponseStatus_ =
+    StopWorkspacesResponse'
+    { _srsFailedRequests = Nothing
+    , _srsResponseStatus = pResponseStatus_
+    }
+
+-- | The failed requests.
+srsFailedRequests :: Lens' StopWorkspacesResponse [FailedWorkspaceChangeRequest]
+srsFailedRequests = lens _srsFailedRequests (\ s a -> s{_srsFailedRequests = a}) . _Default . _Coerce;
+
+-- | The response status code.
+srsResponseStatus :: Lens' StopWorkspacesResponse Int
+srsResponseStatus = lens _srsResponseStatus (\ s a -> s{_srsResponseStatus = a});
+
+instance NFData StopWorkspacesResponse
diff --git a/gen/Network/AWS/WorkSpaces/TerminateWorkspaces.hs b/gen/Network/AWS/WorkSpaces/TerminateWorkspaces.hs
--- a/gen/Network/AWS/WorkSpaces/TerminateWorkspaces.hs
+++ b/gen/Network/AWS/WorkSpaces/TerminateWorkspaces.hs
@@ -24,7 +24,7 @@
 --
 -- You can terminate a WorkSpace that is in any state except 'SUSPENDED'.
 --
--- This operation is asynchronous and will return before the WorkSpaces have been completely terminated.
+-- This operation is asynchronous and returns before the WorkSpaces have been completely terminated.
 module Network.AWS.WorkSpaces.TerminateWorkspaces
     (
     -- * Creating a Request
@@ -135,7 +135,7 @@
     , _twrsResponseStatus = pResponseStatus_
     }
 
--- | An array of structures that represent any WorkSpaces that could not be terminated.
+-- | An array of structures representing any WorkSpaces that could not be terminated.
 twrsFailedRequests :: Lens' TerminateWorkspacesResponse [FailedWorkspaceChangeRequest]
 twrsFailedRequests = lens _twrsFailedRequests (\ s a -> s{_twrsFailedRequests = a}) . _Default . _Coerce;
 
diff --git a/gen/Network/AWS/WorkSpaces/Types.hs b/gen/Network/AWS/WorkSpaces/Types.hs
--- a/gen/Network/AWS/WorkSpaces/Types.hs
+++ b/gen/Network/AWS/WorkSpaces/Types.hs
@@ -16,13 +16,24 @@
       workSpaces
 
     -- * Errors
+    , _AccessDeniedException
     , _ResourceUnavailableException
     , _InvalidParameterValuesException
+    , _OperationInProgressException
     , _ResourceLimitExceededException
+    , _InvalidResourceStateException
+    , _UnsupportedWorkspaceConfigurationException
+    , _ResourceNotFoundException
 
     -- * Compute
     , Compute (..)
 
+    -- * ConnectionState
+    , ConnectionState (..)
+
+    -- * RunningMode
+    , RunningMode (..)
+
     -- * WorkspaceDirectoryState
     , WorkspaceDirectoryState (..)
 
@@ -70,6 +81,22 @@
     , rebuildRequest
     , rrWorkspaceId
 
+    -- * StartRequest
+    , StartRequest
+    , startRequest
+    , sWorkspaceId
+
+    -- * StopRequest
+    , StopRequest
+    , stopRequest
+    , srWorkspaceId
+
+    -- * Tag
+    , Tag
+    , tag
+    , tagValue
+    , tagKey
+
     -- * TerminateRequest
     , TerminateRequest
     , terminateRequest
@@ -89,6 +116,7 @@
     , wUserName
     , wSubnetId
     , wBundleId
+    , wWorkspaceProperties
     , wRootVolumeEncryptionEnabled
     , wErrorCode
     , wVolumeEncryptionKey
@@ -107,6 +135,14 @@
     , wbUserStorage
     , wbDescription
 
+    -- * WorkspaceConnectionStatus
+    , WorkspaceConnectionStatus
+    , workspaceConnectionStatus
+    , wcsLastKnownUserConnectionTimestamp
+    , wcsConnectionStateCheckTimestamp
+    , wcsWorkspaceId
+    , wcsConnectionState
+
     -- * WorkspaceDirectory
     , WorkspaceDirectory
     , workspaceDirectory
@@ -123,12 +159,20 @@
     , wdDNSIPAddresses
     , wdDirectoryName
 
+    -- * WorkspaceProperties
+    , WorkspaceProperties
+    , workspaceProperties
+    , wpRunningMode
+    , wpRunningModeAutoStopTimeoutInMinutes
+
     -- * WorkspaceRequest
     , WorkspaceRequest
     , workspaceRequest
+    , wrWorkspaceProperties
     , wrRootVolumeEncryptionEnabled
     , wrVolumeEncryptionKey
     , wrUserVolumeEncryptionEnabled
+    , wrTags
     , wrDirectoryId
     , wrUserName
     , wrBundleId
@@ -174,6 +218,10 @@
       | has (hasStatus 509) e = Just "limit_exceeded"
       | otherwise = Nothing
 
+-- | Prism for AccessDeniedException' errors.
+_AccessDeniedException :: AsError a => Getting (First ServiceError) a ServiceError
+_AccessDeniedException = _ServiceError . hasCode "AccessDeniedException"
+
 -- | The specified resource is not available.
 _ResourceUnavailableException :: AsError a => Getting (First ServiceError) a ServiceError
 _ResourceUnavailableException =
@@ -184,7 +232,27 @@
 _InvalidParameterValuesException =
     _ServiceError . hasCode "InvalidParameterValuesException"
 
+-- | The properties of this WorkSpace are currently being modified. Try again in a moment.
+_OperationInProgressException :: AsError a => Getting (First ServiceError) a ServiceError
+_OperationInProgressException =
+    _ServiceError . hasCode "OperationInProgressException"
+
 -- | Your resource limits have been exceeded.
 _ResourceLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
 _ResourceLimitExceededException =
     _ServiceError . hasCode "ResourceLimitExceededException"
+
+-- | The specified WorkSpace has an invalid state for this operation.
+_InvalidResourceStateException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidResourceStateException =
+    _ServiceError . hasCode "InvalidResourceStateException"
+
+-- | The WorkSpace does not have the supported configuration for this operation. For more information, see the <http://docs.aws.amazon.com/workspaces/latest/adminguide Amazon WorkSpaces Administration Guide>.
+_UnsupportedWorkspaceConfigurationException :: AsError a => Getting (First ServiceError) a ServiceError
+_UnsupportedWorkspaceConfigurationException =
+    _ServiceError . hasCode "UnsupportedWorkspaceConfigurationException"
+
+-- | The resource could not be found.
+_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceNotFoundException =
+    _ServiceError . hasCode "ResourceNotFoundException"
diff --git a/gen/Network/AWS/WorkSpaces/Types/Product.hs b/gen/Network/AWS/WorkSpaces/Types/Product.hs
--- a/gen/Network/AWS/WorkSpaces/Types/Product.hs
+++ b/gen/Network/AWS/WorkSpaces/Types/Product.hs
@@ -151,7 +151,7 @@
     , _fcwrErrorMessage = Nothing
     }
 
--- | A < WorkspaceRequest> object that contains the information about the WorkSpace that could not be created.
+-- | A < FailedCreateWorkspaceRequest>WorkspaceRequest> object that contains the information about the WorkSpace that could not be created.
 fcwrWorkspaceRequest :: Lens' FailedCreateWorkspaceRequest (Maybe WorkspaceRequest)
 fcwrWorkspaceRequest = lens _fcwrWorkspaceRequest (\ s a -> s{_fcwrWorkspaceRequest = a});
 
@@ -175,7 +175,7 @@
 
 instance NFData FailedCreateWorkspaceRequest
 
--- | Contains information about a WorkSpace that could not be rebooted (< RebootWorkspaces>), rebuilt (< RebuildWorkspaces>), or terminated (< TerminateWorkspaces>).
+-- | Contains information about a WorkSpace that could not be rebooted (< RebootWorkspaces>), rebuilt (< RebuildWorkspaces>), terminated (< TerminateWorkspaces>), started (< StartWorkspaces>), or stopped (< StopWorkspaces>).
 --
 -- /See:/ 'failedWorkspaceChangeRequest' smart constructor.
 data FailedWorkspaceChangeRequest = FailedWorkspaceChangeRequest'
@@ -292,6 +292,118 @@
           = object
               (catMaybes [Just ("WorkspaceId" .= _rrWorkspaceId)])
 
+-- | Describes the start request.
+--
+-- /See:/ 'startRequest' smart constructor.
+newtype StartRequest = StartRequest'
+    { _sWorkspaceId :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StartRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sWorkspaceId'
+startRequest
+    :: StartRequest
+startRequest =
+    StartRequest'
+    { _sWorkspaceId = Nothing
+    }
+
+-- | The ID of the WorkSpace.
+sWorkspaceId :: Lens' StartRequest (Maybe Text)
+sWorkspaceId = lens _sWorkspaceId (\ s a -> s{_sWorkspaceId = a});
+
+instance Hashable StartRequest
+
+instance NFData StartRequest
+
+instance ToJSON StartRequest where
+        toJSON StartRequest'{..}
+          = object
+              (catMaybes [("WorkspaceId" .=) <$> _sWorkspaceId])
+
+-- | Describes the stop request.
+--
+-- /See:/ 'stopRequest' smart constructor.
+newtype StopRequest = StopRequest'
+    { _srWorkspaceId :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StopRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srWorkspaceId'
+stopRequest
+    :: StopRequest
+stopRequest =
+    StopRequest'
+    { _srWorkspaceId = Nothing
+    }
+
+-- | The ID of the WorkSpace.
+srWorkspaceId :: Lens' StopRequest (Maybe Text)
+srWorkspaceId = lens _srWorkspaceId (\ s a -> s{_srWorkspaceId = a});
+
+instance Hashable StopRequest
+
+instance NFData StopRequest
+
+instance ToJSON StopRequest where
+        toJSON StopRequest'{..}
+          = object
+              (catMaybes [("WorkspaceId" .=) <$> _srWorkspaceId])
+
+-- | Describes the tag of the WorkSpace.
+--
+-- /See:/ 'tag' smart constructor.
+data Tag = Tag'
+    { _tagValue :: !(Maybe Text)
+    , _tagKey   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tag' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tagValue'
+--
+-- * 'tagKey'
+tag
+    :: Text -- ^ 'tagKey'
+    -> Tag
+tag pKey_ =
+    Tag'
+    { _tagValue = Nothing
+    , _tagKey = pKey_
+    }
+
+-- | The value of the tag.
+tagValue :: Lens' Tag (Maybe Text)
+tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
+
+-- | The key of the tag.
+tagKey :: Lens' Tag Text
+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
+
+instance FromJSON Tag where
+        parseJSON
+          = withObject "Tag"
+              (\ x -> Tag' <$> (x .:? "Value") <*> (x .: "Key"))
+
+instance Hashable Tag
+
+instance NFData Tag
+
+instance ToJSON Tag where
+        toJSON Tag'{..}
+          = object
+              (catMaybes
+                 [("Value" .=) <$> _tagValue,
+                  Just ("Key" .= _tagKey)])
+
 -- | Contains information used with the < TerminateWorkspaces> operation to terminate a WorkSpace.
 --
 -- /See:/ 'terminateRequest' smart constructor.
@@ -367,6 +479,7 @@
     , _wUserName                    :: !(Maybe Text)
     , _wSubnetId                    :: !(Maybe Text)
     , _wBundleId                    :: !(Maybe Text)
+    , _wWorkspaceProperties         :: !(Maybe WorkspaceProperties)
     , _wRootVolumeEncryptionEnabled :: !(Maybe Bool)
     , _wErrorCode                   :: !(Maybe Text)
     , _wVolumeEncryptionKey         :: !(Maybe Text)
@@ -392,6 +505,8 @@
 --
 -- * 'wBundleId'
 --
+-- * 'wWorkspaceProperties'
+--
 -- * 'wRootVolumeEncryptionEnabled'
 --
 -- * 'wErrorCode'
@@ -415,6 +530,7 @@
     , _wUserName = Nothing
     , _wSubnetId = Nothing
     , _wBundleId = Nothing
+    , _wWorkspaceProperties = Nothing
     , _wRootVolumeEncryptionEnabled = Nothing
     , _wErrorCode = Nothing
     , _wVolumeEncryptionKey = Nothing
@@ -448,6 +564,10 @@
 wBundleId :: Lens' Workspace (Maybe Text)
 wBundleId = lens _wBundleId (\ s a -> s{_wBundleId = a});
 
+-- | Undocumented member.
+wWorkspaceProperties :: Lens' Workspace (Maybe WorkspaceProperties)
+wWorkspaceProperties = lens _wWorkspaceProperties (\ s a -> s{_wWorkspaceProperties = a});
+
 -- | Specifies whether the data stored on the root volume, or C: drive, is encrypted.
 wRootVolumeEncryptionEnabled :: Lens' Workspace (Maybe Bool)
 wRootVolumeEncryptionEnabled = lens _wRootVolumeEncryptionEnabled (\ s a -> s{_wRootVolumeEncryptionEnabled = a});
@@ -486,6 +606,7 @@
                      <*> (x .:? "UserName")
                      <*> (x .:? "SubnetId")
                      <*> (x .:? "BundleId")
+                     <*> (x .:? "WorkspaceProperties")
                      <*> (x .:? "RootVolumeEncryptionEnabled")
                      <*> (x .:? "ErrorCode")
                      <*> (x .:? "VolumeEncryptionKey")
@@ -576,6 +697,67 @@
 
 instance NFData WorkspaceBundle
 
+-- | Describes the connection status of a WorkSpace.
+--
+-- /See:/ 'workspaceConnectionStatus' smart constructor.
+data WorkspaceConnectionStatus = WorkspaceConnectionStatus'
+    { _wcsLastKnownUserConnectionTimestamp :: !(Maybe POSIX)
+    , _wcsConnectionStateCheckTimestamp    :: !(Maybe POSIX)
+    , _wcsWorkspaceId                      :: !(Maybe Text)
+    , _wcsConnectionState                  :: !(Maybe ConnectionState)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'WorkspaceConnectionStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wcsLastKnownUserConnectionTimestamp'
+--
+-- * 'wcsConnectionStateCheckTimestamp'
+--
+-- * 'wcsWorkspaceId'
+--
+-- * 'wcsConnectionState'
+workspaceConnectionStatus
+    :: WorkspaceConnectionStatus
+workspaceConnectionStatus =
+    WorkspaceConnectionStatus'
+    { _wcsLastKnownUserConnectionTimestamp = Nothing
+    , _wcsConnectionStateCheckTimestamp = Nothing
+    , _wcsWorkspaceId = Nothing
+    , _wcsConnectionState = Nothing
+    }
+
+-- | The timestamp of the last known user connection.
+wcsLastKnownUserConnectionTimestamp :: Lens' WorkspaceConnectionStatus (Maybe UTCTime)
+wcsLastKnownUserConnectionTimestamp = lens _wcsLastKnownUserConnectionTimestamp (\ s a -> s{_wcsLastKnownUserConnectionTimestamp = a}) . mapping _Time;
+
+-- | The timestamp of the connection state check.
+wcsConnectionStateCheckTimestamp :: Lens' WorkspaceConnectionStatus (Maybe UTCTime)
+wcsConnectionStateCheckTimestamp = lens _wcsConnectionStateCheckTimestamp (\ s a -> s{_wcsConnectionStateCheckTimestamp = a}) . mapping _Time;
+
+-- | The ID of the WorkSpace.
+wcsWorkspaceId :: Lens' WorkspaceConnectionStatus (Maybe Text)
+wcsWorkspaceId = lens _wcsWorkspaceId (\ s a -> s{_wcsWorkspaceId = a});
+
+-- | The connection state of the WorkSpace. Returns UNKOWN if the WorkSpace is in a Stopped state.
+wcsConnectionState :: Lens' WorkspaceConnectionStatus (Maybe ConnectionState)
+wcsConnectionState = lens _wcsConnectionState (\ s a -> s{_wcsConnectionState = a});
+
+instance FromJSON WorkspaceConnectionStatus where
+        parseJSON
+          = withObject "WorkspaceConnectionStatus"
+              (\ x ->
+                 WorkspaceConnectionStatus' <$>
+                   (x .:? "LastKnownUserConnectionTimestamp") <*>
+                     (x .:? "ConnectionStateCheckTimestamp")
+                     <*> (x .:? "WorkspaceId")
+                     <*> (x .:? "ConnectionState"))
+
+instance Hashable WorkspaceConnectionStatus
+
+instance NFData WorkspaceConnectionStatus
+
 -- | Contains information about an AWS Directory Service directory for use with Amazon WorkSpaces.
 --
 -- /See:/ 'workspaceDirectory' smart constructor.
@@ -708,13 +890,66 @@
 
 instance NFData WorkspaceDirectory
 
+-- | Describes the properties of a WorkSpace.
+--
+-- /See:/ 'workspaceProperties' smart constructor.
+data WorkspaceProperties = WorkspaceProperties'
+    { _wpRunningMode                         :: !(Maybe RunningMode)
+    , _wpRunningModeAutoStopTimeoutInMinutes :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'WorkspaceProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wpRunningMode'
+--
+-- * 'wpRunningModeAutoStopTimeoutInMinutes'
+workspaceProperties
+    :: WorkspaceProperties
+workspaceProperties =
+    WorkspaceProperties'
+    { _wpRunningMode = Nothing
+    , _wpRunningModeAutoStopTimeoutInMinutes = Nothing
+    }
+
+-- | The running mode of the WorkSpace. AlwaysOn WorkSpaces are billed monthly. AutoStop WorkSpaces are billed by the hour and stopped when no longer being used in order to save on costs.
+wpRunningMode :: Lens' WorkspaceProperties (Maybe RunningMode)
+wpRunningMode = lens _wpRunningMode (\ s a -> s{_wpRunningMode = a});
+
+-- | The time after a user logs off when WorkSpaces are automatically stopped. Configured in 60 minute intervals.
+wpRunningModeAutoStopTimeoutInMinutes :: Lens' WorkspaceProperties (Maybe Int)
+wpRunningModeAutoStopTimeoutInMinutes = lens _wpRunningModeAutoStopTimeoutInMinutes (\ s a -> s{_wpRunningModeAutoStopTimeoutInMinutes = a});
+
+instance FromJSON WorkspaceProperties where
+        parseJSON
+          = withObject "WorkspaceProperties"
+              (\ x ->
+                 WorkspaceProperties' <$>
+                   (x .:? "RunningMode") <*>
+                     (x .:? "RunningModeAutoStopTimeoutInMinutes"))
+
+instance Hashable WorkspaceProperties
+
+instance NFData WorkspaceProperties
+
+instance ToJSON WorkspaceProperties where
+        toJSON WorkspaceProperties'{..}
+          = object
+              (catMaybes
+                 [("RunningMode" .=) <$> _wpRunningMode,
+                  ("RunningModeAutoStopTimeoutInMinutes" .=) <$>
+                    _wpRunningModeAutoStopTimeoutInMinutes])
+
 -- | Contains information about a WorkSpace creation request.
 --
 -- /See:/ 'workspaceRequest' smart constructor.
 data WorkspaceRequest = WorkspaceRequest'
-    { _wrRootVolumeEncryptionEnabled :: !(Maybe Bool)
+    { _wrWorkspaceProperties         :: !(Maybe WorkspaceProperties)
+    , _wrRootVolumeEncryptionEnabled :: !(Maybe Bool)
     , _wrVolumeEncryptionKey         :: !(Maybe Text)
     , _wrUserVolumeEncryptionEnabled :: !(Maybe Bool)
+    , _wrTags                        :: !(Maybe [Tag])
     , _wrDirectoryId                 :: !Text
     , _wrUserName                    :: !Text
     , _wrBundleId                    :: !Text
@@ -724,12 +959,16 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'wrWorkspaceProperties'
+--
 -- * 'wrRootVolumeEncryptionEnabled'
 --
 -- * 'wrVolumeEncryptionKey'
 --
 -- * 'wrUserVolumeEncryptionEnabled'
 --
+-- * 'wrTags'
+--
 -- * 'wrDirectoryId'
 --
 -- * 'wrUserName'
@@ -742,14 +981,20 @@
     -> WorkspaceRequest
 workspaceRequest pDirectoryId_ pUserName_ pBundleId_ =
     WorkspaceRequest'
-    { _wrRootVolumeEncryptionEnabled = Nothing
+    { _wrWorkspaceProperties = Nothing
+    , _wrRootVolumeEncryptionEnabled = Nothing
     , _wrVolumeEncryptionKey = Nothing
     , _wrUserVolumeEncryptionEnabled = Nothing
+    , _wrTags = Nothing
     , _wrDirectoryId = pDirectoryId_
     , _wrUserName = pUserName_
     , _wrBundleId = pBundleId_
     }
 
+-- | Undocumented member.
+wrWorkspaceProperties :: Lens' WorkspaceRequest (Maybe WorkspaceProperties)
+wrWorkspaceProperties = lens _wrWorkspaceProperties (\ s a -> s{_wrWorkspaceProperties = a});
+
 -- | Specifies whether the data stored on the root volume, or C: drive, is encrypted.
 wrRootVolumeEncryptionEnabled :: Lens' WorkspaceRequest (Maybe Bool)
 wrRootVolumeEncryptionEnabled = lens _wrRootVolumeEncryptionEnabled (\ s a -> s{_wrRootVolumeEncryptionEnabled = a});
@@ -762,6 +1007,10 @@
 wrUserVolumeEncryptionEnabled :: Lens' WorkspaceRequest (Maybe Bool)
 wrUserVolumeEncryptionEnabled = lens _wrUserVolumeEncryptionEnabled (\ s a -> s{_wrUserVolumeEncryptionEnabled = a});
 
+-- | The tags of the WorkSpace request.
+wrTags :: Lens' WorkspaceRequest [Tag]
+wrTags = lens _wrTags (\ s a -> s{_wrTags = a}) . _Default . _Coerce;
+
 -- | The identifier of the AWS Directory Service directory to create the WorkSpace in. You can use the < DescribeWorkspaceDirectories> operation to obtain a list of the directories that are available.
 wrDirectoryId :: Lens' WorkspaceRequest Text
 wrDirectoryId = lens _wrDirectoryId (\ s a -> s{_wrDirectoryId = a});
@@ -779,9 +1028,11 @@
           = withObject "WorkspaceRequest"
               (\ x ->
                  WorkspaceRequest' <$>
-                   (x .:? "RootVolumeEncryptionEnabled") <*>
-                     (x .:? "VolumeEncryptionKey")
+                   (x .:? "WorkspaceProperties") <*>
+                     (x .:? "RootVolumeEncryptionEnabled")
+                     <*> (x .:? "VolumeEncryptionKey")
                      <*> (x .:? "UserVolumeEncryptionEnabled")
+                     <*> (x .:? "Tags" .!= mempty)
                      <*> (x .: "DirectoryId")
                      <*> (x .: "UserName")
                      <*> (x .: "BundleId"))
@@ -794,12 +1045,15 @@
         toJSON WorkspaceRequest'{..}
           = object
               (catMaybes
-                 [("RootVolumeEncryptionEnabled" .=) <$>
+                 [("WorkspaceProperties" .=) <$>
+                    _wrWorkspaceProperties,
+                  ("RootVolumeEncryptionEnabled" .=) <$>
                     _wrRootVolumeEncryptionEnabled,
                   ("VolumeEncryptionKey" .=) <$>
                     _wrVolumeEncryptionKey,
                   ("UserVolumeEncryptionEnabled" .=) <$>
                     _wrUserVolumeEncryptionEnabled,
+                  ("Tags" .=) <$> _wrTags,
                   Just ("DirectoryId" .= _wrDirectoryId),
                   Just ("UserName" .= _wrUserName),
                   Just ("BundleId" .= _wrBundleId)])
diff --git a/gen/Network/AWS/WorkSpaces/Types/Sum.hs b/gen/Network/AWS/WorkSpaces/Types/Sum.hs
--- a/gen/Network/AWS/WorkSpaces/Types/Sum.hs
+++ b/gen/Network/AWS/WorkSpaces/Types/Sum.hs
@@ -31,7 +31,7 @@
         "standard" -> pure Standard
         "value" -> pure Value
         e -> fromTextError $ "Failure parsing Compute from value: '" <> e
-           <> "'. Accepted values: PERFORMANCE, STANDARD, VALUE"
+           <> "'. Accepted values: performance, standard, value"
 
 instance ToText Compute where
     toText = \case
@@ -48,6 +48,64 @@
 instance FromJSON Compute where
     parseJSON = parseJSONText "Compute"
 
+data ConnectionState
+    = Connected
+    | Disconnected
+    | Unknown
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText ConnectionState where
+    parser = takeLowerText >>= \case
+        "connected" -> pure Connected
+        "disconnected" -> pure Disconnected
+        "unknown" -> pure Unknown
+        e -> fromTextError $ "Failure parsing ConnectionState from value: '" <> e
+           <> "'. Accepted values: connected, disconnected, unknown"
+
+instance ToText ConnectionState where
+    toText = \case
+        Connected -> "CONNECTED"
+        Disconnected -> "DISCONNECTED"
+        Unknown -> "UNKNOWN"
+
+instance Hashable     ConnectionState
+instance NFData       ConnectionState
+instance ToByteString ConnectionState
+instance ToQuery      ConnectionState
+instance ToHeader     ConnectionState
+
+instance FromJSON ConnectionState where
+    parseJSON = parseJSONText "ConnectionState"
+
+data RunningMode
+    = AlwaysOn
+    | AutoStop
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText RunningMode where
+    parser = takeLowerText >>= \case
+        "always_on" -> pure AlwaysOn
+        "auto_stop" -> pure AutoStop
+        e -> fromTextError $ "Failure parsing RunningMode from value: '" <> e
+           <> "'. Accepted values: always_on, auto_stop"
+
+instance ToText RunningMode where
+    toText = \case
+        AlwaysOn -> "ALWAYS_ON"
+        AutoStop -> "AUTO_STOP"
+
+instance Hashable     RunningMode
+instance NFData       RunningMode
+instance ToByteString RunningMode
+instance ToQuery      RunningMode
+instance ToHeader     RunningMode
+
+instance ToJSON RunningMode where
+    toJSON = toJSONText
+
+instance FromJSON RunningMode where
+    parseJSON = parseJSONText "RunningMode"
+
 data WorkspaceDirectoryState
     = Deregistered
     | Deregistering
@@ -64,7 +122,7 @@
         "registered" -> pure Registered
         "registering" -> pure Registering
         e -> fromTextError $ "Failure parsing WorkspaceDirectoryState from value: '" <> e
-           <> "'. Accepted values: DEREGISTERED, DEREGISTERING, ERROR, REGISTERED, REGISTERING"
+           <> "'. Accepted values: deregistered, deregistering, error, registered, registering"
 
 instance ToText WorkspaceDirectoryState where
     toText = \case
@@ -93,7 +151,7 @@
         "ad_connector" -> pure AdConnector
         "simple_ad" -> pure SimpleAd
         e -> fromTextError $ "Failure parsing WorkspaceDirectoryType from value: '" <> e
-           <> "'. Accepted values: AD_CONNECTOR, SIMPLE_AD"
+           <> "'. Accepted values: ad_connector, simple_ad"
 
 instance ToText WorkspaceDirectoryType where
     toText = \case
@@ -113,9 +171,13 @@
     = WSAvailable
     | WSError'
     | WSImpaired
+    | WSMaintenance
     | WSPending
     | WSRebooting
     | WSRebuilding
+    | WSStarting
+    | WSStopped
+    | WSStopping
     | WSSuspended
     | WSTerminated
     | WSTerminating
@@ -127,24 +189,32 @@
         "available" -> pure WSAvailable
         "error" -> pure WSError'
         "impaired" -> pure WSImpaired
+        "maintenance" -> pure WSMaintenance
         "pending" -> pure WSPending
         "rebooting" -> pure WSRebooting
         "rebuilding" -> pure WSRebuilding
+        "starting" -> pure WSStarting
+        "stopped" -> pure WSStopped
+        "stopping" -> pure WSStopping
         "suspended" -> pure WSSuspended
         "terminated" -> pure WSTerminated
         "terminating" -> pure WSTerminating
         "unhealthy" -> pure WSUnhealthy
         e -> fromTextError $ "Failure parsing WorkspaceState from value: '" <> e
-           <> "'. Accepted values: AVAILABLE, ERROR, IMPAIRED, PENDING, REBOOTING, REBUILDING, SUSPENDED, TERMINATED, TERMINATING, UNHEALTHY"
+           <> "'. Accepted values: available, error, impaired, maintenance, pending, rebooting, rebuilding, starting, stopped, stopping, suspended, terminated, terminating, unhealthy"
 
 instance ToText WorkspaceState where
     toText = \case
         WSAvailable -> "AVAILABLE"
         WSError' -> "ERROR"
         WSImpaired -> "IMPAIRED"
+        WSMaintenance -> "MAINTENANCE"
         WSPending -> "PENDING"
         WSRebooting -> "REBOOTING"
         WSRebuilding -> "REBUILDING"
+        WSStarting -> "STARTING"
+        WSStopped -> "STOPPED"
+        WSStopping -> "STOPPING"
         WSSuspended -> "SUSPENDED"
         WSTerminated -> "TERMINATED"
         WSTerminating -> "TERMINATING"
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Test/AWS/Gen/WorkSpaces.hs b/test/Test/AWS/Gen/WorkSpaces.hs
--- a/test/Test/AWS/Gen/WorkSpaces.hs
+++ b/test/Test/AWS/Gen/WorkSpaces.hs
@@ -28,7 +28,13 @@
 -- fixtures :: TestTree
 -- fixtures =
 --     [ testGroup "request"
---         [ requestDescribeWorkspaceDirectories $
+--         [ requestModifyWorkspaceProperties $
+--             modifyWorkspaceProperties
+--
+--         , requestDescribeTags $
+--             describeTags
+--
+--         , requestDescribeWorkspaceDirectories $
 --             describeWorkspaceDirectories
 --
 --         , requestDescribeWorkspaceBundles $
@@ -37,6 +43,18 @@
 --         , requestRebuildWorkspaces $
 --             rebuildWorkspaces
 --
+--         , requestCreateTags $
+--             createTags
+--
+--         , requestDeleteTags $
+--             deleteTags
+--
+--         , requestStopWorkspaces $
+--             stopWorkspaces
+--
+--         , requestDescribeWorkspacesConnectionStatus $
+--             describeWorkspacesConnectionStatus
+--
 --         , requestRebootWorkspaces $
 --             rebootWorkspaces
 --
@@ -49,10 +67,19 @@
 --         , requestDescribeWorkspaces $
 --             describeWorkspaces
 --
+--         , requestStartWorkspaces $
+--             startWorkspaces
+--
 --           ]
 
 --     , testGroup "response"
---         [ responseDescribeWorkspaceDirectories $
+--         [ responseModifyWorkspaceProperties $
+--             modifyWorkspacePropertiesResponse
+--
+--         , responseDescribeTags $
+--             describeTagsResponse
+--
+--         , responseDescribeWorkspaceDirectories $
 --             describeWorkspaceDirectoriesResponse
 --
 --         , responseDescribeWorkspaceBundles $
@@ -61,6 +88,18 @@
 --         , responseRebuildWorkspaces $
 --             rebuildWorkspacesResponse
 --
+--         , responseCreateTags $
+--             createTagsResponse
+--
+--         , responseDeleteTags $
+--             deleteTagsResponse
+--
+--         , responseStopWorkspaces $
+--             stopWorkspacesResponse
+--
+--         , responseDescribeWorkspacesConnectionStatus $
+--             describeWorkspacesConnectionStatusResponse
+--
 --         , responseRebootWorkspaces $
 --             rebootWorkspacesResponse
 --
@@ -73,11 +112,24 @@
 --         , responseDescribeWorkspaces $
 --             describeWorkspacesResponse
 --
+--         , responseStartWorkspaces $
+--             startWorkspacesResponse
+--
 --           ]
 --     ]
 
 -- Requests
 
+requestModifyWorkspaceProperties :: ModifyWorkspaceProperties -> TestTree
+requestModifyWorkspaceProperties = req
+    "ModifyWorkspaceProperties"
+    "fixture/ModifyWorkspaceProperties.yaml"
+
+requestDescribeTags :: DescribeTags -> TestTree
+requestDescribeTags = req
+    "DescribeTags"
+    "fixture/DescribeTags.yaml"
+
 requestDescribeWorkspaceDirectories :: DescribeWorkspaceDirectories -> TestTree
 requestDescribeWorkspaceDirectories = req
     "DescribeWorkspaceDirectories"
@@ -93,6 +145,26 @@
     "RebuildWorkspaces"
     "fixture/RebuildWorkspaces.yaml"
 
+requestCreateTags :: CreateTags -> TestTree
+requestCreateTags = req
+    "CreateTags"
+    "fixture/CreateTags.yaml"
+
+requestDeleteTags :: DeleteTags -> TestTree
+requestDeleteTags = req
+    "DeleteTags"
+    "fixture/DeleteTags.yaml"
+
+requestStopWorkspaces :: StopWorkspaces -> TestTree
+requestStopWorkspaces = req
+    "StopWorkspaces"
+    "fixture/StopWorkspaces.yaml"
+
+requestDescribeWorkspacesConnectionStatus :: DescribeWorkspacesConnectionStatus -> TestTree
+requestDescribeWorkspacesConnectionStatus = req
+    "DescribeWorkspacesConnectionStatus"
+    "fixture/DescribeWorkspacesConnectionStatus.yaml"
+
 requestRebootWorkspaces :: RebootWorkspaces -> TestTree
 requestRebootWorkspaces = req
     "RebootWorkspaces"
@@ -113,8 +185,27 @@
     "DescribeWorkspaces"
     "fixture/DescribeWorkspaces.yaml"
 
+requestStartWorkspaces :: StartWorkspaces -> TestTree
+requestStartWorkspaces = req
+    "StartWorkspaces"
+    "fixture/StartWorkspaces.yaml"
+
 -- Responses
 
+responseModifyWorkspaceProperties :: ModifyWorkspacePropertiesResponse -> TestTree
+responseModifyWorkspaceProperties = res
+    "ModifyWorkspacePropertiesResponse"
+    "fixture/ModifyWorkspacePropertiesResponse.proto"
+    workSpaces
+    (Proxy :: Proxy ModifyWorkspaceProperties)
+
+responseDescribeTags :: DescribeTagsResponse -> TestTree
+responseDescribeTags = res
+    "DescribeTagsResponse"
+    "fixture/DescribeTagsResponse.proto"
+    workSpaces
+    (Proxy :: Proxy DescribeTags)
+
 responseDescribeWorkspaceDirectories :: DescribeWorkspaceDirectoriesResponse -> TestTree
 responseDescribeWorkspaceDirectories = res
     "DescribeWorkspaceDirectoriesResponse"
@@ -136,6 +227,34 @@
     workSpaces
     (Proxy :: Proxy RebuildWorkspaces)
 
+responseCreateTags :: CreateTagsResponse -> TestTree
+responseCreateTags = res
+    "CreateTagsResponse"
+    "fixture/CreateTagsResponse.proto"
+    workSpaces
+    (Proxy :: Proxy CreateTags)
+
+responseDeleteTags :: DeleteTagsResponse -> TestTree
+responseDeleteTags = res
+    "DeleteTagsResponse"
+    "fixture/DeleteTagsResponse.proto"
+    workSpaces
+    (Proxy :: Proxy DeleteTags)
+
+responseStopWorkspaces :: StopWorkspacesResponse -> TestTree
+responseStopWorkspaces = res
+    "StopWorkspacesResponse"
+    "fixture/StopWorkspacesResponse.proto"
+    workSpaces
+    (Proxy :: Proxy StopWorkspaces)
+
+responseDescribeWorkspacesConnectionStatus :: DescribeWorkspacesConnectionStatusResponse -> TestTree
+responseDescribeWorkspacesConnectionStatus = res
+    "DescribeWorkspacesConnectionStatusResponse"
+    "fixture/DescribeWorkspacesConnectionStatusResponse.proto"
+    workSpaces
+    (Proxy :: Proxy DescribeWorkspacesConnectionStatus)
+
 responseRebootWorkspaces :: RebootWorkspacesResponse -> TestTree
 responseRebootWorkspaces = res
     "RebootWorkspacesResponse"
@@ -163,3 +282,10 @@
     "fixture/DescribeWorkspacesResponse.proto"
     workSpaces
     (Proxy :: Proxy DescribeWorkspaces)
+
+responseStartWorkspaces :: StartWorkspacesResponse -> TestTree
+responseStartWorkspaces = res
+    "StartWorkspacesResponse"
+    "fixture/StartWorkspacesResponse.proto"
+    workSpaces
+    (Proxy :: Proxy StartWorkspaces)
