diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,82 +8,134 @@
 
 ## Version
 
-`1.3.6`
+`1.3.7`
 
 
 ## Description
 
-Simple Systems Manager (SSM) is a set of capabilities that can help you
-manage your Amazon EC2 instances running on Windows. SSM enables you to
-run scripts or other common administrative tasks on your instances using
-either SSM Run Command or SSM Config.
+Simple Systems Manager (SSM) enables you to remotely manage the
+configuration of your Amazon EC2 instance. Using SSM, you can run
+scripts or commands using either EC2 Run Command or SSM Config. (SSM
+Config is currently available only for Windows instances.)
 
-Run Command extends the server administration capabilities of SSM by
-offering an on-demand experience for executing commands. You can use
-pre-defined Amazon SSM documents (formerly called configuration
-documents) to perform the actions listed later in this section, or you
-can create your own documents. With these document, you can then
-remotely configure your instances by sending commands using the AWS
-command line interface (CLI), AWS Tools for Windows PowerShell, or the
-__Commands__ page in the Amazon EC2 console. Additionally, because Run
-Command enables you to execute PowerShell commands or scripts, you can
-administer your instances remotely using PowerShell as though you were
-logged on locally to the instance. Run Command reports the status of the
-command execution for each instance targeted by a command. You can also
-audit the command execution to understand who executed commands, when,
-and what changes were made. By switching between different SSM
-documents, you can quickly configure your instances with different types
-of commands.
+__Run Command__
 
-SSM Config is a lightweight instance configuration solution. With SSM
-Config, you can specify a setup configuration for your instances. SSM
-Config is similar to EC2 User Data, which is another way of running
-one-time scripts or applying settings during instance launch. SSM Config
-is an extension of this capability. Using SSM documents, you can specify
-which actions the system should perform on your instances, including
-which applications to install, which AWS Directory Service directory to
-join, which Microsoft PowerShell modules to install, etc. If an instance
-is missing one or more of these configurations, the system makes those
+Run Command provides an on-demand experience for executing commands. You
+can use pre-defined Amazon SSM documents to perform the actions listed
+later in this section, or you can create your own documents. With these
+documents, you can remotely configure your instances by sending commands
+using the __Commands__ page in the
+<http://console.aws.amazon.com/ec2/ Amazon EC2 console>,
+<http://docs.aws.amazon.com/powershell/latest/reference/items/Amazon_Simple_Systems_Management_cmdlets.html AWS Tools for Windows PowerShell>,
+or the
+<http://docs.aws.amazon.com/cli/latest/reference/ssm/index.html AWS CLI>.
+
+Run Command reports the status of the command execution for each
+instance targeted by a command. You can also audit the command execution
+to understand who executed commands, when, and what changes were made.
+By switching between different SSM documents, you can quickly configure
+your instances with different types of commands. To get started with Run
+Command, verify that your environment meets the prerequisites for
+remotely running commands on EC2 instances
+(<http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/remote-commands-prereq.html Linux>
+or
+<http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/remote-commands-prereq.html Windows>).
+
+__SSM Config__
+
+SSM Config is a lightweight instance configuration solution. SSM Config
+is currently only available for Windows instances. With SSM Config, you
+can specify a setup configuration for your instances. SSM Config is
+similar to EC2 User Data, which is another way of running one-time
+scripts or applying settings during instance launch. SSM Config is an
+extension of this capability. Using SSM documents, you can specify which
+actions the system should perform on your instances, including which
+applications to install, which AWS Directory Service directory to join,
+which Microsoft PowerShell modules to install, etc. If an instance is
+missing one or more of these configurations, the system makes those
 changes. By default, the system checks every five minutes to see if
 there is a new configuration to apply as defined in a new SSM document.
 If so, the system updates the instances accordingly. In this way, you
 can remotely maintain a consistent configuration baseline on your
 instances. SSM Config is available using the AWS CLI or the AWS Tools
-for Windows PowerShell.
+for Windows PowerShell. For more information, see
+<http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-configuration-manage.html Managing Windows Instance Configuration>.
 
-SSM is currently not supported on Linux instances.
+SSM Config and Run Command include the following pre-defined documents.
 
-You can use Run Command and SSM Config to do the following:
+Amazon Pre-defined SSM Documents
 
--   Join an AWS Directory Service directory (SSM Config and Run Command)
+Name Description Platform
 
--   Install, repair, or uninstall software using an MSI package (SSM
-    Config and Run Command)
+AWS-RunShellScript
 
--   Install PowerShell modules (SSM Config and Run Command)
+Run shell scripts
 
--   Configure CloudWatch Logs to monitor applications and systems (SSM
-    Config and Run Command)
+Linux
 
--   Run PowerShell commands or scripts (Run Command only)
+AWS-UpdateSSMAgent
 
--   Update the EC2Config service (Run Command only)
+Update the Amazon SSM agent
 
--   Configure Windows Update settings (Run Command only)
+Linux
 
-SSM documents run with administrative privilege on Windows instances
-because the EC2Config service runs in the Local System account. If a
-user has permission to execute any of the pre-defined SSM documents (any
-document that begins with AWS-*) then that user also has administrator
-access to the instance. Delegate access to SSM Config and Run Command
-judiciously. This becomes extremely important if you create your own SSM
-documents. Amazon Web Services does not provide guidance about how to
-create secure SSM documents. You create SSM documents and delegate
-access to Run Command actions at your own risk. As a security best
-practice, we recommend that you assign access to \"AWS-*\" documents,
-especially the AWS-RunPowerShellScript document, to trusted
-administrators only. You can create low-level SSM documents for low
-security tasks and delegate access to non-administrators.
+AWS-JoinDirectoryServiceDomain
+
+Join an AWS Directory
+
+Windows
+
+AWS-RunPowerShellScript
+
+Run PowerShell commands or scripts
+
+Windows
+
+AWS-UpdateEC2Config
+
+Update the EC2Config service
+
+Windows
+
+AWS-ConfigureWindowsUpdate
+
+Configure Windows Update settings
+
+Windows
+
+AWS-InstallApplication
+
+Install, repair, or uninstall software using an MSI package
+
+Windows
+
+AWS-InstallPowerShellModule
+
+Install PowerShell modules
+
+Windows
+
+AWS-ConfigureCloudWatch
+
+Configure Amazon CloudWatch Logs to monitor applications and systems
+
+Windows
+
+The commands or scripts specified in SSM documents run with
+administrative privilege on your instances because the Amazon SSM agent
+runs as root on Linux and the EC2Config service runs in the Local System
+account on Windows. If a user has permission to execute any of the
+pre-defined SSM documents (any document that begins with AWS-*) then
+that user also has administrator access to the instance. Delegate access
+to SSM and Run Command judiciously. This becomes extremely important if
+you create your own SSM documents. Amazon Web Services does not provide
+guidance about how to create secure SSM documents. You create SSM
+documents and delegate access to Run Command at your own risk. As a
+security best practice, we recommend that you assign access to \"AWS-*\"
+documents, especially the AWS-RunShellScript document on Linux and the
+AWS-RunPowerShellScript document on Windows, to trusted administrators
+only. You can create SSM documents for specific tasks and delegate
+access to non-administrators.
 
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-ssm)
 and the [AWS API Reference](http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html).
diff --git a/amazonka-ssm.cabal b/amazonka-ssm.cabal
--- a/amazonka-ssm.cabal
+++ b/amazonka-ssm.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-ssm
-version:               1.3.6
+version:               1.3.7
 synopsis:              Amazon Simple Systems Management Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -13,77 +13,129 @@
 cabal-version:         >= 1.10
 extra-source-files:    README.md fixture/*.yaml fixture/*.proto
 description:
-    Simple Systems Manager (SSM) is a set of capabilities that can help you
-    manage your Amazon EC2 instances running on Windows. SSM enables you to
-    run scripts or other common administrative tasks on your instances using
-    either SSM Run Command or SSM Config.
+    Simple Systems Manager (SSM) enables you to remotely manage the
+    configuration of your Amazon EC2 instance. Using SSM, you can run
+    scripts or commands using either EC2 Run Command or SSM Config. (SSM
+    Config is currently available only for Windows instances.)
 
-    Run Command extends the server administration capabilities of SSM by
-    offering an on-demand experience for executing commands. You can use
-    pre-defined Amazon SSM documents (formerly called configuration
-    documents) to perform the actions listed later in this section, or you
-    can create your own documents. With these document, you can then
-    remotely configure your instances by sending commands using the AWS
-    command line interface (CLI), AWS Tools for Windows PowerShell, or the
-    __Commands__ page in the Amazon EC2 console. Additionally, because Run
-    Command enables you to execute PowerShell commands or scripts, you can
-    administer your instances remotely using PowerShell as though you were
-    logged on locally to the instance. Run Command reports the status of the
-    command execution for each instance targeted by a command. You can also
-    audit the command execution to understand who executed commands, when,
-    and what changes were made. By switching between different SSM
-    documents, you can quickly configure your instances with different types
-    of commands.
+    __Run Command__
 
-    SSM Config is a lightweight instance configuration solution. With SSM
-    Config, you can specify a setup configuration for your instances. SSM
-    Config is similar to EC2 User Data, which is another way of running
-    one-time scripts or applying settings during instance launch. SSM Config
-    is an extension of this capability. Using SSM documents, you can specify
-    which actions the system should perform on your instances, including
-    which applications to install, which AWS Directory Service directory to
-    join, which Microsoft PowerShell modules to install, etc. If an instance
-    is missing one or more of these configurations, the system makes those
+    Run Command provides an on-demand experience for executing commands. You
+    can use pre-defined Amazon SSM documents to perform the actions listed
+    later in this section, or you can create your own documents. With these
+    documents, you can remotely configure your instances by sending commands
+    using the __Commands__ page in the
+    <http://console.aws.amazon.com/ec2/ Amazon EC2 console>,
+    <http://docs.aws.amazon.com/powershell/latest/reference/items/Amazon_Simple_Systems_Management_cmdlets.html AWS Tools for Windows PowerShell>,
+    or the
+    <http://docs.aws.amazon.com/cli/latest/reference/ssm/index.html AWS CLI>.
+
+    Run Command reports the status of the command execution for each
+    instance targeted by a command. You can also audit the command execution
+    to understand who executed commands, when, and what changes were made.
+    By switching between different SSM documents, you can quickly configure
+    your instances with different types of commands. To get started with Run
+    Command, verify that your environment meets the prerequisites for
+    remotely running commands on EC2 instances
+    (<http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/remote-commands-prereq.html Linux>
+    or
+    <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/remote-commands-prereq.html Windows>).
+
+    __SSM Config__
+
+    SSM Config is a lightweight instance configuration solution. SSM Config
+    is currently only available for Windows instances. With SSM Config, you
+    can specify a setup configuration for your instances. SSM Config is
+    similar to EC2 User Data, which is another way of running one-time
+    scripts or applying settings during instance launch. SSM Config is an
+    extension of this capability. Using SSM documents, you can specify which
+    actions the system should perform on your instances, including which
+    applications to install, which AWS Directory Service directory to join,
+    which Microsoft PowerShell modules to install, etc. If an instance is
+    missing one or more of these configurations, the system makes those
     changes. By default, the system checks every five minutes to see if
     there is a new configuration to apply as defined in a new SSM document.
     If so, the system updates the instances accordingly. In this way, you
     can remotely maintain a consistent configuration baseline on your
     instances. SSM Config is available using the AWS CLI or the AWS Tools
-    for Windows PowerShell.
+    for Windows PowerShell. For more information, see
+    <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-configuration-manage.html Managing Windows Instance Configuration>.
 
-    SSM is currently not supported on Linux instances.
+    SSM Config and Run Command include the following pre-defined documents.
 
-    You can use Run Command and SSM Config to do the following:
+    Amazon Pre-defined SSM Documents
 
-    -   Join an AWS Directory Service directory (SSM Config and Run Command)
+    Name Description Platform
 
-    -   Install, repair, or uninstall software using an MSI package (SSM
-        Config and Run Command)
+    AWS-RunShellScript
 
-    -   Install PowerShell modules (SSM Config and Run Command)
+    Run shell scripts
 
-    -   Configure CloudWatch Logs to monitor applications and systems (SSM
-        Config and Run Command)
+    Linux
 
-    -   Run PowerShell commands or scripts (Run Command only)
+    AWS-UpdateSSMAgent
 
-    -   Update the EC2Config service (Run Command only)
+    Update the Amazon SSM agent
 
-    -   Configure Windows Update settings (Run Command only)
+    Linux
 
-    SSM documents run with administrative privilege on Windows instances
-    because the EC2Config service runs in the Local System account. If a
-    user has permission to execute any of the pre-defined SSM documents (any
-    document that begins with AWS-*) then that user also has administrator
-    access to the instance. Delegate access to SSM Config and Run Command
-    judiciously. This becomes extremely important if you create your own SSM
-    documents. Amazon Web Services does not provide guidance about how to
-    create secure SSM documents. You create SSM documents and delegate
-    access to Run Command actions at your own risk. As a security best
-    practice, we recommend that you assign access to \"AWS-*\" documents,
-    especially the AWS-RunPowerShellScript document, to trusted
-    administrators only. You can create low-level SSM documents for low
-    security tasks and delegate access to non-administrators.
+    AWS-JoinDirectoryServiceDomain
+
+    Join an AWS Directory
+
+    Windows
+
+    AWS-RunPowerShellScript
+
+    Run PowerShell commands or scripts
+
+    Windows
+
+    AWS-UpdateEC2Config
+
+    Update the EC2Config service
+
+    Windows
+
+    AWS-ConfigureWindowsUpdate
+
+    Configure Windows Update settings
+
+    Windows
+
+    AWS-InstallApplication
+
+    Install, repair, or uninstall software using an MSI package
+
+    Windows
+
+    AWS-InstallPowerShellModule
+
+    Install PowerShell modules
+
+    Windows
+
+    AWS-ConfigureCloudWatch
+
+    Configure Amazon CloudWatch Logs to monitor applications and systems
+
+    Windows
+
+    The commands or scripts specified in SSM documents run with
+    administrative privilege on your instances because the Amazon SSM agent
+    runs as root on Linux and the EC2Config service runs in the Local System
+    account on Windows. If a user has permission to execute any of the
+    pre-defined SSM documents (any document that begins with AWS-*) then
+    that user also has administrator access to the instance. Delegate access
+    to SSM and Run Command judiciously. This becomes extremely important if
+    you create your own SSM documents. Amazon Web Services does not provide
+    guidance about how to create secure SSM documents. You create SSM
+    documents and delegate access to Run Command at your own risk. As a
+    security best practice, we recommend that you assign access to \"AWS-*\"
+    documents, especially the AWS-RunShellScript document on Linux and the
+    AWS-RunPowerShellScript document on Windows, to trusted administrators
+    only. You can create SSM documents for specific tasks and delegate
+    access to non-administrators.
     .
     The types from this library are intended to be used with
     <http://hackage.haskell.org/package/amazonka amazonka>, which provides
@@ -135,7 +187,7 @@
         , Network.AWS.SSM.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.6.*
+          amazonka-core == 1.3.7.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ssm-test
@@ -155,12 +207,11 @@
         , Test.AWS.SSM.Internal
 
     build-depends:
-          amazonka-core == 1.3.6.*
-        , amazonka-test == 1.3.6.*
-        , amazonka-ssm == 1.3.6.*
+          amazonka-core == 1.3.7.*
+        , amazonka-test == 1.3.7.*
+        , amazonka-ssm == 1.3.7.*
         , base
         , bytestring
-        , lens
         , tasty
         , tasty-hunit
         , text
diff --git a/gen/Network/AWS/SSM.hs b/gen/Network/AWS/SSM.hs
--- a/gen/Network/AWS/SSM.hs
+++ b/gen/Network/AWS/SSM.hs
@@ -11,77 +11,129 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Simple Systems Manager (SSM) is a set of capabilities that can help you
--- manage your Amazon EC2 instances running on Windows. SSM enables you to
--- run scripts or other common administrative tasks on your instances using
--- either SSM Run Command or SSM Config.
+-- Simple Systems Manager (SSM) enables you to remotely manage the
+-- configuration of your Amazon EC2 instance. Using SSM, you can run
+-- scripts or commands using either EC2 Run Command or SSM Config. (SSM
+-- Config is currently available only for Windows instances.)
 --
--- Run Command extends the server administration capabilities of SSM by
--- offering an on-demand experience for executing commands. You can use
--- pre-defined Amazon SSM documents (formerly called configuration
--- documents) to perform the actions listed later in this section, or you
--- can create your own documents. With these document, you can then
--- remotely configure your instances by sending commands using the AWS
--- command line interface (CLI), AWS Tools for Windows PowerShell, or the
--- __Commands__ page in the Amazon EC2 console. Additionally, because Run
--- Command enables you to execute PowerShell commands or scripts, you can
--- administer your instances remotely using PowerShell as though you were
--- logged on locally to the instance. Run Command reports the status of the
--- command execution for each instance targeted by a command. You can also
--- audit the command execution to understand who executed commands, when,
--- and what changes were made. By switching between different SSM
--- documents, you can quickly configure your instances with different types
--- of commands.
+-- __Run Command__
 --
--- SSM Config is a lightweight instance configuration solution. With SSM
--- Config, you can specify a setup configuration for your instances. SSM
--- Config is similar to EC2 User Data, which is another way of running
--- one-time scripts or applying settings during instance launch. SSM Config
--- is an extension of this capability. Using SSM documents, you can specify
--- which actions the system should perform on your instances, including
--- which applications to install, which AWS Directory Service directory to
--- join, which Microsoft PowerShell modules to install, etc. If an instance
--- is missing one or more of these configurations, the system makes those
+-- Run Command provides an on-demand experience for executing commands. You
+-- can use pre-defined Amazon SSM documents to perform the actions listed
+-- later in this section, or you can create your own documents. With these
+-- documents, you can remotely configure your instances by sending commands
+-- using the __Commands__ page in the
+-- <http://console.aws.amazon.com/ec2/ Amazon EC2 console>,
+-- <http://docs.aws.amazon.com/powershell/latest/reference/items/Amazon_Simple_Systems_Management_cmdlets.html AWS Tools for Windows PowerShell>,
+-- or the
+-- <http://docs.aws.amazon.com/cli/latest/reference/ssm/index.html AWS CLI>.
+--
+-- Run Command reports the status of the command execution for each
+-- instance targeted by a command. You can also audit the command execution
+-- to understand who executed commands, when, and what changes were made.
+-- By switching between different SSM documents, you can quickly configure
+-- your instances with different types of commands. To get started with Run
+-- Command, verify that your environment meets the prerequisites for
+-- remotely running commands on EC2 instances
+-- (<http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/remote-commands-prereq.html Linux>
+-- or
+-- <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/remote-commands-prereq.html Windows>).
+--
+-- __SSM Config__
+--
+-- SSM Config is a lightweight instance configuration solution. SSM Config
+-- is currently only available for Windows instances. With SSM Config, you
+-- can specify a setup configuration for your instances. SSM Config is
+-- similar to EC2 User Data, which is another way of running one-time
+-- scripts or applying settings during instance launch. SSM Config is an
+-- extension of this capability. Using SSM documents, you can specify which
+-- actions the system should perform on your instances, including which
+-- applications to install, which AWS Directory Service directory to join,
+-- which Microsoft PowerShell modules to install, etc. If an instance is
+-- missing one or more of these configurations, the system makes those
 -- changes. By default, the system checks every five minutes to see if
 -- there is a new configuration to apply as defined in a new SSM document.
 -- If so, the system updates the instances accordingly. In this way, you
 -- can remotely maintain a consistent configuration baseline on your
 -- instances. SSM Config is available using the AWS CLI or the AWS Tools
--- for Windows PowerShell.
+-- for Windows PowerShell. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-configuration-manage.html Managing Windows Instance Configuration>.
 --
--- SSM is currently not supported on Linux instances.
+-- SSM Config and Run Command include the following pre-defined documents.
 --
--- You can use Run Command and SSM Config to do the following:
+-- Amazon Pre-defined SSM Documents
 --
--- -   Join an AWS Directory Service directory (SSM Config and Run Command)
+-- Name Description Platform
 --
--- -   Install, repair, or uninstall software using an MSI package (SSM
---     Config and Run Command)
+-- AWS-RunShellScript
 --
--- -   Install PowerShell modules (SSM Config and Run Command)
+-- Run shell scripts
 --
--- -   Configure CloudWatch Logs to monitor applications and systems (SSM
---     Config and Run Command)
+-- Linux
 --
--- -   Run PowerShell commands or scripts (Run Command only)
+-- AWS-UpdateSSMAgent
 --
--- -   Update the EC2Config service (Run Command only)
+-- Update the Amazon SSM agent
 --
--- -   Configure Windows Update settings (Run Command only)
+-- Linux
 --
--- SSM documents run with administrative privilege on Windows instances
--- because the EC2Config service runs in the Local System account. If a
--- user has permission to execute any of the pre-defined SSM documents (any
--- document that begins with AWS-*) then that user also has administrator
--- access to the instance. Delegate access to SSM Config and Run Command
--- judiciously. This becomes extremely important if you create your own SSM
--- documents. Amazon Web Services does not provide guidance about how to
--- create secure SSM documents. You create SSM documents and delegate
--- access to Run Command actions at your own risk. As a security best
--- practice, we recommend that you assign access to \"AWS-*\" documents,
--- especially the AWS-RunPowerShellScript document, to trusted
--- administrators only. You can create low-level SSM documents for low
--- security tasks and delegate access to non-administrators.
+-- AWS-JoinDirectoryServiceDomain
+--
+-- Join an AWS Directory
+--
+-- Windows
+--
+-- AWS-RunPowerShellScript
+--
+-- Run PowerShell commands or scripts
+--
+-- Windows
+--
+-- AWS-UpdateEC2Config
+--
+-- Update the EC2Config service
+--
+-- Windows
+--
+-- AWS-ConfigureWindowsUpdate
+--
+-- Configure Windows Update settings
+--
+-- Windows
+--
+-- AWS-InstallApplication
+--
+-- Install, repair, or uninstall software using an MSI package
+--
+-- Windows
+--
+-- AWS-InstallPowerShellModule
+--
+-- Install PowerShell modules
+--
+-- Windows
+--
+-- AWS-ConfigureCloudWatch
+--
+-- Configure Amazon CloudWatch Logs to monitor applications and systems
+--
+-- Windows
+--
+-- The commands or scripts specified in SSM documents run with
+-- administrative privilege on your instances because the Amazon SSM agent
+-- runs as root on Linux and the EC2Config service runs in the Local System
+-- account on Windows. If a user has permission to execute any of the
+-- pre-defined SSM documents (any document that begins with AWS-*) then
+-- that user also has administrator access to the instance. Delegate access
+-- to SSM and Run Command judiciously. This becomes extremely important if
+-- you create your own SSM documents. Amazon Web Services does not provide
+-- guidance about how to create secure SSM documents. You create SSM
+-- documents and delegate access to Run Command at your own risk. As a
+-- security best practice, we recommend that you assign access to \"AWS-*\"
+-- documents, especially the AWS-RunShellScript document on Linux and the
+-- AWS-RunPowerShellScript document on Windows, to trusted administrators
+-- only. You can create SSM documents for specific tasks and delegate
+-- access to non-administrators.
 --
 -- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.SSM
diff --git a/gen/Network/AWS/SSM/CancelCommand.hs b/gen/Network/AWS/SSM/CancelCommand.hs
--- a/gen/Network/AWS/SSM/CancelCommand.hs
+++ b/gen/Network/AWS/SSM/CancelCommand.hs
@@ -39,6 +39,7 @@
     , ccrsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/CreateAssociation.hs b/gen/Network/AWS/SSM/CreateAssociation.hs
--- a/gen/Network/AWS/SSM/CreateAssociation.hs
+++ b/gen/Network/AWS/SSM/CreateAssociation.hs
@@ -47,6 +47,7 @@
     , carsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -80,7 +81,7 @@
     , _caInstanceId = pInstanceId_
     }
 
--- | The parameters for the document’s runtime configuration.
+-- | The parameters for the documents runtime configuration.
 caParameters :: Lens' CreateAssociation (HashMap Text [Text])
 caParameters = lens _caParameters (\ s a -> s{_caParameters = a}) . _Default . _Map;
 
@@ -88,7 +89,7 @@
 caName :: Lens' CreateAssociation Text
 caName = lens _caName (\ s a -> s{_caName = a});
 
--- | The instance ID.
+-- | The Windows Server instance ID.
 caInstanceId :: Lens' CreateAssociation Text
 caInstanceId = lens _caInstanceId (\ s a -> s{_caInstanceId = a});
 
diff --git a/gen/Network/AWS/SSM/CreateAssociationBatch.hs b/gen/Network/AWS/SSM/CreateAssociationBatch.hs
--- a/gen/Network/AWS/SSM/CreateAssociationBatch.hs
+++ b/gen/Network/AWS/SSM/CreateAssociationBatch.hs
@@ -46,6 +46,7 @@
     , cabrsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/CreateDocument.hs b/gen/Network/AWS/SSM/CreateDocument.hs
--- a/gen/Network/AWS/SSM/CreateDocument.hs
+++ b/gen/Network/AWS/SSM/CreateDocument.hs
@@ -41,6 +41,7 @@
     , cdrsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/DeleteAssociation.hs b/gen/Network/AWS/SSM/DeleteAssociation.hs
--- a/gen/Network/AWS/SSM/DeleteAssociation.hs
+++ b/gen/Network/AWS/SSM/DeleteAssociation.hs
@@ -43,6 +43,7 @@
     , delrsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/DeleteDocument.hs b/gen/Network/AWS/SSM/DeleteDocument.hs
--- a/gen/Network/AWS/SSM/DeleteDocument.hs
+++ b/gen/Network/AWS/SSM/DeleteDocument.hs
@@ -40,6 +40,7 @@
     , ddrsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/DescribeAssociation.hs b/gen/Network/AWS/SSM/DescribeAssociation.hs
--- a/gen/Network/AWS/SSM/DescribeAssociation.hs
+++ b/gen/Network/AWS/SSM/DescribeAssociation.hs
@@ -38,6 +38,7 @@
     , darsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -71,7 +72,7 @@
 daName :: Lens' DescribeAssociation Text
 daName = lens _daName (\ s a -> s{_daName = a});
 
--- | The ID of the instance.
+-- | The Windows Server instance ID.
 daInstanceId :: Lens' DescribeAssociation Text
 daInstanceId = lens _daInstanceId (\ s a -> s{_daInstanceId = a});
 
diff --git a/gen/Network/AWS/SSM/DescribeDocument.hs b/gen/Network/AWS/SSM/DescribeDocument.hs
--- a/gen/Network/AWS/SSM/DescribeDocument.hs
+++ b/gen/Network/AWS/SSM/DescribeDocument.hs
@@ -37,6 +37,7 @@
     , drsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/DescribeInstanceInformation.hs b/gen/Network/AWS/SSM/DescribeInstanceInformation.hs
--- a/gen/Network/AWS/SSM/DescribeInstanceInformation.hs
+++ b/gen/Network/AWS/SSM/DescribeInstanceInformation.hs
@@ -46,6 +46,7 @@
     , diirsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/GetDocument.hs b/gen/Network/AWS/SSM/GetDocument.hs
--- a/gen/Network/AWS/SSM/GetDocument.hs
+++ b/gen/Network/AWS/SSM/GetDocument.hs
@@ -38,6 +38,7 @@
     , gdrsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/ListAssociations.hs b/gen/Network/AWS/SSM/ListAssociations.hs
--- a/gen/Network/AWS/SSM/ListAssociations.hs
+++ b/gen/Network/AWS/SSM/ListAssociations.hs
@@ -40,6 +40,7 @@
     , larsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/ListCommandInvocations.hs b/gen/Network/AWS/SSM/ListCommandInvocations.hs
--- a/gen/Network/AWS/SSM/ListCommandInvocations.hs
+++ b/gen/Network/AWS/SSM/ListCommandInvocations.hs
@@ -48,6 +48,7 @@
     , lcirsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/ListCommands.hs b/gen/Network/AWS/SSM/ListCommands.hs
--- a/gen/Network/AWS/SSM/ListCommands.hs
+++ b/gen/Network/AWS/SSM/ListCommands.hs
@@ -42,6 +42,7 @@
     , lcrsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/ListDocuments.hs b/gen/Network/AWS/SSM/ListDocuments.hs
--- a/gen/Network/AWS/SSM/ListDocuments.hs
+++ b/gen/Network/AWS/SSM/ListDocuments.hs
@@ -40,6 +40,7 @@
     , ldrsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/SendCommand.hs b/gen/Network/AWS/SSM/SendCommand.hs
--- a/gen/Network/AWS/SSM/SendCommand.hs
+++ b/gen/Network/AWS/SSM/SendCommand.hs
@@ -43,6 +43,7 @@
     , scrsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/Types.hs b/gen/Network/AWS/SSM/Types.hs
--- a/gen/Network/AWS/SSM/Types.hs
+++ b/gen/Network/AWS/SSM/Types.hs
@@ -214,6 +214,7 @@
     , iifValueSet
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 import           Network.AWS.SSM.Types.Product
@@ -253,104 +254,89 @@
 -- | The document does not support the platform type of the given instance
 -- ID(s).
 _UnsupportedPlatformType :: AsError a => Getting (First ServiceError) a ServiceError
-_UnsupportedPlatformType =
-    _ServiceError . hasStatus 400 . hasCode "UnsupportedPlatformType"
+_UnsupportedPlatformType = _ServiceError . hasCode "UnsupportedPlatformType"
 
 -- | You must disassociate an SSM document from all instances before you can
 -- delete it.
 _AssociatedInstances :: AsError a => Getting (First ServiceError) a ServiceError
-_AssociatedInstances =
-    _ServiceError . hasStatus 400 . hasCode "AssociatedInstances"
+_AssociatedInstances = _ServiceError . hasCode "AssociatedInstances"
 
 -- | The instance is not in valid state. Valid states are: Running, Pending,
 -- Stopped, Stopping. Invalid states are: Shutting-down and Terminated.
 _InvalidInstanceId :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidInstanceId =
-    _ServiceError . hasStatus 404 . hasCode "InvalidInstanceId"
+_InvalidInstanceId = _ServiceError . hasCode "InvalidInstanceId"
 
 -- | The updated status is the same as the current status.
 _StatusUnchanged :: AsError a => Getting (First ServiceError) a ServiceError
-_StatusUnchanged = _ServiceError . hasStatus 400 . hasCode "StatusUnchanged"
+_StatusUnchanged = _ServiceError . hasCode "StatusUnchanged"
 
 -- | The specified token is not valid.
 _InvalidNextToken :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidNextToken = _ServiceError . hasStatus 400 . hasCode "InvalidNextToken"
+_InvalidNextToken = _ServiceError . hasCode "InvalidNextToken"
 
 -- | The S3 bucket does not exist.
 _InvalidOutputFolder :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidOutputFolder =
-    _ServiceError . hasStatus 400 . hasCode "InvalidOutputFolder"
+_InvalidOutputFolder = _ServiceError . hasCode "InvalidOutputFolder"
 
 -- | Prism for InvalidCommandId' errors.
 _InvalidCommandId :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidCommandId = _ServiceError . hasStatus 404 . hasCode "InvalidCommandId"
+_InvalidCommandId = _ServiceError . hasCode "InvalidCommandId"
 
 -- | You cannot specify an instance ID in more than one association.
 _DuplicateInstanceId :: AsError a => Getting (First ServiceError) a ServiceError
-_DuplicateInstanceId =
-    _ServiceError . hasStatus 404 . hasCode "DuplicateInstanceId"
+_DuplicateInstanceId = _ServiceError . hasCode "DuplicateInstanceId"
 
 -- | The specified document does not exist.
 _InvalidDocument :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidDocument = _ServiceError . hasStatus 404 . hasCode "InvalidDocument"
+_InvalidDocument = _ServiceError . hasCode "InvalidDocument"
 
 -- | The specified key is not valid.
 _InvalidFilterKey :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidFilterKey = _ServiceError . hasStatus 400 . hasCode "InvalidFilterKey"
+_InvalidFilterKey = _ServiceError . hasCode "InvalidFilterKey"
 
 -- | The specified filter value is not valid.
 _InvalidInstanceInformationFilterValue :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidInstanceInformationFilterValue =
-    _ServiceError .
-    hasStatus 400 . hasCode "InvalidInstanceInformationFilterValue"
+    _ServiceError . hasCode "InvalidInstanceInformationFilterValue"
 
 -- | The specified association already exists.
 _AssociationAlreadyExists :: AsError a => Getting (First ServiceError) a ServiceError
-_AssociationAlreadyExists =
-    _ServiceError . hasStatus 400 . hasCode "AssociationAlreadyExists"
+_AssociationAlreadyExists = _ServiceError . hasCode "AssociationAlreadyExists"
 
 -- | The content for the SSM document is not valid.
 _InvalidDocumentContent :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidDocumentContent =
-    _ServiceError . hasStatus 400 . hasCode "InvalidDocumentContent"
+_InvalidDocumentContent = _ServiceError . hasCode "InvalidDocumentContent"
 
 -- | You can have at most 2,000 active associations.
 _AssociationLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
-_AssociationLimitExceeded =
-    _ServiceError . hasStatus 400 . hasCode "AssociationLimitExceeded"
+_AssociationLimitExceeded = _ServiceError . hasCode "AssociationLimitExceeded"
 
 -- | The specified association does not exist.
 _AssociationDoesNotExist :: AsError a => Getting (First ServiceError) a ServiceError
-_AssociationDoesNotExist =
-    _ServiceError . hasStatus 404 . hasCode "AssociationDoesNotExist"
+_AssociationDoesNotExist = _ServiceError . hasCode "AssociationDoesNotExist"
 
 -- | An error occurred on the server side.
 _InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError
-_InternalServerError =
-    _ServiceError . hasStatus 500 . hasCode "InternalServerError"
+_InternalServerError = _ServiceError . hasCode "InternalServerError"
 
 -- | There are concurrent updates for a resource that supports one update at
 -- a time.
 _TooManyUpdates :: AsError a => Getting (First ServiceError) a ServiceError
-_TooManyUpdates = _ServiceError . hasStatus 429 . hasCode "TooManyUpdates"
+_TooManyUpdates = _ServiceError . hasCode "TooManyUpdates"
 
 -- | The size limit of an SSM document is 64 KB.
 _MaxDocumentSizeExceeded :: AsError a => Getting (First ServiceError) a ServiceError
-_MaxDocumentSizeExceeded =
-    _ServiceError . hasStatus 400 . hasCode "MaxDocumentSizeExceeded"
+_MaxDocumentSizeExceeded = _ServiceError . hasCode "MaxDocumentSizeExceeded"
 
 -- | You must specify values for all required parameters in the SSM document.
 -- You can only supply values to parameters defined in the SSM document.
 _InvalidParameters :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidParameters =
-    _ServiceError . hasStatus 400 . hasCode "InvalidParameters"
+_InvalidParameters = _ServiceError . hasCode "InvalidParameters"
 
 -- | The specified SSM document already exists.
 _DocumentAlreadyExists :: AsError a => Getting (First ServiceError) a ServiceError
-_DocumentAlreadyExists =
-    _ServiceError . hasStatus 400 . hasCode "DocumentAlreadyExists"
+_DocumentAlreadyExists = _ServiceError . hasCode "DocumentAlreadyExists"
 
 -- | You can have at most 100 active SSM documents.
 _DocumentLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
-_DocumentLimitExceeded =
-    _ServiceError . hasStatus 400 . hasCode "DocumentLimitExceeded"
+_DocumentLimitExceeded = _ServiceError . hasCode "DocumentLimitExceeded"
diff --git a/gen/Network/AWS/SSM/Types/Product.hs b/gen/Network/AWS/SSM/Types/Product.hs
--- a/gen/Network/AWS/SSM/Types/Product.hs
+++ b/gen/Network/AWS/SSM/Types/Product.hs
@@ -17,6 +17,7 @@
 --
 module Network.AWS.SSM.Types.Product where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.SSM.Types.Sum
 
@@ -553,10 +554,9 @@
 cpOutput :: Lens' CommandPlugin (Maybe Text)
 cpOutput = lens _cpOutput (\ s a -> s{_cpOutput = a});
 
--- | The name of the plugin. Must be one of the following:
--- AWS-JoinDirectoryServiceDomain, AWS-InstallApplication,
--- AWS-RunPowerShellScript, AWS-InstallPowerShellModule,
--- AWS-ConfigureCloudWatch.
+-- | The name of the plugin. Must be one of the following: aws:updateAgent,
+-- aws:domainjoin, aws:applications, aws:runPowerShellScript, aws:psmodule,
+-- aws:cloudWatch, aws:runShellScript, or aws:updateSSMAgent.
 cpName :: Lens' CommandPlugin (Maybe Text)
 cpName = lens _cpName (\ s a -> s{_cpName = a});
 
diff --git a/gen/Network/AWS/SSM/Types/Sum.hs b/gen/Network/AWS/SSM/Types/Sum.hs
--- a/gen/Network/AWS/SSM/Types/Sum.hs
+++ b/gen/Network/AWS/SSM/Types/Sum.hs
@@ -22,7 +22,7 @@
 data AssociationFilterKey
     = AFKInstanceId
     | AFKName
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText AssociationFilterKey where
     parser = takeLowerText >>= \case
@@ -48,7 +48,7 @@
     = ASNFailed
     | ASNPending
     | ASNSuccess
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText AssociationStatusName where
     parser = takeLowerText >>= \case
@@ -79,7 +79,7 @@
     = CommandInvokedAfter
     | CommandInvokedBefore
     | CommandStatus
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText CommandFilterKey where
     parser = takeLowerText >>= \case
@@ -111,7 +111,7 @@
     | CISPending
     | CISSuccess
     | CISTimedOut
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText CommandInvocationStatus where
     parser = takeLowerText >>= \case
@@ -150,7 +150,7 @@
     | CPSPending
     | CPSSuccess
     | CPSTimedOut
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText CommandPluginStatus where
     parser = takeLowerText >>= \case
@@ -188,7 +188,7 @@
     | Pending
     | Success
     | TimedOut
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText CommandStatus where
     parser = takeLowerText >>= \case
@@ -224,7 +224,7 @@
     = Name
     | Owner
     | PlatformTypes
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText DocumentFilterKey where
     parser = takeLowerText >>= \case
@@ -251,7 +251,7 @@
 data DocumentParameterType
     = String
     | StringList
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText DocumentParameterType where
     parser = takeLowerText >>= \case
@@ -277,7 +277,7 @@
     = Active
     | Creating
     | Deleting
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText DocumentStatus where
     parser = takeLowerText >>= \case
@@ -305,7 +305,7 @@
     = Client
     | Server
     | Unknown
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText Fault where
     parser = takeLowerText >>= \case
@@ -334,7 +334,7 @@
     | IIFKInstanceIds
     | IIFKPingStatus
     | IIFKPlatformTypes
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText InstanceInformationFilterKey where
     parser = takeLowerText >>= \case
@@ -364,7 +364,7 @@
     = ConnectionLost
     | Inactive
     | Online
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText PingStatus where
     parser = takeLowerText >>= \case
@@ -391,7 +391,7 @@
 data PlatformType
     = Linux
     | Windows
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText PlatformType where
     parser = takeLowerText >>= \case
diff --git a/gen/Network/AWS/SSM/UpdateAssociationStatus.hs b/gen/Network/AWS/SSM/UpdateAssociationStatus.hs
--- a/gen/Network/AWS/SSM/UpdateAssociationStatus.hs
+++ b/gen/Network/AWS/SSM/UpdateAssociationStatus.hs
@@ -40,6 +40,7 @@
     , uasrsResponseStatus
     ) where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/SSM/Waiters.hs b/gen/Network/AWS/SSM/Waiters.hs
--- a/gen/Network/AWS/SSM/Waiters.hs
+++ b/gen/Network/AWS/SSM/Waiters.hs
@@ -15,6 +15,7 @@
 --
 module Network.AWS.SSM.Waiters where
 
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.SSM.Types
 import           Network.AWS.Waiter
